[001]新手,用java面向过程思维写的五子棋小游戏。

xiaoxiao2021-02-28  103

import java.util.Scanner;

public class YouWuZiQi {

public static void main(String[] args) {

String[][] map =new String[10][10];

int result = 0;// 结果

int count = 0;// 计步

int a, b;// 下子位置

Scanner sca =new Scanner(System.in);

/*-----------遍历输出(有格子)-------------*/

for (int i = 0; i < map.length; i++) {

for (int j = 0; j < map[i].length; j++) {

map[i][j] = "*";

map[i][0] = "" + i + "";

map[0][j] = "" + j + "";

System.out.print(map[i][j] + " ");

}

System.out.println();

}

do {

/*-----------------玩家1输入----------------------*/

if (count % 2 == 0) {

System.out.println("第" + (count + 1) + "步:");

System.out.println("1号玩家请输入您要点击的行数:");

a = sca.nextInt();

if (a < 1 | a > map.length - 1) {

System.out.println("输入超出行边界,1号玩家重新输入坐标");

System.out.println();

continue;

}

System.out.println("1号玩家请输入您要点击的列数:");

b = sca.nextInt();

if (b < 1 | b > map.length - 1) {

System.out.println("输入超出列边界,1号玩家重新输入坐标");

System.out.println();

continue;

}

/*-------判断1号玩家并下子----------*/

if (count % 2 == 0) {

if (map[a][b] == "1" || map[a][b] == "2") {

System.out.println("该位置已有棋子,请重新输入");

} else {

map[a][b] = "1";

count++;

}

}

/*-----------遍历输出-------------*/

for (int i = 0; i < map.length; i++) {

for (int j = 0; j < map[i].length; j++) {

System.out.print(map[i][j] + " ");

}

System.out.println();

}

/*-------------------判断1胜--------------------*/

// 纵向

for (int i = 1; i < map.length - 4; i++) {

for (int j = 1; j < map[i].length; j++) {

if (map[i][j] == "1" & map[i + 1][j] == "1" & map[i + 2][j] == "1" & map[i + 3][j] == "1"

& map[i + 4][j] == "1") {

result = 1;

}

}

}

// 横向

for (int i = 1; i < map.length; i++) {

for (int j = 1; j < map[i].length - 4; j++) {

if (map[i][j] == "1" & map[i][j + 1] == "1" & map[i][j + 2] == "1" & map[i][j + 3] == "1"

& map[i][j + 4] == "1") {

result = 1;

}

}

}

// 斜向

for (int i = 3; i < map.length - 2; i++) {

for (int j = 3; j < map[i].length - 2; j++) {

if ("1" == map[i][j] & "1" == map[i - 1][j - 1] & "1" == map[i - 2][j - 2]

& "1" == map[i + 1][j + 1] & "1" == map[i + 2][j + 2]

|| "1" == map[i][j] & "1" == map[i - 1][j + 1] & "1" == map[i - 2][j + 2]

& "1" == map[i + 1][j - 1] & "1" == map[i + 2][j - 2]) {

result = 1;

}

}

}

if (result == 1) {

System.out.println("玩家1胜出,游戏结束");

return;

}

}

if (count % 2 == 1) {

/*--------------2下子并判断界限--------------*/

System.out.println("第" + (count + 1) + "步:");

System.out.println("2号玩家请输入您要点击的行数:");

a = sca.nextInt();

if (a < 1 | a > map.length - 1) {

System.out.println("输入超出行边界,2号玩家重新输入坐标");

System.out.println();

continue;

}

System.out.println("2号玩家请输入您要点击的列数:");

b = sca.nextInt();

if (b < 1 | b > map.length - 1) {

System.out.println("输入超出列边界,2号玩家重新输入坐标");

System.out.println();

continue;

}

/*-------------------2下子判断重复--------------------*/

if (count % 2 == 1) {

if (map[a][b] == "1" || map[a][b] == "2") {

System.out.println("该位置已有棋子,请重新输入");

} else {

map[a][b] = "2";

count++;

}

}

/*-----------遍历输出-------------*/

for (int i = 0; i < map.length; i++) {

for (int j = 0; j < map[i].length; j++) {

System.out.print(map[i][j] + " ");

}

System.out.println();

}

/*------------判断2胜-------------*/

// 纵向

for (int i = 1; i < map.length - 4; i++) {

for (int j = 1; j < map[i].length; j++) {

if (map[i][j] == "2" & map[i + 1][j] == "2" & map[i + 2][j] == "2" & map[i + 3][j] == "2"

& map[i + 4][j] == "2") {

result = 2;

}

}

}

// 横向

for (int i = 1; i < map.length; i++) {

for (int j = 1; j < map[i].length - 4; j++) {

if (map[i][j] == "2" & map[i][j + 1] == "2" & map[i][j + 2] == "2" & map[i][j + 3] == "2"

& map[i][j + 4] == "2") {

result = 2;

}

}

}

// 斜向

for (int i = 3; i < map.length - 2; i++) {

for (int j = 3; j < map[i].length - 2; j++) {

if ("2" == map[i][j] & "2" == map[i - 1][j - 1] & "2" == map[i - 2][j - 2]

& "2" == map[i + 1][j + 1] & "2" == map[i + 2][j + 2]

|| "2" == map[i][j] & "2" == map[i - 1][j + 1] & "2" == map[i - 2][j + 2]

& "2" == map[i + 1][j - 1] & "2" == map[i + 2][j - 2]) {

result = 2;

}

}

}

if (result == 2) {

System.out.println("玩家2胜出,游戏结束");

return;

}

}

/*----------------输入结束---------------------*/

} while (result == 0);

/*----------------检测结束--------------------*/

}

}

转载请注明原文地址: https://www.6miu.com/read-38013.html

最新回复(0)