利用c语言实现三子棋游戏的目标,c语言三子棋程序,利用C语言实现三子棋游戏

利用c语言实现三子棋游戏的目标,c语言三子棋程序,利用C语言实现三子棋游戏

本文主要详细介绍了用C语言实现三子棋游戏。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

本文分享用C语言实现三棋游戏的具体代码,供大家参考。具体内容如下

注意:实现游戏需要三个文件。

1、test.c:放置主功能(main())和菜单功能(menu())和游戏功能(game())。

2、game.c:在游戏中放置相应操作的函数(),如PlayerMove(棋盘)、ComputerMove(棋盘)、每次移动后打印当前棋盘内容的函数(DisplayBoard(棋盘))等。因为这些函数有许多内容,所以它们是在头文件中单独实现的。

3、game.h:把函数的声明放在game.c和需要用到的库函数的头文件(stdio.h,stdlib.h,time.h)中,在test.c和game.c中引用就好(#include' game.h ')。

test.c

1.主函数(main())

游戏的一般执行过程

int main()

{

//设置随机数生成的起点,作为下一台计算机的坐标。

srand((无符号int)time(NULL));

int input=0;

{

menu();//菜单功能

Printf('请选择:');

scanf('%d ',输入);

开关(输入)

{

案例1:

game();

打破;

案例0:

Printf('退出游戏\ n ');

打破;

默认值:

Printf('选择错误,请重新选择\ n ');

打破;

}

} while(输入);

返回0;

}

2.菜单功能(menu())

玩家选择玩游戏或者退出。

无效菜单()

{

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ');

printf(' * * * 1 . play 0 . exit * * * \ n ');

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ');

}

3.游戏功能(game())

三棋游戏的操作步骤,以及其中涉及的功能将在game.c中解释

无效游戏()

{

//作为标记最终判断结果的标志

int ret=0;

//设置数组存储棋盘信息。

char board[3][3]={ 0 };

//用所有空格初始化棋盘。

InitBoard(板);

//打印棋盘

显示板(board);

//下棋

//下棋的过程

while (1)

{

//玩家的下一步棋

PlayerMove(板);

显示板(board);

ret=IsWin(板);

//如果ret=='c ',继续下棋。剩下的就是玩家赢了或者电脑赢了或者平局了,那就别下棋了,跳出while循环吧。

if ('c '!=ret)

打破;

//计算机的下一步

ComputerMove(板);

显示板(board);

ret=IsWin(板);

if ('c '!=ret)

打破;

}

//下完棋,判断谁赢了。

if ('*'==ret)

Printf('玩家获胜\ n ');

else if ('#'==ret)

Printf('计算机赢\ n ');

else if('e'==ret)

printf(' tie \ n ');

}

game.c

Ps:里面指向P数组的指针,实际实参是board,是棋盘第一行数组的地址。

1.InitBoard(初始化板的内容)

//用所有空格初始化棋盘。

void InitBoard(char (*p)[3])

{

int I=0;

for(I=0;i3;我)

{

int j=0;

for(j=0;j 3;j)

{

p[I][j]=“”;

}

}

}

2.显示板(显示板的内容)

开始的棋盘是这样的。

void显示板(char (*p)[3])

{

int I=0;

//打印棋盘的每一行

for(I=0;i3;我)

{

//打印棋子和竖杆

printf(' %c | %c | %c \n ',p[i][0],p[i][1],p[I][2]);

//分隔线只打印两行。

如果(I ^ 2)

printf('-|-|-\ n ');

}

}

3.玩家移动(玩家的下一步)

玩家的孩子用*表示,要注意两点:1。孩子是否在棋盘坐标中;2.坐标是否被移动。

//玩家的下一步棋(*)

void PlayerMove(char (*p)[3])

{

int x=0;

int y=0;

Printf('玩家去:\ n ');

while (1)

{

Printf('请输入要下载的坐标(用空格隔开):');

scanf('%d%d ',x,y);

//确定坐标是否正确。

如果(x=1 x=3 y=1 y=3)

{

//如果下方坐标正确,则判断坐标是否已经降低。

if (p[x-1][y-1]==' ')

{

p[x-1][y-1]=' * ';

打破;

}

其他

{

Printf('此位置已移动\ n ');

}

}

其他

{

Printf('坐标输入错误\ n ');

}

}

}

4.计算机移动(下位机)

计算机下的子用#表示,限制rand函数得到的子坐标必须在棋盘中。只考虑坐标有没有被移动。

//计算机(#)

void ComputerMove(char (*p)[3])

{

int x=0;

int y=0;

Printf('电脑去:\ n ');

//下一个子坐标已经有效,只需判断坐标是否被移动。

while (1)

{

//让X和Y随机产生一个0到2之间的数作为下一台电脑的坐标。

int x=rand()% 3;

int y=rand()% 3;

//确定是否已经放下。

if('==p[x][y])

{

p[x][y]=' # ';

打破;

}

}

}

5.IsWin(判断输赢)和IsFull(判断棋盘是否已填好)

每下一步棋有四种情况,玩家赢,电脑赢,和棋,继续,IsWin判断:

判断谁赢:棋盘的三排、三列或两条对角线是同一种棋子。无论谁赢,都将归还他放下的棋子的符号(*或#)。

如果没有赢,只剩下两种情况:和棋(棋盘已满)和继续(棋盘未满)。是否继续下棋由ISFULL决定。

//确定棋盘是否已满。

//全向下返回1

//未满,返回0

int IsFull(char(*p)[3])

{

int I=0;

int j=0;

for(I=0;i3;我)

{

for(j=0;j 3;j)

{

if (p[i][j]==' ')

返回0;

}

}

返回1;

}

//判断你是赢还是输

//玩家获胜并返回' * '

//计算机获胜并返回“#”

//平局返回“E”

//继续返回到‘C’

char IsWin(char(*p)[3])

{

int I=0;

//三条水平线

for(I=0;i3;我)

{

if(p[I][0]==p[I][1]p[I][1]==p[I][2]p[I][0]!=' ')

return p[I][0];

}

//垂直三列

for(I=0;i3;我)

{

if(p[0][I]==p[1][I]p[1][I]==p[2][I]p[0][I]!=' ')

return p[0][I];

}

//两条对角线

if(p[0][0]==p[1][1]p[1][1]==p[2][2]p[0][0]!=' ')

返回p[0][0];

if(p[0][2]==p[1][1]p[1][1]==p[2][0]p[0][2]!=' ')

返回p[0][2];

//判断是平局还是继续(电脑和玩家都没赢。此时棋盘满了就打成平手,没满就继续)

if (IsFull(p))

返回“e”;

其他

返回“c”;

}

游戏. h

包括要使用的C语言的函数和库函数的声明。

# includestdio.h

#includestdlib.h

#includetime.h

void init board(char(* p)[3]);

void display board(char(* p)[3]);

void player move(char(* p)[3]);

void computer move(char(* p)[3]);

char is win(char(* p)[3]);

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: