|
#include <iostream.h>
#include <conio.h>
#include <windows.h>
main()
{
char map[20][20]; //棋盤的二維陣列記憶體
char ch1,ch2,c1,c2,c3,c4,c5,c6,c,letter; //輸入與圖案用字元變數
int i,j,q,x,y,z,row,col; //迴圈與陣列用變數
int a,b,n1,n2,count=0; //a,b:選棋變數 n1,n2:玩家總棋數 count:總下棋數
c1=1,c2=3,c3=3,c4=4,c5=5,c6=6; //設定編號1~6的棋子圖案(ASCll碼)
printf("☆玩家A:\n\n請從下方選擇一種喜歡的棋子:\n");
printf("*************************\n");
printf("* 1:%c 2:%c 3:%c *\n",c1,c2,c3);
printf("* 4:%c 5:%c 6:%c *\n",c4,c5,c6);
printf("*************************\n");
cin>>a; //玩家A選的棋子編號代入變數a中
system("cls"); //清除畫面
for(i=0;i<1;) //先設定一個無限執行的迴圈(因i永遠為0)
{printf("☆玩家B:\n\n請從下方選擇一種喜歡的棋子:\n");
printf("*************************\n");
printf("* 1:%c 2:%c 3:%c *\n",c1,c2,c3);
printf("* 4:%c 5:%c 6:%c *\n",c4,c5,c6);
printf("*************************\n");
cin>>b; //玩家B選的棋子編號代入變數b中
if(b==a){printf("此棋子已被玩家A使用,請重新選擇!\n\n");}
else{i++;} //兩個玩家棋子不重覆,便將i加上1中止這個迴圈!
}
ch1=a,ch2=b,n1=0,n2=0; //將玩家選的棋編號代入變數ch1,ch2中,並設記錄棋數的變數n1,n2為零
system("cls");
cout<<" ";
for(i=1;i<10;i++)
{cout<<i<<" ";}
for(i=10;i<21;i++)
{cout<<i;}
cout<<endl;
for(x=1;x<21;x++)
{printf("%2d ",x);
for(y=1;y<21;y++)
{map[x][y]='.';
cout<<map[x][y]<<" ";}
cout<<endl;}
printf("******************************************\n");
printf("* %c玩家A:%3d %c玩家B:%3d *\n",ch1,n1,ch2,n2);
printf("******************************************\n");
for(q=1;q>0;count++)
{
if(count%2==0){c=ch1; letter='A';}
else{c=ch2; letter='B';}
for(j=0;j<1;)
{
for(i=0;i<1;)
{printf("%c玩家%c:\n請輸入棋子的X座標(1~20):",c,letter);
cin>>row;
if((row<1)||(row>20)){printf("您輸入的X坐標已超出棋盤,請重新輸入!\n");}
else {i++;}
}
for(i=0;i<1;)
{printf("請輸入棋子的y座標(1~20):");
cin>>col;
if((col<1)||(col>20)){printf("您輸入的y坐標已超出棋盤,請重新輸入!\n");}
else {i++;}
}
if(map[col][row]!='.'){printf("此格已有棋子,請重新輸入!\n");}
else{j++;}
}
map[col][row]=c;
if(count%2==0){n1++;}
else{n2++;}
system("cls");
cout<<" ";
for(i=1;i<10;i++)
{cout<<i<<" ";}
for(i=10;i<21;i++)
{cout<<i;}
cout<<endl;
for(x=1;x<21;x++)
{printf("%2d ",x);
for(y=1;y<21;y++)
{cout<<map[x][y]<<" ";}
cout<<endl;}
printf("******************************************\n");
printf("* %c玩家A:%3d %c玩家B:%3d *\n",ch1,n1,ch2,n2);
printf("******************************************\n");
for(x=1;x<21;x++)
{ for(y=1;y<21;y++)
{ //直的連線判斷式
if((map[x][y]==map[x+1][y])&&(map[x][y]==map[x+2][y])&&(map[x][y]==map[x+3][y])
&&(map[x][y]==map[x+4][y])&&(map[x][y]!='.'))
{map[x][y]=15,map[x+1][y]=15,map[x+2][y]=15,map[x+3][y]=15,map[x+4][y]=15; q--;}
//橫的連線判斷式
if((map[x][y]==map[x][y+1])&&(map[x][y]==map[x][y+2])&&(map[x][y]==map[x][y+3])
&&(map[x][y]==map[x][y+4])&&(map[x][y]!='.'))
{map[x][y]=15,map[x][y+1]=15,map[x][y+2]=15,map[x][y+3]=15,map[x][y+4]=15; q--;}
//左斜的連線判斷式
if((map[x][y]==map[x+1][y+1])&&(map[x][y]==map[x+2][y+2])&&(map[x][y]==map[x+3][y+3])
&&(map[x][y]==map[x+4][y+4])&&(map[x][y]!='.'))
{map[x][y]=15,map[x+1][y+1]=15,map[x+2][y+2]=15,map[x+3][y+3]=15,map[x+4][y+4]=15; q--;}
//右斜的連線判斷式
if((map[x][y]==map[x-1][y+1])&&(map[x][y]==map[x-2][y+2])&&(map[x][y]==map[x-3][y+3])
&&(map[x][y]==map[x-4][y+4])&&(map[x][y]!='.'))
{map[x][y]=15,map[x-1][y+1]=15,map[x-2][y+2]=15,map[x-3][y+3]=15,map[x-4][y+4]=15; q--;}
}
}
if(q==0)
{system("cls");
cout<<" ";
for(i=1;i<10;i++)
{cout<<i<<" ";}
for(i=10;i<21;i++)
{cout<<i;}
cout<<endl;
for(x=1;x<21;x++)
{printf("%2d ",x);
for(y=1;y<21;y++)
{cout<<map[x][y]<<" ";}
cout<<endl;}
printf("******************************************\n");
printf("* %c玩家A:%3d %c玩家B:%3d *\n",ch1,n1,ch2,n2);
printf("******************************************\n");
printf("* 恭喜玩家%c-%c勝利! *\n\a",letter,c);
printf("******************************************\n");}
}
getch();
}
http://youtu.be/5wVumYlYoUs
|
|