C语言实现三子棋小游戏详解
在用C语言实现三子棋小游戏之前,我们应当了解三子棋的游戏规则:在九宫格棋盘上,哪一方三个棋子连成一线(一行或一列或对角线)即判定哪一方胜利。
以下为源代码:
1.首先打印出菜单。
voidmenu()
{
printf("**********************************\n");
printf("**********************************\n");
printf("*****0.play*************\n");
printf("*****1.exit*************\n");
printf("**********************************\n");
}
menu();
do
{
printf("请输入要选的的选项:");
scanf("%d",&input);
switch(input)
{
case0:
game();
break;
case1:
printf("退出游戏");
break;
default:
printf("请输入要选的选项:\n");
break;
}
}while(input);
2.创建一个二维数组board用来储存三子棋的元素,并对其进行初始化。
voidInitboard(charboard[ROW][COL],introw,intcol)
{
inti=0;
intj=0;
for(i=0;i
3.打印九宫格棋盘。
voidDisplayboard(charboard[ROW][COL],introw,intcol)//打印棋盘
{
inti;
intj;
for(i=0;i
4.使用Playermove和Computermove函数来对board数组进行更改,模拟玩家和电脑落子情况。
voidPlayermove(charboard[ROW][COL])//玩家输入坐标
{
while(1)
{
intx=0;
inty=0;
printf("请玩家输入坐标");
scanf_s("%d%d",&x,&y);
if(x<=ROW&&x>=1&&y<=COL&&y>=1)//判断输入的坐标是否越界
{
if(board[x-1][y-1]=='')//输入的坐标必须为空才可以落子
{
board[x-1][y-1]='*';
break;
}
else
printf("坐标被占用,请重新输入\n");
}
else
printf("坐标有误,请重新输入\n");
}
}
voidComputermove(charboard[ROW][COL])//电脑输入坐标
{
intx=0;
inty=0;
while(1)
{
x=rand()%3;//使用rand函数生成随机数并取余得到电脑落子坐标
y=rand()%3;
if(board[x][y]=='')
{
printf("电脑输入坐标%d%d\n",x+1,y+1);
board[x][y]='#';
break;//打印后跳出循环
}
}
}
5.玩家和电脑每落一次子,就要进行一次判断是否获胜,根据返回值来进行判断游戏结果。
intIswin(charboard[ROW][COL],introw,intcol)//判断谁获胜
{
inti;
intj;
//1为玩家获胜0为电脑获胜2为平局
for(i=0;i
6.函数声明,宏定义,函数的定义实现,测试。
#include
#include
#include
#include
#include"game.h"
#define_CRT_SECURE_NO_WARNINGS
#defineROW3
#defineCOL3
voidInitboard(charboard[ROW][COL],introw,intcol);
voidDisplayboard(charboard[ROW][COL],introw,intcol);
voidPlayermove(charboard[ROW][COL]);
voidComputer(charboard[ROW][COL]);
intIswin(charboard[ROW][COL],introw,intcol);
intFull(charboard[ROW][COL],introw,intcol);
voidmenu()
{
printf("**********************************\n");
printf("**********************************\n");
printf("*****0.play*************\n");
printf("*****1.exit*************\n");
printf("**********************************\n");
}
voidgame()
{
charboard[ROW][COL]={0};
intret;
Initboard(board,ROW,COL);//用Initboard函数初始化数组,并用‘'初始化数组
printf("游戏开始\n");
while(1)
{
Playermove(board);//玩家输入坐标
Displayboard(board,ROW,COL);
ret=Iswin(board,ROW,COL);//判断是否获胜
if(ret==1)
{
printf("玩家获胜");
break;
}
elseif(ret==0)
{
printf("电脑获胜");
break;
}
elseif(ret==2)
{
printf("平局");
break;
}
printf("\n\n");
Computer(board);//电脑输入坐标
Displayboard(board,ROW,COL);
ret=Iswin(board,ROW,COL);//判断是否获胜
if(ret==1)
{
printf("玩家获胜");
break;
}
elseif(ret==0)
{
printf("电脑获胜");
break;
}
elseif(ret==2)
{
printf("平局");
break;
}
printf("\n\n");
}
}
intmain()
{
intinput=0;
srand((unsignedint)time(NULL));
menu();
do
{
printf("请输入要选的的选项:");
scanf("%d",&input);
switch(input)
{
case0:
game();
break;
case1:
printf("退出游戏");
break;
default:
printf("请输入要选的选项:\n");
break;
}
}while(input);
}
voidInitboard(charboard[ROW][COL],introw,intcol)
{
inti=0;
intj=0;
for(i=0;i=1&&y<=COL&&y>=1)
{
if(board[x-1][y-1]=='')
{
board[x-1][y-1]='*';
break;
}
else
printf("坐标被占用,请重新输入\n");
}
else
printf("坐标有误,请重新输入\n");
}
}
voidComputer(charboard[ROW][COL])//电脑输入坐标
{
intx=0;
inty=0;
while(1)
{
x=rand()%3;
y=rand()%3;
if(board[x][y]=='')
{
printf("电脑输入坐标%d%d\n",x+1,y+1);
board[x][y]='#';
break;//打印后跳出循环
}
}
}
intIswin(charboard[ROW][COL],introw,intcol)//判断谁获胜
{
inti;
intj;
//1为玩家获胜0为电脑获胜2为平局
for(i=0;i
更多有趣的经典小游戏实现专题,分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。