使用C语言怎么编写一个三子棋小游戏

  介绍

使用C语言怎么编写一个三子棋小游戏?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。


1。开始游戏0。退出游戏

int 菜单(){   printf (“- - - - - - - - - - - - - - - - - - - - - - - - - - - - \ n");   printf(“- - - - - - - - - - 1。开始游戏- - - - - - - - - - \ n");   printf(“- - - - - - - - - - 0。退出游戏- - - - - - - - - - \ n");   printf (“- - - - - - - - - - - - - - - - - - - - - - - - - - - - \ n");   int  choice =, 0;   printf(“请输入你的选择:“);   scanf (“% d",,,选择);   return 选择;   }

2。创建棋盘

棋盘:使用3行3列的二维数组来表示,元素类型是char。

使用宏定义的原因:
1。推高代码可读性,后续代码中遇到3,方便理解含义。
2。提高扩展性,如果将来要修改棋盘尺寸,代码修改会很方便。

# define  MAX_ROW  3   # define  MAX_COL  3   char 棋盘[MAX_ROW] [MAX_COL],=, {, 0};

3。棋盘初始化

& # 39;& # 39;表示棋盘上的空白区域

void  init (char 棋盘[MAX_ROW] [MAX_COL]) {   时间=for  (int  row  0;, row  & lt;, MAX_ROW;,行+ +){   时间=for  (int  col  0;, col  & lt;, MAX_COL;,坳+ +){   棋盘(行)(col),=, & # 39;, & # 39;;   }   }   }

4。打印棋盘

(1)简陋方法:

void  print_chessBoard (char 棋盘[MAX_ROW] [MAX_COL]) {   时间=for  (int  row  0;, row  & lt; MAX_ROW;,行+ +){   时间=for  (int  col  0;, col  & lt;, MAX_COL;,坳+ +){   printf (“% c",棋盘(行)[坳]),;   }   printf (“\ n");   }   }

结果:

使用C语言怎么编写一个三子棋小游戏

注意:
这里不是棋盘没打印出来,而是我们使用& # 39;& # 39;表示空白区域,所以我们看到的棋盘是一片黑色。
这样看的不是很清楚,所以我们选用更加美观的方法打印。

(2)美观方法:

void  print_chessBoard (char 棋盘[MAX_ROW] [MAX_COL]) {   printf (“+ - - - + - - - + - - - + \ n");   时间=for  (int  row  0;, row  & lt; MAX_ROW;,行+ +),{   printf (“|, % c  |, % c  |, % c  | \ n",,棋盘(行)[0],   棋盘(行)[1],棋盘(行)[2]);   printf (“+ - - - + - - - + - - - + \ n");   }   }

结果:

使用C语言怎么编写一个三子棋小游戏

5。玩家落子

玩家输入行列坐标表示落子,使用& # 39;x # 39;表示玩家落子。

注意:
1。玩家落子需要在棋盘范围内。
2。玩家要在棋盘上空的地方落子。
3。如果输入的坐标不满足要重新输入。

void  playerMove (char 棋盘[MAX_ROW] [MAX_COL]) {   while  (1) {   int  row =, 0;   int  col =, 0;   printf(“请输入坐标(row 坳):“);   scanf (“% d  % d",,,,,,上校);   if  (row  & lt;, 0, | |, row 祝辞=,MAX_ROW  | |, col  & lt;, 0, | |, col 祝辞=,MAX_COL) {   printf(“您的坐标不在合法范围内,(0,2),请重新输入:\ n");   继续;   }   if (棋盘(行)(col), !=, & # 39;, & # 39;) {   printf(“您的坐标位置已经有子了! \ n");   继续;   }   棋盘(行)(col),=, & # 39; x # 39;;   打破;   }   }

6。电脑落子

电脑随机产生行列坐标,& # 39;o # 39;表示电脑落子。

注意:
1。要在主函数中使用<代码>将srand ((unsigned int)时间(0))
将时间作为随机数种子,确保得到的行列坐标是真随机。
2。要在棋盘上空的地方下棋。

void  computerMove (char 棋盘[MAX_ROW] [MAX_COL]) {   while  (1) {   int  row =, rand (), %, MAX_ROW;   int  col =, rand (), %, MAX_COL;   if (棋盘(行)(col), !=, & # 39;, & # 39;), {   继续;   }   棋盘(行)(col),=, & # 39; o # 39;;   打破;   }   }

7。判断胜负

此处约定返回结果的含义:
(1)的x # 39;表示玩家获胜
(2) ' o # 39;表示电脑获胜
(3) & # 39;& # 39;表示胜负未分

使用C语言怎么编写一个三子棋小游戏