文档详情

C语言实习报告-一担挑游戏.doc

发布:2017-02-24约9.84千字共13页下载文档
文本预览下载声明
§1.1题目描述 【一担挑游戏】 【要求】 简单计算机模拟棋盘对弈。其中棋盘左上角坐标为(1,1),右下角为(3,3)。游戏规则如下: 1.计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元,发现空单元后,置为“O”,未发现时,报告平局后退出。 2.轮到对弈者时,使用相应函数要求对弈者回答想要把“X”放在哪里。 3.谁先三点连成一线了,则报告谁胜出。 4.计算机与对弈者每下一步棋都会使相应位置变为“O”和“X”,便于在屏幕上显示矩阵。 【提示】 棋盘位置用二维数组代表,初始状态每一位置均应为“ ”(空),其分隔线(即棋盘线)可用——或││来分隔 §1.2算法设计 一担挑小游戏,简单、休闲、益智。 全程序大体由四部分组成:“玩家落子模块”、“计算机落子模块”、“判断胜负模块”及“打印棋盘模块”。考量到棋类游戏计算上的复杂性,本程序尽可能简化算法,使计算机简单地按照棋盘顺序落子。总流程图设计构想如下: 各功能模块流程图设计如下: 玩家落子模块 【注】棋盘坐标定义为从1,1到3,3 该模块要求玩家输入想要落子的坐标row,column。如果位置row-1,column-1处字符数组元素不存在或已经被占,系统给出错误提示,并要求玩家重新输入;否则该位置置为“X”。 2.计算机落子模块 该模块设计成3*3的循环,按次序检索该单元是否为空。如果单元已被占则跳过;否则置为“O”。 3.判断胜负模块 用穷举法判断某行、某列、对角线是否连成一线。判断顺序如上。若某一判断为“是”,则将连成线的字符赋值给字符变量winner再交由主函数尾的程序辨析谁获胜;若一直判断为“否”,将空值赋给变量winner,再交由玩家落子模块或计算机落子模块运行。 4. 打印棋盘模块 主函数流程(程序设计布局) §1.3程序设计及代码分析 源程序如下: #include stdio.h #include stdlib.h void printboard(); //打印棋盘 void check(); //检查结果是否分出胜负 char board[3][3] = {{\0,\0,\0},{\0,\0,\0},{\0,\0,\0}} ; //棋盘初始化 char winner=\0; //标记谁是胜者 int main() {int row=0,column=0; //定义棋盘的行列 int step=0; //定义计算步数的变量 printf(\nwelcome to this game,player!\n); printboard(); //打印空棋盘 while(winner==\0step!=9) //当未分胜负时,循环双方对弈 { //玩家落子 do //当棋子落在无效区时,报错 { printf(\nplease enter the coordinate where you want to put your X:); scanf(%d,%d, row,column); //输入欲落子的坐标 if(row*column9||row*column1||board[row-1][column-1]!=\0) printf(\nfault position!please reput:); } while(row*column9||row*column1||board[row-1][column-1]!=\0); printf(\n\nplayer move\n); board[row-1][column-1]=X; //落子有效 printboard(); //即打印棋盘 step++; //每下一步步数加一
显示全部
相似文档