二维数组实战项目--------《三子棋》(下)

简介: 今天给大家分享一个小游戏,就会我们通常玩的五子棋

3)开始游戏,玩家下棋和电脑下棋


玩家和电脑通过棋盘的坐标来实现对战,这里注意两个点:


  • 坐标的合法性
  • 坐标是否被占用


玩家下棋代码如下:

voidpalyer_move(charboard[ROW][COL], introw, intcol) {
intx=0;
inty=0;
printf("玩家下棋:\n");
printf("请输入要下棋的坐标:");
scanf("%d %d", &x, &y);
//坐标的合法性//坐标是否被占用while(1){
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");
            }
        }
    }

接下来就是电脑下棋,电脑下棋和玩家不一样,玩家可以控制棋子的位置,而电脑不行,所以这里我们需要一个引用一个函数来控制电脑落棋的随机性,这里我们要使用一个库函数,srand函数,用时间戳作为返回值来确保电脑下棋的随机性,关于srand函数大家可以去网上找找资料https://cplusplus.com/reference/cstdlib/srand/?kw=srand,有了这样一个函数,我们就能很好的控制电脑下棋的随机性了,当然,在使用过程中,不要忘记加头文件------>

2cbe175ecaf944738e280ccfbf8f5058.png


电脑下棋代码如下:

computer_move(charboard[ROW][COL], introw, intcol) {
printf("电脑下棋:\n");
while(1)
    {
intx=rand() %row;  //取模运算防止数组越界,生成0~row-1的数字inty=rand() %col;
if (board[x][y] ==' ') {
board[x][y] ='#';
break;
        }
    }
}

到这里,玩家和电脑下棋就搞定了!!!



4)判断输赢


判断输赢可以分成4种情况:

  • 玩家赢  ----------------------用*表示
  • 电脑赢  ----------------------用#表示
  • 平局     -----------------------用C表示
  • 游戏继续 --------------------用Q表示

game.c下代码块如下:

//判断棋盘是否已经占满staticintis_full(charboard[ROW][COL], introw, intcol)
{
inti=0;
for (i=0; i<row; i++)
    {
intj=0;
for (j=0; j<col; j++)
        {
if (' '==board[i][j])
            {
return0;
            }
        }
    }
return1;
}
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[1][1];
    }
if (board[0][2] ==board[1][1] &&board[1][1] ==board[2][0] &&board[1][1] !=' ')
    {
returnboard[1][1];
    }
//判断平局if (is_full(board, row, col) ==1)
    {
return'Q';
    }
//继续return'C';
}

到这里游戏就可以正常的运行起来了

4384e34129ff4d73a6f470b3542dda34.png




三.总结


此文章适合有一定C代码基础的童鞋们,小编在学习的时候也是研究了好久才弄明白了,所以第一次看希望大家耐性看完,这里有个视频供大家一起学习,方便理解,觉得有帮助还请老铁们三连!!蟹蟹!!!

目录
相关文章
|
6月前
|
算法 C语言 C++
【C语言实战项目】三子棋游戏
【C语言实战项目】三子棋游戏
59 1
|
6月前
|
C语言
C语言之详解数组【附三子棋和扫雷游戏实战】(二)
C语言之详解数组【附三子棋和扫雷游戏实战】(二)
|
6月前
c语言学完数组就可以完成的小游戏--三子棋
c语言学完数组就可以完成的小游戏--三子棋
三子棋的创建
三子棋的创建
82 0
|
6月前
|
存储 编译器 C语言
C语言之详解数组【附三子棋和扫雷游戏实战】(一)
C语言之详解数组【附三子棋和扫雷游戏实战】(一)
|
11月前
|
C语言
【三子棋】用C语言简单实现三子棋
【三子棋】用C语言简单实现三子棋
|
C语言
C语言三子棋小游戏--数组的应用
三子棋,顾名思义,就是三个子连在一起就可以胜出。在本节我们要介绍的三子棋模式是这样子的:在键盘输入坐标(表示落子),和电脑对下(当前电脑设计为随机下)
52 0
|
C语言
从零到一快速学会三子棋
从零到一快速学会三子棋
67 1
|
存储 搜索推荐 算法
【C语言】从零开始学数组,让你也能写出三子棋和扫雷
【C语言】从零开始学数组,让你也能写出三子棋和扫雷
76 0