写一个贪吃蛇游戏的JAVA代码,要求可以玩
时间: 2023-11-28 19:47:41 浏览: 67
以下是一个简单的贪吃蛇游戏JAVA代码,可以在控制台中玩:
```java
import java.util.Random;
import java.util.Scanner;
public class SnakeGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int width = 20; // 游戏界面宽度
int height = 20; // 游戏界面高度
int[][] map = new int[width][height]; // 地图,0表示空格,1表示食物,2表示蛇身
int score = 0; // 得分
int direction = 0; // 方向:0表示往上,1表示往右,2表示往下,3表示往左
int[] head = {width / 2, height / 2}; // 蛇头初始位置
int[][] body = {head}; // 蛇身初始位置
map[head[0]][head[1]] = 2; // 在地图上标记蛇头
while (true) { // 游戏循环
// 在地图上随机生成食物
while (true) {
int x = random.nextInt(width);
int y = random.nextInt(height);
if (map[x][y] == 0) {
map[x][y] = 1;
break;
}
}
// 打印地图和得分
System.out.print("Score: " + score + "\n");
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
if (i == head[0] && j == head[1]) {
System.out.print("O");
} else if (map[i][j] == 1) {
System.out.print("*");
} else if (map[i][j] == 2) {
System.out.print("#");
} else {
System.out.print(" ");
}
}
System.out.print("\n");
}
// 获取用户输入的方向
System.out.print("Enter direction (w/a/s/d): ");
String input = scanner.nextLine();
if (input.equals("w")) {
direction = 0;
} else if (input.equals("d")) {
direction = 1;
} else if (input.equals("s")) {
direction = 2;
} else if (input.equals("a")) {
direction = 3;
}
// 移动蛇头
switch (direction) {
case 0:
head[0]--;
break;
case 1:
head[1]++;
break;
case 2:
head[0]++;
break;
case 3:
head[1]--;
break;
}
// 如果蛇头撞到边界或自己的身体,游戏结束
if (head[0] < 0 || head[0] >= width || head[1] < 0 || head[1] >= height || map[head[0]][head[1]] == 2) {
System.out.print("Game over!\n");
break;
}
// 如果蛇头吃到食物,得分加1,并将食物从地图上移除
if (map[head[0]][head[1]] == 1) {
score++;
map[head[0]][head[1]] = 2;
}
// 将蛇头加入蛇身数组最前面
body = addToArray(body, head);
// 如果蛇身长度超过得分,删除蛇身数组最后面的元素
if (body.length > score) {
body = removeFromArray(body, body.length - 1);
}
// 根据蛇身数组更新地图
map = new int[width][height];
for (int i = 0; i < body.length; i++) {
map[body[i][0]][body[i][1]] = 2;
}
}
}
// 将元素添加到数组最前面
public static int[][] addToArray(int[][] array, int[] element) {
int[][] newArray = new int[array.length + 1][2];
newArray[0] = element;
for (int i = 0; i < array.length; i++) {
newArray[i + 1] = array[i];
}
return newArray;
}
// 删除数组中指定位置的元素
public static int[][] removeFromArray(int[][] array, int index) {
int[][] newArray = new int[array.length - 1][2];
for (int i = 0; i < index; i++) {
newArray[i] = array[i];
}
for (int i = index + 1; i < array.length; i++) {
newArray[i - 1] = array[i];
}
return newArray;
}
}
```
使用方法:
1. 将以上代码复制到Java编译器中。
2. 编译并运行代码,控制台会出现游戏界面和提示。
3. 根据提示输入方向,使蛇头移动。
4. 如果蛇头吃到食物,得分加1,并在地图上随机生成新的食物。
5. 如果蛇头撞到边界或自己的身体,游戏结束。