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

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);

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

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值