做一个规整的基于Java和HTML语言的2048小游戏
时间: 2024-03-19 17:43:10 浏览: 12
好的,以下是一个简单的基于Java和HTML语言的2048小游戏的代码:
Java代码:
```
import java.util.Random;
import java.util.Scanner;
public class Game2048 {
private static int[][] board = new int[4][4];
private static Random random = new Random();
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
addRandomTile();
addRandomTile();
printBoard();
while (true) {
System.out.print("Enter a direction (up, down, left, right): ");
String direction = scanner.next();
moveTiles(direction);
if (isGameOver()) {
System.out.println("Game over!");
break;
}
addRandomTile();
printBoard();
}
}
private static void addRandomTile() {
int x = random.nextInt(4);
int y = random.nextInt(4);
while (board[x][y] != 0) {
x = random.nextInt(4);
y = random.nextInt(4);
}
board[x][y] = random.nextInt(2) == 0 ? 2 : 4;
}
private static void moveTiles(String direction) {
switch (direction) {
case "up":
for (int j = 0; j < 4; j++) {
for (int i = 1; i < 4; i++) {
if (board[i][j] != 0) {
int k = i;
while (k > 0 && board[k-1][j] == 0) {
board[k-1][j] = board[k][j];
board[k][j] = 0;
k--;
}
if (k > 0 && board[k-1][j] == board[k][j]) {
board[k-1][j] *= 2;
board[k][j] = 0;
}
}
}
}
break;
case "down":
for (int j = 0; j < 4; j++) {
for (int i = 2; i >= 0; i--) {
if (board[i][j] != 0) {
int k = i;
while (k < 3 && board[k+1][j] == 0) {
board[k+1][j] = board[k][j];
board[k][j] = 0;
k++;
}
if (k < 3 && board[k+1][j] == board[k][j]) {
board[k+1][j] *= 2;
board[k][j] = 0;
}
}
}
}
break;
case "left":
for (int i = 0; i < 4; i++) {
for (int j = 1; j < 4; j++) {
if (board[i][j] != 0) {
int k = j;
while (k > 0 && board[i][k-1] == 0) {
board[i][k-1] = board[i][k];
board[i][k] = 0;
k--;
}
if (k > 0 && board[i][k-1] == board[i][k]) {
board[i][k-1] *= 2;
board[i][k] = 0;
}
}
}
}
break;
case "right":
for (int i = 0; i < 4; i++) {
for (int j = 2; j >= 0; j--) {
if (board[i][j] != 0) {
int k = j;
while (k < 3 && board[i][k+1] == 0) {
board[i][k+1] = board[i][k];
board[i][k] = 0;
k++;
}
if (k < 3 && board[i][k+1] == board[i][k]) {
board[i][k+1] *= 2;
board[i][k] = 0;
}
}
}
}
break;
default:
System.out.println("Invalid direction!");
break;
}
}
private static boolean isGameOver() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (board[i][j] == 0) {
return false;
}
if (i < 3 && board[i][j] == board[i+1][j]) {
return false;
}
if (j < 3 && board[i][j] == board[i][j+1]) {
return false;
}
}
}
return true;
}
private static void printBoard() {
System.out.println("--------------------");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.printf("%-6d", board[i][j]);
}
System.out.println();
}
System.out.println("--------------------");
}
}
```
HTML代码:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>2048 Game</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<div class="gameboard">
<div class="row">
<div class="tile" id="00"></div>
<div class="tile" id="01"></div>
<div class="tile" id="02"></div>
<div class="tile" id="03"></div>
</div>
<div class="row">
<div class="tile" id="10"></div>
<div class="tile" id="11"></div>
<div class="tile" id="12"></div>
<div class="tile" id="13"></div>
</div>
<div class="row">
<div class="tile" id="20"></div>
<div class="tile" id="21"></div>
<div class="tile" id="22"></div>
<div class="tile" id="23"></div>
</div>
<div class="row">
<div class="tile" id="30"></div>
<div class="tile" id="31"></div>
<div class="tile" id="32"></div>
<div class="tile" id="33"></div>
</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
```
CSS代码:
```
.container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.gameboard {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: #bbada0;
padding: 20px;
border-radius: 10px;
box-shadow: 0px 0px 10px rgba(0,0,0,0.5);
}
.row {
display: flex;
}
.tile {
width: 80px;
height: 80px;
background-color: #cdc1b4;
margin: 10px;
border-radius: 5px;
font-size: 36px;
font-weight: bold;
text-align: center;
line-height: 80px;
}
```
这个代码会生成一个类似于2048小游戏的游戏面板,同时结合了Java代码来实现游戏逻辑。你需要将Java代码和HTML代码分别保存为Game2048.java和index.html文件,并将CSS代码保存为style.css文件。然后,你还需要使用JavaScript代码来将Java代码和HTML代码结合起来,实现游戏逻辑。