我在本文中使用的所有开关都有问题,我的问题是我需要写什么,这样就不会出现这个问题?我应该画哪种类型的?
#include <iostream>
using namespace std;
void tablero (int i, int j);
char matriz [3][3];
int comprueba ();
void jugador1 ();
void jugador2 ();
int main (){
int comp,i,j;
cout<<"Bienvenido al 3 en ralla!"<<endl;
cout<<" -----------------------"<<endl;
for (i=0;i<=2; i++){
for(j=0;j<=2; j++){
matriz [i][j]='-';
}
}
do{
jugador1();
jugador2();
}
while(comp==0);
cout<<"GRACIAS POR JUGAR <3!";
return 0;
}
void tablero (int i,int j)
{
cout << matriz[0][0] << " | " << matriz[0][1] << " | " << matriz[0][2] <<endl;
cout << matriz[1][0] << " | " << matriz[1][1] << " | " << matriz[1][2] <<endl;
cout << matriz[2][0] << " | " << matriz[2][1] << " | " << matriz[2][2] <<endl;
return;
}
int comprueba (){
int comp;
switch (matriz[0][0]==matriz[0][1]==matriz[0][2]){ //horizontal 1
case 'X':
cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
case 'O':
cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
default:
comp=0;
}
switch (matriz[1][0]==matriz[1][1]==matriz[1][2]){ //horizontal 2
case 'X':
cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
case 'O':
cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
default:
comp=0;
}
switch (matriz[2][0]==matriz[2][1]==matriz[2][2]){ //horizontal 3
case 'X':
cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
case 'O':
cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
default:
comp=0;
}
switch (matriz[0][0]==matriz[1][0]==matriz[2][0]){ //vertical 1
case 'X':
cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
case 'O':
cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
default:
comp=0;
}
switch (matriz[0][1]==matriz[1][1]==matriz[2][1]){ //vertical 2
case 'X':
cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
case 'O':
cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
default:
comp=0;
}
switch (matriz[0][2]==matriz[1][2]==matriz[2][2]){ //vertical 3
case 'X':
cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
case 'O':
cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
default:
comp=0;
}
switch (matriz[0][0]==matriz[1][1]==matriz[2][2]){ //oblícua 1
case 'X':
cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
case 'O':
cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
default:
comp=0;
}
switch (matriz[0][2]==matriz[1][1]==matriz[2][0]){ //oblícua 2
case 'X':
cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
case 'O':
cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
comp=1;
break;
default:
comp=0;
}
return comp;
}
void jugador1 (void){
int i, j;
cout<<"Jugador 1, introduce una posicion"<<endl<<"Fila:";
cin>>i;
cout<<endl<<"Columna:"<<endl;
cin>>j;
i=i-1;
j=j-1;
if (i>3 || j>3){
cout<<"Esta cordenada no existe, introduce otra jugador 1";
}
else{
matriz [i][j]='X';
tablero(i,j);
}
comprueba ();
return ;
}
void jugador2 (void){
int i, j;
cout<<"Jugador 2, introduce una posicion"<<endl<<"Fila:";
cin>>i;
cout<<endl<<"Columna:"<<endl;
cin>>j;
i=i-1;
j=j-1;
if (i>3 || j>3){
cout<<"Esta cordenada no existe, introduce otra jugador 2";
}
else{
matriz [i][j]='O';
tablero(i,j);
}
comprueba ();
return ;
}
感谢所有到达这里的人,如果你对如何完成这一切有任何想法,请向我解释,我会非常感激的<3.
第一个matriz[1][0]==matriz[1][1]==matriz[1][2]
不要做你梦想中的事。由于它是一个==
测试,它的计算结果为bool
(第二个==
将比较bool
(matriz[1][0]==matriz[1][1]
的结果(和char
(matriz[1][2]
的值(;没有像您希望的那样的隐含连词(。您需要阅读更多关于C++运算符及其优先级(尤其是比较运算符(的内容。
则CCD_ 9永远不能等于CCD_。它可以是true
或false
(即使转换为char
,也永远不会是'X'
;在大多数系统上,(char)false
是NUL字符;几乎每台计算机都使用ASCII或UTF-8,(char)true
是标题控制字符的