分别用Vue和Java来实现的风靡一时的2048 游戏
2048 游戏是一个基于网格的数字益智游戏,玩家需要通过滑动相同的数字来合并它们,并最终得到一个值为 2048 的方块。以下是分别用Vue和Java来实现的 2048 游戏,包含运行效果。
1、Vue实现
首先,创建一个名为Game.vue
的 Vue 单文件组件,代码如下:
<template>
<div class="game-container">
<div class="grid">
<div v-for="(row, rowIndex) in board" :key="rowIndex" class="cell">
<div v-if="row.length">
<div v-for="(cell, colIndex) in row" :key="colIndex" :class="{ 'highlight': cell === current }">
{{ cell }}
</div>
</div>
</div>
</div>
<div class="score">
<p>得分:{{ score }}</p>
</div>
<button @click="newGame">重新开始</button>
</div>
</template>
<script>
export default {
data() {
return {
board: [
[1, 1, 2, 2],
[3, 3],
[4, 4],
[4, 4],
[2, 2],
[1, 1, 3, 3],
[2, 2],
[4, 4],
],
current: null,
score: 0,
};
},
methods: {
move(direction) {
if (direction === 'left' && this.current && this.current.leftCell) {
this.current.leftCell = this.current.leftCell.left;
if (!this.current.leftCell) {
this.current = null;
}
} else if (direction === 'right' && this.current && this.current.rightCell) {
this.current.rightCell = this.current.rightCell.right;
if (!this.current.rightCell) {
this.current = null;
}
}
},
newGame() {
this.board = [
[Math.floor(Math.random() * 4) 1, Math.floor(Math.random() * 4) 1],
[Math.floor(Math.random() * 4) 1, Math.floor(Math.random() * 4) 1],
[Math.floor(Math.random() * 4) 1, Math.floor(Math.random() * 4) 1],
[Math.floor(Math.random() * 4) 1, Math.floor(Math.random() * 4) 1],
];
this.score = 0;
this.current = null;
},
slide() {
if (this.current) {
if (this.current.leftCell) {
this.move('left');
} else if (this.current.rightCell) {
this.move('right');
}
}
},
},
};
</script>
<style scoped>
.game-container {
width: 100%;
max-width: 800px;
margin: 0 auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 5px;
}
.grid {
display: flex;
flex-wrap: wrap;
}
.cell {
width: 40px;
height: 40px;
background-color: #f2f2f2;
display: flex;
justify-content: center;
align-items: center;
border-radius: 5px;
margin: 10px;
}
.cell:hover {
background-color: #ddd;
}
.highlight {
background-color: #ffc107;
}
.score {
margin-top: 20px;
font-size: 24px;
font-weight: bold;
}
</style>
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
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgeahee
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01