时间:2021-05-19
非常简单的四子棋游戏
本人是刚学java的小白,最近在书上看到了有关四子棋游戏的编程题,就试着来写一写,代码也比较简单。
思路
写四子棋的难点是如何判断四个棋子连在一起。
下面给出图解:
观察上图,先从落棋点开始,设置一个计数器 i ,并初始化它为1,像左端移动,遇到的是跟落棋点相同颜色的棋子,则使 i 加1,继续向左端移动,没有棋子,则回到落棋点从而向右移动,向右端移动遇到第三个相同的棋,这时i = 3,然后继续向右移动遇到第四个棋子使 i = 4,到最后只要i = 4,即游戏胜利。再看下图。
按照上面的流程,先向左边移动,遇到没有棋子的点停止后 i = 2,再向右移动,遇到不同颜色的棋子后停止,i = 3,这样落棋点两边方向判断结束后,i < 4即游戏继续。
总结
判断游戏是否胜利,就是从棋子落点两个相反的方向,遇到相同的棋子使计数器数值加1,遇到无棋或颜色不同就结束向另一个方向,直到遇到无棋子和不同颜色的棋子,然后判断计数器是否为4。在四子棋中有7个方向需要判断。
import java.util.Scanner;/** * * * 玩法:1.跟五子棋玩法差不多,只是少一颗子,下棋只能选择每列下在每列棋子上面一格。 * 2.棋子分为黄、红,执黄先行。 * 3.胜利条件跟五子棋一样,就是少一颗子。 */class Desk { //棋桌类 private char[][] date = new char[6][7]; private Scanner scanner = new Scanner(System.in) ; private int hand = 1 ; //画出整个棋盘以及上面的棋子 public void draw() { for (int i = 0; i < this.date.length; i++) { System.out.print("|"); for (int j = 0; j < this.date[i].length; j++) { System.out.print(this.date[i][j] + "|"); } System.out.println(); } if (this.hand % 2 == 1) { System.out.print("现在是第" + this.hand + "手,轮到黄棋: "); playchess('Y'); } else { System.out.print("现在是第" + this.hand + "手,轮到红棋: ") ; playchess('R'); } } //控制落子 public void playchess(char color) { this.hand ++; int place = scanner.nextInt() ; int i ; for (i = 5; i >= 0; i--) { // if (date[i][place] == '\u0000') { date[i][place] = color; break; } } if (i < 0)System.exit(1); else win(i, place, color) ; } //判断游戏是否有人胜利或平局(依据是根据落子位置的两个方向是否连成四子) public void win(int x, int place,char color) { int number = 1; //第一个方向(右斜线方向) for (int i = x - 1, j = place - 1; (i >= 0) && (j >= 0); i--, j--) { if (date[i][j] == color) { number++; } else break; } for (int i = x + 1, j = place + 1; (i <= 5) && (j <= 6); i++, j++) { if (date[i][j] == color) { number ++ ; } else break; } if (number == 4)end(color, "win"); //第二个方向(左斜线方向) number = 1; for (int i = x - 1, j = place + 1; (i >= 0) && (j <= 6); i--, j++) { if (date[i][j] == color) { number++; } else break; } for (int i = x + 1, j = place - 1; (i <= 5) && (j >= 0); i++, j--) { if (date[i][j] == color) { number ++ ; } else break; } if (number == 4)end(color, "win"); //第三个方向(水平) number = 1; for (int i = x, j = place - 1; j >= 0; j--) { if (date[i][j] == color) { number ++ ; } else break ; } for (int i = x, j = place + 1; j <= 6; j++) { if (date[i][j] == color) { number ++ ; } else break; } if (number == 4)end(color, "win"); //第四个方向(竖直) number = 1; for (int i = x + 1, j = place; i <= 5; i++) { if (date[i][j] == color) { number ++ ; } else break; } if (number == 4)end(color, "win") ; //判断平局 for (int i = 0; i < date.length; i++) { for (int j = 0; j < date[i].length; j++) { if (date[i][j] != 'Y' || date[i][j] != 'R')draw() ; } } end(color, "s") ; } //判断游戏是否结束 public void end(char color, String str) { if (str.equals("win")) { System.out.print(color + "棋获得胜利!!!"); System.exit(0); } else { System.out.print("两棋子平局.") ; System.exit(0); } }}public class ChessOffour { public static void main(String[] args) { Desk desk = new Desk() ; desk.draw() ; }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了Java实现五子棋小游戏的具体代码,供大家参考,具体内容如下项目名称五子棋小游戏项目描述可以改变获胜棋子数,率先连成棋数的人获胜代码实现测试
控制台实现五子棋游戏,供大家参考,具体内容如下控制台打印棋盘编写两人对弈的五子棋游戏,游戏规则:黑白双方有一方首先实现五子连续,则获胜,游戏结束。代码:impo
本文实例讲述了java实现的五子棋游戏代码,分享给大家供大家参考,具体代码如下packagegyb.exam;importjava.awt.BorderLayo
本文实例为大家分享了C语言三子棋小游戏的具体代码,供大家参考,具体内容如下一.介绍:运用C语言的数组等相关知识:实现一个简易的三子棋小游戏:三子棋小游戏的大概内
本文实例为大家分享了C语言实现简单三子棋游戏的具体代码,供大家参考,具体内容如下游戏介绍:使用C语言中二维数组和函数的基本知识实现一个三子棋游戏,这个游戏要实现