使用java编写五指棋游戏,棋盘要有线条,控制台输入,要可以判断胜利、失败和平局,还有就是两个角色一个是玩家控制台输入,一个是电脑自动输入,用户输入完电脑在输入
时间: 2023-06-13 09:04:37 浏览: 151
java 控制台下的一个五子棋游戏
好的,那我来为你提供一个五子棋游戏的Java代码示例,其中包括了棋盘的线条、胜利判断、玩家和电脑的输入等功能,你可以根据自己的需求进行修改。
```
import java.util.Scanner;
public class FiveChess {
private static final int BOARD_SIZE = 15; // 棋盘大小
private static final int WIN_COUNT = 5; // 胜利所需棋子数
private static final char CHESS_PLAYER = '●'; // 玩家棋子
private static final char CHESS_COMPUTER = '○'; // 电脑棋子
private static final char CHESS_BLANK = '+'; // 空白棋子
private static char[][] board = new char[BOARD_SIZE][BOARD_SIZE]; // 棋盘
public static void main(String[] args) {
initBoard(); // 初始化棋盘
printBoard(); // 打印棋盘
Scanner scanner = new Scanner(System.in);
boolean isPlayerTurn = true; // 是否轮到玩家下棋
while (true) {
int row, col;
if (isPlayerTurn) {
System.out.print("请输入坐标(如 3,4):");
String input = scanner.nextLine().trim();
String[] coords = input.split(",");
row = Integer.parseInt(coords[0]) - 1;
col = Integer.parseInt(coords[1]) - 1;
if (!isValidMove(row, col)) {
System.out.println("坐标不合法,请重新输入!");
continue;
}
board[row][col] = CHESS_PLAYER;
} else {
System.out.println("电脑正在思考中...");
try {
Thread.sleep(1000); // 1秒思考时间
} catch (InterruptedException e) {
e.printStackTrace();
}
int[] coords = getComputerMove();
row = coords[0];
col = coords[1];
board[row][col] = CHESS_COMPUTER;
}
printBoard(); // 打印棋盘
if (isWin(row, col)) { // 判断胜负
System.out.println(isPlayerTurn ? "你赢了!" : "电脑赢了!");
break;
}
if (isDraw()) { // 判断平局
System.out.println("平局!");
break;
}
isPlayerTurn = !isPlayerTurn; // 切换下棋方
}
}
// 初始化棋盘
private static void initBoard() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
board[i][j] = CHESS_BLANK;
}
}
}
// 打印棋盘
private static void printBoard() {
System.out.print(" ");
for (int i = 0; i < BOARD_SIZE; i++) {
System.out.print((i + 1) + " ");
}
System.out.println();
for (int i = 0; i < BOARD_SIZE; i++) {
System.out.print((i + 1) + " ");
for (int j = 0; j < BOARD_SIZE; j++) {
System.out.print(board[i][j] + " ");
}
System.out.println();
}
}
// 判断坐标是否合法
private static boolean isValidMove(int row, int col) {
return row >= 0 && row < BOARD_SIZE && col >= 0 && col < BOARD_SIZE && board[row][col] == CHESS_BLANK;
}
// 获取电脑下棋的坐标
private static int[] getComputerMove() {
int row = (int) (Math.random() * BOARD_SIZE);
int col = (int) (Math.random() * BOARD_SIZE);
while (!isValidMove(row, col)) {
row = (int) (Math.random() * BOARD_SIZE);
col = (int) (Math.random() * BOARD_SIZE);
}
return new int[] {row, col};
}
// 判断胜负
private static boolean isWin(int row, int col) {
char chess = board[row][col];
int count = 1;
// 横向判断
for (int i = col - 1; i >= 0; i--) {
if (board[row][i] == chess) {
count++;
} else {
break;
}
}
for (int i = col + 1; i < BOARD_SIZE; i++) {
if (board[row][i] == chess) {
count++;
} else {
break;
}
}
if (count >= WIN_COUNT) {
return true;
}
// 竖向判断
count = 1;
for (int i = row - 1; i >= 0; i--) {
if (board[i][col] == chess) {
count++;
} else {
break;
}
}
for (int i = row + 1; i < BOARD_SIZE; i++) {
if (board[i][col] == chess) {
count++;
} else {
break;
}
}
if (count >= WIN_COUNT) {
return true;
}
// 左上-右下方向判断
count = 1;
for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {
if (board[i][j] == chess) {
count++;
} else {
break;
}
}
for (int i = row + 1, j = col + 1; i < BOARD_SIZE && j < BOARD_SIZE; i++, j++) {
if (board[i][j] == chess) {
count++;
} else {
break;
}
}
if (count >= WIN_COUNT) {
return true;
}
// 右上-左下方向判断
count = 1;
for (int i = row - 1, j = col + 1; i >= 0 && j < BOARD_SIZE; i--, j++) {
if (board[i][j] == chess) {
count++;
} else {
break;
}
}
for (int i = row + 1, j = col - 1; i < BOARD_SIZE && j >= 0; i++, j--) {
if (board[i][j] == chess) {
count++;
} else {
break;
}
}
return count >= WIN_COUNT;
}
// 判断平局
private static boolean isDraw() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
if (board[i][j] == CHESS_BLANK) {
return false;
}
}
}
return true;
}
}
```
这段代码中,我们首先定义了一些常量,包括棋盘大小、胜利所需棋子数、玩家和电脑的棋子等。
接着,我们定义了一个二维字符数组来表示棋盘,并编写了一些方法来完成棋盘的初始化、打印、坐标的合法性判断、电脑下棋的坐标获取、胜负的判断和平局的判断等功能。
在主方法中,我们使用一个循环来不断让玩家和电脑交替下棋,直到出现胜负或平局为止。
你可以根据自己的需要进行修改和完善。
阅读全文