Trasformare un int in char

di il
7 risposte

Trasformare un int in char

Salve!
Da poco mi sto cimentando nella creazione di un TRIS in C++ e come ben sapete, i simboli classici sono la X e la O.

Bene, detto questo, non riesco a trasformare i valori dell'array "tabella" (dichiarata come int) in X e O.
Ho già provato a fare "char tabella[]..." ma i numeri erano a mo di simboli..

Tralasciando tutto il resto del codice a cui sto lavorando, quindi è ovviamente incompleto, sapreste aiutarmi?
Vorrei capire come fare, e se, l'errore lo commetto nella funzione "scelta()", grazie.
#include <iostream>
#include <string>
using namespace std;

int t[9]={0,1,2,3,4,5,6,7,8};//tabella del tris
string g1, g2;
int sceltag1,sceltag2;
char X,O;

void mostra_tabella(){
	
	
	cout<<"|"<<t[0]<<"|"<<t[1]<<"|"<<t[2]<<"|"<<endl;
	cout<<"|"<<t[3]<<"|"<<t[4]<<"|"<<t[5]<<"|"<<endl;
	cout<<"|"<<t[6]<<"|"<<t[7]<<"|"<<t[8]<<"|"<<endl;
}

int scelta(){

	for(int i=0; i<=9; i++)	{
	
	if(sceltag1==t[i]){
		t[i]=0;
	}
	}//per il primo giocatore
	
	for(int i=0; i<=9; i++)	{
	
	if(sceltag2==t[i]){
		t[i]=1;
	}
	}//per il secondo
}

void controllo_vittoria(){
	if(t[0]==0 && t[1]==0 && t[2]==0){
		cout<<g1<<" ha vinto!";
		system("PAUSE");
	}
	
	if(t[2]==0 && t[5]==0 && t[8]==0){
		cout<<g1<<" ha vinto!";
		system("PAUSE");
	}
	
	if(t[6]==0 && t[7]==0 && t[8]==0){
		cout<<g1<<" ha vinto!";
		system("PAUSE");
	}
	
	if(t[0]==0 && t[3]==0 && t[6]==0){
		cout<<g1<<" ha vinto!";
		system("PAUSE");
	}
	
	if(t[0]==0 && t[4]==0 && t[8]==0){
		cout<<g1<<" ha vinto!";
		system("PAUSE");
	}
	
	if(t[6]==0 && t[4]==0 && t[2]==0){
		cout<<g1<<" ha vinto!";
		system("PAUSE");
	}
}

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();
	
	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();
	
	system("PAUSE");
}
	

7 Risposte

  • Re: Trasformare un int in char

    Ma perché. Non usi un array di char? Non l'ho proprio capito... Perché complicarsi la vita?
  • Re: Trasformare un int in char

    Uhm, perchè a schermo faccio apparire la tabella con i numeri delle rispettive caselle in modo da poter far scegliere con precisione in punto inserendo il numero della casella, solo che l'array di char legge i numeri come simboli..
  • Re: Trasformare un int in char

    Perché nel caso dei char non devi assegnare 1 o 2 ... ma '1' '2'
  • Re: Trasformare un int in char

    Quanto son cretino, non dormire da circa 20 ore fa questi effetti.

    Ti ringrazio tantissimo.
  • Re: Trasformare un int in char

    Ma.. adesso come faccio a fargli cambiare carattere in X oppure O?
    #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;
    char X,O;
    
    void mostra_tabella(){
    	
    	
    	cout<<"|"<<t[0]<<"|"<<t[1]<<"|"<<t[2]<<"|"<<endl;
    	cout<<"|"<<t[3]<<"|"<<t[4]<<"|"<<t[5]<<"|"<<endl;
    	cout<<"|"<<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
    }
    
    void controllo_vittoria(){
    	if(t[0]==0 && t[1]==0 && t[2]==0){
    		cout<<g1<<" ha vinto!";
    		system("PAUSE");
    	}
    	
    	if(t[2]==0 && t[5]==0 && t[8]==0){
    		cout<<g1<<" ha vinto!";
    		system("PAUSE");
    	}
    	
    	if(t[6]==0 && t[7]==0 && t[8]==0){
    		cout<<g1<<" ha vinto!";
    		system("PAUSE");
    	}
    	
    	if(t[0]==0 && t[3]==0 && t[6]==0){
    		cout<<g1<<" ha vinto!";
    		system("PAUSE");
    	}
    	
    	if(t[0]==0 && t[4]==0 && t[8]==0){
    		cout<<g1<<" ha vinto!";
    		system("PAUSE");
    	}
    	
    	if(t[6]==0 && t[4]==0 && t[2]==0){
    		cout<<g1<<" ha vinto!";
    		system("PAUSE");
    	}
    }
    
    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();
    	
    	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();
    	
    	system("PAUSE");
    }
    	
  • Re: Trasformare un int in char

    Ma che vuoi dire?? Come prima ...

    ='X';

    ='O';
  • Re: Trasformare un int in char

    Ciao
    se intendi posizionare il simbolo nella casella giusta (in modalità console)
    dopo aver verificato l'esattezza delle cordinate a seconda del giocatore che sta giocando posizioni il corrispettivo simbolo nella matrice/vettore.
    poi cancelli lo schermo e ristampi il tutto.
    per cancellare lo schermo puoi usare (sotto windows)
    system ("cls");
    spero di esserti stato d'aiuto
Devi accedere o registrarti per scrivere nel forum
7 risposte