版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、十五、井字棋【问题描述】设计一个井字棋的游戏程序【基本要求】游戏规则是:从一个空的棋盘开始,人为x一方,计算机为o一方,人机双方轮流放置棋子,人下的时候,字符x将被放入棋盘中指定的位置,轮到计算机下时,程序将扫描棋盘,并将字符o放入扫描到的第一个空格,某一方有3枚棋子占据了一横行、一竖行或一对角线则获胜,若整个棋盘被占满还没有一方获胜则为和局。截图:代码:/author gxu-pengcheng#include#include#includevoid help();/帮助int play(char player,int choice);/对弈void init();/初始化棋盘void di
2、splay();/打印棋盘void black(int choice);/黑棋void white(int choice);/白棋void block(int choice);/添加选择框void clear(int choice);/清空之前的选择框int judge(int choice,char symbol);/判断输赢 返回值0为无结果,1为获胜,2为平局int funcx(int choice);/将标号转换为行号int funcy(int choice);/将标号转换为列号void end(char symbol);/结束int found();/返回第一个没有棋子的位置的编号c
3、har a3164;/用数组存放棋盘和棋子,a行列int b=0;/棋子个数int main()char player;int choice; system(title 井字棋);/设置标题system(mode con cols=64 lines=35);/设置窗口大小system(color 70);/设置颜色while(1)printf(nnnnnnttt井t字t棋);printf(nnnnnnnnttt1. 玩 家 先 手nnttt2. 电 脑 先 手nnttt3. 帮 助nnttt4. 退 出nnnnntt请输入: );player=getch();if(player=1)init(
4、);block(5);choice=5;play(player,choice);else if(player=2)init();play(player,choice);else if(player=3)help();getch();system(cls);continue;else if(player=4)return 0;elseprintf(nntt 输入错误请重新输入!);sleep(1000);system(cls);continue;return 0;void help()system(cls);printf(nnnnnnnnnttt 帮助nnn);printf(t w上移, s下移
5、, a左移, d右移 nn);printf(tt 游戏中按4退出);printf(nnnntt 按任意键退出);int play(char player,int choice)/对弈char get;char symbol;int c=0;/judge得出的结果while(1)system(cls);/每次循环清屏一次display();if(player=1)/玩家下棋while(1)/确定要下的位置if(get=getch()!= )if(get=4)system(cls);return 0;else if( (get=w|get=w) &choice-3=1)clear(choice);
6、choice =choice-3;else if(get=s|get=s)&choice+3=9)clear(choice);choice = choice+3;else if(get=a|get=a)&(choice+2)/3=(choice+1)/3)clear(choice);choice -= 1;else if(get=d|get=d)&(choice-1)/3=choice/3)clear(choice);choice += 1;elsecontinue;block(choice);system(cls);display();elseif(a(choice-1)/3)*10+2(c
7、hoice-1)%3)*21+4!= )printf(该位置已有其他棋子!);continue;elseclear(choice);break;/while结束b+;black(choice);player=0;symbol=#;/if结束else/电脑下棋choice=found();block(choice);b+;white(choice);player=1;symbol=*;if(c=judge(choice,symbol)!=0)/判断输赢if(c=2)symbol=;c=0;end(symbol);break;return 0;void init()/初始化棋盘int x=0,y=
8、0;int i=1;for(x=0;x31;x+)for(y=0;y64;y+)if(y=funcy(1)|y=funcy(2)|y=funcy(3)|y=funcy(2)+funcy(3)if(x=funcx(1)|x=funcx(4)|x=funcx(7)|x=funcx(4)+funcx(7)axy=+;elseaxy=|;else if(x=funcx(1)|x=funcx(4)|x=funcx(7)|x=funcx(4)+funcx(7)axy=-;elseaxy= ;/for(x=1;x=7;x=x+3)/在每个格子的左上角添加序号,范围19/for(y=1;y=3;y+)/a(f
9、uncx(x)+1)(funcy(y)+1)=i;/i+;/void display()/打印棋盘int x=0,y=0;for(x=0;x31;x+)for(y=0;y64;y+)printf(%c,axy);void block(int choice)/添加选择框int x,y;for(x=funcx(choice)+1;xfuncx(choice)+10;x+)for(y=funcy(choice)+2;yfuncy(choice)+20;y+)if(x=funcx(choice)+1|x=funcx(choice)+9)if(y=funcy(choice)+2|y=funcy(choi
10、ce)+19)axy=+;else if(yfuncy(choice)+14)axy=-;else if(xfuncx(choice)+6)if(y=funcy(choice)+2|y=funcy(choice)+19)axy=|;void clear(int choice)/清空选择框int x,y,i;for(i=1;i=9;i+)if(afuncx(choice)+1funcy(choice)+2=+&i!=choice)for(x=funcx(choice)+1;xfuncx(choice)+10;x+)for(y=funcy(choice)+2;yfuncy(choice)+20;y
11、+)if(x=funcx(choice)+1|x=funcx(choice)+9)if(y=funcy(choice)+2|y=funcy(choice)+19)axy= ;else if(yfuncy(choice)+14)axy= ;else if(xfuncx(choice)+6)if(y=funcy(choice)+2|y=funcy(choice)+19)axy= ;void black(choice)/添加黑棋int x,y;for(x=funcx(choice)+2;xfuncx(choice)+9;x+)for(y=funcy(choice)+4;yfuncy(choice)+
12、18;y+)if(x=funcx(choice)+2|x=funcx(choice)+8)axy=#;else if(y=funcy(choice)+4|y=funcy(choice)+17)axy=#;void white(choice)/添加白棋int x;int d=4;for(x=funcx(choice)+2;x=funcx(choice)+8;x+)axfuncy(choice)+d=*;axfuncy(choice)+20-d=*;d=d+2;int judge(int choice,char symbol)/判断输赢 返回值0为无结果,1为获胜,2为平局if(afuncx(ch
13、oice)+2funcy(choice)+4=afuncx(choice+3)+2funcy(choice)+4&afuncx(choice+3)+2funcy(choice)+4=afuncx(choice+6)+2funcy(choice)+4)|(afuncx(choice)+2funcy(choice)+4=afuncx(choice)+2funcy(choice+1)+4&afuncx(choice)+2funcy(choice+1)+4=afuncx(choice)+2funcy(choice+2)+4)|afuncx(5)+2funcy(5)+4=symbol&(afuncx(1
14、)+2funcy(1)+4=afuncx(5)+2funcy(5)+4&afuncx(5)+2funcy(5)+4=afuncx(9)+2funcy(9)+4)|(afuncx(3)+2funcy(3)+4=afuncx(5)+2funcy(5)+4&afuncx(5)+2funcy(5)+4=afuncx(7)+2funcy(7)+4)return 1;if(b=9)return 2;return 0;int funcx(int choice)/将标号转换为行号return (choice-1)/3)%3)*10;int funcy(int choice)/将标号转换为列号return (choice-1)%3)*21;void end(char symbol)/结束system(cls);display();i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年食品级纤维素醚技术创新进展与市场前景报告
- 2027届山西省应一中物理高二上期中联考试题含解析
- 吉林省白城市洮南市第十中学2027届高二物理第一学期期末综合测试试题含解析
- 2026自动驾驶仿真测试平台市场需求与技术标准研究
- 2027届辽宁省沈阳二中、抚顺二中高二物理第一学期期末经典试题含解析
- 广东省兴宁市一中2027届物理高三上期中调研试题含解析
- 2027届江苏省南京梅山高级中学物理高三上期中质量检测试题含解析
- 江苏省苏州市实验中学教育集团2027届高二物理第一学期期中学业质量监测模拟试题含解析
- 2026跨境电商行业发展趋势与商业模式创新研究
- 2026实木拼板工艺革新与生产成本控制优化报告
- 信息系统项目管理师(综合知识、案例分析、论文)合卷软件资格考试(高级)试题及答案指导(2025年)
- 2024-2025学年度北师版九上数学-第四章-图形的相似-回顾与思考【课件】
- 专业技术人员年度考核表
- 惠民演出服务投标方案
- 创新思维与方法(第2版)PPT全套完整教学课件
- YS/T 1019-2015氯化铷
- GB/Z 25756-2010真空技术可烘烤法兰刀口法兰尺寸
- GB/T 20634.4-2008电气用非浸渍致密层压木第4部分:单项材料规范由桦木薄片制成的环材
- GB/T 1800.4-1999极限与配合标准公差等级和孔、轴的极限偏差表
- 企业并购动因课件
- 粉体混合原理及混合质量分析
评论
0/150
提交评论