五子棋游戏的论文及源代码.docx
《五子棋游戏的论文及源代码.docx》由会员分享,可在线阅读,更多相关《五子棋游戏的论文及源代码.docx(37页珍藏版)》请在冰豆网上搜索。
五子棋游戏的论文及源代码
本科生课程论文
论文题目五子棋游戏
五子棋游戏
【摘要】
为了设计人人对弈模式的五子棋游戏系统,采用了C语言函数模块化程序设计方法,利用VisualC++6.0编译器运行游戏,实现一方执白棋,一方执黑棋,通过屏幕上的文字提示,轮流走棋,最先使五子相连一方获胜的人人对弈功能。
通过本程序的训练,加深对C语言的了解,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。
【关键字】五子棋函数
设计目的:
本程序旨在进一步训练学生游戏开发的技巧,掌握C语言图形模式下的编程。
本程序设计很多图形函数,包括坐标定位;颜色设置(背景色和文本颜色设置)、线条颜色、填充颜色;直线风格、文本风格、填充风格;画线、画圆、画矩形函数;PC扬声器的打开、延迟、关闭;图形系统的初始化和关闭;图形屏幕和文字屏幕的清除;从键盘获取键值等。
功能:
实现界面的初始化功能、下棋功能、胜负判断功能和帮助功能。
1)初始化功能。
程序初始化屏幕和棋盘,默认Player1先行。
2)实现下棋功能。
程序能实现下棋操作,在下棋过程中能随时退出。
3)胜负判断。
程序能对下棋的结果进行判断,分出胜负,并显示获胜信息。
4)显示帮助信息。
程序能提示玩家轮到哪方下棋了。
问题分析:
首先要实现五子棋的行棋功能,在程序中可以通过坐标来定位棋子的位置,用不同的字符表示黑白棋子,并通过变量的交替实现黑白棋子的交替显示。
另一个难点就是对于胜负的判断,这需要通过循环函数的嵌套使用,难点在于逻辑调理的把握,循环之间的对应关系。
还有一个难点就是在游戏中能随时返回主菜单,这需要一个选择结构来实现,将主菜单的程序编入主函数,在得到特定指令时返回主函数,从而返回主菜单。
下棋过程中对于不断地输入坐标,可以用一个死循环来是实现,在特定的条件下退出循环,返回主函数。
程序设计:
一、主要函数介绍
本程序主要用到了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-'A';
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=t;printf("%C\n",n);n=n-32;getch();}break;
default:
printf("\t\t请输入属于或正确的口令。
\n");continue;
}
if(state[i][j]!
='*')//判断是否有子
printf("\t提示:
该位置已经有子,请重新指定坐标!
");
c=player?
4:
79;//为棋子赋值
state[i][j]=c;
if(a!
=0)judge();//判断胜负
a++;
printState();//显示当前棋盘
player;//交换棋权
3、printState()函数
此函数为自定义函数,主要实现当前棋盘的输出,首先定义字符变量,接着清除屏幕,然后输出周围的字母和中心的“*”字符。
核心代码为:
for(i=0;i{printf("%c",p+i);//输出第一行的所有字符}printf("\n\t");//换行for(i=0;i{printf("%c",p+i);//输出行坐标(左边的字母)for(j=0;j{printf("%c",state[i][j]);//输出该行的内容}printf("%c\n\t",p+i);//输出右侧的坐标}printf("");for(i=0;i{printf("%c",p+i);//输出最后一行的所有字符}4、judge()函数此函数为自定义函数,主要实现对棋局胜负的判断。首先通过for语句的嵌套实用实现纵向的判断,判断纵向是否形成五子相连的情况。其核心代码为:if(state[i+1][j]!=state[i][j])//纵向判断{if(state[i-1][j]!=state[i][j]);elseif(state[i-2][j]!=state[i][j]);elseif(state[i-3][j]!=state[i][j]);elseif(state[i-4][j]!=state[i][j]);else{printState();printf("\n\t提示:%s方胜!\n\n",player?"黑":"白");printf("\t\t\t按回车键确认结果并返回游戏\n\n");while(1){switch(t=getch()){case13:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}}}}else………………5、help()函数此函数为自定义函数,主要实现输出帮助信息,包括游戏说明、基本规则、神父判断的说明。核心代码为:system("cls")[2];printf("\n\n\t游戏说明:\n\n");………………printf("\t\t\t按Esc键返回主菜单\n\n");while(1){switch(t=getch()){case27:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}}6、aboutThanks()函数此函数为自定义函数,主要实现输出鸣谢信息。其核心代码为:system("cls");printf("\n\n\n\t鸣谢:\n\n\n\t\t1.我的C语言老师:XXX老师。");………………while(1){switch(t=getch()){case27:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}二、程序框图三、程序截图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#include//system()的头文件#defineN19#include//getch()的头文件inta=0,t,m,n,i,j,k,size=N;intplayer=1;//当前是黑方下子player=1charstate[N][N];charc;//用来存放显示黑白子的变量voidstartGame();voidprintState();voidjudge();voidhelp();voidaboutThanks();intmain(){system("colore0");//界面颜色while(1){printf("\n\n\t\t\t---高级语言课程设计xxxxx---\n\n");printf("\t\t\t\t五子棋游戏\n\n\n");printf("\t\t\t\t1.开始游戏。\n\n");printf("\t\t\t\t2.游戏帮助。\n\n");printf("\t\t\t\t3.游戏鸣谢。\n\n");printf("\t\t\t\t4.退出程序。\n\n");printf("\n\t\t\t请选择:");L:k=scanf("%d",&i);if(k==0)//遇到异常,做健壮性处理...{printf("\n\t提示:输入非格式选项!\n\t请重新输入1-4的整数:");fflush(stdin);//清空缓冲内存区gotoL;}switch(i)//选择选项{case1:startGame();break;case2:help();break;case3:aboutThanks();break;case4:printf("\n\t\t\t请按任意键安全退出\n\t\t\t");return0;//结束整个程序。default:printf("\t温馨提示:无此选项\n");break;}}}voidstartGame()//开始游戏{for(i=0;i{for(j=0;j{state[i][j]='*';}}printState();//显示棋盘while(1){printf("\n\t请%s方下子:",player?"黑":"白");fflush(stdin);switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';state[i][j]='*';printState();printf("\n\t提示:%s方悔棋!\n\n",player?"白":"黑");player=!player;continue;}break;case27:{system("cls");return;}break;//Esc键返回主菜单case65:{m=t;printf("\t%C",m);}break;//横坐标输入case66:{m=t;printf("\t%C",m);}break;case67:{m=t;printf("\t%C",m);}break;case68:{m=t;printf("\t%C",m);}break;case69:{m=t;printf("\t%C",m);}break;case70:{m=t;printf("\t%C",m);}break;case71:{m=t;printf("\t%C",m);}break;case72:{m=t;printf("\t%C",m);}break;case73:{m=t;printf("\t%C",m);}break;case74:{m=t;printf("\t%C",m);}break;case75:{m=t;printf("\t%C",m);}break;case76:{m=t;printf("\t%C",m);}break;case78:{m=t;printf("\t%C",m);}break;case79:{m=t;printf("\t%C",m);}break;case80:{m=t;printf("\t%C",m);}break;case81:{m=t;printf("\t%C",m);}break;case82:{m=t;printf("\t%C",m);}break;case83:{m=t;printf("\t%C",m);}break;case97:{m=t;printf("\t%C",m);m=m-32;}break;case98:{m=t;printf("\t%C",m);m=m-32;}break;case99:{m=t;printf("\t%C",m);m=m-32;}break;case100:{m=t;printf("\t%C",m);m=m-32;}break;case101:{m=t;printf("\t%C",m);m=m-32;}break;case102:{m=t;printf("\t%C",m);m=m-32;}break;case103:{m=t;printf("\t%C",m);m=m-32;}break;case104:{m=t;printf("\t%C",m);m=m-32;}break;case105:{m=t;printf("\t%C",m);m=m-32;}break;case106:{m=t;printf("\t%C",m);m=m-32;}break;case107:{m=t;printf("\t%C",m);m=m-32;}break;case108:{m=t;printf("\t%C",m);m=m-32;}break;case109:{m=t;printf("\t%C",m);m=m-32;}break;case110:{m=t;printf("\t%C",m);m=m-32;}break;case111:{m=t;printf("\t%C",m);m=m-32;}break;case112:{m=t;printf("\t%C",m);m=m-32;}break;case113:{m=t;printf("\t%C",m);m=m-32;}break;case114:{m=t;printf("\t%C",m);m=m-32;}break;case115:{m=t;printf("\t%C",m);m=m-32;}break;default:printf("\t\t请输入属于或正确的口令。\n");continue;}switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';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;//纵坐标输入case66:{n=t;printf("%C\n",n);getch();}break;case67:{n=t;printf("%C\n",n);getch();}break;case68:{n=t;printf("%C\n",n);getch();}break;case69:{n=t;printf("%C\n",n);getch();}break;case70:{n=t;printf("%C\n",n);getch();}break;case71:{n=t;printf("%C\n",n);getch();}break;case72:{n=t;printf("%C\n",n);getch();}break;case73:{n=t;printf("%C\n",n);getch();}break;case74:{n=t;printf("%C\n",n);getch();}break;case75:{n=t;printf("%C\n",n);getch();}break;case76:{n=t;printf("%C\n",n);getch();}break;case78:{n=t;printf("%C\n",n);getch();}break;case79:{n=t;printf("%C\n",n);getch();}break;case80:{n=t;printf("%C\n",n);getch();}break;case81:{n=t;printf("%C\n",n);getch();}break;case82:{n=t;printf("%C\n",n);getch();}break;case83:{n=t;printf("%C\n",n);getch();}break;case97:{n=t;printf("%C\n",n);n=n-32;getch();}break;case98:{n=t;printf("%C\n",n);n=n-32;getch();}break;case99:{n=t;printf("%C\n",n);n=n-32;getch();}break;case100:{n=t;printf("%C\n",n);n=n-32;getch();}break;case101:{n=t;printf("%C\n",n);n=n-32;getch();}break;case102:{n=t;printf("%C\n",n);n=n-32;getch();}break;case103:{n=t;printf("%C\n",n);n=n-32;getch();}break;case104:{n=t;printf("%C\n",n);n=n-32;getch();}break;case105:{n=t;printf("%C\n",n);n=n-32;getch();}break;case106:{n=t;printf("%C\n",n);n=n-32;getch();}break;case
printf("%c",p+i);//输出第一行的所有字符
printf("\n\t");//换行
for(i=0;i{printf("%c",p+i);//输出行坐标(左边的字母)for(j=0;j{printf("%c",state[i][j]);//输出该行的内容}printf("%c\n\t",p+i);//输出右侧的坐标}printf("");for(i=0;i{printf("%c",p+i);//输出最后一行的所有字符}4、judge()函数此函数为自定义函数,主要实现对棋局胜负的判断。首先通过for语句的嵌套实用实现纵向的判断,判断纵向是否形成五子相连的情况。其核心代码为:if(state[i+1][j]!=state[i][j])//纵向判断{if(state[i-1][j]!=state[i][j]);elseif(state[i-2][j]!=state[i][j]);elseif(state[i-3][j]!=state[i][j]);elseif(state[i-4][j]!=state[i][j]);else{printState();printf("\n\t提示:%s方胜!\n\n",player?"黑":"白");printf("\t\t\t按回车键确认结果并返回游戏\n\n");while(1){switch(t=getch()){case13:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}}}}else………………5、help()函数此函数为自定义函数,主要实现输出帮助信息,包括游戏说明、基本规则、神父判断的说明。核心代码为:system("cls")[2];printf("\n\n\t游戏说明:\n\n");………………printf("\t\t\t按Esc键返回主菜单\n\n");while(1){switch(t=getch()){case27:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}}6、aboutThanks()函数此函数为自定义函数,主要实现输出鸣谢信息。其核心代码为:system("cls");printf("\n\n\n\t鸣谢:\n\n\n\t\t1.我的C语言老师:XXX老师。");………………while(1){switch(t=getch()){case27:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}二、程序框图三、程序截图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#include//system()的头文件#defineN19#include//getch()的头文件inta=0,t,m,n,i,j,k,size=N;intplayer=1;//当前是黑方下子player=1charstate[N][N];charc;//用来存放显示黑白子的变量voidstartGame();voidprintState();voidjudge();voidhelp();voidaboutThanks();intmain(){system("colore0");//界面颜色while(1){printf("\n\n\t\t\t---高级语言课程设计xxxxx---\n\n");printf("\t\t\t\t五子棋游戏\n\n\n");printf("\t\t\t\t1.开始游戏。\n\n");printf("\t\t\t\t2.游戏帮助。\n\n");printf("\t\t\t\t3.游戏鸣谢。\n\n");printf("\t\t\t\t4.退出程序。\n\n");printf("\n\t\t\t请选择:");L:k=scanf("%d",&i);if(k==0)//遇到异常,做健壮性处理...{printf("\n\t提示:输入非格式选项!\n\t请重新输入1-4的整数:");fflush(stdin);//清空缓冲内存区gotoL;}switch(i)//选择选项{case1:startGame();break;case2:help();break;case3:aboutThanks();break;case4:printf("\n\t\t\t请按任意键安全退出\n\t\t\t");return0;//结束整个程序。default:printf("\t温馨提示:无此选项\n");break;}}}voidstartGame()//开始游戏{for(i=0;i{for(j=0;j{state[i][j]='*';}}printState();//显示棋盘while(1){printf("\n\t请%s方下子:",player?"黑":"白");fflush(stdin);switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';state[i][j]='*';printState();printf("\n\t提示:%s方悔棋!\n\n",player?"白":"黑");player=!player;continue;}break;case27:{system("cls");return;}break;//Esc键返回主菜单case65:{m=t;printf("\t%C",m);}break;//横坐标输入case66:{m=t;printf("\t%C",m);}break;case67:{m=t;printf("\t%C",m);}break;case68:{m=t;printf("\t%C",m);}break;case69:{m=t;printf("\t%C",m);}break;case70:{m=t;printf("\t%C",m);}break;case71:{m=t;printf("\t%C",m);}break;case72:{m=t;printf("\t%C",m);}break;case73:{m=t;printf("\t%C",m);}break;case74:{m=t;printf("\t%C",m);}break;case75:{m=t;printf("\t%C",m);}break;case76:{m=t;printf("\t%C",m);}break;case78:{m=t;printf("\t%C",m);}break;case79:{m=t;printf("\t%C",m);}break;case80:{m=t;printf("\t%C",m);}break;case81:{m=t;printf("\t%C",m);}break;case82:{m=t;printf("\t%C",m);}break;case83:{m=t;printf("\t%C",m);}break;case97:{m=t;printf("\t%C",m);m=m-32;}break;case98:{m=t;printf("\t%C",m);m=m-32;}break;case99:{m=t;printf("\t%C",m);m=m-32;}break;case100:{m=t;printf("\t%C",m);m=m-32;}break;case101:{m=t;printf("\t%C",m);m=m-32;}break;case102:{m=t;printf("\t%C",m);m=m-32;}break;case103:{m=t;printf("\t%C",m);m=m-32;}break;case104:{m=t;printf("\t%C",m);m=m-32;}break;case105:{m=t;printf("\t%C",m);m=m-32;}break;case106:{m=t;printf("\t%C",m);m=m-32;}break;case107:{m=t;printf("\t%C",m);m=m-32;}break;case108:{m=t;printf("\t%C",m);m=m-32;}break;case109:{m=t;printf("\t%C",m);m=m-32;}break;case110:{m=t;printf("\t%C",m);m=m-32;}break;case111:{m=t;printf("\t%C",m);m=m-32;}break;case112:{m=t;printf("\t%C",m);m=m-32;}break;case113:{m=t;printf("\t%C",m);m=m-32;}break;case114:{m=t;printf("\t%C",m);m=m-32;}break;case115:{m=t;printf("\t%C",m);m=m-32;}break;default:printf("\t\t请输入属于或正确的口令。\n");continue;}switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';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;//纵坐标输入case66:{n=t;printf("%C\n",n);getch();}break;case67:{n=t;printf("%C\n",n);getch();}break;case68:{n=t;printf("%C\n",n);getch();}break;case69:{n=t;printf("%C\n",n);getch();}break;case70:{n=t;printf("%C\n",n);getch();}break;case71:{n=t;printf("%C\n",n);getch();}break;case72:{n=t;printf("%C\n",n);getch();}break;case73:{n=t;printf("%C\n",n);getch();}break;case74:{n=t;printf("%C\n",n);getch();}break;case75:{n=t;printf("%C\n",n);getch();}break;case76:{n=t;printf("%C\n",n);getch();}break;case78:{n=t;printf("%C\n",n);getch();}break;case79:{n=t;printf("%C\n",n);getch();}break;case80:{n=t;printf("%C\n",n);getch();}break;case81:{n=t;printf("%C\n",n);getch();}break;case82:{n=t;printf("%C\n",n);getch();}break;case83:{n=t;printf("%C\n",n);getch();}break;case97:{n=t;printf("%C\n",n);n=n-32;getch();}break;case98:{n=t;printf("%C\n",n);n=n-32;getch();}break;case99:{n=t;printf("%C\n",n);n=n-32;getch();}break;case100:{n=t;printf("%C\n",n);n=n-32;getch();}break;case101:{n=t;printf("%C\n",n);n=n-32;getch();}break;case102:{n=t;printf("%C\n",n);n=n-32;getch();}break;case103:{n=t;printf("%C\n",n);n=n-32;getch();}break;case104:{n=t;printf("%C\n",n);n=n-32;getch();}break;case105:{n=t;printf("%C\n",n);n=n-32;getch();}break;case106:{n=t;printf("%C\n",n);n=n-32;getch();}break;case
printf("%c",p+i);//输出行坐标(左边的字母)
for(j=0;j{printf("%c",state[i][j]);//输出该行的内容}printf("%c\n\t",p+i);//输出右侧的坐标}printf("");for(i=0;i{printf("%c",p+i);//输出最后一行的所有字符}4、judge()函数此函数为自定义函数,主要实现对棋局胜负的判断。首先通过for语句的嵌套实用实现纵向的判断,判断纵向是否形成五子相连的情况。其核心代码为:if(state[i+1][j]!=state[i][j])//纵向判断{if(state[i-1][j]!=state[i][j]);elseif(state[i-2][j]!=state[i][j]);elseif(state[i-3][j]!=state[i][j]);elseif(state[i-4][j]!=state[i][j]);else{printState();printf("\n\t提示:%s方胜!\n\n",player?"黑":"白");printf("\t\t\t按回车键确认结果并返回游戏\n\n");while(1){switch(t=getch()){case13:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}}}}else………………5、help()函数此函数为自定义函数,主要实现输出帮助信息,包括游戏说明、基本规则、神父判断的说明。核心代码为:system("cls")[2];printf("\n\n\t游戏说明:\n\n");………………printf("\t\t\t按Esc键返回主菜单\n\n");while(1){switch(t=getch()){case27:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}}6、aboutThanks()函数此函数为自定义函数,主要实现输出鸣谢信息。其核心代码为:system("cls");printf("\n\n\n\t鸣谢:\n\n\n\t\t1.我的C语言老师:XXX老师。");………………while(1){switch(t=getch()){case27:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}二、程序框图三、程序截图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#include//system()的头文件#defineN19#include//getch()的头文件inta=0,t,m,n,i,j,k,size=N;intplayer=1;//当前是黑方下子player=1charstate[N][N];charc;//用来存放显示黑白子的变量voidstartGame();voidprintState();voidjudge();voidhelp();voidaboutThanks();intmain(){system("colore0");//界面颜色while(1){printf("\n\n\t\t\t---高级语言课程设计xxxxx---\n\n");printf("\t\t\t\t五子棋游戏\n\n\n");printf("\t\t\t\t1.开始游戏。\n\n");printf("\t\t\t\t2.游戏帮助。\n\n");printf("\t\t\t\t3.游戏鸣谢。\n\n");printf("\t\t\t\t4.退出程序。\n\n");printf("\n\t\t\t请选择:");L:k=scanf("%d",&i);if(k==0)//遇到异常,做健壮性处理...{printf("\n\t提示:输入非格式选项!\n\t请重新输入1-4的整数:");fflush(stdin);//清空缓冲内存区gotoL;}switch(i)//选择选项{case1:startGame();break;case2:help();break;case3:aboutThanks();break;case4:printf("\n\t\t\t请按任意键安全退出\n\t\t\t");return0;//结束整个程序。default:printf("\t温馨提示:无此选项\n");break;}}}voidstartGame()//开始游戏{for(i=0;i{for(j=0;j{state[i][j]='*';}}printState();//显示棋盘while(1){printf("\n\t请%s方下子:",player?"黑":"白");fflush(stdin);switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';state[i][j]='*';printState();printf("\n\t提示:%s方悔棋!\n\n",player?"白":"黑");player=!player;continue;}break;case27:{system("cls");return;}break;//Esc键返回主菜单case65:{m=t;printf("\t%C",m);}break;//横坐标输入case66:{m=t;printf("\t%C",m);}break;case67:{m=t;printf("\t%C",m);}break;case68:{m=t;printf("\t%C",m);}break;case69:{m=t;printf("\t%C",m);}break;case70:{m=t;printf("\t%C",m);}break;case71:{m=t;printf("\t%C",m);}break;case72:{m=t;printf("\t%C",m);}break;case73:{m=t;printf("\t%C",m);}break;case74:{m=t;printf("\t%C",m);}break;case75:{m=t;printf("\t%C",m);}break;case76:{m=t;printf("\t%C",m);}break;case78:{m=t;printf("\t%C",m);}break;case79:{m=t;printf("\t%C",m);}break;case80:{m=t;printf("\t%C",m);}break;case81:{m=t;printf("\t%C",m);}break;case82:{m=t;printf("\t%C",m);}break;case83:{m=t;printf("\t%C",m);}break;case97:{m=t;printf("\t%C",m);m=m-32;}break;case98:{m=t;printf("\t%C",m);m=m-32;}break;case99:{m=t;printf("\t%C",m);m=m-32;}break;case100:{m=t;printf("\t%C",m);m=m-32;}break;case101:{m=t;printf("\t%C",m);m=m-32;}break;case102:{m=t;printf("\t%C",m);m=m-32;}break;case103:{m=t;printf("\t%C",m);m=m-32;}break;case104:{m=t;printf("\t%C",m);m=m-32;}break;case105:{m=t;printf("\t%C",m);m=m-32;}break;case106:{m=t;printf("\t%C",m);m=m-32;}break;case107:{m=t;printf("\t%C",m);m=m-32;}break;case108:{m=t;printf("\t%C",m);m=m-32;}break;case109:{m=t;printf("\t%C",m);m=m-32;}break;case110:{m=t;printf("\t%C",m);m=m-32;}break;case111:{m=t;printf("\t%C",m);m=m-32;}break;case112:{m=t;printf("\t%C",m);m=m-32;}break;case113:{m=t;printf("\t%C",m);m=m-32;}break;case114:{m=t;printf("\t%C",m);m=m-32;}break;case115:{m=t;printf("\t%C",m);m=m-32;}break;default:printf("\t\t请输入属于或正确的口令。\n");continue;}switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';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;//纵坐标输入case66:{n=t;printf("%C\n",n);getch();}break;case67:{n=t;printf("%C\n",n);getch();}break;case68:{n=t;printf("%C\n",n);getch();}break;case69:{n=t;printf("%C\n",n);getch();}break;case70:{n=t;printf("%C\n",n);getch();}break;case71:{n=t;printf("%C\n",n);getch();}break;case72:{n=t;printf("%C\n",n);getch();}break;case73:{n=t;printf("%C\n",n);getch();}break;case74:{n=t;printf("%C\n",n);getch();}break;case75:{n=t;printf("%C\n",n);getch();}break;case76:{n=t;printf("%C\n",n);getch();}break;case78:{n=t;printf("%C\n",n);getch();}break;case79:{n=t;printf("%C\n",n);getch();}break;case80:{n=t;printf("%C\n",n);getch();}break;case81:{n=t;printf("%C\n",n);getch();}break;case82:{n=t;printf("%C\n",n);getch();}break;case83:{n=t;printf("%C\n",n);getch();}break;case97:{n=t;printf("%C\n",n);n=n-32;getch();}break;case98:{n=t;printf("%C\n",n);n=n-32;getch();}break;case99:{n=t;printf("%C\n",n);n=n-32;getch();}break;case100:{n=t;printf("%C\n",n);n=n-32;getch();}break;case101:{n=t;printf("%C\n",n);n=n-32;getch();}break;case102:{n=t;printf("%C\n",n);n=n-32;getch();}break;case103:{n=t;printf("%C\n",n);n=n-32;getch();}break;case104:{n=t;printf("%C\n",n);n=n-32;getch();}break;case105:{n=t;printf("%C\n",n);n=n-32;getch();}break;case106:{n=t;printf("%C\n",n);n=n-32;getch();}break;case
printf("%c",state[i][j]);//输出该行的内容
printf("%c\n\t",p+i);//输出右侧的坐标
printf("");
for(i=0;i{printf("%c",p+i);//输出最后一行的所有字符}4、judge()函数此函数为自定义函数,主要实现对棋局胜负的判断。首先通过for语句的嵌套实用实现纵向的判断,判断纵向是否形成五子相连的情况。其核心代码为:if(state[i+1][j]!=state[i][j])//纵向判断{if(state[i-1][j]!=state[i][j]);elseif(state[i-2][j]!=state[i][j]);elseif(state[i-3][j]!=state[i][j]);elseif(state[i-4][j]!=state[i][j]);else{printState();printf("\n\t提示:%s方胜!\n\n",player?"黑":"白");printf("\t\t\t按回车键确认结果并返回游戏\n\n");while(1){switch(t=getch()){case13:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}}}}else………………5、help()函数此函数为自定义函数,主要实现输出帮助信息,包括游戏说明、基本规则、神父判断的说明。核心代码为:system("cls")[2];printf("\n\n\t游戏说明:\n\n");………………printf("\t\t\t按Esc键返回主菜单\n\n");while(1){switch(t=getch()){case27:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}}6、aboutThanks()函数此函数为自定义函数,主要实现输出鸣谢信息。其核心代码为:system("cls");printf("\n\n\n\t鸣谢:\n\n\n\t\t1.我的C语言老师:XXX老师。");………………while(1){switch(t=getch()){case27:{system("cls");return;}break;default:printf("\t\t输入错误,请输入正确的口令。\n");continue;}二、程序框图三、程序截图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#include//system()的头文件#defineN19#include//getch()的头文件inta=0,t,m,n,i,j,k,size=N;intplayer=1;//当前是黑方下子player=1charstate[N][N];charc;//用来存放显示黑白子的变量voidstartGame();voidprintState();voidjudge();voidhelp();voidaboutThanks();intmain(){system("colore0");//界面颜色while(1){printf("\n\n\t\t\t---高级语言课程设计xxxxx---\n\n");printf("\t\t\t\t五子棋游戏\n\n\n");printf("\t\t\t\t1.开始游戏。\n\n");printf("\t\t\t\t2.游戏帮助。\n\n");printf("\t\t\t\t3.游戏鸣谢。\n\n");printf("\t\t\t\t4.退出程序。\n\n");printf("\n\t\t\t请选择:");L:k=scanf("%d",&i);if(k==0)//遇到异常,做健壮性处理...{printf("\n\t提示:输入非格式选项!\n\t请重新输入1-4的整数:");fflush(stdin);//清空缓冲内存区gotoL;}switch(i)//选择选项{case1:startGame();break;case2:help();break;case3:aboutThanks();break;case4:printf("\n\t\t\t请按任意键安全退出\n\t\t\t");return0;//结束整个程序。default:printf("\t温馨提示:无此选项\n");break;}}}voidstartGame()//开始游戏{for(i=0;i{for(j=0;j{state[i][j]='*';}}printState();//显示棋盘while(1){printf("\n\t请%s方下子:",player?"黑":"白");fflush(stdin);switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';state[i][j]='*';printState();printf("\n\t提示:%s方悔棋!\n\n",player?"白":"黑");player=!player;continue;}break;case27:{system("cls");return;}break;//Esc键返回主菜单case65:{m=t;printf("\t%C",m);}break;//横坐标输入case66:{m=t;printf("\t%C",m);}break;case67:{m=t;printf("\t%C",m);}break;case68:{m=t;printf("\t%C",m);}break;case69:{m=t;printf("\t%C",m);}break;case70:{m=t;printf("\t%C",m);}break;case71:{m=t;printf("\t%C",m);}break;case72:{m=t;printf("\t%C",m);}break;case73:{m=t;printf("\t%C",m);}break;case74:{m=t;printf("\t%C",m);}break;case75:{m=t;printf("\t%C",m);}break;case76:{m=t;printf("\t%C",m);}break;case78:{m=t;printf("\t%C",m);}break;case79:{m=t;printf("\t%C",m);}break;case80:{m=t;printf("\t%C",m);}break;case81:{m=t;printf("\t%C",m);}break;case82:{m=t;printf("\t%C",m);}break;case83:{m=t;printf("\t%C",m);}break;case97:{m=t;printf("\t%C",m);m=m-32;}break;case98:{m=t;printf("\t%C",m);m=m-32;}break;case99:{m=t;printf("\t%C",m);m=m-32;}break;case100:{m=t;printf("\t%C",m);m=m-32;}break;case101:{m=t;printf("\t%C",m);m=m-32;}break;case102:{m=t;printf("\t%C",m);m=m-32;}break;case103:{m=t;printf("\t%C",m);m=m-32;}break;case104:{m=t;printf("\t%C",m);m=m-32;}break;case105:{m=t;printf("\t%C",m);m=m-32;}break;case106:{m=t;printf("\t%C",m);m=m-32;}break;case107:{m=t;printf("\t%C",m);m=m-32;}break;case108:{m=t;printf("\t%C",m);m=m-32;}break;case109:{m=t;printf("\t%C",m);m=m-32;}break;case110:{m=t;printf("\t%C",m);m=m-32;}break;case111:{m=t;printf("\t%C",m);m=m-32;}break;case112:{m=t;printf("\t%C",m);m=m-32;}break;case113:{m=t;printf("\t%C",m);m=m-32;}break;case114:{m=t;printf("\t%C",m);m=m-32;}break;case115:{m=t;printf("\t%C",m);m=m-32;}break;default:printf("\t\t请输入属于或正确的口令。\n");continue;}switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';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;//纵坐标输入case66:{n=t;printf("%C\n",n);getch();}break;case67:{n=t;printf("%C\n",n);getch();}break;case68:{n=t;printf("%C\n",n);getch();}break;case69:{n=t;printf("%C\n",n);getch();}break;case70:{n=t;printf("%C\n",n);getch();}break;case71:{n=t;printf("%C\n",n);getch();}break;case72:{n=t;printf("%C\n",n);getch();}break;case73:{n=t;printf("%C\n",n);getch();}break;case74:{n=t;printf("%C\n",n);getch();}break;case75:{n=t;printf("%C\n",n);getch();}break;case76:{n=t;printf("%C\n",n);getch();}break;case78:{n=t;printf("%C\n",n);getch();}break;case79:{n=t;printf("%C\n",n);getch();}break;case80:{n=t;printf("%C\n",n);getch();}break;case81:{n=t;printf("%C\n",n);getch();}break;case82:{n=t;printf("%C\n",n);getch();}break;case83:{n=t;printf("%C\n",n);getch();}break;case97:{n=t;printf("%C\n",n);n=n-32;getch();}break;case98:{n=t;printf("%C\n",n);n=n-32;getch();}break;case99:{n=t;printf("%C\n",n);n=n-32;getch();}break;case100:{n=t;printf("%C\n",n);n=n-32;getch();}break;case101:{n=t;printf("%C\n",n);n=n-32;getch();}break;case102:{n=t;printf("%C\n",n);n=n-32;getch();}break;case103:{n=t;printf("%C\n",n);n=n-32;getch();}break;case104:{n=t;printf("%C\n",n);n=n-32;getch();}break;case105:{n=t;printf("%C\n",n);n=n-32;getch();}break;case106:{n=t;printf("%C\n",n);n=n-32;getch();}break;case
printf("%c",p+i);//输出最后一行的所有字符
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]!
if(state[i-3][j]!
if(state[i-4][j]!
%s方胜!
"黑":
"白");
printf("\t\t\t按回车键确认结果并返回游戏\n\n");
while
(1)
case13:
{system("cls");return;}break;
printf("\t\t输入错误,请输入正确的口令。
5、help()函数
此函数为自定义函数,主要实现输出帮助信息,包括游戏说明、基本规则、神父判断的说明。
system("cls")[2];
printf("\n\n\t游戏说明:
\n\n");
printf("\t\t\t按Esc键返回主菜单\n\n");
6、aboutThanks()函数
此函数为自定义函数,主要实现输出鸣谢信息。
system("cls");
printf("\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
#include//system()的头文件
#defineN19
#include//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()
system("colore0");//界面颜色
printf("\n\n\t\t\t---高级语言课程设计xxxxx---\n\n");
printf("\t\t\t\t五子棋游戏\n\n\n");
printf("\t\t\t\t1.开始游戏。
printf("\t\t\t\t2.游戏帮助。
printf("\t\t\t\t3.游戏鸣谢。
printf("\t\t\t\t4.退出程序。
printf("\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();break;
case3:
aboutThanks();break;
case4:
printf("\n\t\t\t请按任意键安全退出\n\t\t\t");
return0;//结束整个程序。
printf("\t温馨提示:
无此选项\n");break;
voidstartGame()//开始游戏
for(i=0;i{for(j=0;j{state[i][j]='*';}}printState();//显示棋盘while(1){printf("\n\t请%s方下子:",player?"黑":"白");fflush(stdin);switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';state[i][j]='*';printState();printf("\n\t提示:%s方悔棋!\n\n",player?"白":"黑");player=!player;continue;}break;case27:{system("cls");return;}break;//Esc键返回主菜单case65:{m=t;printf("\t%C",m);}break;//横坐标输入case66:{m=t;printf("\t%C",m);}break;case67:{m=t;printf("\t%C",m);}break;case68:{m=t;printf("\t%C",m);}break;case69:{m=t;printf("\t%C",m);}break;case70:{m=t;printf("\t%C",m);}break;case71:{m=t;printf("\t%C",m);}break;case72:{m=t;printf("\t%C",m);}break;case73:{m=t;printf("\t%C",m);}break;case74:{m=t;printf("\t%C",m);}break;case75:{m=t;printf("\t%C",m);}break;case76:{m=t;printf("\t%C",m);}break;case78:{m=t;printf("\t%C",m);}break;case79:{m=t;printf("\t%C",m);}break;case80:{m=t;printf("\t%C",m);}break;case81:{m=t;printf("\t%C",m);}break;case82:{m=t;printf("\t%C",m);}break;case83:{m=t;printf("\t%C",m);}break;case97:{m=t;printf("\t%C",m);m=m-32;}break;case98:{m=t;printf("\t%C",m);m=m-32;}break;case99:{m=t;printf("\t%C",m);m=m-32;}break;case100:{m=t;printf("\t%C",m);m=m-32;}break;case101:{m=t;printf("\t%C",m);m=m-32;}break;case102:{m=t;printf("\t%C",m);m=m-32;}break;case103:{m=t;printf("\t%C",m);m=m-32;}break;case104:{m=t;printf("\t%C",m);m=m-32;}break;case105:{m=t;printf("\t%C",m);m=m-32;}break;case106:{m=t;printf("\t%C",m);m=m-32;}break;case107:{m=t;printf("\t%C",m);m=m-32;}break;case108:{m=t;printf("\t%C",m);m=m-32;}break;case109:{m=t;printf("\t%C",m);m=m-32;}break;case110:{m=t;printf("\t%C",m);m=m-32;}break;case111:{m=t;printf("\t%C",m);m=m-32;}break;case112:{m=t;printf("\t%C",m);m=m-32;}break;case113:{m=t;printf("\t%C",m);m=m-32;}break;case114:{m=t;printf("\t%C",m);m=m-32;}break;case115:{m=t;printf("\t%C",m);m=m-32;}break;default:printf("\t\t请输入属于或正确的口令。\n");continue;}switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';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;//纵坐标输入case66:{n=t;printf("%C\n",n);getch();}break;case67:{n=t;printf("%C\n",n);getch();}break;case68:{n=t;printf("%C\n",n);getch();}break;case69:{n=t;printf("%C\n",n);getch();}break;case70:{n=t;printf("%C\n",n);getch();}break;case71:{n=t;printf("%C\n",n);getch();}break;case72:{n=t;printf("%C\n",n);getch();}break;case73:{n=t;printf("%C\n",n);getch();}break;case74:{n=t;printf("%C\n",n);getch();}break;case75:{n=t;printf("%C\n",n);getch();}break;case76:{n=t;printf("%C\n",n);getch();}break;case78:{n=t;printf("%C\n",n);getch();}break;case79:{n=t;printf("%C\n",n);getch();}break;case80:{n=t;printf("%C\n",n);getch();}break;case81:{n=t;printf("%C\n",n);getch();}break;case82:{n=t;printf("%C\n",n);getch();}break;case83:{n=t;printf("%C\n",n);getch();}break;case97:{n=t;printf("%C\n",n);n=n-32;getch();}break;case98:{n=t;printf("%C\n",n);n=n-32;getch();}break;case99:{n=t;printf("%C\n",n);n=n-32;getch();}break;case100:{n=t;printf("%C\n",n);n=n-32;getch();}break;case101:{n=t;printf("%C\n",n);n=n-32;getch();}break;case102:{n=t;printf("%C\n",n);n=n-32;getch();}break;case103:{n=t;printf("%C\n",n);n=n-32;getch();}break;case104:{n=t;printf("%C\n",n);n=n-32;getch();}break;case105:{n=t;printf("%C\n",n);n=n-32;getch();}break;case106:{n=t;printf("%C\n",n);n=n-32;getch();}break;case
for(j=0;j{state[i][j]='*';}}printState();//显示棋盘while(1){printf("\n\t请%s方下子:",player?"黑":"白");fflush(stdin);switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';state[i][j]='*';printState();printf("\n\t提示:%s方悔棋!\n\n",player?"白":"黑");player=!player;continue;}break;case27:{system("cls");return;}break;//Esc键返回主菜单case65:{m=t;printf("\t%C",m);}break;//横坐标输入case66:{m=t;printf("\t%C",m);}break;case67:{m=t;printf("\t%C",m);}break;case68:{m=t;printf("\t%C",m);}break;case69:{m=t;printf("\t%C",m);}break;case70:{m=t;printf("\t%C",m);}break;case71:{m=t;printf("\t%C",m);}break;case72:{m=t;printf("\t%C",m);}break;case73:{m=t;printf("\t%C",m);}break;case74:{m=t;printf("\t%C",m);}break;case75:{m=t;printf("\t%C",m);}break;case76:{m=t;printf("\t%C",m);}break;case78:{m=t;printf("\t%C",m);}break;case79:{m=t;printf("\t%C",m);}break;case80:{m=t;printf("\t%C",m);}break;case81:{m=t;printf("\t%C",m);}break;case82:{m=t;printf("\t%C",m);}break;case83:{m=t;printf("\t%C",m);}break;case97:{m=t;printf("\t%C",m);m=m-32;}break;case98:{m=t;printf("\t%C",m);m=m-32;}break;case99:{m=t;printf("\t%C",m);m=m-32;}break;case100:{m=t;printf("\t%C",m);m=m-32;}break;case101:{m=t;printf("\t%C",m);m=m-32;}break;case102:{m=t;printf("\t%C",m);m=m-32;}break;case103:{m=t;printf("\t%C",m);m=m-32;}break;case104:{m=t;printf("\t%C",m);m=m-32;}break;case105:{m=t;printf("\t%C",m);m=m-32;}break;case106:{m=t;printf("\t%C",m);m=m-32;}break;case107:{m=t;printf("\t%C",m);m=m-32;}break;case108:{m=t;printf("\t%C",m);m=m-32;}break;case109:{m=t;printf("\t%C",m);m=m-32;}break;case110:{m=t;printf("\t%C",m);m=m-32;}break;case111:{m=t;printf("\t%C",m);m=m-32;}break;case112:{m=t;printf("\t%C",m);m=m-32;}break;case113:{m=t;printf("\t%C",m);m=m-32;}break;case114:{m=t;printf("\t%C",m);m=m-32;}break;case115:{m=t;printf("\t%C",m);m=m-32;}break;default:printf("\t\t请输入属于或正确的口令。\n");continue;}switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';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;//纵坐标输入case66:{n=t;printf("%C\n",n);getch();}break;case67:{n=t;printf("%C\n",n);getch();}break;case68:{n=t;printf("%C\n",n);getch();}break;case69:{n=t;printf("%C\n",n);getch();}break;case70:{n=t;printf("%C\n",n);getch();}break;case71:{n=t;printf("%C\n",n);getch();}break;case72:{n=t;printf("%C\n",n);getch();}break;case73:{n=t;printf("%C\n",n);getch();}break;case74:{n=t;printf("%C\n",n);getch();}break;case75:{n=t;printf("%C\n",n);getch();}break;case76:{n=t;printf("%C\n",n);getch();}break;case78:{n=t;printf("%C\n",n);getch();}break;case79:{n=t;printf("%C\n",n);getch();}break;case80:{n=t;printf("%C\n",n);getch();}break;case81:{n=t;printf("%C\n",n);getch();}break;case82:{n=t;printf("%C\n",n);getch();}break;case83:{n=t;printf("%C\n",n);getch();}break;case97:{n=t;printf("%C\n",n);n=n-32;getch();}break;case98:{n=t;printf("%C\n",n);n=n-32;getch();}break;case99:{n=t;printf("%C\n",n);n=n-32;getch();}break;case100:{n=t;printf("%C\n",n);n=n-32;getch();}break;case101:{n=t;printf("%C\n",n);n=n-32;getch();}break;case102:{n=t;printf("%C\n",n);n=n-32;getch();}break;case103:{n=t;printf("%C\n",n);n=n-32;getch();}break;case104:{n=t;printf("%C\n",n);n=n-32;getch();}break;case105:{n=t;printf("%C\n",n);n=n-32;getch();}break;case106:{n=t;printf("%C\n",n);n=n-32;getch();}break;case
printState();//显示棋盘
printf("\n\t请%s方下子:
",player?
fflush(stdin);
{m=t;printf("\t%C",m);}break;//横坐标输入
case66:
{m=t;printf("\t%C",m);}break;
case67:
case68:
case69:
case70:
case71:
case72:
case73:
case74:
case75:
case76:
case78:
case79:
case80:
case81:
case82:
case83:
case97:
{m=t;printf("\t%C",m);m=m-32;}break;
case98:
case99:
case100:
case101:
case102:
case103:
case104:
case105:
case106:
case107:
case108:
case109:
case110:
case111:
case112:
case113:
case114:
{n=t;printf("%C\n",n);getch();}break;
case
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1