C语言版井字棋.doc

上传人:豆**** 文档编号:33468495 上传时间:2022-08-11 格式:DOC 页数:13 大小:250KB
返回 下载 相关 举报
C语言版井字棋.doc_第1页
第1页 / 共13页
C语言版井字棋.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《C语言版井字棋.doc》由会员分享,可在线阅读,更多相关《C语言版井字棋.doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-作者xxxx-日期xxxxC语言版井字棋【精品文档】十五、井字棋【问题描述】设计一个井字棋的游戏程序【基本要求】游戏规则是:从一个空的棋盘开始,人为x一方,计算机为o一方,人机双方轮流放置棋子,人下的时候,字符x将被放入棋盘中指定的位置,轮到计算机下时,程序将扫描棋盘,并将字符o放入扫描到的第一个空格,某一方有3枚棋子占据了一横行、一竖行或一对角线则获胜,若整个棋盘被占满还没有一方获胜则为和局。截图:代码:/author GXU-pengcheng#include#include#includevoid Help();/帮助int Play(char player,int choice);/

2、对弈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 End(char symbol);/结束in

3、t 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(nnnnnnnnttt1. 玩 家 先 手nnttt2. 电 脑 先 手nnttt3. 帮 助nnttt4. 退 出nnnnntt请输入: );playe

4、r=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=4)return 0;elseprintf(nntt 输入错误请重新输入!);Sleep(1000);system(cls);continue;return 0;void Help()system(cls);printf(nnnnnnnnnt

5、tt 帮助nnn);printf(t W上移, S下移, 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)

6、 &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 if(get=d|get=D)&(choice-1)/3=choice/3)Clear(choice);choice += 1;elsecontinue;Block(choice);system(cls);Display();e

7、lseif(a(choice-1)/3)*10+2(choice-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;

8、void Init()/初始化棋盘int x=0,y=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)/在每个格子的左上角添加

9、序号,范围19/for(y=1;y=3;y+)/a(Funcx(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=F

10、uncy(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 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(ch

11、oice)+2;yFuncy(choice)+20;y+)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=Func

12、y(choice)+4;yFuncy(choice)+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)/判断输赢 返回值

13、0为无结果,1为获胜,2为平局if(aFuncx(choice)+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)+2

14、Funcy(5)+4=symbol&(aFuncx(1)+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(in

15、t choice)/将标号转换为列号return (choice-1)%3)*21;void End(char symbol)/结束system(cls);Display();if(symbol=*)printf(ttt 电 脑 胜 利!nn);else if(symbol=#)printf(ttt 玩 家 胜 利!nn);elseprintf(ttt 平局!nn);b=0;printf(ttt按任意键返回菜单);getch();system(cls);int Found()/返回第一个没有棋子的位置的编号int i;for(i=1;i=9;i+)if(aFuncx(i)+2Funcy(i)+4= )return i;【精品文档】

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com