能帮我用java写一个开心消消乐吗
时间: 2023-12-30 14:02:36 浏览: 165
当然可以!开心消消乐是一款非常经典的益智游戏,下面是一个简单的Java代码示例,可以供您参考:
```java
import java.util.Scanner;
public class HappyEliminationGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 游戏面板的大小
int[][] board = new int[n][n]; // 存储游戏面板
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
board[i][j] = scanner.nextInt(); // 初始化游戏面板
}
}
int score = 0; // 玩家得分
while (true) {
boolean hasEliminated = false; // 是否有方块被消除
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (board[i][j] != 0 && canEliminate(board, i, j)) { // 如果当前方块可以被消除
score += board[i][j]; // 加分
board[i][j] = 0; // 消除方块
hasEliminated = true;
}
}
}
if (!hasEliminated) { // 如果没有方块被消除,游戏结束
break;
}
dropDown(board); // 方块下落
refill(board); // 填充新方块
}
System.out.println("游戏结束,得分为:" + score);
}
/**
* 判断当前方块是否可以被消除
*/
public static boolean canEliminate(int[][] board, int row, int col) {
int val = board[row][col];
int cnt = 0; // 相同颜色方块的数量
// 向上搜索
for (int i = row - 1; i >= 0; i--) {
if (board[i][col] == val) {
cnt++;
} else {
break;
}
}
// 向下搜索
for (int i = row + 1; i < board.length; i++) {
if (board[i][col] == val) {
cnt++;
} else {
break;
}
}
if (cnt >= 2) { // 如果相同颜色方块的数量大于等于3,可以被消除
return true;
}
cnt = 0;
// 向左搜索
for (int j = col - 1; j >= 0; j--) {
if (board[row][j] == val) {
cnt++;
} else {
break;
}
}
// 向右搜索
for (int j = col + 1; j < board.length; j++) {
if (board[row][j] == val) {
cnt++;
} else {
break;
}
}
return cnt >= 2;
}
/**
* 方块下落
*/
public static void dropDown(int[][] board) {
int n = board.length;
for (int j = 0; j < n; j++) {
int k = n - 1;
for (int i = n - 1; i >= 0; i--) {
if (board[i][j] != 0) {
int tmp = board[i][j];
board[i][j] = 0;
board[k--][j] = tmp;
}
}
}
}
/**
* 填充新方块
*/
public static void refill(int[][] board) {
int n = board.length;
for (int j = 0; j < n; j++) {
int k = n - 1;
for (int i = n - 1; i >= 0; i--) {
if (board[i][j] == 0) {
board[i][j] = (int) (Math.random() * 5) + 1; // 随机生成1-5的颜色
if (i < k) {
int tmp = board[i][j];
board[i][j] = board[k][j];
board[k][j] = tmp;
}
k--;
}
}
}
}
}
```
该示例代码实现了一个简单的开心消消乐游戏,您可以根据自己的需求进行修改和完善。
阅读全文