當前位置:編程學習大全網 - 源碼下載 - 人人對弈的簡單五子棋程序 c語言 棋盤是點 語言200行左右

人人對弈的簡單五子棋程序 c語言 棋盤是點 語言200行左右

五子棋程序:

#include<iostream>

using namespace std;

int Hsheng(char a[][15]);//判斷o子是否獲勝的函數

int Bsheng(char a[][15]);//判斷x子是否獲勝的函數

int he(char a[][15]);//判斷是否平局(也就是棋盤下滿了)的函數

void qipan(char a[15][15])//執行輸出棋盤命令

{ for(int i=0;i<15;i++) //打印棋盤

{ for(int j=0;j<15;j++)

cout<<a[i][j];

cout<<endl; } }

int main()

{ char a[15][15]; int x,y;

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

a[i][j]=' '; qipan(a);

while(1)//用循環語句執行o,x交替下子,這些while語句看起來似乎是個死循環~實際上都會經過break結束

{ int a1=1;

while(1)

{ for(;a1;)

{ cout<<"請輸入o子下的位置:"; //輸入o子的位置

cin>>x>>y; if(a[x][y]=='o'||a[x][y]=='x')//判斷是否已有子

{cout<<"已有子請重下"<<",";continue;}

else if(x>=15||y>=15){cout<<"輸入錯誤請重輸"<<",";continue;}

else { a[x][y]='o'; a1=0;}

} break;}

qipan(a);//下好o子後將棋盤顯示

if(Hsheng(a))//判斷o子是否已經獲勝

{ cout<<"o子獲勝"<<endl; break; }

while(1)//下x子

{ cout<<"請輸入x子下的位置:";

cin>>x>>y;

if(a[x][y]=='o'||a[x][y]=='x'||x>=15||y>=15)

{ for( ; a[x][y]=='o'||a[x][y]=='x'; )

{ cout<<"已有子請重下";

cout<<"請輸入x子下的位置:";

cin>>x>>y;continue; }

for ( ; x>=15||y>=15||x; )

{ cout<<"輸入錯誤請重輸"<<","; //判斷輸入棋子位置是否正確

cout<<"請輸入x子下的位置:";

cin>>x>>y;continue ;}

a[x][y]='x';break; }

else

{ a[x][y]='x'; break; } }

qipan(a);//再壹次輸出棋盤

if(Bsheng(a))//判斷x子是否已經獲勝

{ cout<<"x子獲勝"<<endl; break; }

if(he(a))//判斷是否平局

{ cout<<"平局"<<endl; break; } }

return 0; }

int Hsheng(char a[][15])

{ int i,j;//判斷橫著的5個是否都相等

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='o'&&a[i][j+1]=='o'&&a[i][j+2]=='o'&&a[i][j+3]=='o'&&a[i][j+4]=='o')

return 1;

for(j=0;j<15;j++)//判斷豎著的5個是否都相等

for(i=0;i<15;i++)

if(a[i][j]=='o'&&a[i+1][j]=='o'&&a[i+2][j]=='o'&&a[i+3][j]=='o'&&a[i+4][j]=='o')

return 1;

for(i=0;i<15;i++)//判斷左斜5個

for(j=0;j<15;j++)

if(a[i][j]=='o'&&a[i+1][j+1]=='o'&&a[i+2][j+2]=='o'&&a[i+3][j+3]=='o'&&a[i+4][j+4]=='o')

return 1;

for(i=0;i<15;i++)//右斜5個

for(j=14;j>3;j--)

if(a[i][j]=='H'&&a[i+1][j-1]=='o'&&a[i+2][j-2]=='o'&&a[i+3][j-3]=='o'&&a[i+4][j-4]=='o')

return 1;

return 0; }

int Bsheng(char a[][15])//同o,只是改字符

{ int i,j;

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='x'&&a[i][j+1]=='x'&&a[i][j+2]=='x'&&a[i][j+3]=='x'&&a[i][j+4]=='x')

return 1;

for(j=0;j<15;j++)

for(i=0;i<15;i++)

if(a[i][j]=='x'&&a[i+1][j]=='x'&&a[i+2][j]=='x'&&a[i+3][j]=='x'&&a[i+4][j]=='x')

return 1;

for(i=0;i<15;i++)

for(j=0;j<15;j++)

if(a[i][j]=='x'&&a[i+1][j+1]=='x'&&a[i+2][j+2]=='x'&&a[i+3][j+3]=='x'&&a[i+4][j+4]=='x')

return 1;

for(i=0;i<15;i++)

for(j=14;j>3;j--)

if(a[i][j]=='x'&&a[i+1][j-1]=='x'&&a[i+2][j-2]=='x'&&a[i+3][j-3]=='x'&&a[i+4][j-4]=='x')

return 1;

return 0; }

int he(char a[][15])

{ for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

{ if(a[i][j]==' ')//當棋盤全部子都不是' '時才能return 1,即棋盤已下滿

return 0;

}

return 1;

}

希望能幫到妳!!

  • 上一篇:java語言使用post方式調用webService方式
  • 下一篇:stl vector 內部是用什麽實現
  • copyright 2024編程學習大全網