贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

游戏代码怎么写(基于C语言实现三子棋游戏的代码怎么写)

来源:网络转载 时间:2024-04-30 14:37:46

1.创建文件

test.c (游戏的测试逻辑)game.c(游戏的实现逻辑)gane.h(游戏实现函数的声明)

game.c 和game.h属于游戏实现 test.c属于游戏测试

test.c 源文件(源文件添加)——game.c 源文件(源文件添加)——game.h(头文件添加)

三个文件

2.首先在test.c文件写一个主函数,主函数里面有一个测试函数,测试函数里面写菜单、进入游戏、退出游戏

代码展示:

voidmenu(){printf("***************************\n");printf("********1.play********\n");printf("********0.exit********\n");printf("***************************\n");}voidtest(){intinput=0;do{menu();printf("请选择:->");scanf("%d",&input);switch(input){case1:printf("三子棋\n");break;case0:printf("退出游戏\n");break;default:printf("选择错误\n");break;}}while(input);}#include<stdio.h>intmain(){test();return0;}

注意:

(1)一般用do while (游戏可能会玩很多次,最少一次)

(2)先打印一个菜单

(3)switch语句,要记得break,要记得default

接下来 把printf("三子棋\n") 改成 game(); 然后开始写游戏部分。

3.三子棋代码

思路:(\n 不要忘记写)

(1)棋盘用数组

(2)假设玩家走用' * ',电脑走用' # ',所以用字符类型的数组(3*3的)

row 中文意思是行 column 中文意思是列 init 英文最初的简写

引用自己写的文件 把#include < >改成 #include " "

(3)棋盘初始化

函数的声明在头文件里

(4)打印棋盘 (打印数据、分割行),把数据行和分割行看做一大部分,最后一部分没有分割行而已。

(5)玩家下棋,打印棋盘,电脑下棋,打印棋盘。

(6)每下一步棋后,会有四种结果 玩家赢,电脑赢,平局,继续玩 。所以要进行判断。

玩家赢 &lsquo;*&rsquo;,电脑赢&lsquo;#&rsquo;,平局&lsquo;Q&rsquo;,继续 &lsquo;C&rsquo;

game.h 部分代码展示

#pragmaonce#include<stdio.h>#include<time.h>#include<stdlib.h>#defineROW3#defineCOL3//初始化棋盘voidInitboard(charboard[ROW][COL],introw,intcol);//define定义的ROW,COL是常量,而这里的row,col都是变量,所以不能替代voidDisplayboard(charboard[ROW][COL],introw,intcol);//打印棋盘voidplayer_move(charboard[ROW][COL],introw,intcol);//玩家下棋voidcomputer_move(charboard[ROW][COL],introw,intcol);//电脑下棋charis_win(charboard[ROW][COL],introw,intcol);//判断输赢以及平局和继续玩

game.c代码展示

#include"game.h"voidInitboard(charboard[ROW][COL],introw,intcol){inti=0;intj=0;for(i=0;i<row;i++){for(j=0;j<col;j++){board[i][j]='';}}}voidDisplayboard(charboard[ROW][COL],introw,intcol){inti=0;intj=0;for(i=0;i<row;i++){//打印数据//printf("%c|%c|%c\n",board[i][0],board[i][1],board[i][2]);//固定的数字0,1,2会把棋盘给固定住,所以不能这样写for(j=0;j<col;j++){printf("%c",board[i][j]);if(j<col-1)printf("|");}printf("\n");//打印分割行if(i<row-1){for(j=0;j<col;j++){printf("---");if(j<col-1){printf("|");}}printf("\n");}}}intis_full(charboard[ROW][COL],introw,intcol){inti=0;intj=0;for(i=0;i<row;i++){for(j=0;j<col;j++){if(board[i][j]==''){return0;}}}return1;}voidplayer_move(charboard[ROW][COL],introw,intcol){intx=0;inty=0;printf("请输入坐标:->");while(1){scanf("%d%d",&x,&y);//判断坐标是否在棋盘范围if((x>=1&&x<=row)&&(y>=1&&y<=col)){if(board[x-1][y-1]==''){board[x-1][y-1]='*';break;}else{printf("该坐标被占用,请重新输入!\n");}}else{printf("坐标非法\n");}}}//电脑下棋voidcomputer_move(charboard[ROW][COL],introw,intcol){intx=0;inty=0;printf("电脑下棋\n");while(1){x=rand()%row;y=rand()%col;if(board[x][y]==''){board[x][y]='#';break;}}}//判断每一步棋后是输赢,还是平局,还是继续玩charis_win(charboard[ROW][COL],introw,intcol){inti=0;for(i=0;i<row;i++){if(board[i][0]==board[i][1]&&board[i][1]==board[i][2]&&board[i][0]!=''){returnboard[i][0];}}for(i=0;i<col;i++){if(board[0][i]==board[1][i]&&board[1][i]==board[2][i]&&board[0][i]!=''){returnboard[0][i];}}if(board[0][0]==board[1][1]&&board[1][1]==board[2][2]&&board[1][1]!=''){returnboard[0][0];}if(board[0][2]==board[1][1]&&board[1][1]==board[2][0]&&board[1][1]!=''){returnboard[1][1];}inta=is_full(board,row,col);if(1==a){return'Q';}return'C';}

test.c 部分代码展示

#include"game.h"voidmenu(){printf("***************************\n");printf("********1.play********\n");printf("********0.exit********\n");printf("***************************\n");}voidgame(){charboard[ROW][COL]={0};Initboard(board,ROW,COL);//棋盘初始化,内容为空格Displayboard(board,ROW,COL);//打印棋盘charret=0;//下棋while(1){player_move(board,ROW,COL);Displayboard(board,ROW,COL);ret=is_win(board,ROW,COL);if(ret!='C'){break;}computer_move(board,ROW,COL);Displayboard(board,ROW,COL);ret=is_win(board,ROW,COL);if(ret!='C'){break;}}if(ret=='*'){printf("恭喜你,取得胜利!\n");}elseif(ret=='Q'){printf("平局\n");}else{printf("你输了\n");}}voidtest(){intinput=0;srand((unsignedint)time(NULL));do{menu();printf("请选择:->");scanf("%d",&input);switch(input){case1:game();break;case0:printf("退出游戏\n");break;default:printf("选择错误\n");break;}}while(input);}intmain(){test();return0;}

以上就是关于“基于C语言实现三子棋游戏的代码怎么写”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注本站行业资讯频道。

抖音(Tiktok)是由北京字节跳动科技有限公司(ByteDance)孵化的音乐创意短视频社交网站。它于2016年9月20日上线,主要面向全年龄段的用户,尤其是...

飞极速为您提供高清在线电影、电视剧大全、动画片,综艺等,飞极速在线更新及时,播放速度快,给您带来最好的观影体验!飞极速在线,免费提供日本新番动漫、最新电影和最新...

《南华早报》(英语:South China Morning Post, SCMP)和星期日出版的《星期日南华早报》(英语:Sunday Morning Post...

1,ipad装机必备软件 ipad装机必备软件一般就是浏览器ipad装机必备、QQ聊天ipad装机必备、电子书阅读ipad装机必备等等,去99软件站 ipad专区 下载。还可以越狱呢2,ipad必装软件值得推荐1、NotabilityNotability 是一个笔记和PDF 标注App。不管你是手写,绘画,还是扫描的文档,都可以对它轻松编辑标注。使用它基本无纸化了,使用它可以手写笔记,创建任务清单...

所谓价格歧视,是指垄断厂商为了获得超额利润,而实行的有差别的价格政策。价格其实分为三个等级,等级数字越小,垄断厂商赚取的超额利润就越多。价格歧视的三种类型例子如下:一、一级价格歧视-看人定价不同的人为相同商品或服务所愿意支付的最高价格是不同的。一个旅游纪念品,经济条件好的人可能愿意花500元去购买,经济条件一般的人可能最多只愿意出300元。那么为了多挣钱,景区卖旅游纪念品的老板会上下打量每一个询价...

有时候我们去银行,会遇到有人在办理银行承兑汇票敞口,这个业务是怎么一项业务呢?具体指的是什么内容?其实这是银行最为普遍的一种业务,只不过是运用于企业,所以个人见得比较少。一般情况下,首先是企业取得了银行在审理企业各项信用之后给予的一种授信额度,也就是承兑汇票的信用额度,然后就能和银行签订相应的协议,其中会明确的规定相关的权利和义务。企业通过这项业务就可以得到融资,当然是需要先来缴纳一定的保证金,然...

TOP