五子棋游戏的论文及源代码Word文档格式.docx
- 文档编号:20852071
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:37
- 大小:350.09KB
五子棋游戏的论文及源代码Word文档格式.docx
《五子棋游戏的论文及源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《五子棋游戏的论文及源代码Word文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
程序设计:
一、主要函数介绍
本程序主要用到了main
()[1]、startGame()、printState()、judge()、help()、aboutThanks()等函数。
主函数中设计成死循环,再循环过程中通过选择调用其它函数。
被调用的函数运行完后再次返回到主函数中。
1、主函数main()
运行主函数,首先调用system("
colore0"
)[2]函数,改变运行界面的前景色和背景色。
然后进入一个死循环while
(1),再循环中输出主菜单的内容,包括标题、开始游戏、游戏帮助、游戏鸣谢、退出程序、请选择等字样。
然后,调用scanf()函数,从键盘上获得一个数值付给变量i,接着进行健壮性处理。
最后调用switch语句,通过选择调用其它函数。
2、startGame()函数
此函数为自定义函数,首先用一个for语句实现19*19的棋盘的初步绘制,将19*19的坐标全绘制成“*”状。
接着调用printState()函数,实现当前棋盘的显示。
然后进入下棋的循环,提示下子一方并调用fflush(stdin)[2]函数清除缓存。
然后,通过switch语句,根据从键盘上得到的值做出相应的判断,实现退格键悔棋、Esc键返回主菜单、A-S输入坐标、其他输入错误。
接着判断该坐标是否有子,有子提示重新指定坐标,否则,该位置显示相应的棋子。
除第一次下子前外,下一步将调用judge()函数,来判断是否有一方获胜。
判断结束后再次调用printState()显示当前棋盘。
最后交换期权。
此函数的核心代码如下:
switch(t=getch())
{
case8:
{//退格键悔棋
i=m-'
A'
;
j=n-'
state[i][j]='
*'
printState();
printf("
\n\t提示:
%s方悔棋!
\n\n"
player?
"
白"
:
黑"
);
player=!
player;
continue;
}break;
case27:
{system("
cls"
return;
}break;
//Esc键返回主菜单
case65:
{n=t;
printf("
%C\n"
n);
getch();
}break;
//纵坐标输入
………………
case115:
n=n-32;
default:
\t\t请输入属于<
A-S||a-s>
或正确的口令。
\n"
continue;
}
i=m-'
j=n-'
if(state[i][j]!
='
)//判断是否有子
{
printf("
\t提示:
该位置已经有子,请重新指定坐标!
continue;
c=player?
4:
79;
//为棋子赋值
state[i][j]=c;
if(a!
=0)judge();
//判断胜负
a++;
printState();
//显示当前棋盘
player=!
//交换棋权
3、printState()函数
此函数为自定义函数,主要实现当前棋盘的输出,首先定义字符变量,接着清除屏幕,然后输出周围的字母和中心的“*”字符。
核心代码为:
for(i=0;
i<
size;
i++)
{
printf("
%c"
p+i);
//输出第一行的所有字符
}
printf("
\n\t"
//换行
for(i=0;
//输出行坐标(左边的字母)
for(j=0;
j<
j++)
state[i][j]);
//输出该行的内容
%c\n\t"
//输出右侧的坐标
"
//输出最后一行的所有字符
4、judge()函数
此函数为自定义函数,主要实现对棋局胜负的判断。
首先通过for语句的嵌套实用实现纵向的判断,判断纵向是否形成五子相连的情况。
其核心代码为:
if(state[i+1][j]!
=state[i][j])//纵向判断
if(state[i-1][j]!
=state[i][j]);
else
if(state[i-2][j]!
else
if(state[i-3][j]!
else
if(state[i-4][j]!
else
{
printState();
printf("
%s方胜!
\t\t\t按回车键确认结果并返回游戏\n\n"
while
(1)
{
switch(t=getch())
{
case13:
default:
\t\t输入错误,请输入正确的口令。
}
}
}
else
………………
5、help()函数
此函数为自定义函数,主要实现输出帮助信息,包括游戏说明、基本规则、神父判断的说明。
system("
)[2];
\n\n\t游戏说明:
\t\t\t按Esc键返回主菜单\n\n"
while
(1)
{
switch(t=getch())
}
6、aboutThanks()函数
此函数为自定义函数,主要实现输出鸣谢信息。
system("
\n\n\n\t鸣谢:
\n\n\n\t\t1.我的C语言老师:
XXX老师。
二、程序框图
三、程序截图
1、主菜单界面:
2、游戏界面:
3、帮助界面:
4、鸣谢界面:
5、退出界面:
6、悔棋提示界面:
7、输入错误提醒界面:
8、获胜提示界面:
总结:
程序中多次用到循环语句的嵌套使用,难点在于对逻辑条理性的把握和对五子棋规则的正确理解。
为了实现在游戏中随时能够返回主菜单,先后试验了scanf()、getchar()、getch()函数,scanf()函数只能从键盘上得到字符,但不能识别Esc等键。
getchar()也不能显示Esc等键,无法对输入的Esc键作出判断,并且需要按回车后再给出返回值。
而getch()可以直接返回键盘的键值,但是并不在屏幕上显示。
为了解决这一问题,将getch()的值先付给一个变量,再用printf()语句输出变量。
本次设计的一大收获就是对程序结构重要性的认识,一个结构清晰的程序,对于程序的调试、改错、阅读等都有着重要意义,可以让程序员省去不必要的麻烦。
另外,程序的注释也很重要,注释不仅仅是给读程序的人看,也是给写程序的人看的。
当程序要写好多页时,有时程序员也会忘记之前的程序是实现什么功能的,所以注释是相当必要的。
通过本次设计,对C语言有了更近一步的认识,对以后进一步学习具有重要意义。
参考文献:
[1]谭浩强C程序设计(第四版)清华大学出版社
[2]XX搜索
课程论文成绩评定表
学生姓名
XXX
专业班级
XXXXX
论文题目
指导教师评语及意见:
成绩:
指导教师签字
年月日
附件:
源代码
#include<
stdio.h>
stdlib.h>
//system()的头文件
#defineN19
#include<
conio.h>
//getch()的头文件
inta=0,t,m,n,i,j,k,size=N;
intplayer=1;
//当前是黑方下子player=1
charstate[N][N];
charc;
//用来存放显示黑白子的变量
voidstartGame();
voidprintState();
voidjudge();
voidhelp();
voidaboutThanks();
intmain()
{
//界面颜色
\n\n\t\t\t---高级语言课程设计xxxxx---\n\n"
\t\t\t\t五子棋游戏\n\n\n"
\t\t\t\t1.开始游戏。
\t\t\t\t2.游戏帮助。
\t\t\t\t3.游戏鸣谢。
\t\t\t\t4.退出程序。
\n\t\t\t请选择:
L:
k=scanf("
%d"
&
i);
if(k==0)//遇到异常,做健壮性处理...
输入非格式选项!
\n\t请重新输入1-4的整数:
fflush(stdin);
//清空缓冲内存区
gotoL;
switch(i)//选择选项
case1:
startGame();
break;
case2:
help();
case3:
aboutThanks();
case4:
\n\t\t\t请按任意键安全退出\n\t\t\t"
return0;
//结束整个程序。
\t温馨提示:
无此选项\n"
break;
}
voidstartGame()//开始游戏
state[i][j]='
printState();
//显示棋盘
\n\t请%s方下子:
fflush(stdin);
}break;
{m=t;
\t%C"
m);
//横坐标输入
case66:
case67:
case68:
case69:
case70:
case71:
case72:
case73:
case74:
case75:
case76:
case78:
case79:
case80:
case81:
case82:
case83:
case97:
m=m-32;
case98:
case99:
case100:
case101:
case102:
case103:
case104:
case105:
case106:
case107:
case108:
case109:
case110:
case111:
case112:
case113:
case114:
case
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 游戏 论文 源代码