c语言课程设计一担挑游戏.docx
- 文档编号:6284792
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:12
- 大小:89.82KB
c语言课程设计一担挑游戏.docx
《c语言课程设计一担挑游戏.docx》由会员分享,可在线阅读,更多相关《c语言课程设计一担挑游戏.docx(12页珍藏版)》请在冰豆网上搜索。
c语言课程设计一担挑游戏
中国地质大学
本科生课程论文封面
2011年12月
课程设计评语
对课程论文的评语:
平时成绩:
课程论文成绩:
总成绩:
评阅人签名:
注:
1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
一课程论文题目:
一担挑游戏
二.程序设计思路
1题目要求:
1.计算机移动是,使用相应函数扫描棋盘矩阵,寻找未占单元;发现空单元后,置为“0”;为发现时,报告平局退出。
2.轮到对弈者时,使用相应函数要求对弈者回答想把“X”放在哪里。
3.谁先三点连成一线了,则报告谁胜出。
4.计算机与对弈者每下一步棋都会使相应位置变为“0”和“X”,便于在屏上显示矩阵。
2需求分析
根据题目要求,由于程序要求计算机模拟棋盘对练,所以系统涉及到了二维数组的引用:
同时,在对弈期间,计算机移动时系统要不停得扫描棋盘矩阵来寻找未占单元,所以程序提供了显示,浏览,查找,排序等操作:
另外系统还能提供键盘式的选择菜单来实现功能的选择。
三.功能模块图
四.数据结构设计
用二维数组构筑了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每一步计算机都会调用相应的函数扫描棋盘。
Charqipan[3][3];
Voidinit_qipan(void);
{inti,j;
for(i=0;i<3;i++)
for(j=0:
j<3;j++)
qipan[i][j]=’’
}
五.算法设计
1.主函数:
较为简单,只有数据输入,功能处理等函数调用。
流程图
2各功能模块设计
(1)棋盘输入
用二维数组构筑了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每一步计算机都会调用相应的函数扫描棋盘。
Charqipan[3][3];
Voidinit_qipan(void);
{inti,j;
for(i=0;i<3;i++)
for(j=0:
j<3;j++)
qipan[i][j]=’’
(2)对弈模块
模块是提供用户模拟棋盘按用户自己的思想来下棋,这期间涉及两种情况1用户输入错误,2棋子位置错误。
/*************用户方面对弈************/
voidplayer_move(void)
{
intx,y;
printf("It'syourturn,please:
");
scanf("%d%*c%d",&x,&y);
x--;y--;
if(qipan[x][y]!
='')
{
printf("Error,tryagain.\n");
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\n");
exit(0);
}
else
qipan[i][j]='0';
}
(3)显现模块
显示模块
【需求分析】
该模块的作用是显示对弈结果。
即要求计算机调用相关的函数多次扫描棋盘,谁的棋优先连成一线了,计算机就判定谁胜出:
这期间有三种情况;1.用户是胜者,2.计算机胜出,3.二者打成平局.
【程序】
voiddisp(void)
{
intt;
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");
}
charcheck(void)
{
inti;
for(i=0;i<3;i++)
if(qipan[i][0]==qipan[i][1]&&qipan[i][0]==qipan[i][2])
returnqipan[i][0];
for(i=0;i<3;i++)
if(qipan[0][i]==qipan[1][i]&&qipan[0][i]==qipan[2][i])
returnqipan[0][i];
for(i=0;i<3;i++)
if(qipan[0][0]==qipan[1][1]&&qipan[0][0]==qipan[2][2])
returnqipan[0][0];
for(i=0;i<3;i++)
if(qipan[0][2]==qipan[1][1]&&qipan[1][1]==qipan[2][0])
returnqipan[0][2];
return'';
}
六.程序代码
#include"stdio.h"
#include"stdlib.h"
voidinit_qipan();
voidplayer_move();
voidcomputer_move();
voiddisp();
charcheck();
intmain(void)
{
chardone;
done='';
init_qipan();
do
{
disp();
player_move();
done=check();
if(done!
='')
break;
computer_move();
done=check();
}
while(done=='');
if(done=='X')
printf("恭喜恭喜Youwin!
\n");
else
printf("Youlost!
下次加油\n");
disp();
getchar();
return0;
}
charqipan[3][3];
voidinit_qipan(void)
{
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
qipan[i][j]='';
}
XX文库-让每个人平等地提升自我
XX文库-让每个人平等地提升自我voidplayer_move(void)
{
intx,y;
printf("It'syourturn,please:
");
scanf("%d%*c%d",&x,&y);
x--;y--;
if(qipan[x][y]!
='')
{
printf("Error,tryagain.\n");
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\n");
exit(0);
}
else
qipan[i][j]='0';
}
voiddisp(void)
{
intt;
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");
}
charcheck(void)
{
inti;
for(i=0;i<3;i++)
if(qipan[i][0]==qipan[i][1]&&qipan[i][0]==qipan[i][2])
returnqipan[i][0];
for(i=0;i<3;i++)
if(qipan[0][i]==qipan[1][i]&&qipan[0][i]==qipan[2][i])
returnqipan[0][i];
for(i=0;i<3;i++)
if(qipan[0][0]==qipan[1][1]&&qipan[0][0]==qipan[2][2])
returnqipan[0][0];
for(i=0;i<3;i++)
if(qipan[0][2]==qipan[1][1]&&qipan[1][1]==qipan[2][0])
returnqipan[0][2];
return'';
}
七.程序运行结果
下面是这个程序的运行界面图:
界面一即主函数显示:
界面二及移动一个棋子后:
界面三即移动两个棋子后:
界面四即移动了三个棋子后:
八.编程中遇到的困难及解决方法
二维函数遗忘比较严重,再次看了几遍
九.总结心得及良好建议
我们知道,计算机专业的学生与非计算机专业的学生在初次接触计算机程序设计语言课程时,由于上机时间的不足,这门课让我们普遍感觉到这门课内容太多,来不及消化。
但我们学院的学生经过这个星期的集中上机强化训练,我们初步掌握了编写中小型程序的编写方法,实习老师的精心指点让我们获益匪浅。
这让我们学院的学生的程序设计能力和综合能力上了一个不小的台阶。
我们在实习过程中一直坚持了“程序=数据结构+算法”这一思想,但在算法上尤其在操作步骤这方面我们还是存在一些不足,在上机调试时,我还是缺乏查找错误的经验。
十.致谢
我觉得我在此次实践中获得的最大的收获是初步掌握了模块化设计思想并在实际中大量的使用了流程图来表示算法。
虽然流程掌握的还不是很熟练,但是如果再有编写程序的机会的话,我想我已经具备了解决问小问题的能力了,至少我会用模块化设计解决大部问题,这全靠老师的大力监督和精彩指点。
,非常感谢老师在我们实习期间给予我们的帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 一担挑 游戏