#define _CRT_SECURE_NO_WARNINGS//三子棋
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define maxrow 3
#define maxlin 3
int interface() //開始界面
{
printf(“歡迎來到三子棋遊戲\n”);
printf("=\n");
printf(“1.開始遊戲\n”);
printf(“0.結束遊戲\n”);
printf("=\n");
printf(“請輸入你的選擇:\n”);
}
char arr[maxrow][maxlin];
void checkerboard()//初始化棋盤
{
for (int row = 0; row < maxrow;row++)
{
for (int lin = 0; lin < maxlin;lin++)
{
arr[row][lin] = ’ ';
}
}
}
void print()//列印棋盤
{
printf("\n±–±--±–+\n");
for (int row = 0; row < maxrow; row++)
{
for (int lin = 0; lin < maxlin; lin++)
{
printf("| %c", arr[row][lin]);
}printf("| “);
printf(”\n±–±--±–+\n");
}
}
//{
// for (int row = 0; row < maxrow; row++){
// printf("| %c | %c | %c |\n", arr[row][0], arr[row][1], arr[row][2]);
// if (row != maxrow- 1){
// printf("|—|---|—|\n");
// }
// }
//}
void gamepalyer()//玩家落子
{
while (1){
printf(“請輸入你的棋子坐标:\n”);
int row = 0, lin = 0;
scanf("%d %d", &row, &lin);
if (row >= maxrow || row < 0 || lin >= maxlin || lin < 0)
{
printf(“你的輸入有誤!\n”);
continue;
}
if (arr[row][lin] != ’ '){
printf(“你輸入的地方有子!\n”);
continue;
}
arr[row][lin] = ‘x’;
break;
}
}
void computer()//電腦落子
{
while (1)
{
int row = rand() % maxrow;
int lin = rand() % maxlin;
if (arr[row][lin] != ’ ‘){
continue;
}
arr[row][lin] = ‘o’;
break;
}
}
int judge()//判斷遊戲是否結束
{
for (int row = 0; row < maxrow;row++)
{
for (int lin = 0; lin < maxlin;lin++)
{if (arr[row][lin]’ ‘)
{
return 0;
}
}
}
return 1;
}
//傳回’x’為人勝利
//傳回’o’為電腦勝利
//傳回’q’為和局
//傳回’ ‘繼續遊戲
char CheckGameOver()//判斷勝負
{
for (int row = 0; row < maxrow; row++)
{
if (arr[row][0] == arr[row][1] && arr[row][0] == arr[row][2])
{
return arr[row][0];
}
}
for (int lin = 0; lin < maxlin; lin++)
{
if (arr[0][lin] == arr[1][lin] && arr[0][lin] == arr[2][lin])
{
return arr[0][lin];
}
}
if (arr[0][0]arr[1][1]&&arr[0][0]arr[2][2])
{
return arr[0][0];
}
if (arr[2][0] == arr[1][1] && arr[2][0] == arr[0][2])
{
return arr[2][0];
}
if (judge())
{
return ‘q’;
}
return ’ ';
}
void game()
{
char winner = ’ ';
checkerboard();
//初始化三乘三的棋盤
while (1){
system(“cls”);
print();
gamepalyer();//玩家落子 判斷遊戲是否結束
winner = CheckGameOver();
if (winner != ’ ')
{
break;
}
computer();//電腦落子 判斷遊戲是否結束
winner = CheckGameOver();
if (winner != ’ ')
{
break;
}
}
if (winner’x’)
{
system(“cls”);
printf(“恭喜你赢了一個菜雞!\n”);
print();
}
else if (winner’o’)
{
printf(“你比菜雞還菜,竟然輸了!\n”);
print();
}
else if (winner’q’)
{
printf(“你和菜雞一樣菜,打平了\n”);
print();
}
else{
printf(“出現bug,趕緊跑!!!”);
}
}
int main()
{
srand((unsigned int)time(0));//随機種子
while (1){
interface();
int choice = 0;
scanf("%d", &choice);
if (choice == 1)
{
game();
}
else if (choice == 0){
printf(“遊戲結束!!!\n”);
break;
}
else{
printf(“你亂按是開始不了的哦\n”);
}
}
system(“pause”);
return 0;
}