java三子棋,高手帮忙

Python014

java三子棋,高手帮忙,第1张

你这样没人能帮你,首先,你没有说明白问题,既然你三子相连的算法写好了,整个程序也就差不多出来了,你贴出来的代码只是玩家下棋动作的鼠标监听和结束时双方“胜利数”的比较,我在这个监听里面看不到关于“棋盘”的任何描述,也就是你的鼠标动作和“棋盘”数据没有关联,不知道你的三子相连的算法是怎么写的.

第一,我想确定你是否有个“棋盘”或者至少“6*6数组对象”来保存玩家每次操作的位置,如果有你问这个问题的重点应该放在你的算法和“棋盘”对象关系的处理上。

第二,你的问题说出了你的设计思路但是却没有说出你目前的问题是出在什么地方,你的算法已经写好,但是整个程序若达不到预期效果的重点却不是你贴出的这段代码,所以没人有法能帮你.

很简单用二维字符数组就行了

#include<iostream>

using namespace std

int main(){

int k=0

char a[5][5]

for(int i=1i<=3i++) for(int j=1j<=3j++) a[i][j]=' '

while(1){

cout<<" 三子棋"<<endl

cout<<" 1 2 3"<<endl

cout<<" ----- "<<endl

cout<<"1|"<<a[1][1]<<" "<<a[1][2]<<" "<<a[1][3]<<"|"<<endl

cout<<"2|"<<a[2][1]<<" "<<a[2][2]<<" "<<a[2][3]<<"|"<<endl

cout<<"3|"<<a[3][1]<<" "<<a[3][2]<<" "<<a[3][3]<<"|"<<endl

cout<<" ----- "<<endl

for(int j=1j<=3j++){

int p=0

for(int i=1i<=3i++){

if(a[i][j]!='X') break

else p++

}

if(p==3){

cout<<"二号玩家获胜!!!"<<endl

return 0

}

}

for(int j=1j<=3j++){

int p=0

for(int i=1i<=3i++){

if(a[j][i]!='X') break

else p++

}

if(p==3){

cout<<"二号玩家获胜!!!"<<endl

return 0

}

}

if(k==9) break

k++

int x1,y1,x2,y2

cout<<"一号玩家(O)请输入(n行m列):"

cin>>x1>>y1

while(1){

if(a[x1][y1]==' ') break

else{

cout<<"这个位置已占用,请重新输入!!!"<<endl

cin>>x1>>y1

}

}

a[x1][y1]='O'

system("cls")

cout<<" 三子棋"<<endl

cout<<" 1 2 3"<<endl

cout<<" ----- "<<endl

cout<<"1|"<<a[1][1]<<" "<<a[1][2]<<" "<<a[1][3]<<"|"<<endl

cout<<"2|"<<a[2][1]<<" "<<a[2][2]<<" "<<a[2][3]<<"|"<<endl

cout<<"3|"<<a[3][1]<<" "<<a[3][2]<<" "<<a[3][3]<<"|"<<endl

cout<<" ----- "<<endl

for(int j=1j<=3j++){

int p=0

for(int i=1i<=3i++){

if(a[i][j]!='O') break

else p++

}

if(p==3){

cout<<"一号玩家获胜!!!"<<endl

return 0

}

}

for(int j=1j<=3j++){

int p=0

for(int i=1i<=3i++){

if(a[j][i]!='O') break

else p++

}

if(p==3){

cout<<"一号玩家获胜!!!"<<endl

return 0

}

}

if(k==9) break

k++

cout<<"二号玩家(X)请输入(n行m列):"

cin>>x2>>y2

while(1){

if(a[x2][y2]==' ') break

else{

cout<<"这个位置已占用,请重新输入!!!"<<endl

cin>>x2>>y2

}

}

a[x2][y2]='X'

system("cls")

}

cout<<"------平局------"<<endl

return 0

}