程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 利用c語言實現在一個3*3棋盤游戲

利用c語言實現在一個3*3棋盤游戲

編輯:關於C
在一個3*3矩陣中下棋,如有一方連續三顆棋子在一條直線上,則獲勝。 注:下棋時,輸入的是棋子所對應矩陣的具體坐標。 具體代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

char a[3][3]={ 0 };
int size =9;

void qipan()  //打印棋盤
{
int i=0,j=0;
printf("   |   |   \n");
for(i=0;i<3;i++)
{
printf("_%c_|_%c_|_%c_\n",a[i][0],a[i][1],a[i][2]);
if(i<2)
printf("   |   |   \n");
}
}

void  wjxq()//玩家下棋
{
int m=0,n=0;
printf("玩家棋子為@: ");//輸入的是旗子所對應的坐標
scanf("%d %d",&m,&n);
if(m<1 || m>3 || n<1 || n>3 || a[m-1][n-1]!=' ')
{ 
printf("你輸出的坐標位置不合法!");
wjxq();
}
else
{
a[m-1][n-1]='@';
size=size-1;
} 
}

void dn()//電腦下棋
{
int m=0,n=0;
printf("電腦的棋子#:\n");
srand(time(NULL));
m=rand()%3;
n=rand()%3;
while(a[m][n]!=' ' )
{
m=rand()%3;
n=rand()%3;
}
a[m][n]='#';
size=size-1;
}

int winner()//判斷獲勝者
{
if((a[0][0]== a[0][1] && a[0][1]==a[0][2] && a[0][2]=='@')||
(a[1][0]==a[1][1] && a[1][1]==a[1][2] && a[1][2]=='@')||
(a[2][0]==a[2][1] && a[2][1]==a[2][2] && a[2][2]=='@')||
(a[0][0]==a[1][0] && a[1][0]==a[2][0] && a[2][0]=='@')||
(a[0][1]==a[1][1] && a[1][1]==a[2][1] && a[2][1]=='@')||
(a[0][2]==a[1][2] && a[1][2]==a[2][2] && a[2][2]=='@')||
(a[0][0]==a[1][1] && a[1][1]==a[2][2] && a[2][2]=='@')||
(a[0][2]==a[1][1] && a[1][1]==a[2][0] && a[2][0]=='@'))
return 1;//玩家獲勝
else if((a[0][0]==a[0][1] && a[0][1]==a[0][2] && a[0][2]=='@')||
(a[1][0]==a[1][1] && a[1][1]==a[1][2] && a[1][2]=='@')||
(a[2][0]==a[2][1] && a[2][1]==a[2][2] && a[2][2]=='@')||
(a[0][0]==a[1][0] && a[1][0]==a[2][0] && a[2][0]=='@')||
(a[0][1]==a[1][1] && a[1][1]==a[2][1] && a[2][1]=='@')||
(a[0][2]==a[1][2] && a[1][2]==a[2][2] && a[2][2]=='@')||
(a[0][0]==a[1][1] && a[1][1]==a[2][2] && a[2][2]=='@')||
(a[0][2]==a[1][1] && a[1][1]==a[2][0] && a[2][0]=='@'))
return 0;//玩家輸了,即電腦贏了
else if(size==0)
return -1;//平局
else
return 2;
}

int main()
{
int i=0,j=0;//將數組初始化為空
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
a[i][j]=' ';
}
}
while(1)
{
qipan();
if(winner()==-1||winner()==0||winner()==1)
{
break;
}
wjxq();
qipan();
if(winner()==-1||winner()==0||winner()==1)
{
break;
}
dn();
}
if(winner()==1)
{
printf("玩家獲勝!");
}
else if(winner()==0)
{
printf("玩家輸了!");
}
else
{
printf("平局");
}
system("pause");
return 0;

}

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved