使用java开发的2048游戏(附代码)
来源:互联网 发布:巴基斯坦人 知乎 编辑:程序博客网 时间:2024/06/04 01:02
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
事在许多网页游戏中发现2048这款小游戏非常好玩,虽然操作起来不难,但是想要成功并不是件容易的事,下边我将自己在努力之后得到的该游戏代码为大家呈现,并对部分代码做了解释。
package com.yuanhonglong.game2048;事在许多网页游戏中发现2048这款小游戏非常好玩,虽然操作起来不难,但是想要成功并不是件容易的事,下边我将自己在努力之后得到的该游戏代码为大家呈现,并对部分代码做了解释。
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]);
}
源代码下载:http://download.csdn.net/detail/u014687186/7593887
0 0
- 使用java开发的2048游戏(附代码)
- 汉诺塔游戏的设计(附代码)
- Java的基本特征(附:代码解析)
- 微信开发中使用curl实现http与https的post级get请求实例教程(附工程代码)
- JAVA连接MSSQL2005的出错与解决(附代码)
- oauth1.0 java的实现(附代码)
- 入门的JAVA爬虫实现(附代码)
- VS下用C++实现的简单3D射击游戏(附游戏文件与源工程代码)
- abap开发之ole(附代码)
- mybatis SqlSessionDaoSupport的使用(附代码下载)
- 喜闻乐见的 2048 游戏 (附源码)
- android开发之java JDK环境变量配置的信息代码 附详细教程。
- Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)
- 游戏开发入门图书推荐(转载,附下载地址)
- Java 标准日志工具 Log4j 的使用(附源代码)
- Java 标准日志工具 Log4j 的使用(附源代码)
- Java 标准日志工具 Log4j 的使用(附源代码)
- Java 标准日志工具 Log4j 的使用(附源代码)
- 当析构函数遇到多线程──C++ 中线程安全的对象回调
- wikioi最长不下降子序列c
- apache2.4模块开发学习
- (转)SQL更新删除数据
- uva 846 Steps(找规律)
- 使用java开发的2048游戏(附代码)
- wikioi高精度练习之减法c++
- linux驱动学习笔记1--字符型驱动的编写
- HDU 1847 Good Luck in CET-4 Everybody! (博弈论sg)
- Android RecyclerView And CardView
- ListView的Item不可点击和Item布局重复问题
- <<C和指针>>第1章之编程练习心得20140704
- HDU4089-Activation(概率DP)
- php pconnect 长连接原理