Salve, ultimamente sto scrivendo un piccolo programmino che simula il gioco del TRIS (tic tac toe)
#include <iostream>
#include <string>
using namespace std;
char t[9]={'0','1','2','3','4','5','6','7','8'};//tabella del tris
string g1, g2;
char sceltag1,sceltag2;
int c=0;
void mostra_tabella(){
cout<<"\t|"<<t[0]<<"|"<<t[1]<<"|"<<t[2]<<"|"<<endl;
cout<<"\t|"<<t[3]<<"|"<<t[4]<<"|"<<t[5]<<"|"<<endl;
cout<<"\t|"<<t[6]<<"|"<<t[7]<<"|"<<t[8]<<"|"<<endl;
}
int scelta(){
for(int i=0; i<=9; i++) {
if(sceltag1==t[i]){
t[i]='X';
}
}//per il primo giocatore
for(int i=0; i<=9; i++) {
if(sceltag2==t[i]){
t[i]='O';
}
}//per il secondo
}
int controllo_vittoria(){
if(t[0]=='X' && t[1]=='X' && t[2]=='X'||t[0]=='O' && t[1]=='O' && t[2]=='O' ){
cout<<g1<<" ha vinto!";
c=1;
}
if(t[2]=='X' && t[5]=='X' && t[8]=='X'|| t[2]=='O' && t[5]=='O' && t[8]=='O'){
cout<<g1<<" ha vinto!";
c=1;
}
if(t[6]=='X' && t[7]=='X' && t[8]=='X'|| t[6]=='O' && t[7]=='O' && t[8]=='O'){
cout<<g1<<" ha vinto!";
c=1;
}
if(t[0]=='X' && t[3]=='X' && t[6]=='X'|| t[0]=='O' && t[3]=='O' && t[6]=='O'){
cout<<g1<<" ha vinto!";
c=1;
}
if(t[0]=='X' && t[4]=='X' && t[8]=='X'|| t[0]=='O' && t[4]=='O' && t[8]=='O'){
cout<<g1<<" ha vinto!";
c=1;
}
if(t[6]=='X' && t[4]=='X' && t[2]=='X'|| t[6]=='O' && t[4]=='O' && t[2]=='O'){
cout<<g1<<" ha vinto!";
c=1;
}
}
int main(){
cout<<"Ciao! Benvenuto al gioco TRIS"<<endl;
cout<<"Inserisci il nome del primo giocatore: ";
cin>>g1;
cout<<"Ora inserisci il nome del secondo giocatore: ";
cin>>g2; cout<<endl;
cout<<g1<<" sara' la X"<<endl;
cout<<g2<<" sara' la O"<<endl;
mostra_tabella();
do{
cout<<"\nE' il turno di "<<g1<<": ";
cin>>sceltag1;
scelta();
mostra_tabella();
controllo_vittoria();
cout<<"\nE' il turno di "<<g2<<": ";
cin>>sceltag2;
scelta();
mostra_tabella();
controllo_vittoria();
}
while(c==0);
system("PAUSE");
}
Quando uno dei due giocatori vince, ovviamente come potete vedere, esce il nome solo del primo giocatore.
Oltre a fare 2 if diversi (per player) per ogni condizione di vittoria, esiste qualche altro modo per stampare a schermo solo il nome del vincitore senza scrivere codici in modo grossolano?