三子棋
来源:互联网 发布: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;
}
以后,我将会给小伙伴们,提供更多的资源,希望小伙伴们喜欢!!!