五子棋
? ?
? ? ? ? #include<iostream>
#include<string>
#include<windows.h>
#include<conio.h>
using namespace std;
int main()
{
?int player=1;? //定義一個(gè)玩家,當(dāng)1時(shí)為白方,2時(shí)為黑方
?//................................棋盤1..............................................
?int qiPan[19][19];? //1.聲明一個(gè)19行19列的數(shù)組來存儲(chǔ)棋盤 1
?for(int h=0;h<19;h++) //對(duì)數(shù)組進(jìn)行遍歷,所有元素進(jìn)行初始化(賦值),默認(rèn)為0值
?{
?for(int l=0;l<19;l++)
?{
? qiPan[h][l]=0; //對(duì)當(dāng)前元素進(jìn)行初始化(賦值),默認(rèn)為0值
?}
?}
?//...............................棋盤2................................................
?int qiPanTwo[19][19]; //聲明一個(gè)19行19列的數(shù)組來存儲(chǔ)棋盤 2
?for(int h=0;h<19;h++) //對(duì)數(shù)組進(jìn)行遍歷,所有元素進(jìn)行初始化(賦值),默認(rèn)為0值
?{
?for(int l=0;l<19;l++)
?{
? qiPanTwo[h][l]=0; //對(duì)當(dāng)前元素進(jìn)行初始化(賦值),默認(rèn)為0值
?}
?}
?//...............................光標(biāo)聲明.............................................
?int X=9;? ?//2.聲明并初始化光標(biāo)的橫縱坐標(biāo)
?int Y=9;? ?
?qiPan[9][9]=8;
?//..............................顯示...................................................
?for(int h=0;h<19;h++)
?{
? for(int l=0;l<19;l++)
? {
? if(qiPan[h][l]==8)
? {
? ?cout<<"╋";
? }
? else if(qiPanTwo[h][l]==0)
? {
? ?cout<<"·";
? }
? else if(qiPanTwo[h][l]==1)
? {
? ?cout<<"●";
? }
? else if(qiPanTwo[h][l]==2)
? {
? ?cout<<"○";
? }
? }
? cout<<endl;
?}
?//..............................輸入控制...............................................
?while(true)
?{
?char xx=getch();? //控制臺(tái)從鍵盤獲得一個(gè)字符
?switch(xx)? ?//控制
?{
? case 'w':? //上
? Y=Y-1;? //使光標(biāo)縱坐標(biāo)-1
? qiPan[Y][X]=8; //講光標(biāo)寫入棋盤
? qiPan[Y+1][X]=0; //使原本位置的值還原
? break;
? case 's':? //下
? Y=Y+1;
? qiPan[Y][X]=8;
? qiPan[Y-1][X]=0;
? break;
? case 'a':? //左
? X=X-1;
? qiPan[Y][X]=8;
? qiPan[Y][X+1]=0;
? break;
? case 'd':? //右
? X=X+1;
? qiPan[Y][X]=8;
? qiPan[Y][X-1]=0;
? break;
? case 'j':? ?//落子
? if(player==1)? //如果當(dāng)前玩家為白色方時(shí)
? {
? ?qiPanTwo[Y][X]=1; //通過棋盤1中的光標(biāo)位置更改棋盤2中對(duì)應(yīng)元素的值為1,也就是白棋落子
? ?player=2;? //白棋落子后更換玩家? ?
? }
? else if(player==2)
? {
? ?qiPanTwo[Y][X]=2;
? ?player=1;? ?
? }
? break;? ??
?}
?//................................清屏操作................................................
?system("cls");??
?//...............................打印.....................................................
?for(int h=0;h<19;h++)
?{
? for(int l=0;l<19;l++)
? {
?
? if(qiPan[h][l]==8)
? {
? ?cout<<"╋";
? }
? else if(qiPanTwo[h][l]==0)
? {
? ?cout<<"·";
? }
? else if(qiPanTwo[h][l]==1)
? {
? ?cout<<"●";
? }
? else if(qiPanTwo[h][l]==2)
? {
? ?cout<<"○";
? }
? }
? cout<<endl;
?}
?//.........................游戲規(guī)則..............................................
?int shu=1,heng=1,pie=1,na=1;//橫豎撇捺
?for(int i=1;i<=4;i++) //上
?{
? if(qiPanTwo[Y+i][X]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
? shu++;
? else
? break;
?}
?for(int i=1;i<=4;i++) //下
?{
? if(qiPanTwo[Y-i][X]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
? shu++;
? else
? break;
?}
?for(int i=1;i<=4;i++) //左
?{
? if(qiPanTwo[Y][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
? heng++;
? else
? break;
?}
?for(int i=1;i<=4;i++) //右
?{
? if(qiPanTwo[Y][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
? heng++;
? else
? break;
?}
?for(int i=1;i<=4;i++) //左下
?{
? if(qiPanTwo[Y+i][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
? pie++;
? else
? break;
?}
?for(int i=1;i<=4;i++) //右上
?{
? if(qiPanTwo[Y-i][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
? pie++;
? else
? break;
?}
?for(int i=1;i<=4;i++) //右下
?{
? if(qiPanTwo[Y+i][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
? na++;
? else
? break;
?}
?for(int i=1;i<=4;i++) //左上
?{
? if(qiPanTwo[Y-i][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
? na++;
? else
? break;
?}
?if(shu==5||heng==5||pie==5||na==5)
?{
? if(qiPanTwo[Y][X]==1)
? {
? ?cout<<"白子獲勝!";
? ?system("pause");
? ?break;
? }
? else
? {
? ?cout<<"黑子獲勝!";
? ?system("pause");
? ?break;
? }
?}
?}
?return 0;
}