lowb版五子棋
程序员文章站
2022-07-04 22:09:39
...
*创建char二维数组储存棋盘状态(作为静态全局变量)
*初始化棋盘
*创建标志flag控制黑白交替下棋
*开始下棋 直到gameover
*创建isGameOver();来判断是否五子连珠
*创建printBoard();负责打印,每下一次棋打印一次
*创建takeChess(flag);负责下棋
import java.util.*;
class gobang{
static Scanner input = new Scanner(System.in);
static String[][] chessBoard = new String[15][15];
public static void main(String[] args){
for(int i=0;i<15;i++){
Arrays.fill(chessBoard[i] , ".");
}
int flag = 0;
boolean gameOver = true;
while(gameOver){
printBoard();
takeChess(flag);
flag++;
gameOver = isGameOver();
}
System.out.printf("游戏结束了!");
}
public static void printBoard(){
System.out.print(" ");
for(int k=0;k<15;k++){
System.out.printf("%3d",k+1);
}
System.out.println();
System.out.println();
for(int i=0;i<15;i++){
System.out.printf("%3d",i+1);
for(int j=0;j<15;j++){
System.out.printf("%3s",chessBoard[i][j]);
}
System.out.println();
System.out.println();
}
}
public static void takeChess(int flag){
if(flag%2==0){
do{
System.out.print("系统:>>>请白方下棋:(先输入纵坐标,再输入横坐标,两次回车) ");
int x = input.nextInt();
int y = input.nextInt();
if ((x<=1||x>=15)&&(y<=1||x>=14)){
System.out.println("输入错误,请重新输入。");
continue;
}
else if(!chessBoard[x-1][y-1].equals(".")){
System.out.println("输入错误,请重新输入。");
continue;
}
chessBoard[x-1][y-1]="o";
break;
}while(true);
}
else{
do{
System.out.print("系统:>>>请黑方下棋:(先输入纵坐标,再输入横坐标,两次回车) ");
int x = input.nextInt();
int y = input.nextInt();
if ((x<=0||x>15)&&(y<=0||y>=15)){
System.out.println("输入错误,请重新输入。");
continue;
}
else if(!chessBoard[x-1][y-1].equals(".")){
System.out.println("输入错误,请重新输入。");
continue;
}
chessBoard[x-1][y-1]="*";
break;
}while(true);
}
}
public static boolean isGameOver(){
for(int i=4;i<11;i++){
for(int j=0;j<11;j++){
if(chessBoard[i][j]!="."){
int count =1;
for(int k=0;k<5;k++){//向右判断
if(chessBoard[i][j]==chessBoard[i][j+k+1]){
count++;
}
if(count>=5){
return false;
}
}
count =1;
for(int k=0;k<4;k++){//向下判断
if(chessBoard[i][j]==chessBoard[i+k+1][j]){
count++;
}
if(count>=5){
return false;
}
}
count =1;
for(int k=0;k<4;k++){//向右上判断
if(chessBoard[i][j]==chessBoard[i+k+1][j+k+1]){
count++;
}
if(count>=5){
return false;
}
}
count =1;
for(int k=0;k<4;k++){//向右下判断
if(chessBoard[i][j]==chessBoard[i-k-1][j+k+1]){
count++;
}
if(count>=5){
return false;
}
}
}
}
}
return true;
}
}
下一篇: 如何利用HTML格式化你的硬盘
推荐阅读
-
Win10 PC/Mobile创意者更新正式版15063.674累计更新补丁KB4041676推送(附更新内容)
-
xp系统安装版10分钟完成 快来体验吧
-
Win10 RTM版更新10240.17643补丁KB4042895下载地址(附更新修复内容)
-
Win10预览版1709怎么设置夜间模式自动开启的时间段?
-
高德地图上线iPhone版AR驾车导航:专治迷路司机
-
RocketMQ最佳实践(一)4.0版本/概念介绍/安装调试/客户端demo
-
新品成熟EMR源码电子病历系统软件NET网络版CS可用带数据库全文档
-
联想Z5 Pro GT 855版明天发售:2698元起
-
小米11 Ultra维修价格出炉:换主板2400元 比K40标准版都贵
-
phpredis汉语言手册——《redis中文手册》 php版