架构设计
作者
天咏
原文
plain
// -------------------- 数据设计 --------------------
/*
棋盘:
map[i][j]表示坐标(i,j)的值
#表示空地
1表示黑子
2表示白子
如: map[3][6] = 1 表示(3,6)的位置是黑子
*/
int[][] map = new int[19][19];
// 表示当前回合数 偶数表示黑棋落子 奇数表示白棋落子
// 如: flag = 20 表示当前是第[20]次落子 由黑方落子
int flag;
//表示从游戏开始,对应第flag次落子的位子locationX,locationY
final int MAX_FLAG =19*19-1;//最多下MAX_FLAG+1步
int []locationX=new int[MAX_FLAG];
int []locationY=new int[MAX_FLAG];
//如: locationX[20] 表示当前是第[20]次落子的行位置
//如: locationY[20] 表示当前是第[20]次落子的列位置
int regretTimesB;//表示黑棋还有的悔棋次数
int regretTimesW;//表示白棋还有的悔棋次数
// -------------------- 数据设计 --------------------
// -------------------- service --------------------
/*
负责人:
功能: 初始化游戏数据
将棋盘的值初始化为#
当前回合设为黑棋(flag设为0)
当前落子信息设为空locationX={};locationY={};
当前黑棋和白棋的悔棋次数设为2
参数: void
返回值: void
*/
public void init();
/*
负责人:
功能: 根据传入的坐标(map对应位置)和flag值 判断落点后是否获胜
参数:
x: 当前回合落子的x坐标
y: 当前回合落子的y坐标
返回值:
0表示没有获胜
1表示黑子胜利
2表示白子胜利
*/
int isWin(int x, int y);
/*
负责人:
功能: 根据传入的flag和regretTimes值 判断当前棋子是否悔棋
如果悔棋次数>0 则开始悔棋
撤回当前落子次数-1
regretTimes--;悔棋次数-1
map[locationX][locationY]="#"撤回当前落子 将落子位置覆盖为空格#
否则不操作,返回0悔棋失败
参数:
regretTimes:当前回合棋子的剩余悔棋数
locationX: 当前回合落子的x坐标
locationY: 当前回合落子的y坐标
返回值:
0表示黑子悔棋失败
1表示黑子成功悔棋
2表示黑子悔棋失败
3表示白子成功悔棋
*/
int regret(int regretTimes,int locationX,int locationY);
/*
负责人:
功能: 在指定位置落子
如果map[x][y]是空地 则修改map[x][y]的值:改为相应颜色(flag对应颜色)
否则不操作
参数:
x: 当前回合落子的x坐标
y: 当前回合落子的y坐标
返回值:
0表示落子失败 (棋盘已经有子)
1表示落子成功
*/
int playerMove(int x, int y);
// -------------------- service --------------------
// -------------------- view --------------------
/*
负责人: 张三
功能: 展示选项, 玩家可以在这里选择进入游戏, 进入设置或退出游戏...
进入游戏: 调用游戏界面函数gameView();
模式选择: 调用模式选择界面函数modleView(); 未实现...
存档选择: 调用存档界面函数fileView();
背景音乐: 调用背景音乐界面函数bgmView();//Back ground music
氪金: 调用氪金界面函数kryptonGoldyView(); 未实现...
游戏简介: 调用游戏简介界面函数gameIntroductionView();
等级与成就: 调用等级与成就界面函数levelAndAchievementView();
退出游戏: 调用exit(0);
*/
void menuView();
/*
负责人: 张三
功能: 暂时没有
参数: void
返回值: void
*/
void modleView();
/*
负责人: 张三
功能: 展示选项,玩家可选择以下功能
返回主菜单:调用主菜单界面函数menuView();
删除存档:调用删除存档函数deleteSave();
新建存档:调用新建存档函数newSave();
选择存档:调用选择存档函数selectSava();
参数: void
返回值: void
*/
void fileView();
/*
负责人: 张三
功能: 展示选项,玩家可选择以下功能
返回主菜单:调用主菜单界面函数menuView();
选择背景音乐:调用选择背景音乐函数selectBgm();
选择落子音效:调用选择落子音效函数selectSoundEffects();
参数: void
返回值: void
*/
void bgmView();
/*
负责人: 张三
功能: 暂时没有
参数: void
返回值: void
*/
void kryptonGoldyView();
/*
负责人: 张三
功能: 展示选项,玩家可选择以下功能
返回主菜单:调用主菜单界面函数menuView();
游戏规则:调用打印游戏规则函数outGameRule();
游戏背景:调用打印游戏背景函数printGameBackground();
开发团队:调用打印开发团队函数printDevelopmentTeam();
参数: void
返回值: void
*/
void gameIntroductionView();
/*
负责人: 张三
功能: 展示选项,玩家可选择以下功能
返回主菜单:调用主菜单界面函数menuView();
打印等级:调用打印等级函数printLevel();
打印成就:调用打印成就函数printAchievement();
参数: void
返回值: void
*/
void levelAndAchievementView();
/*
负责人: 张三
功能: 根据map数组 打印游戏棋盘
参数: void
返回值: void
*/
void gameView_ShowMap();
/*
负责人: 张三
功能: 根据flag的值 打印游戏胜利界面 用户可以按任意键回到主菜单
参数: void
返回值: void
*/
void winView();
/*
*难点2
负责人: 张三
功能: 游戏界面整合
初始化游戏数据(调用函数init())
while(1){
打印游戏界面(调用函数gameView_ShowMap())
接收玩家坐标输入
落子(调用落子函数playerMove())
(如果落子失败 重新开始循环)
判断游戏是否胜利(调用胜利判断函数isWin())
(如果游戏胜利 调用胜利界面函数 然后结束当前界面)
判断玩家是否悔棋(调用悔棋函数regret())
切换玩家(修改flag值)
}
参数: void
返回值: void
*/
void gameView();
// -------------------- view --------------------
目前还需要完成的内容
fileView 蒋
删除存档:调用删除存档函数 deleteSave(); 新建存档:调用新建存档函数 newSave(); 选择存档:调用选择存档函数 selectSava();
bgmView 阮
选择背景音乐:调用选择背景音乐函数 selectBgm(); 选择落子音效:调用选择落子音效函数 selectSoundEffects();
gameIntroductionView 伍
游戏规则:调用打印游戏规则函数 outGameRule(); 游戏背景:调用打印游戏背景函数 printGameBackground(); 开发团队:调用打印开发团队函数 printDevelopmentTeam();
levelAndAchievementView 王
打印等级:调用打印等级函数 printLevel(); 打印成就:调用打印成就函数 printAchievement();
suspendView 赵
重玩:调用 gameView()默认参数; 认输:根据 flag 调用 winView();进入游戏胜利界面 保存:将当前的数据保存,调用 suspendView();回到暂停界面