Java五子棋的简单实现

/*
控制台五子棋游戏
初始化棋盘
绘画棋盘
用户输入下子坐标
判断输入合法性
下子
电脑下子
判断输赢

*/
import java.util.Scanner;
public class WuZiQi
{
//定义棋盘的大小
static int SIZE = 15;
//用二维数组表示棋盘
static String[][] BROAD = new String[SIZE][SIZE];

//初始化棋盘
public static void init()
{
for(int i = 0; i< SIZE; i++)
{
for(int j = 0; j < SIZE; j++)
{
BROAD[i][j] = "十";
}
}
}

//绘画棋盘
public static void paintBroad()
{
for(int i = 0; i< SIZE; i++)
{
for(int j = 0; j < SIZE; j++)
{
//输出一行,不要换行
System.out.print(BROAD[i][j]);
}
//换行输出下一行
System.out.println();
}
}

//判断输入坐标的合法性
public static boolean isLegal(int i, int j)
{
//输入不能超出棋盘范围
if(i > 15 || i < 0 || j > 15 || j<0)
{
return false;
}
//坐标位置必须是还未下子
if(BROAD[i-1][j-1] != "十")
{
return false;
}
return true;
}

//生成随机数模拟电脑下子
public static int[] computer()
{
int[] coordinate = new int[2];
coordinate[0] =(int)( Math.random()*15 + 1);
coordinate[1] =(int)( Math.random()*15 + 1);
while(!isLegal(coordinate[0],coordinate[1]))
{
coordinate[0] =(int)( Math.random()*15 + 1);
coordinate[1] =(int)( Math.random()*15 + 1);
}
return coordinate;
}

/**判断输赢
*返回值:
1:黑子赢了
0:白字赢了
-1:未分胜负
*/
public static int isWin()
{
//横向判断

//纵向判断

//反斜杠判断


//斜杠判断
for(int i = 0; i < SIZE-4; i++)
{
for(int j = 0; j < SIZE-4; j++)
{
if(BROAD[i][j] == "●" && BROAD[i+1][j+1] == "●"&&BROAD[i+2][j+2] == "●"&&BROAD[i+3][j+3] == "●"&&BROAD[i+4][j+4] == "●")
return 1;
else if(BROAD[i][j] == "○" && BROAD[i+1][j+1] == "○"&&BROAD[i+2][j+2] == "○"&&BROAD[i+3][j+3] == "○"&&BROAD[i+4][j+4] == "○")
return 0;
}
}
return -1;
}


public static void main(String[] args)
{
init();
paintBroad();
do{
System.out.println("请输入下子的坐标:");
Scanner sn = new Scanner(System.in);
int i = sn.nextInt();
int j = sn.nextInt();

while(!isLegal(i,j))
{
System.out.println("输入非法,请重新输入下子的坐标:");
sn = new Scanner(System.in);
i = sn.nextInt();
j = sn.nextInt();
}
BROAD[i-1][j-1] = "●";
paintBroad();


int[] coordinate = computer();
int c1 = coordinate[0];
int c2 = coordinate[1];

BROAD[c1-1][c2-1] = "○";
System.out.println("电脑下子: " + c1 + " " + c2);
paintBroad();
if(isWin() ==1)
{
System.out.println("恭喜您赢了");
break;
}
if(isWin() ==0)
{
System.out.println("很遗憾,您输了");
break;
}
}while(isWin() == -1);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值