使用java语言 设计一个九宫格拼图小游戏
以下是一个简单的九宫格拼图小游戏的Java代码实现:
import java.util.Scanner;
public class PuzzleGame {
private int[][] board; // 存储拼图板的二维数组
private int size; // 拼图板的大小
public PuzzleGame(int size) {
this.size = size;
board = new int[size][size];
int num = 1;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
board[i][j] = num;
num++;
}
}
board[size-1][size-1] = 0; // 将最后一个位置设置为空白
}
// 打印当前拼图板的状态
public void displayBoard() {
System.out.println();
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (board[i][j] == 0) {
System.out.print(" ");
} else {
System.out.print(board[i][j] + " ");
}
}
System.out.println();
}
System.out.println();
}
// 获取空白位置的横坐标和纵坐标
private int[] getBlankPosition() {
int[] pos = new int[2];
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (board[i][j] == 0) {
pos[0] = i;
pos[1] = j;
break;
}
}
}
return pos;
}
// 移动拼图块
private void move(int x, int y) {
int[] blankPos = getBlankPosition();
int blankX = blankPos[0];
int blankY = blankPos[1];
// 判断是否可以移动
if ((x == blankX && Math.abs(y - blankY) == 1) || (y == blankY && Math.abs(x - blankX) == 1)) {
int temp = board[x][y];
board[x][y] = board[blankX][blankY];
board[blankX][blankY] = temp;
} else {
System.out.println("无法移动该块!");
}
}
// 判断是否完成拼图
public boolean isCompleted() {
int num = 1;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (board[i][j] != num) {
return false;
}
num++;
}
}
return true;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入拼图板的大小:");
int size = scanner.nextInt();
PuzzleGame game = new PuzzleGame(size);
game.displayBoard();
while (!game.isCompleted()) {
System.out.print("请输入要移动的拼图块的横坐标和纵坐标(用空格隔开):");
int x = scanner.nextInt();
int y = scanner.nextInt();
game.move(x, y);
game.displayBoard();
}
System.out.println("恭喜你完成了拼图!");
}
}
这个小游戏的实现比较简单,主要是通过一个二维数组来存储拼图板的状态,然后实现移动拼图块、显示拼图板状态以及判断是否完成拼图的方法。在main方法中,通过循环输入要移动的拼图块的坐标来进行游戏,直到完成拼图为止。
原文地址: https://www.cveoy.top/t/topic/b1ls 著作权归作者所有。请勿转载和采集!