2048是什么? 2048 是一款流行的单人益智游戏,其目标是在网格上滑动编号的图块,合并具有相同数字的图块以达到 2048 及以上。
我该如何玩2048? 您可以使用键盘上的箭头键或在支持触摸的设备上滑动,以四个方向滑动网格上的图块:上、下、左、右。 当两个相同数字的方块碰撞时,它们会合并成一个,并且它们的价值会加倍。 ...
当我到达 2048 时会发生什么? 当您达到 2048 块时,您可以选择继续玩并瞄准更高的数字,或者您可以考虑游戏获胜并开始新游戏。
有赢得2048的策略吗? 虽然没有保证每次都会获胜的策略,但一些技巧包括专注于合并更大的数字,为瓷砖移动创建清晰的路径,以及避免太快填满棋盘。
这就是2048游戏~
话不多说,直接启动,做一个略有简略但五脏俱全的小游戏版本
首先是我们的用户信息
public class UserInfo {
private static int score;
public String name;
public UserInfo(String name) {
this.name = name;
}
public static int getScore() {
return score;
}
public static void setScore(int score) {
UserInfo.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void addScore(int i){
UserInfo.score+=i;
}
}
很好,接下来我们应该摆出我们的胜利条件:
出现2048,然后我们会出现以下提示页面
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class winplay extends JFrame{
public winplay(){
UserInfo.addScore(5000);
JOptionPane.showMessageDialog(null,
"游戏胜利,你的评分已出炉:"+UserInfo.getScore(),
"胜利2048!",
JOptionPane.INFORMATION_MESSAGE);
}
}
接下来是我们的判断失败条件:
没有出现2048且每个方向上都无法移动
其中interplay这个类中包含了一个checkifvary方法,用来判断如果点击上下左右键,页面中方格布局是否会发生改变,如果不变,则移动无效。
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class overplay extends JFrame{
public overplay(){
JOptionPane.showMessageDialog(null,
"游戏结束,你的评分已出炉:"+UserInfo.getScore(),
"结束啦",
JOptionPane.INFORMATION_MESSAGE);
}
public static boolean finditOver(int[][] a){
return (interplay.checkifvary(a,1)
||interplay.checkifvary(a,2)
||interplay.checkifvary(a,3)
||interplay.checkifvary(a,4));
}
}
接下来是我们2048的主干部分,代码如下:
方法:
Ramdom2:随机生成2,如果方格已满,则游戏结束
isFull:判断是否已满
find2048:寻找是否已出现2048
phase1,2,3,4:分别对应上下左右的移动情形
checkifvary:移动是否为有效
public class interplay {
int[][] a={
{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
public static final int ROW=4;
public static final int COLUMN=4;
public static void Ramdom2(int[][] a){
int count =0;
int[] b=new int[16];
for(int i=0;i<ROW;i++){
for(int j=0;j<COLUMN;j++){
if(a[i][j]==0){
b[count]=i*4+j;
count++;
}
}
}
long l = System.currentTimeMillis();