资源描述:
《C语言课程设计报告——一担挑游戏.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、中国地质大学本科生课程论文封面课程名称C语言课程设计教师姓名本科生姓名本科生学号本科生专业所在院系类别:日期:14课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总成绩:评阅人签名:注:1、无评阅人签名成绩无效;142、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目录课程设计评语2目录31.课程论文题目42.程序设计思路43.功能模块图54.数据结构设计55.算法设计56.程序代码87.程序运行结果118.编程中遇到的困难及解决方法139.总结心得及良好建议14141.课程论文题目一担挑游戏:[要求]
2、简单计算机模拟棋盘对弈。其中棋盘左上角坐标为(1,1),右下脚坐标为(3,3)。游戏规则如下:(1)计算机移动时,使用相应的函数扫描棋盘矩阵,寻找未占单元,发现空单元后,置为“O”,未发现时,报告平局后退出。(2)轮到对弈者时,使用相应函数要求对弈者把“X”放在哪里。(3)谁先三点一线了,则报告谁胜出。(4)计算机与对弈者没下一步棋都会使相应位置变为“O”和“X”,便于在屏上显示矩阵。[提示]棋盘位置用二维数组代表,初始状态每一位置均为“”(空)。其分隔线(即棋盘线)可用--或
3、
4、来分隔。2.程序设计思路(1)由于此一担挑游戏棋盘是3*3的棋盘,所以棋盘的位置
5、可以用二维数组来表示,在输入时需要采用坐标形式输入;(2)在输入坐标时,因为可能出错,所以需要对坐标是否重复和超界进行判断,计算机移动时系统要不停得扫描棋盘矩阵来寻找未占单元,所以程序提供了显示、浏览、查找、排序等操作;(3)在对奕者与计算机输入坐标后,应该进行输赢平局的判断;(4)另外系统还能提供键盘式的选择菜单来实现功能的选择。143.功能模块图一担挑游戏初始化棋盘判定胜负平判定当前棋手输入下棋的坐标打印当前棋盘4.数据结构设计用二维数组构筑了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每一步计算机都会调用相应的函数扫描棋盘。Charqi
6、pan[3][3];Voidinit_qipan(void);{inti,j;for(i=0;i<3;i++)for(j=0:j<3;j++)qipan[i][j]=’’}5.算法设计(1)主函数主函数较为简单,只有数据输入,功能处理等函数调用。流程图设计如下:14开始构造棋盘,输入数据输入二维数组(I,j,)根据数据调用各功能模块的相应函数结果显示检查棋盘空挡结束(2)各功能模块设计①棋盘输入用二维数组构筑了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每一步计算机都会调用相应的函数扫描棋盘。Charqipan[3][3];Voidinit_
7、qipan(void);{inti,j;for(i=0;i<3;i++)for(j=0:j<3;j++)qipan[i][j]=’’②对弈模块模块是提供用户模拟棋盘按用户自己的思想来下棋,这期间涉及两种情况:用户输入错误或者棋子位置错误。14/*************用户方面对弈************/voidplayer_move(void){intx,y;printf("It'syourturn,please:");scanf("%d%*c%d",&x,&y);x--;y--;if(qipan[x][y]!=''){printf("Error,trya
8、gain.");player_move();}elseqipan[x][y]='X';}/**************计算机方面对弈*********/voidcomputer_move(void){inti,j;for(i=0;i<3;i++){for(j=0;j<3;j++)if(qipan[i][j]=='')break;if(qipan[i][j]=='')break;}if(i*j==9){printf("pingju");exit(0);}elseqipan[i][j]='0';}③显现模块该模块的作用是显示对弈结果。即要求计算机调用相关的
9、函数多次扫描棋盘,谁的棋优先连成一线了,计算机就判定谁胜出。这期间有三种情况:第一,用户是胜者;第二,计算机胜出;第三,二者打成平局。14voiddisp(void){intt;for(t=0;t<3;t++){printf("%c
10、%c
11、%c",qipan[t][0],qipan[t][1],qipan[t][2]);if(t!=2)printf("-
12、-
13、-");}printf("");}charcheck(void){inti;for(i=0;i<3;i++)if(qipan[i][0]==qipan[i][1]&&qipan[i][0]==
14、qipan[i][2])returnq