- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言实习报告-一担挑的游戏
§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++; //每下一步步数加一
check(); //检查是否分出胜负
if(winner!=\0||step==9)break; //
文档评论(0)