收藏 分销(赏)

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

上传人:天**** 文档编号:2931733 上传时间:2024-06-11 格式:DOC 页数:14 大小:158.50KB
下载 相关 举报
C语言课程设计报告——一担挑游戏.doc_第1页
第1页 / 共14页
C语言课程设计报告——一担挑游戏.doc_第2页
第2页 / 共14页
C语言课程设计报告——一担挑游戏.doc_第3页
第3页 / 共14页
C语言课程设计报告——一担挑游戏.doc_第4页
第4页 / 共14页
C语言课程设计报告——一担挑游戏.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、中 国 地 质 大 学本科生课程论文封面课程名称 C语言课程设计 教师姓名 本科生姓名 本科生学号 本科生专业 所在院系 类别: 日期: 课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目 录课程设计评语2目 录31课程论文题目42程序设计思路43功能模块图54数据结构设计55算法设计56程序代码87程序运行结果118编程中遇到的困难及解决方法139总结心得及良好建议141课程论文题目一担挑游戏:要求简单计算机模拟棋盘对弈。其中棋盘左

2、上角坐标为(1,1),右下脚坐标为(3,3)。游戏规则如下:(1)计算机移动时,使用相应的函数扫描棋盘矩阵,寻找未占单元,发现空单元后,置为“O”,未发现时,报告平局后退出。(2)轮到对弈者时,使用相应函数要求对弈者把“X”放在哪里。(3)谁先三点一线了,则报告谁胜出。(4)计算机与对弈者没下一步棋都会使相应位置变为“O”和“X”,便于在屏上显示矩阵。提示棋盘位置用二维数组代表,初始状态每一位置均为“ ”(空)。其分隔线(即棋盘线)可用- -或|来分隔。2程序设计思路(1)由于此一担挑游戏棋盘是3*3的棋盘,所以棋盘的位置可以用二维数组来表示,在输入时需要采用坐标形式输入;(2)在输入坐标时,

3、因为可能出错,所以需要对坐标是否重复和超界进行判断,计算机移动时系统要不停得扫描棋盘矩阵来寻找未占单元,所以程序提供了显示、浏览、查找、排序等操作;(3)在对奕者与计算机输入坐标后,应该进行输赢平局的判断;(4)另外系统还能提供键盘式的选择菜单来实现功能的选择。3功能模块图一担挑游戏初始化棋盘判定胜负平判定当前棋手输入下棋的坐标打印当前棋盘4数据结构设计用二维数组构筑了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每一步计算机都会调用相应的函数扫描棋盘。Char qi pan33;Void init_qipan(void);int i,j;for(i=0;i3;i+)for(j

4、=0:j3;j+)qipanij= 5算法设计(1)主函数主函数较为简单,只有数据输入,功能处理等函数调用。流程图设计如下:开始构造棋盘,输入数据输入二维数组(I,j,)根据数据调用各功能模块的相应函数结果显示检查棋盘空挡结束(2)各功能模块设计棋盘输入用二维数组构筑了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每一步计算机都会调用相应的函数扫描棋盘。Char qi pan33;Void init_qipan(void);int i,j;for(i=0;i3;i+)for(j=0:j3;j+)qipanij= 对弈模块模块是提供用户模拟棋盘按用户自己的思想来下棋,这期间涉及两

5、种情况:用户输入错误或者棋子位置错误。/*用户方面对弈*/void player_move(void) int x,y; printf(Its your turn,please:); scanf(%d%*c%d,&x,&y); x-;y-; if(qipanxy!= ) printf(Error, try again.n); player_move(); else qipanxy=X; /*计算机方面对弈*/void computer_move(void) int i,j; for(i=0;i3;i+) for(j=0;j3;j+) if(qipanij= ) break; if(qipani

6、j= ) break; if(i*j=9) printf(pingjun); exit(0); else qipanij=0; 显现模块该模块的作用是显示对弈结果。即要求计算机调用相关的函数多次扫描棋盘,谁的棋优先连成一线了,计算机就判定谁胜出。这期间有三种情况:第一,用户是胜者;第二,计算机胜出;第三,二者打成平局。void disp(void) int t; for(t=0;t3;t+) printf(%c|%c|%c,qipant0,qipant1,qipant2); if(t!=2) printf(n-|-|-n); printf(n); char check(void) int i;

7、 for(i=0;i3;i+) if(qipani0=qipani1&qipani0=qipani2) return qipani0; for(i=0;i3;i+) if(qipan0i=qipan1i&qipan0i=qipan2i) return qipan0i;for(i=0;i3;i+) if(qipan00=qipan11&qipan00=qipan22) return qipan00; for(i=0;i3;i+) if(qipan02=qipan11&qipan11=qipan20) return qipan02; return ; 6程序代码#include stdio.h#i

8、nclude stdlib.hvoid init_qipan();void player_move();void computer_move();void disp();char check();int main(void)char done;done= ;init_qipan();dodisp();player_move();done=check();if(done!= )break;computer_move();done=check();while(done= );if(done=X)printf(恭喜你获胜!n);elseprintf(真遗憾,你输了!n);disp();getchar

9、();return 0;char qipan33;void init_qipan(void)int i,j;for(i=0;i3;i+)for(j=0;j3;j+)qipanij= ;void player_move(void)int x,y;printf(Its your turn,please:);scanf(%d%*c%d,&x,&y);x-;y-;if(qipanxy!= )printf(Error, please try again.n);player_move();else qipanxy=X;void computer_move(void)int i,j;for(i=0;i3;i

10、+)for(j=0;j3;j+)if(qipanij= )break;if(qipanij= )break;if(i*j=9)printf(pingjun);exit(0);elseqipanij=0;void disp(void)int t;for(t=0;t3;t+)printf(%c|%c|%c ,qipant0,qipant1,qipant2);if(t!=2)printf(n-|-|-n);printf(n);char check(void)int i;for(i=0;i3;i+)if(qipani0=qipani1&qipani0=qipani2)return qipani0;fo

11、r(i=0;i3;i+)if(qipan0i=qipan1i&qipan0i=qipan2i)return qipan0i;for(i=0;i3;i+)if(qipan00=qipan11&qipan00=qipan22)return qipan00;for(i=0;i3;i+)if(qipan02=qipan11&qipan11=qipan20)return qipan02;return ;7程序运行结果(1)主函数显示:(2)移动一个棋子后:(3)移动两个棋子后:(4)移动了三个棋子后:8编程中遇到的困难及解决方法这次实习中遇到很多问题,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在

12、设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,文件等等。通过这次课程设计之后,我把前面所学过的知识又重新温故了一遍。编程中遇到很多麻烦,首先是编译中的许多错误,不乏很低级的失误。其次是运行成功后,一些功能没有按要求实现,比如判定输入的坐标是否重复。最后是对程序的简化,再写报告时发现有许多程序段都是可以去掉或者调用其它函数来代替。写结构图时发现有些函数结构混乱,也做了些修改。在做课程设计的过程中,虽然遇到不少很难对付的问题,但和周边同学进行了交流或讨论后,大多数问题都得到解决。9总结心得及良好建议这次实习,我有了不少的收获。一是编程思想

13、有了很大提升:对面向过程的结构化思想有了进一步的认识和理解。初步接触和了解了较大规模程序的写法。二是调试水平的提高:有了这次的锻炼,积累了对一些编译和运行中常见的错误的解决办法的经验和心得。三是初步认识了一些常见算法:如递归,回溯,折半查找。四是思想上有了改变:编程是一项容不得半点马虎的工作,要有严谨的态度,细致的思维,另外还要勤动手,多实践。这次实习,由于上机时间的不足,这门课让我们普遍感觉到这门课内容太多,来不及消化。但我们经过这个星期的集中上机强化训练,我们初步掌握了编写中小型程序的编写方法,实习老师的精心指点让我们获益匪浅。这让我们的程序设计能力和综合能力上了一个不小的台阶。我在实习过程中一直坚持了“程序=数据结构+算法”这一思想,但在算法上尤其在操作步骤这方面我还是存在一些不足,在上机调试时,我还是缺乏查找错误的经验。14

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服