C語言實現的三子棋遊戲
阿新 • • 發佈:2018-05-27
oid operation endif while oar ini line 重新 被占用
頭文件
#ifndef __game_h__ #define __game_h__ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> extern void Get_board(char a[][3],int LINE,int LIST); extern void Player_operation(char a[][3],int LINE,int LIST); extern void Computer_operation(char a[][3],int LINE,int LIST); extern void Init(char a[][3],int LINE,int LIST); extern int Discriminant_board(char a[][3],int LINE,int LIST); extern int Winning_or_losing_discriminant(char a[][3],int LINE,int LIST); #endif
遊戲測試模塊
#include "game.h" void menu() {printf("######################\n"); printf("####1.PALY 2.EXIT####\n"); printf("######################\n"); } void game() { int line = 3; int list = 3; char board[][3] ={"a"}; Init(board,line,list); while(1) { Get_board(board,line,list); if(1==Winning_or_losing_discriminant(board,line,list)) { printf("玩家贏\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);} if(2==Winning_or_losing_discriminant(board,line,list)) { printf("電腦贏\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);} if(Discriminant_board(board,line,list)) {if(Winning_or_losing_discriminant(board,line,list)==0) { printf("平局\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);}} Player_operation(board,line,list); if(1==Winning_or_losing_discriminant(board,line,list)) { printf("玩家贏\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);} if(2==Winning_or_losing_discriminant(board,line,list)) { printf("電腦贏\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);} if(Discriminant_board(board,line,list)) {if(Winning_or_losing_discriminant(board,line,list)==0) { printf("平局\n");Sleep(2000);Init(board,line,list); Get_board(board,line,list);}} Computer_operation(board,line,list); } } int main() { int input = 0; srand((unsigned int)time(NULL)); menu(); do{ printf("please input:>\n"); scanf_s("%d",&input); switch(input) {case 1: game(); break; case 2: printf("退出程序\n"); goto end; default: printf("輸入錯誤\n"); } }while(1); end: system("pause"); return 0; }
遊戲實現函數模塊
```
void Init(char a[][3],int LINE,int LIST)
{ int i = 0;
int j = 0;
for(i=0; i<LINE; i++)
for(j=0; j<LIST; j++)
a[i][j] = ‘ ‘;
}//初始化棋盤 void Get_board(char a[][3],int LINE,int LIST) {int i = 0; int j = 0; for(i=0; i<LINE; i++) { for(j=0; j<LIST; j++) { printf("_%c_",a[i][j]); if(j<LIST-1) printf("|"); } printf("\n"); } }//打印棋盤 void Player_operation(char a[][3],int LINE,int LIST) { int x = 1; int y = 1; printf("玩家請走:>\n");
rp: scanf("%d%d",&x,&y);
if((x<4&&x>0)&&(y<4&&y>0)&&a[x-1][y-1]==‘ ‘)
a[x-1][y-1] = ‘X‘;
else if(a[x-1][y-1]!=‘ ‘)
{printf("輸入錯誤,當前已被占用,請重新輸入:>\n");
goto rp;}
else
printf("err\n");
}//玩家操作
void Computer_operation(char a[][3],int LINE,int LIST)
{int x = 0;
int y = 0;
printf("電腦操作:>\n");
while(1)
{x = rand()%3;
y = rand()%3;
if((a[x][y]!=‘X‘)&&(a[x][y]!=‘0‘))
{a[x][y] = ‘0‘;
break;
}
}
}//電腦操作
int Discriminant_board(char a[][3],int LINE,int LIST)
{ int i = 0;
int j = 0;
int num = 0;
for(i=0; i<LINE; i++)
{ for(j=0; j<LIST; j++)
{ if(a[i][j]==‘ ‘)
num++;
}
}
if(num)
return 0;
if(!num)
return 1;
}//判別式函數一
int Winning_or_losing_discriminant(char a[][3],int LINE,int LIST)
{ int i = 0;
int j = 0;
for(i=0; i<LINE; i++)
{ if(((a[i][0]==‘X‘)&&(a[i][1]==‘X‘)&&(a[i][2]==‘X‘))||
((a[0][i]==‘X‘)&&(a[1][i]==‘X‘)&&(a[2][i]==‘X‘))||
((a[0][0]==‘X‘)&&(a[2][2]==‘X‘)&&(a[1][1]==‘X‘))||
((a[0][2]==‘X‘)&&(a[1][1]==‘X‘)&&(a[2][0]==‘X‘)))
{ return 1;}
if(((a[i][0]==‘0‘)&&(a[i][1]==‘0‘)&&(a[i][2]==‘0‘))||
((a[0][i]==‘0‘)&&(a[1][i]==‘0‘)&&(a[2][i]==‘0‘))||
((a[0][0]==‘0‘)&&(a[2][2]==‘0‘)&&(a[1][1]==‘0‘))||
((a[0][2]==‘0‘)&&(a[1][1]==‘0‘)&&(a[2][0]==‘0‘)))
{return 2;}
else
{return 0;}
}
}//判別函數二
C語言實現的三子棋遊戲