消消乐_初级代码(Java)

⼀个5*5的棋盘,铺满了5种类型的棋⼦,界⾯上分别⽤A~E这五个字⺟表示。棋牌打印出来的形式如下:
A B C D E
B C D E A
C D E A B
D E A B C
E A B C D

实现的功能:

请编写⼀个程序,⽀持下⾯的功能:
1. 程序启动后⽴即从控制台读⼊棋盘的格式,即读⼊五⾏字符串,每⾏的格式为 A,B,D,E,A,代表每⾏上
的棋⼦。
2. 棋盘内容输⼊后,进⼊等待⽤户输⼊命令的状态,程序⽀持3个命令:
2.1 print
打印棋盘布局
2.2 at x y
给出指定坐标的棋⼦以及相邻棋⼦的列表 列表中第⼀个元素是指定坐标位置的棋⼦,相邻棋⼦按照上,
下,左,右的顺序输出(某个⽅位没有邻居则省略) 如输⼊:at 2 2 则输出列表为[(2,2,E), (2,1,D), (2,3,A),
(1,2,D), (3,2,A)]
2.3 exit
退出程序
注意:
1. 坐标系的定义 如果要求输⼊或输出坐标,坐标系的定义为:左上⻆坐标为(0,0),右下⻆坐标为(4,4)。
2. 相邻的定义 有⼀条公共边的格⼦为相邻的格⼦
3. 关于⾮法输⼊ 本阶段不需要考虑⾮法的输⼊,即需求中对于⾮法输⼊的⾏为不做定义。

代码如下:

ChessBoard.java

import java.util.ArrayList;
import java.util.Scanner;

public class ChessBoard {
	final private static char[][] chessboard = new char[5][5];

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		for (int i = 0; i < 5; i++) {
			String B = input.nextLine().replaceAll(",", "");
			String Newstring = B.replaceAll(" ", "");
			for (int j = 0; j < 5; j++)
				chessboard[i][j] = Newstring.charAt(j);
		}
		while (true) {
			System.out.println("请输入命令(print,at,exit):");
			String command = input.nextLine();
			if (command.equals("print")) {
				printChessBoard();
			} else if (command.startsWith("at")) {
				String[] parts = command.split(" ");
				int x = Integer.parseInt(parts[1]);
				int y = Integer.parseInt(parts[2]);
				getNeighbors(x, y);
			} else if (command.equals("exit")) {
				break;
			}
		}
		System.exit(0);
	}

	private static void printChessBoard() {
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++)
				System.out.print(chessboard[i][j] + " ");
			System.out.println();
		}
	}

	private static void getNeighbors(int x, int y) {
		ArrayList<String> neighbors = new ArrayList<>();
		neighbors.add("(" + x + "," + y + "," + chessboard[y][x] + ")");
		// 上方格子
		if (y > 0) {
			neighbors.add("(" + x + "," + (y - 1) + "," + chessboard[y - 1][x] + ")");
		}

		// 下方格子
		if (y < 4) {
			neighbors.add("(" + x + "," + (y + 1) + "," + chessboard[y + 1][x] + ")");
		}

		// 左边格子
		if (x > 0) {
			neighbors.add("(" + (x - 1) + "," + y + "," + chessboard[y][x - 1] + ")");
		}

		// 右边格子
		if (x < 4) {
			neighbors.add("(" + (x + 1) + "," + y + "," + chessboard[y][x + 1] + ")");
		}

		System.out.println(neighbors);
	}
}

欢迎评论,给出更优代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值