看书的时候看到一个不完整的Java编写的一个五子棋小游戏,为了恢复一下编程能力刚刚把这个小程序完成了。

实现的功能很简单,两人对下五子棋,程序自动回判断输赢。在ubuntu下搞得,没有装什么高端的输入法的程序,所以用“*”和“X”来代表两个不同的棋子。

这个程序虽然简单但是还是有很多值得学习的地方。

首先,整个棋盘用二维数组表示。在Java中声明一个二维数组使用 type[][] arrName;的语句。

其次,我们需要给数组赋值,开始的时候是画棋盘使用的是“+”,给二维数组开辟空间和一维数组差不多。e.g.: arrName= new type[len1][len2];

判断游戏时候结束我们需要判断四个方向的棋子是不是连成了5个棋子。是的话游戏继续,否则退出。

整个代码的主要架构如下图所示:

其中initBoard负责初始化,printBoard负责打印更新整个面板,main做点常规操作赋值之类的,WinOrLose则负责判断游戏时候结束。

比较有价值的代码是输入这部分,可以根据特定符号分割输入的数据,值得收藏的代码:

 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String inputStr = null;inputStr=br.readLine();String[] str = inputStr.split(",");

以下为完整的代码。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Gobang {private String[][] board;private static int BOARD_SIZE = 15;private 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.print("\n");}}public int winOrLose(int x, int y, String star){int end = 0; int xPos=x,yPos=y;int s1=0,s2=0,sum=0,time = 4;star = board[x][y];while(time !=0){   //左斜for(int i = x-1,j=y-1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i--,j--){s1++;}for (int i=x+1,j=y+1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i++, j++){s2++;}  sum = s1 + s2;if(sum==5){end = 1;break;}else{s1=0; s2 = 0; sum = 0;}//右斜for(int i = x-1,j=y-1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i++,j--){s1++;}for (int i=x+1,j=y+1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i--, j++){s2++;}  sum = s1 + s2;if(sum==5){end = 1;break;}else{s1=0; s2 = 0; sum = 0;}//north and southfor(int i = x-1,j=y-1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); j--){s1++;}for (int i=x+1,j=y+1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); j++){s2++;}  sum = s1 + s2;if(sum==5){end = 1;break;}else{s1=0; s2 = 0; sum = 0;}//wefor(int i = x-1,j=y-1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i++){s1++;}for (int i=x+1,j=y+1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i--){s2++;}  sum = s1 + s2;if(sum==5){end = 1;break;}else{s1=0; s2 = 0; sum = 0;}}return end;}/*** @param args* @throws IOException */public static void main(String[] args) throws IOException {// TODO Auto-generated method stubGobang gb = new Gobang();gb.initBoard();gb.printBoard();BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String inputStr = null;int flag=0;int end=0;while ((inputStr = br.readLine()) != null ){String[] posStrArr = inputStr.split(",");int xPos = Integer.parseInt(posStrArr[0]);int yPos = Integer.parseInt(posStrArr[1]);if(flag==0){gb.board[xPos-1][yPos-1] = "*";}else{gb.board[xPos-1][yPos-1] = "X"; }flag++;gb.printBoard();end=gb.winOrLose(xPos-1, yPos-1, gb.board[xPos-1][yPos-1]);if(end ==1){break;}}}}

Java编写的五子棋小游戏相关推荐

  1. main java game,playgame 一个JAVA编写的飞行小游戏,有基本完整的 框架,适合初学者参照学习 Other s 其他 238万源代码下载- www.pudn.com...

    文件名称: playgame下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 7050 KB 上传时间: 2013-06-06 下载次数: 3 提 供 者: Lyq ...

  2. 基于c++EGE图形库编写的五子棋小游戏

    基于c++EGE图形库编写的五子棋小游戏 EGE图形库 新手推荐使用 EGE(Easy Graphics Engine),是windows下的简易绘图库,是一个类似BGI(graphics.h)的面向 ...

  3. java走棋_Java五子棋小游戏(控制台纯Ai算法)

    Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...

  4. java课程设计五子棋小游戏(1)

    1. 前言 该项目为经典版本的五子棋游戏和自创的毁灭玩法所结合,总体而言是一个休闲的小游戏.其中的规则不难,主要是为了丰富大家的文娱生活,让大家在忙碌的学习课后可以轻松一小下.这就是本程序的编写初衷. ...

  5. 用Java写一个五子棋小游戏

    棋盘是15*15(可以自己规定) 游戏规则: (1)对局双方各执一色棋子. (2)空棋盘开局. (3)黑先.白后,交替下子,每次只能下一子. (4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动 ...

  6. 用java实现简易五子棋小游戏,双人+输赢判断

    游戏开始截图 游戏进行中截图 游戏结束截图 小游戏代码如下 public class Qi{public static void main(String[] args) {Scanner sc = n ...

  7. java编写火柴人小游戏,摧毁火柴人

    摧毁火柴人无敌版是一款有趣的休闲小游戏,玩家在这里需要快速的攻击火柴人,这款游戏就是希望玩家不断的进行攻击火柴人,游戏的目标就是攻击火柴人,游戏里面拥有海量丰富的道具,还拥有各种的关卡,这些关卡的难度 ...

  8. Java 编写de简单小游戏 -- 《Lights Off》

    关灯游戏 – <Lights Off> 游戏规则: 当点击方块时,其左,右,上,下中的棋子灯的状态会变为相反的状态,题中假定1为开灯,0为关灯,棋盘大小为5*5,题中会随机生成开灯的方块, ...

  9. 用java编写运行的小游戏_第一次用Java编写小游戏!

    哈哈,我又来发帖了- -话说好久没碰eclipse了,所以这次就给大家带来一个我的原创作品:Java猜拳!!! 先上效果: 1.PNG (13.21 KB, 下载次数: 34) 2016-1-24 1 ...

最新文章

  1. ffmpeg 基本用法大全
  2. 读书笔记 effective c++ Item 49 理解new-handler的行为
  3. 电脑word在哪_新的电脑应该安装哪些软件?只需这9个足够你用一生!
  4. Spring学习大杂烩(待续)
  5. Swift翻译之-关于Swift
  6. JDK命令一、javah命令(C Header and Stub File Generator)
  7. oracle数据库hiredate,Oracle数据库学习三
  8. web服务器虚拟目录_调整专用虚拟Web服务器
  9. PS图层混合模式MATLAB实现
  10. lr_用java_Vuser做性能测试
  11. 无向图边数和顶点关系_离散数学中的二元关系
  12. Java项目运维与监控调优
  13. 电视机@2022:降价、焦虑与机遇
  14. 【Docker 系列】我们来看看容器数据卷到底是个啥
  15. 0基础如何学好c语言
  16. 模数转换A/D与数模转换D/A
  17. Biotin-PEG-DSPE,DSPE-PEG-BIO,385437-57-0分子量:1K,2K,3K,5K,10K
  18. 【计算机网络】数据链路层详解
  19. LVDS接口分类与数据格式
  20. rancher rke 集群恢复

热门文章

  1. 网传京东某程序员因压力太大,在商品页面置入骂人代码!京东辟谣:不关我们的事,外部商家干的!...
  2. 用太极拳讲分布式理论,真舒服!
  3. 不满你说,我最近跟Java源码杠上了...
  4. Java是如何实现自己的SPI机制的? JDK源码(一)
  5. 线程池运用不当的一次线上事故
  6. 一个接口查询关联了十几张表,响应速度太慢?那就提前把它们整合到一起
  7. 突破高连接性能瓶颈,图数据库在银行业这么用
  8. Java中的注解到底是如何工作的?
  9. 目标管理和任务协作,用智办事更方便
  10. 强势分享5款超级实用的办公软件,建议收藏!