想过七夕?->女朋友陪你玩游戏(C)(上)

简介: 三子棋七夕到了,没有女朋友怎么办?没事~ 写一个小游戏,让女朋友陪你玩三子棋~

三子棋



七夕到了,没有女朋友怎么办?没事~ 写一个小游戏,让女朋友陪你玩三子棋~


1.展示棋盘


这部分我折腾了很久,因为展示出来的效果是实现能通过更改ROW和COL的值来展示不同大小的棋盘


只能不断的调整–观察发现最后一行不打印横线,最后一列不打印竖杠

void Displayboard(char board[ROW][COL], int row, int col)
{
  int i, j,k;
  for (i = 0; i < row; i++)
  {
    for (j = 0; j < col; j++)
    {
      if(j<col-1)
      printf(" %c |", board[i][j]);
        if (j == col-1 )
      {
        printf(" %c \n", board[i][j]);
      }
    }
    for (j = 0;j<col; j++)
    {
      if (j <col-1 && i!=row-1)
      {
        printf("---|");
      }
    }
    if (i != row - 1)
    {
        printf("---");
          printf("\n");
    }
  }
}


效果如下:

3539ebef40914f90a9e5f30fd999dffd.png


通过更改ROW和COL的值来展示不同大小的棋盘:


三子棋:

f63cc01a747f4def98da9138708423dd.png


五子棋:

0f45fcd55bf44484bdba586701f311cf.png


七子棋:

66177531ca6d4cd78b3d8eacfd0336d7.png


2. 玩家落子


注意:每次落子完要重新打印一次棋盘


当输入坐标错误或者已经有棋子的时候要进行相应的提示

void PlayerMove(char board[ROW][COL], int row, int col)//玩家落子
{
  int x, y;
  while (1)
  {
    printf("请玩家落子>");
    printf("请输入棋子行列坐标:\n");
    scanf("%d%d", &x, &y);
    if (x >= 1 && x <= row && y >= 1 && y <= col)
    {
      if (board[x - 1][y - 1] == ' ')//数组的真实下标从0开始
      {
        board[x - 1][y - 1] = '*';
      }
      else
      {
        printf("坐标被占用,请重新输入");
      }
    }
    else
      printf("输入坐标非法,请重新输入\n");
    Displayboard(board, ROW, COL);
  }
}

decbfbab7b1149409f3a1eeb80899811.png


3.女朋友落子


注意:这里需要生成随机数,并且引用相应的头文件

void ComputerMove(char board[ROW][COL], int row, int col) 
{
  int x, y;
  printf("\n");
  printf("女朋友下棋:\n");
  while (1)
  {
    x = rand() % row;
    y = rand() % col;
    if (board[x][y] == ' ')
    {
      board[x][y] = '#';
      break;
    }
  }
  Displayboard(board, ROW, COL);  
}


生成随机数:

e093a2a9c68d43358a73f91c7bd92931.png


头文件:

236f167e35d54865bb586852172578b4.png


效果如下

24a66d761eb045cfb144b34a706af5ca.png


4.判断游戏输赢


结局共有三个:女朋友赢,你赢,平局


根据四种返回值来判段


你赢-- ‘*’

女朋友赢–’#’

平局–‘Q’

继续–‘C’

char isWin(char board[ROW][COL], int row, int col)
{
  //1.判断输赢
  int i;
  for (i = 0; i < row; i++)//判断行是否相等
  {
    if (board[i][0] == board[i][1] && board[i][0] == board[i][2] && board[i][0] != ' ')
    {
      return board[i][0];
    }
  }
  for (i = 0; i < row; i++)//判断列是否相等
  {
    if (board[0][i] == board[1][i] && board[0][i] == board[2][i] && board[0][i] != ' ')
    {
      return board[0][i];
    }
  }
  if (board[2][0] == board[1][1] && board[0][2] == board[2][0] && board[2][0]!=' ')//判断对角线
  {
    return board[2][0];
  }
  if (board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[0][0] != ' ')
  {
    return board[0][0];
  }
  //2.判断平局
  if (isFull(board, row, col) == 1)
  {
    return 'Q';
  }
  else return 'C';
}


5.最终效果


平局:8a7c4838ab43410e8a63a1583c5b3da6.png


女朋友赢:


f8ae095890ae42bebb622c0f31007edd.png


玩家赢:


c5e6538fe9f1433ea6840a6812a40ef0.png


最终的所有的代码如下:


我的gitee–和女朋友玩的三子棋小游戏



相关文章
|
6月前
|
移动开发 前端开发 JavaScript
童年回忆——开心消消乐(内含源码inscode一键运行)
童年回忆——开心消消乐(内含源码inscode一键运行)
|
6月前
|
Java
普通玩家也能掌握的Java游戏加点系统,专业到让你无敌!
普通玩家也能掌握的Java游戏加点系统,专业到让你无敌!
37 1
|
前端开发
零基础都能拿捏的七夕浪漫代码,快去表白或去制造惊喜吧
零基础都能拿捏的七夕浪漫代码,快去表白或去制造惊喜吧
120 0
想过七夕?->女朋友陪你玩游戏(C)(下)
七夕到了,没有女朋友怎么办?没事~ 写一个小游戏,让女朋友陪你玩扫雷~
想过七夕?->女朋友陪你玩游戏(C)(下)
想过七夕?->女朋友陪你玩游戏(C)(中)
在一定数值范围内,游戏随机生成一个数字,玩家输入比随机数大的数字时,程序会提醒,数值大于目标数,反之亦然。通过不断试错,最终找出目标数字。此游戏可以重复玩。
想过七夕?->女朋友陪你玩游戏(C)(中)
|
Unix 程序员 Windows
雷军回顾20年前自己的“程序人生”,还用吴奇隆的歌词文艺了一把
虎嗅注:今天,雷军在他的公众号里发了一篇他20年前写的帖子,那个时候还是1996年,是通过电话线拨号连接到西点BBS上飙帖子玩的年代。那是一个互联网混沌初开的年代,那是一个BBS和Email几乎主宰了全部互联网的年代,那是一个青春的理想和热血沸腾的年代。我是一个程序员,一个软件工程师。到今天,我也依然是一个程序员,一个软件工程师。 雷军在文章中说,本文是20年前我对程序人生的一点看法。20年后的今天,重读之后,这依然是我对程序人生的态度。 文末还引用了吴奇隆的《祝你一路顺风》中的歌词那一天知道你要走,我们一句话都没有说。真是文艺青年啊。下面是雷军20年前写的文章,虎嗅未做删减。 程序人生
524 0
|
云栖大会 云计算
大咖、颜值、逼格、礼物都齐了,只差一个你!
传说中,这是一个格子衬衫、双肩包、拖鞋的聚集地。 传说中,参加这个“集会”的人一言不合就会“噼噼啪啪”……敲代码。 传说中,这是一场烧脑盛宴,也是面基的好去处……
49399 0