C语言课程设计报告——一担挑游戏.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 一担挑 游戏
- 资源描述:
-
中 国 地 质 大 学 本科生课程论文封面 课程名称 C语言课程设计 教师姓名 本科生姓名 本科生学号 本科生专业 所在院系 类别: 日期: 课程设计评语 对课程论文的评语: 平时成绩: 课程论文成绩: 总 成 绩: 评阅人签名: 注:1、无评阅人签名成绩无效; 2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效; 3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。 目 录 课程设计评语 2 目 录 3 1.课程论文题目 4 2.程序设计思路 4 3.功能模块图 5 4.数据结构设计 5 5.算法设计 5 6.程序代码 8 7.程序运行结果 11 8.编程中遇到的困难及解决方法 13 9.总结心得及良好建议 14 1.课程论文题目 一担挑游戏: [要求] 简单计算机模拟棋盘对弈。其中棋盘左上角坐标为(1,1),右下脚坐标为(3,3)。游戏规则如下: (1)计算机移动时,使用相应的函数扫描棋盘矩阵,寻找未占单元,发现空单元后,置为“O”,未发现时,报告平局后退出。 (2)轮到对弈者时,使用相应函数要求对弈者把“X”放在哪里。 (3)谁先三点一线了,则报告谁胜出。 (4)计算机与对弈者没下一步棋都会使相应位置变为“O”和“X”,便于在屏上显示矩阵。 [提示] 棋盘位置用二维数组代表,初始状态每一位置均为“ ”(空)。其分隔线(即棋盘线)可用- -或||来分隔。 2.程序设计思路 (1)由于此一担挑游戏棋盘是3*3的棋盘,所以棋盘的位置可以用二维数组来表示,在输入时需要采用坐标形式输入; (2)在输入坐标时,因为可能出错,所以需要对坐标是否重复和超界进行判断,计算机移动时系统要不停得扫描棋盘矩阵来寻找未占单元,所以程序提供了显示、浏览、查找、排序等操作; (3)在对奕者与计算机输入坐标后,应该进行输赢平局的判断; (4)另外系统还能提供键盘式的选择菜单来实现功能的选择。 3.功能模块图 一担挑游戏 初始化棋盘 判定胜负平 判定当前棋手 输入下棋的坐标 打印当前棋盘 4.数据结构设计 用二维数组构筑了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每一步计算机都会调用相应的函数扫描棋盘。 Char qi pan[3][3]; Void init_qipan(void); {int i,j; for(i=0;i<3;i++) for(j=0:j<3;j++) qipan[i][j]=’ ’ } 5.算法设计 (1)主函数 主函数较为简单,只有数据输入,功能处理等函数调用。 流程图设计如下: 开始 构造棋盘,输入数据 输入二维数组(I,j,) 根据数据调用各功能模块的相应函数 结果显示 检查棋盘空挡 结束 (2)各功能模块设计 ①棋盘输入 用二维数组构筑了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每一步计算机都会调用相应的函数扫描棋盘。 Char qi pan[3][3]; Void init_qipan(void); {int i,j; for(i=0;i<3;i++) for(j=0:j<3;j++) qipan[i][j]=’ ’ ②对弈模块 模块是提供用户模拟棋盘按用户自己的思想来下棋,这期间涉及两种情况:用户输入错误或者棋子位置错误。 /*************用户方面对弈************/ void player_move(void) { int x,y; printf("It's your turn,please:"); scanf("%d%*c%d",&x,&y); x--;y--; if(qipan[x][y]!=' ') { printf("Error, try again.\n"); player_move(); } else qipan[x][y]='X'; } /**************计算机方面对弈*********/ void computer_move(void) { int i,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\n"); exit(0); } else qipan[i][j]='0'; } ③显现模块 该模块的作用是显示对弈结果。即要求计算机调用相关的函数多次扫描棋盘,谁的棋优先连成一线了,计算机就判定谁胜出。这期间有三种情况:第一,用户是胜者;第二,计算机胜出;第三,二者打成平局。 void disp(void) { int t; for(t=0;t<3;t++) { printf("%c|%c|%c",qipan[t][0],qipan[t][1],qipan[t][2]); if(t!=2) printf("\n-|-|-\n"); } printf("\n"); } char check(void) { int i; for(i=0;i<3;i++) if(qipan[i][0]==qipan[i][1]&&qipan[i][0]==qipan[i][2]) return qipan[i][0]; for(i=0;i<3;i++) if(qipan[0][i]==qipan[1][i]&&qipan[0][i]==qipan[2][i]) return qipan[0][i]; for(i=0;i<3;i++) if(qipan[0][0]==qipan[1][1]&&qipan[0][0]==qipan[2][2]) return qipan[0][0]; for(i=0;i<3;i++) if(qipan[0][2]==qipan[1][1]&&qipan[1][1]==qipan[2][0]) return qipan[0][2]; return ' '; } 6.程序代码 #include "stdio.h" #include "stdlib.h" void init_qipan(); void player_move(); void computer_move(); void disp(); char check(); int main(void) { char done; done=' '; init_qipan(); do { disp(); player_move(); done=check(); if(done!=' ') break; computer_move(); done=check(); } while(done==' '); if(done=='X') printf("恭喜你获胜!\n"); else printf("真遗憾,你输了!\n"); disp(); getchar(); return 0; } char qipan[3][3]; void init_qipan(void) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) qipan[i][j]=' '; } void player_move(void) { int x,y; printf("It's your turn,please:"); scanf("%d%*c%d",&x,&y); x--;y--; if(qipan[x][y]!=' ') { printf("Error, please try again.\n"); player_move(); } else qipan[x][y]='X'; } void computer_move(void) { int i,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\n"); exit(0); } else qipan[i][j]='0'; } void disp(void) { int t; for(t=0;t<3;t++) { printf("%c|%c|%c ",qipan[t][0],qipan[t][1],qipan[t][2]); if(t!=2) printf("\n-|-|-\n"); } printf("\n"); } char check(void) { int i; for(i=0;i<3;i++) if(qipan[i][0]==qipan[i][1]&&qipan[i][0]==qipan[i][2]) return qipan[i][0]; for(i=0;i<3;i++) if(qipan[0][i]==qipan[1][i]&&qipan[0][i]==qipan[2][i]) return qipan[0][i]; for(i=0;i<3;i++) if(qipan[0][0]==qipan[1][1]&&qipan[0][0]==qipan[2][2]) return qipan[0][0]; for(i=0;i<3;i++) if(qipan[0][2]==qipan[1][1]&&qipan[1][1]==qipan[2][0]) return qipan[0][2]; return ' '; } 7.程序运行结果 (1)主函数显示: (2)移动一个棋子后: (3)移动两个棋子后: (4)移动了三个棋子后: 8.编程中遇到的困难及解决方法 这次实习中遇到很多问题,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,文件等等。通过这次课程设计之后,我把前面所学过的知识又重新温故了一遍。 编程中遇到很多麻烦,首先是编译中的许多错误,不乏很低级的失误。其次是运行成功后,一些功能没有按要求实现,比如判定输入的坐标是否重复。最后是对程序的简化,再写报告时发现有许多程序段都是可以去掉或者调用其它函数来代替。写结构图时发现有些函数结构混乱,也做了些修改。在做课程设计的过程中,虽然遇到不少很难对付的问题,但和周边同学进行了交流或讨论后,大多数问题都得到解决。 9.总结心得及良好建议 这次实习,我有了不少的收获。一是编程思想有了很大提升:对面向过程的结构化思想有了进一步的认识和理解。初步接触和了解了较大规模程序的写法。二是调试水平的提高:有了这次的锻炼,积累了对一些编译和运行中常见的错误的解决办法的经验和心得。三是初步认识了一些常见算法:如递归,回溯,折半查找。四是思想上有了改变:编程是一项容不得半点马虎的工作,要有严谨的态度,细致的思维,另外还要勤动手,多实践。 这次实习,由于上机时间的不足,这门课让我们普遍感觉到这门课内容太多,来不及消化。但我们经过这个星期的集中上机强化训练,我们初步掌握了编写中小型程序的编写方法,实习老师的精心指点让我们获益匪浅。这让我们的程序设计能力和综合能力上了一个不小的台阶。 我在实习过程中一直坚持了“程序=数据结构+算法”这一思想,但在算法上尤其在操作步骤这方面我还是存在一些不足,在上机调试时,我还是缺乏查找错误的经验。 14展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




C语言课程设计报告——一担挑游戏.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2931733.html