![C语言版井字棋_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/846dd8ac-3311-47ea-9f7e-5797256f964f/846dd8ac-3311-47ea-9f7e-5797256f964f1.gif)
![C语言版井字棋_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/846dd8ac-3311-47ea-9f7e-5797256f964f/846dd8ac-3311-47ea-9f7e-5797256f964f2.gif)
![C语言版井字棋_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/846dd8ac-3311-47ea-9f7e-5797256f964f/846dd8ac-3311-47ea-9f7e-5797256f964f3.gif)
![C语言版井字棋_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/846dd8ac-3311-47ea-9f7e-5797256f964f/846dd8ac-3311-47ea-9f7e-5797256f964f4.gif)
![C语言版井字棋_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/846dd8ac-3311-47ea-9f7e-5797256f964f/846dd8ac-3311-47ea-9f7e-5797256f964f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、十五、井字棋【问题描述】设计一个井字棋的游戏程序【基本要求】游戏规则是:从一个空的棋盘开始,人为x一方,计算机为o一方,人机双方轮流放置棋子,人下的时候,字符x将被放入棋盘中指定的位置,轮到计算机下时,程序将扫描棋盘,并将字符o放入扫描到的第一个空格,某一方有3枚棋子占据了一横行、一竖行或一对角线则获胜,若整个棋盘被占满还没有一方获胜则为和局。截图:代码:/author GXU-pengcheng#include<stdio.h>#include<windows.h>#include<conio.h>void Help();/帮助int Play(char
2、player,int choice);/对弈void Init();/初始化棋盘void Display();/打印棋盘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 En
3、d(char symbol);/结束int Found();/返回第一个没有棋子的位置的编号char 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("nnn
4、nnnnnttt1. 玩 家 先 手nnttt2. 电 脑 先 手nnttt3. 帮 助nnttt4. 退 出nnnnntt请输入: ");player=getch();if(player='1')Init();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
5、='4')return 0;elseprintf("nntt 输入错误请重新输入!");Sleep(1000);system("cls");continue;return 0;void Help()system("cls");printf("nnnnnnnnnttt 帮助nnn");printf("t 'W'上移, 'S'下移, 'A'左移, 'D'右移 nn");printf("tt 游戏中按'4
6、'退出");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;el
7、se if( (get='w'|get='W') &&choice-3>=1)Clear(choice);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
8、 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(choice-1)%3)*21+4!=' ')printf("该位置已有其他棋子!");continue;elseClear(choice);break;/while结束b+;Black(choice
9、);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=0;int i='1'for(x=0;x<31;x+)for(y=0;y&l
10、t;64;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&l
11、t;=3;y+)/a(Funcx(x)+1)(Funcy(y)+1)=i;/i+;/void Display()/打印棋盘int x=0,y=0;for(x=0;x<31;x+)for(y=0;y<64;y+)printf("%c",axy);void Block(int choice)/添加选择框int x,y;for(x=Funcx(choice)+1;x<Funcx(choice)+10;x+)for(y=Funcy(choice)+2;y<Funcy(choice)+20;y+)if(x=Funcx(choice)+1|x=Funcx(cho
12、ice)+9)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy='+'else if(y<Funcy(choice)+7|y>Funcy(choice)+14)axy='-'else if(x<Funcx(choice)+4|x>Funcx(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(
13、choice)+1Funcy(choice)+2='+'&&i!=choice)for(x=Funcx(choice)+1;x<Funcx(choice)+10;x+)for(y=Funcy(choice)+2;y<Funcy(choice)+20;y+)if(x=Funcx(choice)+1|x=Funcx(choice)+9)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy=' 'else if(y<Funcy(choice)+7|y>Funcy(choice)+14)axy=&
14、#39; 'else if(x<Funcx(choice)+4|x>Funcx(choice)+6)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy=' 'void Black(choice)/添加黑棋int x,y;for(x=Funcx(choice)+2;x<Funcx(choice)+9;x+)for(y=Funcy(choice)+4;y<Funcy(choice)+18;y+)if(x=Funcx(choice)+2|x=Funcx(choice)+8)axy='#'else if
15、(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(choice)+2Funcy(choice)+4=aFun
16、cx(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
17、)+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();if(symbol='*')printf("ttt 电 脑 胜
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幕墙施工安装合同
- 三农村社区公共基础设施建设规划方案
- 企业法律咨询服务合同
- 员工年终工作总结报告
- 高中语文必修(下)第二单元《窦娥冤》教学设计
- Unit 6 Review Lesson 1(教学设计)-2024-2025学年北师大版(三起)(2024)英语三年级上册
- 第8课 欧洲思想解放运动 教学设计-2023-2024学年高一统编版2019必修中外历史纲要下册
- 10 塑料 教学设计-2024-2025学年科学一年级上册湘科版
- 高中信息技术选修3教学设计-3.1 网络的功能与构造1-教科版
- 崇州北欧风格墙布施工方案
- 马工程教材《公共财政概论》PPT-第三章 财政支出总论
- 铁路基础知识课件
- 全面风险标准化分类分定与描述数据库(2023-雷泽佳编写)
- 六年级语文-文言文阅读训练题50篇-含答案-全国通用
- 出版物网络零售备案表
- 云南省昭通市各县区乡镇行政村村庄村名居民村民委员会明细
- 国家留学基金委国外大学邀请函
- QES三体系内审检查表 含审核记录
- 信息论与编码 自学报告
- 二年级乘除法口诀专项练习1000题-推荐
- 贷款项目资金平衡表
评论
0/150
提交评论