【三子棋游戏】---------C语言实现

简介: 【三子棋游戏】---------C语言实现

1.主函数

void menu()
{
  printf("**********************************\n");
  printf("***** 1.开始游戏  0.退出游戏 *****\n");
  printf("**********************************\n");
}
void game()
{
  char ret = 0;
  char board[ROW][COL] = { 0 };
  //初始化棋盘
  InitBoard(board,ROW,COL);
  //打印棋盘
  DisplayBoard(board, ROW, COL);
  while (1)
  {
  //玩家走棋
  PlayerMove(board, ROW, COL);
  ret = IsWin(board, ROW, COL);
  if (ret != 'g')
  {
    break;
  }
  DisplayBoard(board, ROW, COL);
  //电脑走棋
  ComputerMove(board, ROW, COL);
  ret = IsWin(board, ROW, COL);
  if (ret != 'g')
  {
    break;
  }
  DisplayBoard(board, ROW, COL);
  }
  if (ret == '*')
  {
  printf("玩家赢了!!!\n");
  }
  else if (ret == '#')
  {
  printf("电脑赢了!!!\n");
  }
  else
  {
  printf("平局!!!\n");
  }
  DisplayBoard(board, ROW, COL);
}
int main()
{
  srand((unsigned int)time(NULL));
  int input = 0;
  do
  {
  menu();
  printf("请选择:->");
  scanf("%d", &input);
  switch (input)
  {
  case 1:
    game();
    break;
  case 0:
    printf("退出游戏!!!\n");
    break;
  default:
    printf("输入有误,请重新选择\n");
    break;
  }
  } 
  while (input);
}


2.初始化棋盘

//初始化棋盘
void InitBoard(char board[ROW][COL], int row, int col)
{
  int i = 0;
  for (i = 0; i < row; i++)
  {
  int j = 0;
  for (j = 0; j < col; j++)
  {
    board[i][j] = ' ';
  }
  }
}

3.打印棋盘

//打印棋盘
void DisplayBoard(char board[ROW][COL], int row, int col)
{
  int i = 0;
  for (i = 0; i < row; i++)
  {
  int j = 0;
  for (j = 0; j < col; j++)
  {
    printf(" %c ", board[i][j]);
    if (j < col - 1)
    {
    printf("|");
    }
  }
  printf("\n");
  if (i < row - 1)
  {
    int j = 0;
    for (j = 0; j < col; j++)
    {
    printf("---");
    if (j < col - 1)
    {
      printf("|");
    }
    }
  }
  printf("\n");
  }
}


4.玩家走棋

//玩家走棋
void PlayerMove(char board[ROW][COL], int row, int col)
{
  while (1)
  {
  int x = 0;
  int y = 0;
  printf("玩家走棋:->");
  scanf("%d %d", &x, &y);
  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");
  }
  }
}


5.电脑走棋


//电脑走棋
void ComputerMove(char board[ROW][COL], int row, int col)
{
  printf("电脑走棋:\n");
  while (1)
  {
  int x = rand() % row;
  int y = rand() % col;
  if (board[x][y] == ' ')
  {
    board[x][y] = '#';
    break;
  }
  }
}

6.判断输赢

//判断输赢
//玩家赢- *
//电脑赢-#
//平局-e
//继续-g
//判断是否满盘
int IsFull(char board[ROW][COL], int row, int col)
{
  int i = 0;
  for (i = 0; i < row; i++)
  {
  int j = 0;
  for (j = 0; j < col; j++)
  {
    if (board[i][j] == ' ')
    {
    return 0;
    }
  }
  }
  return 1;
}
char IsWin(char board[ROW][COL], int row, int col)
{
  int i = 0;
  for (i = 0; i < row; i++)
  {
  if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')
  {
    return board[i][1];
  }
  }
  int j = 0;
  for (j = 0; j < col; j++)
  {
  if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[1][j] != ' ')
  {
    return board[1][j];
  }
  }
  if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
  {
  return board[1][1];
  }
  if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != ' ')
  {
  return board[1][1];
  }
  if (IsFull(board, ROW, COL))
  {
  return 'e';
  }
  else
  {
  return 'g';
  }
}


7.细节


函数声明放在game.h文件中


函数定义以及游戏代码实现放在game.c文件中

#include<stdio.h>
#define ROW 3
#define COL 3
//初始化棋盘
void InitBoard(char board[ROW][COL], int row, int col);
//打印棋盘
void DisplayBoard(char board[ROW][COL], int row, int col);
//玩家走棋
void PlayerMove(char board[ROW][COL], int row, int col);
//电脑走棋
void ComputerMove(char board[ROW][COL], int row, int col);
//判断输赢
char IsWin(char board[ROW][COL], int row, int col);
//判断是否满盘
int IsFull(char board[ROW][COL], int row, int col);


全局定义行和列数,方便后期可以随时增加行和列

#define ROW 3
#define COL 3


相关文章
|
2月前
|
C语言
C语言之斗地主游戏
该代码实现了一个简单的斗地主游戏,包括头文件引入、宏定义、颜色枚举、卡牌类、卡牌类型类、卡牌组合类、玩家类、游戏主类以及辅助函数等,涵盖了从牌的生成、分配、玩家操作到游戏流程控制的完整逻辑。
86 8
|
3月前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
136 0
|
2月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
52 2
|
2月前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
41 1
|
3月前
|
编译器 C语言
猜数字游戏实现#C语言
猜数字游戏实现#C语言
108 1
|
3月前
|
存储 C语言
揭秘C语言:泊舟的猜数字游戏
揭秘C语言:泊舟的猜数字游戏
103 2
|
3月前
|
C语言
初学者指南:使用C语言实现简易版扫雷游戏
初学者指南:使用C语言实现简易版扫雷游戏
60 0
|
3月前
|
C语言
C语言扫雷游戏(详解)
C语言扫雷游戏(详解)
46 0
|
3月前
|
程序员 C语言
初识C语言之三子棋游戏
初识C语言之三子棋游戏
40 0
|
3月前
|
C语言
初识C语言3——函数(以猜数字游戏为例)
初识C语言3——函数(以猜数字游戏为例)
78 0