用C写的三子棋简单人机对战

头文件(.h):

#ifndef _GMEE_H_
#define _GEME_H_


#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>


#pragma warning(disable:4996)


void game();


#define COL 3
#define ROW 3


#endif


game源文件:

#include"GAME.h"


static int isFull(char board[][COL], int row){
int i = 0;
int j = 0;
for (; i < row; i++){
for (; j < COL; j++){
if (board[i][j] == ' '){
return 0;
}
}
}
return 1;
}


static void displayBoard(char board[][COL], int row){
printf(" --- --- ---\n");
for (int i = 0; i < row; i++){
printf("| %c | %c | %c |\n", board[i][0], board[i][1], board[i][2] );
if (i < row - 1){
printf(" ---|---|---\n");
}
}
printf(" --- --- ---\n");
}


static void playerMove(char board[][COL], int row){
int x, y;
do{
//system("CLS");
printf("Plrase Enter:");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= 3 && y >= 1 && y <= 3){
if (board[x - 1][y - 1] == ' '){
board[x - 1][y - 1] = 'x';
break;
}
else{
printf("error,try again!");
}
}
else{
printf("Please Enter again!");
}
} while (1);
}


static void computerMove(char board[][COL], int row){
srand((unsigned long)time(NULL));
do{
int x = rand()%ROW;
int y = rand()%COL;
if (board[x][y] == ' '){
board[x][y] = 'O';
break;
}
} while (1);
}


static char isWin(char board[][COL], int row){
int i = 0;
for (; i < row; i++){
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0]!=' '){
return board[i][0];
}
}
for (i = 0; i < row; i++){
if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' '){
return board[0][i];
}
}
if (board[1][1] == board[0][0] && board[0][0] == board[2][2] && board[0][0] != ' '){
return board[0][0];
}
if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] != ' '){
return board[2][0];
}
if (isFull(board, row)){
return 'q';
}
return ' ';
}


void game(){
char board[ROW][COL];
char ret;
memset(board, ' ', ROW*COL);
do{
system("CLS");
displayBoard(board, ROW);
playerMove(board,ROW);
ret = isWin(board, ROW);
if (ret != ' '){
break;
}
system("CLS");
displayBoard(board, ROW);
Sleep(1000);
computerMove(board, ROW);
ret = isWin(board, ROW);
} while (ret == ' ');
if (ret == 'x'){
printf("恭喜你,你赢了!\n");
}
else if(ret == '0'){
printf("很遗憾,你输了!\n");
}
else if(ret =='q'){
printf("平局!\n");
}

}

main.c文件

#include"GAME.h"


void menu(){
printf("\n");
printf("***********************\n");
printf("**                   **\n");
printf("**  1.play  2.exit   **\n");
printf("**                   **\n");
printf("***********************\n");
printf("please select:\n");
}


int main(){
int select = 0;
do{
menu();
scanf("%d", &select);
switch (select){
case 1:
game();
break;
case 2:
exit(0);
defaut:
break;
}
} while (1);
system("pause");
return 0;

}



猜你喜欢

转载自blog.csdn.net/qq_41896511/article/details/80022352