Java编写的五子棋小游戏
看书的时候看到一个不完整的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编写的五子棋小游戏相关推荐
- 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 ...
- 基于c++EGE图形库编写的五子棋小游戏
基于c++EGE图形库编写的五子棋小游戏 EGE图形库 新手推荐使用 EGE(Easy Graphics Engine),是windows下的简易绘图库,是一个类似BGI(graphics.h)的面向 ...
- java走棋_Java五子棋小游戏(控制台纯Ai算法)
Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...
- java课程设计五子棋小游戏(1)
1. 前言 该项目为经典版本的五子棋游戏和自创的毁灭玩法所结合,总体而言是一个休闲的小游戏.其中的规则不难,主要是为了丰富大家的文娱生活,让大家在忙碌的学习课后可以轻松一小下.这就是本程序的编写初衷. ...
- 用Java写一个五子棋小游戏
棋盘是15*15(可以自己规定) 游戏规则: (1)对局双方各执一色棋子. (2)空棋盘开局. (3)黑先.白后,交替下子,每次只能下一子. (4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动 ...
- 用java实现简易五子棋小游戏,双人+输赢判断
游戏开始截图 游戏进行中截图 游戏结束截图 小游戏代码如下 public class Qi{public static void main(String[] args) {Scanner sc = n ...
- java编写火柴人小游戏,摧毁火柴人
摧毁火柴人无敌版是一款有趣的休闲小游戏,玩家在这里需要快速的攻击火柴人,这款游戏就是希望玩家不断的进行攻击火柴人,游戏的目标就是攻击火柴人,游戏里面拥有海量丰富的道具,还拥有各种的关卡,这些关卡的难度 ...
- Java 编写de简单小游戏 -- 《Lights Off》
关灯游戏 – <Lights Off> 游戏规则: 当点击方块时,其左,右,上,下中的棋子灯的状态会变为相反的状态,题中假定1为开灯,0为关灯,棋盘大小为5*5,题中会随机生成开灯的方块, ...
- 用java编写运行的小游戏_第一次用Java编写小游戏!
哈哈,我又来发帖了- -话说好久没碰eclipse了,所以这次就给大家带来一个我的原创作品:Java猜拳!!! 先上效果: 1.PNG (13.21 KB, 下载次数: 34) 2016-1-24 1 ...
最新文章
- ffmpeg 基本用法大全
- 读书笔记 effective c++ Item 49 理解new-handler的行为
- 电脑word在哪_新的电脑应该安装哪些软件?只需这9个足够你用一生!
- Spring学习大杂烩(待续)
- Swift翻译之-关于Swift
- JDK命令一、javah命令(C Header and Stub File Generator)
- oracle数据库hiredate,Oracle数据库学习三
- web服务器虚拟目录_调整专用虚拟Web服务器
- PS图层混合模式MATLAB实现
- lr_用java_Vuser做性能测试
- 无向图边数和顶点关系_离散数学中的二元关系
- Java项目运维与监控调优
- 电视机@2022:降价、焦虑与机遇
- 【Docker 系列】我们来看看容器数据卷到底是个啥
- 0基础如何学好c语言
- 模数转换A/D与数模转换D/A
- Biotin-PEG-DSPE,DSPE-PEG-BIO,385437-57-0分子量:1K,2K,3K,5K,10K
- 【计算机网络】数据链路层详解
- LVDS接口分类与数据格式
- rancher rke 集群恢复