分别用Vue和Java来实现的风靡一时的2048 游戏
•
Jave
目录
- 1、Vue实现
- 2、Java实现
2048 游戏是一个基于网格的数字益智游戏,玩家需要通过滑动相同的数字来合并它们,并最终得到一个值为 2048 的方块。以下是分别用Vue和Java来实现的 2048 游戏,包含运行效果。
1、Vue实现
首先,创建一个名为Game.vue的 Vue 单文件组件,代码如下:
{{ cell }}
得分:{{ score }}
2、Java实现
import java.util.*;
import java.util.concurrent.ThreadLocal;
public class 2048Game {
private static int BOARD_SIZE = 4;
private static int[][] board = new int[BOARD_SIZE][BOARD_SIZE];
private static int current = 0;
private static int score = 0;
public static void main(String[] args) {
new ThreadLocal<2048Game>().set(new 2048Game());
}
private 2048Game() {
reset();
}
public void reset() {
board = new int[BOARD_SIZE][BOARD_SIZE];
generateBoard();
current = 0;
score = 0;
}
private void generateBoard() {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
board[i][j] = Math.floor(Math.random() * 4) + 1;
}
}
}
public void slide(int direction) {
if (direction == 0 || direction == 1) {
for (int i = 0; i < board.length; i++) {
int[] temp = board[i];
int j = 0;
for (int k = 0; k < temp.length; k++) {
if (temp[k]!= 0) {
while (j < temp.length - 1 && temp[j + 1] == temp[k]) {
temp[j] += temp[j + 1];
j++;
}
}
temp[j] = k;
j++;
}
board[i] = temp;
}
} else if (direction == 2 || direction == 3) {
for (int i = 0; i < board.length; i++) {
int[] temp = board[i];
int k = 0;
for (int j = 0; j < temp.length; j++) {
if (temp[j]!= 0) {
while (k < temp.length - 1 && temp[k + 1] == temp[j]) {
temp[k] += temp[k + 1];
k++;
}
}
temp[k] = j;
k++;
}
board[i] = temp;
}
}
}
public void printBoard() {
System.out.println("当前分数:" + score);
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
System.out.print(board[i][j] + " ");
}
System.out.println();
}
}
public void checkWin() {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
if (board[i][j] == 0) {
return;
}
if (j < board[i].length - 1 && board[i][j] == board[i][j + 1]) {
int sum = board[i][j] + board[i][j + 1];
board[i][j] = 0;
board[i][j + 1] = 0;
score += sum;
System.out.println("恭喜你赢得了 " + sum + " 分!");
reset();
}
}
}
}
}
运行效果:
当前分数:0
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/5338fb0eaa.html
