20137
中国地质大学C语言课程设计
1
§11题目描述
【一担挑游戏】【要求】简单计算机模拟棋盘对弈。其中棋盘左上角坐标为(1,1),右下角为(3,3)。游戏规则如下:1计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元,发现空单元后,置为“O”,未发现时,报告平局后退出。2轮到对弈者时,使用相应函数要求对弈者回答想要把“X”放在哪里。3谁先三点连成一线了,则报告谁胜出。4计算机与对弈者每下一步棋都会使相应位置变为“O”和“X”,便于在屏幕上显示矩阵。【提示】棋盘位置用二维数组代表,初始状态每一位置均应为“”(空),其分隔线(即棋盘线)可用或││来分隔
§12算法设计
一担挑小游戏,简单、休闲、益智。全程序大体由四部分组成:“玩家落子模块”、“计算机落子模块”、“判断胜负模块”及“打印棋盘模块”。考量到棋类游戏计算上的复杂性,本程序尽可能简化算法,使计算机简单地按照棋盘顺序落子。总流程图设计构想如下:一担挑小游戏
初始化棋盘
玩家落子模块
计算机落子模块
判断胜负模块
打印棋盘模块
判断最终结果
各功能模块流程图设计如下:1玩家落子模块
f2
陈雨
20137
开始输入想要落子的坐标rowcolum
该位置是否存在或未填
否
是该位置置为“X”
【注】棋盘坐标定义为从11到33该模块要求玩家输入想要落子的坐标rowcolum
。如果位置row1colum
1处字符数组元素不存在或已经被占,系统给出错误提示,并要求玩家重新输入;否则该位置置为“X”。
2计算机落子模块
开始
按先行后列顺序扫描棋盘
否该位置是否未填是该位置置为“O”
该模块设计成33的循环,按次序检索该单元是否为空。如果单元已被占则跳过;否则置为“O”。
3判断胜负模块
f20137
中国地质大学C语言课程设计
3
开始
两条对角线是否连成线
是返回正中心的棋子
否第一行或第一列是否连成线是返回左上角的棋子
否第三行或第三列是否连成线是返回右下角的棋子
否第二行或第二列是否连成线是返回正中心的棋子
否返回空值用穷举法判断某行、某列、对角线是否连成一线。判断顺序如上。若某一判断为“是”,则将连成线的字符赋值给字符变量wi
er再交由主函数尾的程序辨析谁获胜;若一直判断为“否”,将空值赋给变量wi
er,再交由玩家落子模块或计算机落子模块运行。
4打印棋盘模块
f4
陈雨
20137
开始
打印第一行棋盘线及棋子
打印棋盘边框线
打印第二行棋盘线及棋子
打印棋盘边框线
打印第三行棋盘线r