在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → java仿2048游戏实例源码

java仿2048游戏实例源码

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:8.73M
  • 下载次数:28
  • 浏览次数:419
  • 发布时间:2018-06-01
  • 实例类别:Android平台开发
  • 发 布 人:任易
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 游戏 实例 java 源码 2048

实例介绍

【实例简介】

java仿2048游戏实例源码

【实例截图】

from clipboard

from clipboard

【核心代码】

package com.yuanhonglong.game2048;

import java.util.Timer;
import java.util.TimerTask;
import javax.swing.SwingUtilities;

/**
 * 绋嬪簭鍏ュ彛
 * @author The master of Sword Destiny-澶╁懡鍓戜富<br>
 *         QQ:1948281915<br>
 *         Date:2014-4-2<br>
 */
public class Game2048{

// 鐢ㄤ簬璁板綍鏁版嵁
public static int[][] data=new int[4][4];
private static ScoreFrame frame;

/**
* 姣忎竴灞�垚鍔熷悗鍒濆鍖栨暟鎹�
*/
public static void init(){
MainFrame.keyControl=0;
frame.dispose();
data=new int[4][4];
clear();
initGame();
}

/**
* 娓呯悊鐣岄潰鏁版嵁
*/
public static void clear(){
for(int i=0;i<4;i ){
for(int j=0;j<4;j ){
MainFrame.myButtons[i][j].value=0;
}
}
MainFrame.refreshButtons();
}

/**
* 鎴愬姛
*/
public static void win(){
MainFrame.keyControl=2;
final FlashFrame flashFrame=new FlashFrame("   鎴愬姛!");
flashFrame.setVisible(true);
Timer timer=new Timer();
final TimerTask task1=new TimerTask(){

@Override
public void run(){
flashFrame.setLocation(flashFrame.getX(),flashFrame.getY()-8);
}
};
TimerTask task2=new TimerTask(){

@Override
public void run(){
task1.cancel();
flashFrame.dispose();
showScore();
}
};
timer.schedule(task1,0,10);
timer.schedule(task2,1000);
}

/**
* 澶辫触
*/
public static void failed(){
MainFrame.keyControl=2;
final FlashFrame flashFrame=new FlashFrame("   澶辫触!");
flashFrame.setVisible(true);
Timer timer=new Timer();
final TimerTask task1=new TimerTask(){

@Override
public void run(){
flashFrame.setLocation(flashFrame.getX(),flashFrame.getY()-8);
}
};
TimerTask task2=new TimerTask(){

@Override
public void run(){
task1.cancel();
flashFrame.dispose();
showScore();
}
};
timer.schedule(task1,0,10);
timer.schedule(task2,1000);
}

/**
* 娆㈣繋
*/
public static void welcome(){
final FlashFrame flashFrame=new FlashFrame("   娆㈣繋!");
flashFrame.setVisible(true);
Timer timer=new Timer();
final TimerTask task1=new TimerTask(){

@Override
public void run(){
flashFrame.setLocation(flashFrame.getX(),flashFrame.getY()-12);
}
};
TimerTask task2=new TimerTask(){

@Override
public void run(){
task1.cancel();
flashFrame.dispose();
}
};
timer.schedule(task1,0,10);
timer.schedule(task2,1000);
}

/**
* 妫�煡鏄惁澶辫触
*/
public static void checkForFailed(){
for(int i=0;i<3;i ){
for(int j=0;j<3;j ){
if((data[i][j]==data[i][j 1])||(data[i][j]==data[i 1][j])){
return;
}
}
}
for(int i=0;i<3;i ){
if((data[i][3]==data[i 1][3])||(data[3][i]==data[3][i 1])){
return;
}
}
failed();
}

/**
* 寰楀埌鍒嗘暟,鎵�湁鏍煎瓙鍒嗘暟涔嬪拰
*/
public static int getScore(){
int score=0;
for(int i=0;i<4;i ){
for(int j=0;j<4;j ){
score =data[i][j];
}
}
return score;
}

/**
* 鏄剧ず鍒嗘暟
*/
public static void showScore(){
frame=new ScoreFrame("Score:" ((Integer)getScore()).toString());
frame.setVisible(true);
Timer timer=new Timer();
final TimerTask task1=new TimerTask(){

@Override
public void run(){
if(frame.getY()>200){
frame.setLocation(frame.getX(),frame.getY()-4);
}
else{
frame.setBounds(frame.getX(),200,440,150);
}
}
};
TimerTask task2=new TimerTask(){

@Override
public void run(){
task1.cancel();
}
};
timer.schedule(task1,0,10);
timer.schedule(task2,1000);
}

/**
* 寮�娓告垙
*/
public static void stsrtGame2048(){
MainFrame frame=new MainFrame();
frame.setVisible(true);
initGame();
}

/**
* 鍒濆鍖栦袱涓牸瀛愮殑鏁版嵁
*/
public static void initGame(){
int m=(int)(Math.random()*16);
int n=(int)(Math.random()*16);
int p=Math.abs(m-n);
if(p==n){
p=p>7?p-1:p 1;
}
MainFrame.myButtons[p/4][p%4].value=2;
MainFrame.myButtons[n/4][n%4].value=2;
data[p/4][p%4]=2;
data[n/4][n%4]=2;
MainFrame.myButtons[p/4][p%4].setText("2");
MainFrame.myButtons[n/4][n%4].setText("2");
MainFrame.myButtons[p/4][p%4].changeBackground();
MainFrame.myButtons[n/4][n%4].changeBackground();
for(int i=0;i<4;i ){
for(int j=0;j<4;j ){
data[i][j]=MainFrame.myButtons[i][j].value;
}
}
}

public static void flushUp(){
for(int j=0;j<4;j ){
if(data[1][j]==0){
continue;
}
else if(data[0][j]==0){
MainFrame.myButtons[1][j].goUp();
}
else if(data[1][j]==data[0][j]){
MainFrame.myButtons[1][j].addTo(MainFrame.myButtons[0][j]);
}
}
for(int j=0;j<4;j ){
if(data[2][j]==0){
continue;
}
else if(data[1][j]==0){
MainFrame.myButtons[2][j].goUp();
if(data[0][j]==0){
MainFrame.myButtons[1][j].goUp();
}
else if(data[0][j]==data[1][j]){
MainFrame.myButtons[1][j].addTo(MainFrame.myButtons[0][j]);
}
}
else if(data[2][j]==data[1][j]){
MainFrame.myButtons[2][j].addTo(MainFrame.myButtons[1][j]);
}
}
for(int j=0;j<4;j ){
if(data[3][j]==0){
continue;
}
else if(data[2][j]==0){
MainFrame.myButtons[3][j].goUp();
if(data[1][j]==0){
MainFrame.myButtons[2][j].goUp();
if(data[0][j]==0){
MainFrame.myButtons[1][j].goUp();
}
else if(data[0][j]==data[1][j]){
MainFrame.myButtons[1][j].addTo(MainFrame.myButtons[0][j]);
}
}
else if(data[2][j]==data[1][j]){
MainFrame.myButtons[2][j].addTo(MainFrame.myButtons[1][j]);
}
}
else if(data[2][j]==data[3][j]){
MainFrame.myButtons[3][j].addTo(MainFrame.myButtons[2][j]);
}
}
}

public static void flushDown(){
for(int j=0;j<4;j ){
if(data[2][j]==0){
continue;
}
else if(data[3][j]==0){
MainFrame.myButtons[2][j].goDown();
}
else if(data[2][j]==data[3][j]){
MainFrame.myButtons[2][j].addTo(MainFrame.myButtons[3][j]);
}
}
for(int j=0;j<4;j ){
if(data[1][j]==0){
continue;
}
else if(data[2][j]==0){
MainFrame.myButtons[1][j].goDown();
if(data[3][j]==0){
MainFrame.myButtons[2][j].goDown();
}
else if(data[3][j]==data[2][j]){
MainFrame.myButtons[2][j].addTo(MainFrame.myButtons[3][j]);
}
}
else if(data[1][j]==data[2][j]){
MainFrame.myButtons[1][j].addTo(MainFrame.myButtons[2][j]);
}
}
for(int j=0;j<4;j ){
if(data[0][j]==0){
continue;
}
else if(data[1][j]==0){
MainFrame.myButtons[0][j].goDown();
if(data[2][j]==0){
MainFrame.myButtons[1][j].goDown();
if(data[3][j]==0){
MainFrame.myButtons[2][j].goDown();
}
else if(data[3][j]==data[2][j]){
MainFrame.myButtons[2][j].addTo(MainFrame.myButtons[3][j]);
}
}
else if(data[1][j]==data[2][j]){
MainFrame.myButtons[1][j].addTo(MainFrame.myButtons[2][j]);
}
}
else if(data[1][j]==data[0][j]){
MainFrame.myButtons[0][j].addTo(MainFrame.myButtons[1][j]);
}
}
}

public static void flushLeft(){
for(int i=0;i<4;i ){
if(data[i][1]==0){
continue;
}
else if(data[i][0]==0){
MainFrame.myButtons[i][1].goLeft();
}
else if(data[i][1]==data[i][0]){
MainFrame.myButtons[i][1].addTo(MainFrame.myButtons[i][0]);
}
}
for(int i=0;i<4;i ){
if(data[i][2]==0){
continue;
}
else if(data[i][1]==0){
MainFrame.myButtons[i][2].goLeft();
if(data[i][0]==0){
MainFrame.myButtons[i][1].goLeft();
}
else if(data[i][1]==data[i][0]){
MainFrame.myButtons[i][1].addTo(MainFrame.myButtons[i][0]);
}
}
else if(data[i][2]==data[i][1]){
MainFrame.myButtons[i][2].addTo(MainFrame.myButtons[i][1]);
}
}
for(int i=0;i<4;i ){
if(data[i][3]==0){
continue;
}
else if(data[i][2]==0){
MainFrame.myButtons[i][3].goLeft();
if(data[i][1]==0){
MainFrame.myButtons[i][2].goLeft();
if(data[i][0]==0){
MainFrame.myButtons[i][1].goLeft();
}
else if(data[i][1]==data[i][0]){
MainFrame.myButtons[i][1].addTo(MainFrame.myButtons[i][0]);
}
}
else if(data[i][2]==data[i][1]){
MainFrame.myButtons[i][2].addTo(MainFrame.myButtons[i][1]);
}
}
else if(data[i][3]==data[i][2]){
MainFrame.myButtons[i][3].addTo(MainFrame.myButtons[i][2]);
}
}
}

public static void flushRight(){
for(int i=0;i<4;i ){
if(data[i][2]==0){
continue;
}
else if(data[i][3]==0){
MainFrame.myButtons[i][2].goRight();
}
else if(data[i][2]==data[i][3]){
MainFrame.myButtons[i][2].addTo(MainFrame.myButtons[i][3]);
}
}
for(int i=0;i<4;i ){
if(data[i][1]==0){
continue;
}
else if(data[i][2]==0){
MainFrame.myButtons[i][1].goRight();
if(data[i][3]==0){
MainFrame.myButtons[i][2].goRight();
}
else if(data[i][2]==data[i][3]){
MainFrame.myButtons[i][2].addTo(MainFrame.myButtons[i][3]);
}
}
else if(data[i][1]==data[i][2]){
MainFrame.myButtons[i][1].addTo(MainFrame.myButtons[i][2]);
}
}
for(int i=0;i<4;i ){
if(data[i][0]==0){
continue;
}
else if(data[i][1]==0){
MainFrame.myButtons[i][0].goRight();
if(data[i][2]==0){
MainFrame.myButtons[i][1].goRight();
if(data[i][3]==0){
MainFrame.myButtons[i][2].goRight();
}
else if(data[i][2]==data[i][3]){
MainFrame.myButtons[i][2].addTo(MainFrame.myButtons[i][3]);
}
}
else if(data[i][1]==data[i][2]){
MainFrame.myButtons[i][1].addTo(MainFrame.myButtons[i][2]);
}
}
else if(data[i][0]==data[i][1]){
MainFrame.myButtons[i][0].addTo(MainFrame.myButtons[i][1]);
}
}
}

public static void addNewUp(){
int n=(int)(Math.random()*4);
for(int i=0;i<4;i ){
if(data[3][n]==0){
data[3][n]=2*((n%2) 1);
MainFrame.myButtons[3][n].value=data[3][n];
return;
}
n=(n 1)%4;
}
checkForFailed();
}

public static void addNewDown(){
int n=(int)(Math.random()*4);
for(int i=0;i<4;i ){
if(data[0][n]==0){
data[0][n]=2*((n%2) 1);
MainFrame.myButtons[0][n].value=data[0][n];
return;
}
n=(n 1)%4;
}
checkForFailed();
}

public static void addNewLeft(){
int n=(int)(Math.random()*4);
for(int i=0;i<4;i ){
if(data[n][3]==0){
data[n][3]=2*((n%2) 1);
MainFrame.myButtons[n][3].value=data[n][3];
return;
}
n=(n 1)%4;
}
checkForFailed();
}

public static void addNewRight(){
int n=(int)(Math.random()*4);
for(int i=0;i<4;i ){
if(data[n][0]==0){
data[n][0]=2*((n%2) 1);
MainFrame.myButtons[n][0].value=data[n][0];
return;
}
n=(n 1)%4;
}
checkForFailed();
}

public static void main(String[] args){
Runnable runnable=new Runnable(){

@Override
public void run(){
SwingUtilities.invokeLater(new Runnable(){

@Override
public void run(){
welcome();
stsrtGame2048();
}
});
}
};
new Thread(runnable).start();
}
}


实例下载地址

java仿2048游戏实例源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警