java五子棋,java绘制五子棋棋盘
本文分享了Java实现无界面五子棋的具体代码供大家参考,具体内容如下
00-1010本设计是一个基于Java类和对象以及知识点数组开发的小型五子棋游戏程序。游戏开始时,选择黑棋和白棋开始,在棋盘的第一个坐标上丢一个棋子,然后轮流丢棋子,以此类推,直到有一方先将棋盘的纵向、横向或两个斜向的五个棋子连接起来,则该方获胜。
00-1010 1.棋盘设计为10*10格,棋盘类型Chess[][]为属性字符串chessType的二维数组;首先,chessType值是" "。2.初始化二维数组。3.玩家选定黑白圈后,开始下棋。要输入棋子的行列坐标,黑白棋子轮流下,当一方连上五颗棋子或满棋盘时,游戏结束(连上五颗棋子的一方获胜,满棋盘为和局)。4.每走一步成功后,立即判断以此位置为中心的八个方向:上、下、左、右、左上、左下、右上、右下是否有同色棋子,并连成五枚。如果连接成五块,游戏结束,输出相应的信息。5.当游戏的一方获胜时,显示胜利信息。从程序表面看,这是一个二维平面,所以数据用二维数组表示。数组的两个下标可以表示棋盘上的位置,数组元素的值表示棋盘上的状态。有三种情况,白棋,黑棋,格子。
项目介绍:
1.棋子
/* * * * @作者胡东升* @ date 2020/10/29-9:28 */公共类ChessType {私有字符串chestype;私有int x;私有int y;public int getX(){ return x;} public void setX(int x){ this . x=x;} public int getY(){ return y;} public void setY(int y){ this . y=y;}公共chestype(){ }公共字符串getchestype(){ return chestype;} public void setchestype(String chestype){ this . chestype=chestype;} }2.下棋
/* * * * @作者胡东升* @ date 2020/10/29-9:27 */公开课五子棋{ private int size=1;私有chestype[][]chestypes;私有int行;私有int列;私有int x;私有int y;//创建棋盘公共五子棋(int row,int column){ this . row=row;this.colum=columchestypes=new chestype[row][column];}//初始化棋盘公共void initchestype(){ for(int I=0;i chessTypes.lengthI){ for(int j=0;j chestypes[I]。长度;j){ chestypes[I][j]=new chestype();chestypes[I][j]。setchestype(“”);} } }//用public void setwhitness(int x,int y) {chestypes [x] [y]下白棋。setchestypes(“”);}//下黑棋public void setblackchess (int x,int y) {chestypes [x] [y]。setchestypes();}//判断victory是否为公共布尔checkwin (int I,int j) {//todo自动生成方法存根布尔标志=false//判断垂直方向是否有五块颜色相同int count1=1//相同的颜色
棋子的个数 String color = chessTypes[i][j].getChessType(); //刚下的棋子的颜色 int a = 1; //棋子索引的增量 while((i+a)<row && color == chessTypes[i+a][j].getChessType()){ count1++; a++; } a = 1; while((i-a)>=0 && color == chessTypes[i-a][j].getChessType()){ count1++; a++; } if(count1 >= 5){ flag = true; } //判断纵向是否有五个棋子是相同的颜色 int count2 = 1; a = 1; while((j+a)<colum && color == chessTypes[i][j+a].getChessType()){ count2++; a++; } a = 1; while((j-a)>=0 && color == chessTypes[i][j-a].getChessType()){ count2++; a++; } if(count2 >= 5){ flag = true; } //右上 左下 是否有五个棋子是相同的颜色 int count3 = 1; a = 1; while((i+a)<row && (j-a)>=0 && color == chessTypes[i+a][j-a].getChessType()){ count3++; a++; } a = 1; while((i-a)>=0 && (j+a)<colum && color == chessTypes[i-a][j+a].getChessType()){ count3++; a++; } if(count3 >= 5){ flag = true; } //左上 右下 是否有五个棋子是相同的颜色 int count4 = 1; a = 1; while((i-a)>0 && (j-a)>=0 && color == chessTypes[i-a][j-a].getChessType()){ count4++; a++; } a = 1; while((i+a)<row && (j+a)<colum && color == chessTypes[i+a][j+a].getChessType()){ count4++; a++; } if(count4 >= 5){ flag = true; } return flag; } //落子后打印棋盘 public void print(){ for(int i = 0; i< chessTypes.length; i++){ for (int j = 0; j< chessTypes[i].length; j++){ System.out.print(chessTypes[i][j].getChessType()); } System.out.println(); } }}3.测试
** * @author hudongsheng * @date 2020/10/29 - 9:27 */public class Test { public static void main(String[] args) { boolean flag = true; int x; int y; Gobang gobang = new Gobang(10,10); Scanner scanner = new Scanner(System.in); gobang.initChessType(); //下棋 System.out.println("黑棋执先"); while (true){ gobang.print(); System.out.println("请输入下黑棋的坐标:"); x = scanner.nextInt(); y = scanner.nextInt(); gobang.setBlackChess(x,y); if(gobang.checkWin(x,y)){ gobang.print(); System.out.println("黑棋胜!"); break; } gobang.print(); System.out.println("请输入下白棋的坐标:"); x = scanner.nextInt(); y = scanner.nextInt(); gobang.setWhiteChess(x,y); if(gobang.checkWin(x,y)){ gobang.print(); System.out.println("白棋胜!"); break; } } }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。