0
点赞
收藏
分享

微信扫一扫

三子棋游戏代码

闲鱼不咸_99f1 2022-02-26 阅读 100

/游戏头文件

#pragma once

#define ROW 3

#define COL 3

#include<stdio.h>

#include<stdlib.h>

#include<time.h>  


void  init_board(char board[ROW][COL], int row, int col);//初始化棋盘

void  print_board(char board[ROW][COL], int row, int col)//;打印棋盘

void player_move(char board[ROW][COL], int row, int col);//玩家移动

void computer_move(char board[ROW][COL], int row, int col);//电脑移动

char  win_board(char board[ROW][COL], int row, int col);//胜负判定

//*,玩家赢

//#,电脑赢

//q,平局

//c,继续

​\​

/游戏主函数

#include

#include"game.h"

void game()

{

char board[ROW][COL] = { 0 };

init_board(board, ROW, COL);//初始化棋盘

print_board(board, ROW, COL);//打印棋盘

char ret = 0;

while (1)  

{

 player_move(board, ROW, COL);//玩家移动

 print_board(board, ROW, COL);//打印棋盘

ret= win_board(board, ROW, COL);//胜负判定

if (ret !=  'c')

 break;

 computer_move(board, ROW, COL);//电脑移动

 print_board(board, ROW, COL);//打印棋盘

 ret=win_board(board, ROW, COL);//胜负判定

 if (ret != 'c')

  break;

}

if (ret == '*')

{

 printf("玩家赢了\n");

}

if (ret == '#')

{

 printf("电脑赢了\n");

}

if (ret == 'q')

{

 printf("平局\n");

}

}

void menu()

{

printf("*********************************\n");

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

printf("*********************************\n");

}

void test()

{

int input = 0;


do

{

 menu();

 printf("请输入选项:>>");

 scanf_s("%d", &input);

 switch (input)

 {

 case 1:

  game();

  break;

 case 0:

  printf("游戏退出\n");

  break;

 default :

  printf("输入错误请重新选择;\n");

 }

} while (input);

}

int main()

{

test();

return 0;

}

\

/游戏代码

#include"game.h"

void  init_board(char board[ROW][COL], int row, int col)//重置棋盘

{

int i = 0; int j = 0;

for(i=0;i<row;i++)

 for (j = 0; j < col; j++)

 {

  board[i][j] = ' ';

 }

}

void  print_board(char board[ROW][COL], int row, int col)//打印棋盘

{

int i = 0; int j = 0;

for (i = 0; i < row; i++)

{

 for (j = 0; j < col; j++)

 {

  printf(" %c ", board[i][j]);

  if (j< row - 1)

   printf("|");

 }

 printf("\n");  

 if(i<row-1)

 {

  for (j = 0; j < col; j++)

  {

   printf("---");

   if (j < row - 1)

    printf("|");

  }

 }

 printf("\n");

}

}

void player_move(char board[ROW][COL], int row, int col)

{

int x = 0; int y = 0;


printf("玩家走:>\n");

while (1)

{

 scanf_s("%d %d", &x, &y);

 if (x <= row && x > 0 && y <= col && y > 0)

 {

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

  {

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

   break;

  }

  else

   printf("该位置被占用,请重新输入:>");

 }

 else

  printf("输入坐标不合法请重新输入:>\n");

}

}

void computer_move(char board[ROW][COL], int row, int col)

{

srand((unsigned int) time(NULL));

printf("电脑走:>\n");

int x = 0; int y = 0;

while (1)

{

 x = rand()%row;

 y = rand() % col;

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

 {

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

  break;

 }

}

}

char results(char board[ROW][COL], int row, int col)

{

int i = 0; int j = 0;

for (i = 0; i < row; i++)

{

 for (j = 0; j < col; j++)

 {

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

   return 'c';

 }

}

return 'q';

}

char win_board(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];

}

for (i = 0; i < row; i++)//每列都相同时

{

 if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')

  return board[1][i];

}

{//对角线

 if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')

  return board[1][1];

 if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')

  return board[1][1];

}

results(board,row,col);

}/


举报

相关推荐

三子棋游戏

三子棋小游戏

三子棋游戏试玩

实现三子棋小游戏

三子棋(井字棋)小游戏

0 条评论