java高仿2048游戏代码
2016-07-14 09:57
597 查看
原文:java高仿2048游戏代码
源代码下载地址:http://www.zuidaima.com/share/1820781183028224.htm
直接上代码
上图:
原文地址:IT江湖
源代码下载地址:http://www.zuidaima.com/share/1820781183028224.htm
直接上代码
package com.itjh.game2048; import java.util.Timer; import java.util.TimerTask; import javax.swing.SwingUtilities; /** * 程序入口 * */ 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] ==0){ data[3] =2*((n%2)+1); MainFrame.myButtons[3] .value=data[3] ; 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] ==0){ data[0] =2*((n%2)+1); MainFrame.myButtons[0] .value=data[0] ; 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 [3]==0){ data [3]=2*((n%2)+1); MainFrame.myButtons [3].value=data [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 [0]==0){ data [0]=2*((n%2)+1); MainFrame.myButtons [0].value=data [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(); } }
上图:
原文地址:IT江湖
相关文章推荐
- java中的路径包含空格问题
- 设计模式 -单例模式
- Java获取package下所有的class对象(普通文件包和Jar文件包)
- struts2--action编写及方法的访问
- 对于安卓开发、Java学习、编程自我深造可以利用的网址、文章等第三方途径
- javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver 如何解决?
- spring管理hibernate获取session方法
- DEBUG:MyEclipse使用Maven下载包失败时候的解决办法
- Java--数组转成list,list转数组
- springMVC工作原理
- java 加解密
- JNI层线程回调Java函数示例
- Java序列化与反序列化
- myeclipse2015 1.0破解
- 关于Java并发编程的总结和思考
- java对象引用级别
- (error/warning)java Unsafe等改变安全性的类怎样去掉eclipse错误提示
- 初次从eclipse转到intellij idea上的一些经验
- JAVA.NET.SOCKETEXCEPTION: TOO MANY OPEN FILES解决方法
- Java中两种停止线程的方法