C语言学习记录——십삼 三子棋(2)

接着之前的来看。

game.h

#define ROW 3

#define COL 3

#include

#include

#include

void InitBoard(char board[ROW] [COL], int ROW, COL);

void DsaplayBoard(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);// 可以告诉程序员四种状态:电脑、玩家赢,平局,继续游戏。设定一下

玩家:"*"

电脑: "#"

平局: "Q"

继续: "C"

game.c

#include "game.h"

void InitBoard(charDis 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 DsaplayBoard(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)

{

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

{

printf("---");

if( j < col - 1)

printf("|");

}
printf("\n");

}

}

}

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

{

int x = 0;

int y = 0;

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

printf("请输入要下的坐标:");

while(1)

{

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”);

}

}

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

{

int x = 0;

int y = 0;

printf("电脑走:>");

x = rand() % row;

y = rand() % col;

while(1)

{

if(board [x][y] == ‘ ’)

{

board[x][y] = ‘#’;

break;

}

}

}

int IsFull(char board[ROW][COL], int row, int col)  //返回1表示棋盘满了,返回0表示棋盘没满

int i = 0;

int j = 0;

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

{

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

{

if(board[1][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]

}

}

三列

for(i = 0; i < col; 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[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != ' ')

return board[1][1];

前面是判断谁赢,再判断平局

if(1 == IsFull(board, ROW, COL)

{

return 'Q';

}

return 'C';

}

程序

#include "game.h"

void menu()

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

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

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

void game()

{

char ret = 0;

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

InitBoard(board, ROW, COL);  //初始化数组

DisplayBoard(board, ROW, COL);

while(1)

{

PlayerMove(board,  ROW, COL);

DisplayBoard(board, ROW, COL);

ret = IsWin(board,ROW, COL);

if (ret != 'C')

{

break;

}

ComputeMove(board, ROW, COL);

DisplayBoard(board, ROW, COL);

ret = IsWin(board, ROW, COL);

if (ret != 'C')

{

break;

}

}

if(ret == '*')

{

printf("玩家赢\n");

}

else if( ret == '#')

{

printf("电脑赢"\n);

}

else

{

printf("平局\n");

}

}

void test()

{

int input =  0;

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

do

{

menu();

printf("请选择:>");

scanf("%d", &input);

switch(input)

{

case 1;

game();

break;

case 0;

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

break;

default;

printf("选择错误,请重新选择!\n");

break;

}

}while(input);

}

int main()

test();

return 0;

很多的代码啊。写完不容易。

结束。
————————————————
版权声明:本文为CSDN博主「kongqizyd146」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kongqizyd146/article/details/122327340

你可能感兴趣的:(分类学习,c语言,开发语言,后端)