三子棋

来源:互联网 发布:java编写水仙花数 编辑:程序博客网 时间:2024/06/06 02:07

子棋

    小伙伴们,上次我为大家呈现的延拓版扫雷还喜欢吗?此处,我将为大家呈现三子棋的代码,希望帮助到那些有需要和喜欢的朋友们!小伙伴们,着急了吧,话不多说,先将c语言代码呈上:

Game.h

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#define row 3

#define col 3

void game();

void display_board(char arr[row][col]);

void player_move(char arr[row][col]);

char check_win(char arr[row][col]);

int is_full(char arr[row][col]);

void computer_move(char arr[row][col]);

void init_board(char arr[row][col]);

Game.c

#include "game.h"

void game()

{

char ret = ' ';

char arr[row][col] = {0};

init_board(arr);

while ("ret=' '")

{

display_board(arr);

player_move(arr);

ret = check_win(arr);

if (ret == 'x')

{

printf("玩家赢");

break;

}

if (ret == '0')

{

printf("电脑赢");

break;

}

if (ret == 'q')

{

printf("平局");

break;

}

computer_move(arr);

ret = check_win(arr);

if (ret == 'x')

{

printf("玩家赢");

break;

}

if (ret == '0')

{

printf("电脑赢");

break;

}

if (ret == 'q')

{

printf("平局");

break;

}

}

system("cls");

if (ret == 'x')

printf("玩家赢");

if (ret == '0')

printf("电脑赢");

if (ret == 'q')

printf("平局");

getchar();

}

void init_board(char arr[row][col])

{

int i = 0;

int j = 0;

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

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

{

arr[i][j] = ' ';

}

}

void display_board(char arr[row][col])

{

int i = 0;

printf("   1   2   3  \n");

printf(" -------------\n");

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

{

printf("%d", i + 1);

printf("| %c | %c | %c |\n", arr[i][0], arr[i][1], arr[i][2]);

if(i!=2)

printf(" -------------\n");

}

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

 

}

void player_move(char arr[row][col])

{

int x = 0;

int y = 0;

printf("请输入所下棋子的坐标:>");

while (1)

{

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

x = x - 1;

y = y - 1;

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

{

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

{

arr[x][y] = 'x';

break;

}

else

printf("输入的坐标被占用");

}

else

printf("输入的坐标不存在");

}

}

int is_full(char arr[row][col])

{

int i = 0;

int j = 0;

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

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

{

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

return 0;

}

return 1;

}

char check_win(char arr[row][col])

{

//判断行

int i = 0;

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

{

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

return arr[i][i];

}

//判断列

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

{

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

return arr[i][i];

}

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

return arr[1][1];

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

return arr[1][1];

else if (is_full(arr) == 1)

return 'q';

else

    return ' ';

}

void computer_move(char arr[row][col])

{

int n = 0;

int x = 0;

int y = 0;

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

while(1)

{

    n = is_full(arr);

x = rand() % row;

y = rand() % col;

if (n == 1)

break;

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

{

arr[x][y] = '0';

break;

}

}

}

Text.c

#include "game.h"

void manu()

{

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

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

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

}

int main()

{

int a = 0;

while (1)

{

manu();

printf("请选择:>");

scanf("%d", &a);

getchar();

if (a == 1)

{

game();

break;

}

else if (a == 0)

{

exit;

}

else

{

printf("输入错误,请重新输入:>\n");

}

}

getchar();

return 0;

}

以后,我将会给小伙伴们,提供更多的资源,希望小伙伴们喜欢!!!

原创粉丝点击