C語言實現三子棋

三字棋是C語言學習階段一個有趣的項目,就分享給大家了


#include<stdio.h>

#include<stdlib.h>
#include<time.h>
char a[4][4]={0};
int size= 9;
void dayinqipan()   //打印棋盤
{
int i=1;
printf("   |   |   \n");
for(i=1;i<4;i++)
{
printf("_%c_|_%c_|_%c_\n",a[i][1],a[i][2],a[i][3]);
if(i<3)
printf("   |   |   \n");
}


}
void chushihuaqipan()  //初始化棋盤
{
int i = 0;
int j = 0;
    for(i=1;i<4;i++)
{
for(j=1;j<4;j++)
{
a[i][j]=' ';
}
}


}
void w_play()    //玩家棋子
{
int n;
int m;
printf("請輸入棋子位置您的棋子爲:");
scanf("%d %d",&m,&n);
if(m<1||m>3||n<1||n>3||a[m][n]!=' ')
{  
printf("您輸入的座標不合法:\n");
w_play();
}  
else
{
a[m][n]='1';
size=size-1;
}
}
void c_play()  //電腦棋子
{
int n=0;
int m=0;
printf("電腦的棋子爲0\n");

m=rand()%3;
n=rand()%3;
while(a[m][n] != ' ')
{
m=rand()%3;
n=rand()%3;
}
a[m][n]='0';
size=size-1;
}
int winner()    //判斷輸贏
{
if((a[1][1]==a[1][2]&&a[1][2]==a[1][3]&&a[1][3]=='1')||
(a[2][1]==a[2][2]&&a[2][2]==a[2][3]&&a[2][3]=='1')||
(a[3][1]==a[3][2]&&a[3][2]==a[3][3]&&a[3][3]=='1')||
(a[1][1]==a[2][1]&&a[2][1]==a[3][1]&&a[3][1]=='1')||
(a[1][2]==a[2][2]&&a[2][2]==a[3][2]&&a[3][2]=='1')||
(a[1][3]==a[2][3]&&a[2][3]==a[3][3]&&a[3][3]=='1')||
(a[1][1]==a[2][2]&&a[2][2]==a[3][3]&&a[3][3]=='1')||
(a[1][3]==a[2][2]&&a[2][2]==a[3][1]&&a[3][1]=='1'))
return 1;


else if((a[1][1]==a[1][2]&&a[1][2]==a[1][3]&&a[1][3]=='0')||
(a[2][1]==a[2][2]&&a[2][2]==a[2][3]&&a[2][3]=='0')||
(a[3][1]==a[3][2]&&a[3][2]==a[3][3]&&a[3][3]=='0')||
(a[1][1]==a[2][1]&&a[2][1]==a[3][1]&&a[3][1]=='0')||
(a[1][2]==a[2][2]&&a[2][2]==a[3][2]&&a[3][2]=='0')||
(a[1][3]==a[2][3]&&a[2][3]==a[3][3]&&a[3][3]=='0')||
(a[1][1]==a[2][2]&&a[2][2]==a[3][3]&&a[3][3]=='0')||
(a[1][3]==a[2][2]&&a[2][2]==a[3][1]&&a[3][1]=='0'))
return 0;
else if(size==0)
return -1;
else
return 2;
}
int main()
{
int input=1;
int b;
    srand((unsigned int)time(NULL));
while(input)
{
printf("######################\n");
printf("#######三子棋遊戲#####\n");
printf("##     1.play       ##\n");
printf("##     0.exit       ##\n");
printf("######################\n");
printf("請選擇:");
scanf("%d",&b);
switch(b)
{
case 1:
chushihuaqipan();
              while(1)
 {
dayinqipan();
if(winner()==-1||winner()==0||winner()==1)
{
break;
}
w_play();
dayinqipan();
if(winner()==-1||winner()==0||winner()==1)
{
break;
}
c_play();
}
if(winner()==1)
{
printf("玩家獲勝");
}
else if(winner()==0)
{
printf("你輸了");
}
else
{
printf("普天同慶平局");
}

break;
case 0:
break;
}
}




system("pause");
return 0;
}
發佈了46 篇原創文章 · 獲贊 13 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章