怎样下五子棋,五子棋口诀表

Jike五点半,每天五点半进步一点点一、定义一个对手Rival类五子棋口诀表,packagecom.itwang.gonbang;publicclassRival{privateStringcolor

Jike五点半,每天五点半进步一点点

一、定义一个对手Rival类

五子棋口诀表,package com.itwang.gonbang;public class Rival { private String color;//颜色 private String nickName;//昵称 public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } public String getColor() { return color; } public void setColor(String color) { this.color = color; }}

二、定义一个棋盘ChessBoard类

package com.itwang.gonbang;/** * 五子棋棋牌 */public class ChessBoard { //五子棋的宽度 public static final Integer BOARD_SIZE = 8; public String[][] board; public void initBoard(){ //初始化棋盘数组 board = new String[BOARD_SIZE][BOARD_SIZE]; for (int i = 0;i < BOARD_SIZE;i++){ for (int j = 0;j < BOARD_SIZE;j++){ board[i][j] = "+"; } } } //在控制台输出棋盘 public void printBoard(){ for (int i = 0;i < BOARD_SIZE;i++){ for (int j = 0;j < BOARD_SIZE;j++){ System.out.print(board[i][j]); } System.out.println(); } }}

1、对局双方各执一色棋子。2、空棋盘开局。3、黑先、白后,交替下子,每次只能下一子。4、棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动,不得从棋盘上拿掉或拿起另落别处。5、黑方的第一枚棋子必须下在天元。

怎样下五子棋

三、定义一个主类Gobang

怎样下五子棋

package com.itwang.gonbang;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;/** * 五子棋的关键算法实现 */public class Gobang { //棋盘 private static ChessBoard chessBoard; private static Rival rival;//对手1 private static Rival rival2;//对手2 private int totalCount;//统计步数 /** * 判断输赢 * @param chessBoard * @param xPost * @param yPost * @param color * @return */ public static boolean isWin(ChessBoard chessBoard,int xPost,int yPost,String color){ //记录当前连接的点数 int count = 1; int currXPost = 0; int currYPost = 0; /** * 判断水平方向上的胜负 * 先从xPost左边遍历,然后从xPost右边遍历判断有连续的点 */ //向左 for (currYPost = yPost - 1;currYPost >= 0;currYPost --){ if ((chessBoard.board[xPost][currYPost]).equals(color)){ count++; if (count >= 5){ return true; } }else { break; } } //向右 for (currYPost = yPost + 1;currYPost < ChessBoard.BOARD_SIZE; currYPost ++){ if ((chessBoard.board[xPost][currYPost]).equals(color)){ count++; if (count >= 5){ return true; } }else { break; } } count = 1; /** * 判断垂直方向上的胜负 */ //向上遍历 for(currXPost = xPost -1;currXPost >= 0; currXPost --){ if ((chessBoard.board[currXPost][yPost]).equals(color)){ count++; if (count >= 5){ return true; } }else { break; } } //向下边遍历 for (currXPost = xPost + 1;currXPost < ChessBoard.BOARD_SIZE; currXPost ++){ if ((chessBoard.board[currXPost][yPost]).equals(color)){ count++; if (count >= 5){ return true; } }else { break; } } count = 1; /** * 左上到右下遍历 */ //左上 for (currXPost = xPost - 1,currYPost = yPost - 1;currXPost >= 0 && currYPost >= 0;currXPost--,currYPost--){ if ((chessBoard.board[currXPost][currYPost]).equals(color)){ count++; if (count >= 5){ return true; } }else { break; } } //右下 for (currXPost = xPost + 1,currYPost = yPost + 1; currXPost < ChessBoard.BOARD_SIZE && currYPost < ChessBoard.BOARD_SIZE;currXPost++,currYPost++){ if ((chessBoard.board[currXPost][currYPost]).equals(color)){ count++; if (count >= 5){ return true; } }else { break; } } /** * 从坐下到右上遍历 */ count = 1; //左下 for (currXPost = xPost + 1,currYPost = yPost - 1; currXPost < ChessBoard.BOARD_SIZE && currYPost >= 0;currXPost++,currYPost++){ if ((chessBoard.board[currXPost][currYPost]).equals(color)){ count++; if (count >= 5){ return true; } }else { break; } } //右上 for (currXPost = xPost - 1,currYPost = yPost + 1; currXPost >= 0 && currYPost < ChessBoard.BOARD_SIZE;currXPost--,currYPost++){ if ((chessBoard.board[currXPost][currYPost]).equals(color)){ count++; if (count >= 5){ return true; } }else { break; } } return false; } /** * 判断下棋的位置是否有子 * @param chessBoard * @param xPost * @param yPost * @param color1 * @param color2 * @return */ public static boolean isRepeat(ChessBoard chessBoard,int xPost,int yPost,String color1,String color2){ if ((chessBoard.board[xPost][yPost]).equals(color1) || (chessBoard.board[xPost][yPost]).equals(color2)){ return false; } return true; } public static void main(String[] args) throws IOException { chessBoard = new ChessBoard(); rival2 = new Rival(); rival = new Rival(); chessBoard.initBoard(); chessBoard.printBoard(); rival.setColor("*"); rival.setNickName("红方"); rival2.setColor("="); rival2.setNickName("黑方"); //获取键盘输入,每当在键盘上输入一行内容按回车键,刚输入的内容将被读取到 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); String inputStr = null; /*System.out.println("红方(1)先下?还是黑方(2)先下"); Scanner sc = new Scanner(System.in); int first = sc.nextInt();*/ boolean flag = true; if (flag){ System.out.println("请" + rival.getNickName() + "输入坐标: "); }else { System.out.println("请" + rival2.getNickName() + "输入坐标: "); } while((inputStr = bufferedReader.readLine()) != null){ //将用户输入的字符以逗号作为分隔符 String[] splitStr = inputStr.split(","); //将2个字符串转化为用户棋下的坐标 int xPost = Integer.parseInt(splitStr[0]); int yPost = Integer.parseInt(splitStr[1]); //把对应的数组元素赋值为'*';这里按照横坐标为x轴,纵坐标为y轴,由于数组与坐标相反 if (flag){ if (isRepeat(chessBoard,yPost-1,xPost-1,rival.getColor(),rival2.getColor())){ chessBoard.board[yPost - 1][xPost - 1] = rival.getColor(); chessBoard.printBoard(); flag = false; /** * 判断输赢 */ if (isWin(chessBoard,yPost - 1,xPost - 1,rival.getColor())){ System.out.println(rival.getNickName() + "胜利"); break; } }else { System.out.println("该地方已经有棋子了,请重试"); } }else{ if (isRepeat(chessBoard,yPost-1,xPost-1,rival.getColor(),rival2.getColor())){ chessBoard.board[yPost - 1][xPost - 1] = rival2.getColor(); chessBoard.printBoard(); flag = true; /** * 判断输赢 */ if (isWin(chessBoard,yPost - 1,xPost - 1,rival2.getColor())){ System.out.println(rival2.getNickName() + "胜利"); break; } }else { System.out.println("该地方已经有棋子了,请重试"); } } if (flag){ System.out.println("请" + rival.getNickName() + "输入坐标: "); }else { System.out.println("请" + rival2.getNickName() + "输入坐标: "); } } }}

五子棋规则概述 最基础的胜利方式。一方先将棋子五个无间断的排成一行一列或者一条斜线(日字类型的斜线不计在内)者为胜。一般来说活三(三个一线无阻挡)和冲四(有一个阻挡,若不阻挡下一子成五)是必须要防守的,掌握。

突破昨天的自己

1、打开微信软件,点击下方发现,选择最后一个小程序。2、在搜索小程序框框里面输入五子棋,点击搜索。3、选择五子棋游戏经典版,点击即可进入游戏页面。4、选择对应的难度选择,先后手,点击开始游戏。5、之后就可以进行游戏。

上一篇 2023年06月06 05:45
下一篇 2023年05月28 23:34

相关推荐

  • 怎样断奶,怎样断奶不痛苦不涨奶

    春秋季是给宝宝断奶的最好时机?很多宝妈看到这个会问:错过了这个秋天就得等到明年开春才能断奶了吗?一、秋天到了,是断奶的好时节吗?其实并不存在“春秋季更适合断奶”的说法,宝宝并不是一个机器人,能够设定一

    2023年05月24 258
  • 媳妇是怎样炼成的,媳妇是怎样炼成的免费看

    怪物老婆养成记是一款收集类手游,游戏采用像素画风设计而成,画面背景以及人物角色都十分可爱,可以为玩家带来视觉上的享受。游戏背景讲述的是有一天,世界被病毒感染,大部分人都变成了僵尸怪物。他本来拥有一个幸

    2023年04月24 286
  • 桂圆吃多了会怎样,桂圆一天吃了40多颗

    桂圆是很多人都非常喜欢吃的食物,桂圆一天吃了40多颗,是由龙眼晒干制作而成的。严格意义上来说,龙眼和桂圆应该是一种食物,不过味道形式完全不同,所以才会有了名称上的区别。而我们今天所说的就是龙眼在晒干以

    2023年04月24 209
  • 论文页码目录和正文怎样分开,word目录怎么和正文分开

    word目录怎么和正文分开,如何在一篇论文中设置不同的页眉页脚呢?在一篇论文中有封面、中英文摘要、目录、正文。我们的学位论文要求封面不设页码,中英文摘要和目录页码为Ⅰ、Ⅱ…,正文页码使用1、2…。关键

    2023年05月16 227
  • 怎样全选,怎么部分全选

    我们一般情况下,在Excel中,使用Ctrl+A,选择整个工作表。怎么部分全选,1、选择的单元格,没有数据,按Ctrl+A将选择当前区域,含有数据的单元格和无数据的单元格,如图:1、选择的单元格,没有

    2023年05月26 300
  • 怎样注册qq邮箱,QQ邮箱注册入口

    微信公众号注册详细教程Setp1:打开微信公众号网站:点立即注册Step2:个人微信公众号一般选择订阅号Step3:输入邮箱,一般QQ邮箱注册即可,大家都有QQ的,点击活邮箱,去邮箱里把邮箱验证码填进

    2023年06月06 261
  • 怎样的太阳,怎样的太阳四字词语

    今天跟大家分享一点心情,我们当下所有的人对所有的事都有一个所谓的叫标准。好像似乎做任何事情都有标准,应该如何工作?如何生活?如何谈及情感都有标准,怎样的太阳四字词语,但是我觉得还没有到真正的支持时代,

    2023年05月24 242
  • 怎样发电子邮件,电子邮件的发送方法

    现代生活中,除了短信、微信、QQ等通讯工具,我们还普遍使用着电子邮件。电子邮件的产生远比前几样工具早,目前使用频率虽然没有其他几样高,但却在工作、举证、身份识别等正式场合扮演着不可或缺的角色。为了实现

    2023年05月08 221
  • 怎样去除黄褐斑,什么斑是黄褐斑

    黄褐斑是困扰女性的一大皮肤问题!很多被黄褐斑困扰的女性,什么斑是黄褐斑,一直在寻求着一个能够去除脸上斑点的办法,但是却处处碰壁,不仅斑点没去掉,甚至越来越严重了!你知道,为什么你脸上的黄褐斑变得越来越

    2023年05月03 225
  • 青少年怎样长高,青少年怎样长个子

    高挑的身材是每个青少年都希望得到的,但是偏偏由于发育时期的不运动不补给营养而导致身材矮小,为了使自己能长高,人们什么方法都用过,但效果并不显着,而且花费不菲。而药物容易伤害身体,有没有什么最有效最安全

    2023年05月03 273
  • 怎样鉴别和田玉,怎么确定和田玉

    怎么确定和田玉,和田玉最简单的鉴别方法介绍有句话叫“十年修树,百年修人”,无论是树还是人,急功近利是不够的,成就需要长期的积累。和田玉也是经过几千年的淬炼才形成了美丽的玉石,所以一块优质的和田玉在市场

    2023年05月02 278
  • 怎样才能挣钱,不怕死来钱快的工作

    2023年5月份开始,有三生意,做好了可以年入百万。从2023年5月份开始,一定是中国经济的春天。4月份过后有三个生意必火。你们一定要抢着干,随便一个都比打工强,而且完全是轻资产的回报非常大,随便一个

    2023年05月03 250
关注微信