大小写标签值超过了c++类型的最大值



我在本文中使用的所有开关都有问题,我的问题是我需要写什么,这样就不会出现这个问题?我应该画哪种类型的?

#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_。它可以是truefalse(即使转换为char,也永远不会是'X';在大多数系统上,(char)falseNUL字符;几乎每台计算机都使用ASCII或UTF-8,(char)true是标题控制字符的01起始,您可能不需要它

不要忘记在编译器中启用所有警告和调试信息。如果使用GCC,请使用g++ -Wall -Wextra -g进行编译。改进您的代码以避免出现任何警告。

然后阅读如何调试小程序

我的建议是:在几天内停止编码,并花时间阅读更多。先读一本好的C++编程书(全文(。查看一些C++参考网站。学习如何使用编译器。学习使用调试器和一些版本控制(比如git,它有很好的教程视频;你只想学习一点点git(。然后回到你的程序(当你学会了基础知识后,你最好完全放弃它,重新编写你的代码;你可能会写几十行,调试它们,并用另外几十行改进你的代码,再次调试,重复直到满意;遵循迭代和增量开发方法。(

顺便说一句,它可以帮助研究一些现有小型自由软件项目的源代码(例如在github、gitlab或Linux发行版中(。这可能很鼓舞人心。

PS。即使这需要你一个多小时,关注这里的所有超链接也会很有帮助。

相关内容

最新更新