天天看點

三子棋c語言

#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;

}