五子棋
1,数据设计
数据设计的目的,是将整个程序里面会平凡使用到的数据,提前做好处理。就像进行平时写算法题里面提前设置好每个部分所代表的意义和数值。
而五子棋里面相对来说会被频繁调用到的就有:
棋盘,回合数
用数组来表示棋盘以及落子的坐标。int map[][];
用一个int类型来表示回合数:int flag;
2,项目结构分析
五子棋项目本身流程相对复杂,并不是一个if或者for就可以独立完成的,所以需要创建对象以及方法,将功能分开书写再相互调用最后组合成一个完整的程序。
3,列举项目功能
1.初始化数据,给代表棋盘的数组赋值全部设置为零。给代表回合数的flag赋值为0。
2.下棋,根据玩家的输入以及当前的回合数,判断相对应的位置是否可以落子。可以落子就改变数值,不能落子就重新输入。
3.打印棋盘,根据当前数组的值打印棋盘情况
4.判断胜利,当棋盘上出现五个相同的棋子连成一条线,根据棋子的种类宣布胜利结果
5.胜利界面,在游戏结果出来以后判断胜利界面。
6.主页面,显示开始游戏,设置界面,退出游戏供玩家选择。
7.游戏各部分功能整合,根据游戏设计规划,先后反复调用各类方法让游戏变得更加完整。
4,根据功能进行方法设计
public void init();
数值初始化
int map【20】【20】 = 0;
int flag = 0
参数: void
返回值: void
public int isWin(int x, int y);
判断是否胜利,以及胜利的对象。
参数:
x: 当前回合落子的x坐标
y: 当前回合落子的y坐标
返回值:
0表示没有获胜
1表示黑子胜利
2表示白子胜利
public int playerMove(int x, int y);
在指定位置落子
如果map[x][y]是空地 则修改map[x][y]的值:改为相应颜色(flag对应颜色)
否则不进行操作
参数:
x: 当前回合落子的x坐标
y: 当前回合落子的y坐标
返回值:
0表示落子失败 (棋盘已经有子)
1表示落子成功
public void menuView();
功能: 展示选项, 玩家可以在这里选择进入游戏, 进入设置或退出游戏
进入游戏: 调用游戏界面函数gameView();
进入设置: 敬请期待…
退出游戏: 调用exit(0);
public void gameView_ShowMap();
功能: 根据map数组 打印游戏棋盘
参数: void
返回值: void
public void winView();
功能: 根据flag的值 打印游戏胜利界面 用户可以按任意键回到主菜单
参数: void
返回值: void
public void gameView();
负责人: 张三
功能: 游戏界面整合
初始化游戏数据(调用函数init())
while(1){
打印游戏界面(调用函数gameView_ShowMap())
接收玩家坐标输入
落子(调用落子函数playerMove())
(如果落子失败 重新开始循环)判断游戏是否胜利(调用胜利判断函数isWin())
(如果游戏胜利 调用胜利界面函数 然后结束当前界面)
切换玩家(修改flag值)
}
参数: void
返回值: void
5,程序代码框架
public class Gomoku{
void init(){
//代码实现
}
int isWin(int x, int y){
//代码实现
}
int playerMove(int x, int y){
//代码实现
}
void menuView(){
//代码实现
}
void gameView_ShowMap(){
//代码实现
}
void winView(){
//代码实现
}
void gameView(){
//代码实现
}
}
6.程序源码
import java.util.Scanner;
public class Gomoku {
public static void main(String[] args) {
//实例化system01
System01 system01 = new System01();
//调用方法
system01.menuView();
}
}
class System01{
//设置成员方法
public int map[][] =new int[19][19];
public int flag = 0;
//初始化数据
public void init<