前言:
这是一个简单的控制台五子棋小游戏,我目前的情况是刚学完C,C++尚未入门,在下面的代码中虽然用的是C++,但我的思考方式主要是C,所以新手不必害怕,耐心看完很简单的(●ˇ∀ˇ●)
数据及函数设计:
一、数据设计:
将二维数组作为棋盘,规定数组内数据为0表示空,1表示黑,2表示白
int map[19][19];
利用flag判断当前回合轮到谁落子
int flag;
// 表示当前回合数 偶数表示黑棋落子 奇数表示白棋落子
// 如: flag = 20 表示当前是第[20]次落子 由黑方落子
二、函数设计:(按照功能可以分为功能函数和菜单函数)
功能函数控制游戏的运行,菜单函数主要作用是刷新游戏界面和显示游戏结果。
1. 初始化游戏数据(棋盘重置)
将棋盘的值初始化为0
当前回合设为黑棋(flag设为0)
void init();
2. 胜负判断
根据传入的坐标(map对应位置)和flag值 判断落点后是否获胜
坐标(x,y): 依次先输入横坐标,再输入纵坐标
通过返回值确定游戏的结果(每次落子完成都要进行检查)
0表示没有获胜
1表示黑子胜利
2表示白子胜利
int isWin(int x, int y);
3. 落子/走子
在指定位置落子
如果map[x][y]是空地 则修改map[x][y]的值,否则不操作
x: 当前回合落子的x坐标
y: 当前回合落子的y坐标
返回值:
0表示落子失败 (棋盘已经有子)
1表示落子成功
int playerMove(int x, int y);
4. 主菜单(提供初始选项)
功能: 展示选项, 玩家可以在这里选择进入游戏, 进入设置或退出游戏
进入游戏: 调用游戏界面函数gameView();
进入设置: 敬请期待...
退出游戏: 调用exit(0);
void menuView();
5. 游戏界面(显示棋盘)
功能: 根据map数组 打印游戏棋盘
void gameView_ShowMap();
6. 显示结果
功能: 根据flag的值 打印游戏胜利界面 用户可以按任意键回到主菜单
void winView();
7. 游戏的整体逻辑(确保各函数按照一定规则被调用)
功能: 游戏界面整合
初始化游戏数据(调用函数init())
while(1){
打印游戏界面(调用函数gameView_ShowMap())
接收玩家坐标输入
落子(调用落子函数playerMove())
(如果落子失败 重新开始循环)
判断游戏是否胜利(调用胜利判断函数isWin())
(如果游戏胜利 调用胜利界面函数 然后结束当前界面)
切换玩家(修改flag值)
}
void gameView();
当然,游戏的运行逻辑也可以放在main函数中执行,这里为了方便就将其声明为一个单独的函数。
int main()
{
menuView();
return 0;
}
最终的代码:
下面的代码中添加了详细的注释,大家可以对照着阅读,应该比较容易理