ho fatto un programma per il gioco del tris, ma non mi funziona il comando exit e non so il perchè! ho provato a cercare su vari libri e su internet, anche su html.it ma la spiegazione non mi è sembrata molto chiara di come funziona, se qualcuno me la potrebbe spiegare grazie; il problema è: io avevo fatto una switch con le varie opzioni: case1: funzione1();break, case2: funzione2(); break, case3: funzione3(); break; case 4: exit(1);
così a sempre funzionato poi ho fatto una modifica aggiungendo parti di codice a quello esistente già fatto da me e non va più: inserisco 4 e non esce..come mai? attendo una risposta grazie
vi scrivo il codice:
[SIZE=1]
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
int sceltamenu;
char tabella[3][3];
void disegno(void);
int scelta;
void gioco();
void giococonpc();
int AttaccaPC();
int Attaccagiocatore();
int turno;
void TrovaVincitore ();
main (void) {
cout << "(1)-(Gioca contro un altro giocatore)\n";
cout << "(2)-(Gioca contro il computer)\n";
cout << "(3)-(Istruzioni)\n";
cout << "(4)-(Esci)\n\n";
do cin >> scelta;
while (scelta < 1 || scelta > 3);
switch (scelta) {
case 1:
gioco (); break;
case 2:
giococonpc (); break;
case 3:
cout<<"\n\nLo scopo del gioco e' quello di mettere in fila 3 \
'X' o 3 'O', o in orizzontale, o in verticale o in diagonale:\n\n\
| | X X | X | X | | X X | | \n\
----------- ----------- ----------- -----------\n\
| X | | | | | X | X | \n\
----------- ----------- ----------- -----------\n\
X | | | | | | X | | X \n\
\n\n";
system("Pause");
system("cls");
main ();
case 4:
exit(1);
}
} //chiudi main
//funzionedel disegno
void disegno()
{
//la griglia
cout<<"\n\t\t 1 2 3\n"<<endl;
cout<<"\t\t 1 "<<tabella[0][0]<<" | "<<tabella[0][1]<<" | "<<tabella[0][2]<<endl;
cout<<"\t\t ---|---|---\n";
cout<<"\t\t 2 "<<tabella[1][0]<<" | "<<tabella[1][1]<<" | "<<tabella[1][2]<<endl;
cout<<"\t\t ---|---|---\n";
cout<<"\t\t 3 "<<tabella[2][0]<<" | "<<tabella[2][1]<<" | "<<tabella[2][2]<<"\n\n\n";
}
void giococonpc () { /
int m,n;
char risp='s';
while(risp=='S'||risp=='s')
{
for (m=0;m<3;m++)for (n=0;n<3;n++)tabella[m][n]= '\0';
int riga,colonna, cont=0;
while ( cont < 10)
{
if (cont == 0) disegno();
do{
cout<<"Il giocatore 1 e' 'X': scegli dove posizionare la 'X'"<<endl;
cout<<"Riga:";
cin>> riga;
cout<<"Colonna:";
cin>>colonna;
}while(riga>3 || riga<1 || colonna>3 || colonna<1 ||('X'==tabella[riga-1][colonna-1]||'O'==tabella[riga-1][colonna-1]));
tabella[riga-1][colonna-1]='X';
cont++;
disegno();
if (tabella[0][0]=='X' && tabella[0][0]==tabella[1][1] && tabella[1][1]==tabella[2][2])
{
cout<<"Hai vinto!"<<endl;break;
}
if (tabella[2][0]=='X' && tabella[2][0]==tabella[1][1] && tabella[1][1]==tabella[0][2])
{
cout<<"Hai vinto!"<<endl;break;
}
if (tabella[0][0]=='X' && tabella[0][0]==tabella[1][0] && tabella[1][0]==tabella[2][0])
{
cout<<"Hai vinto!"<<endl;break;
}
if (tabella[0][1]=='X' && tabella[0][1]==tabella[1][1] && tabella[1][1]==tabella[2][1])
{
cout<<"Hai vinto!"<<endl;break;
}
if (tabella[0][2]=='X' && tabella[0][2]==tabella[1][2] && tabella[1][2]==tabella[2][2])
{
cout<<"Hai vinto!"<<endl;break;
}
if (tabella[0][0]=='X' && tabella[0][0]==tabella[0][1] && tabella[0][1]==tabella[0][2])
{
cout<<"Hai vinto!"<<endl;break;
}
if (tabella[1][0]=='X' && tabella[1][0]==tabella[1][1] && tabella[1][1]==tabella[1][2])
{
cout<<"Hai vinto!"<<endl;break;
}
if (tabella[2][0]=='X' && tabella[2][0]==tabella[2][1] && tabella[2][1]==tabella[2][2])
{
cout<<"Hai vinto!"<<endl;break;
}
if(cont==9)
{
cout<<"Nessuno ha vinto!"<<endl;break;
}
cout << "\nGiocata del Computer:\n\n";
srand(time(NULL)); //Inizializza la funzione rand()
/////ATTACCO/////
if (tabella[2][0]=='O' && tabella[1][1]=='O' && tabella[0][2]==0) {tabella[0][2]='O'; goto etichetta;}
if (tabella[2][0]=='O' && tabella[1][1]==0 && tabella[0][2]=='O') {tabella[1][1]='O'; goto etichetta;}
if (tabella[2][0]==0 && tabella[1][1]=='O' && tabella[0][2]=='O') {tabella[2][0]='O'; goto etichetta;}
if (tabella[2][2]=='O' && tabella[1][1]=='O' && tabella[0][0]==0) {tabella[0][0]='O'; goto etichetta;}
if (tabella[2][2]==0 && tabella[1][1]=='O' && tabella[0][0]=='O') {tabella[2][2]='O'; goto etichetta;}
if (tabella[2][2]=='O' && tabella[1][1]==0 && tabella[0][0]=='O') {tabella[1][1]='O'; goto etichetta;}
if (tabella[0][2]=='O' && tabella[1][2]=='O' && tabella[2][2]==0) {tabella[2][2]='O'; goto etichetta;}
if (tabella[0][2]==0 && tabella[1][2]=='O' && tabella[2][2]=='O') {tabella[0][2]='O'; goto etichetta;}
if (tabella[0][2]=='O' && tabella[1][2]==0 && tabella[2][2]=='O') {tabella[1][2]='O'; goto etichetta;}
if (tabella[0][0]=='O' && tabella[1][0]=='O' && tabella[2][0]==0) {tabella[2][0]='O'; goto etichetta;}
if (tabella[0][0]==0 && tabella[1][0]=='O' && tabella[2][0]=='O') {tabella[0][0]='O'; goto etichetta;}
if (tabella[0][0]=='O' && tabella[1][0]==0 && tabella[2][0]=='O') {tabella[1][0]='O'; goto etichetta;}
if (tabella[0][1]=='O' && tabella[1][1]=='O' && tabella[2][1]==0) {tabella[2][1]='O'; goto etichetta;}
if (tabella[0][1]=='O' && tabella[1][1]==0 && tabella[2][1]=='O') {tabella[1][1]='O'; goto etichetta;}
if (tabella[0][1]==0 && tabella[1][1]=='O' && tabella[2][1]=='O') {tabella[0][1]='O'; goto etichetta;}
if (tabella[0][0]=='O' && tabella[0][1]=='O' && tabella[0][2]==0) {tabella[0][2]='O'; goto etichetta;}
if (tabella[0][0]==0 && tabella[0][1]=='O' && tabella[0][2]=='O') {tabella[0][0]='O'; goto etichetta;}
if (tabella[0][0]=='O' && tabella[0][1]==0 && tabella[0][2]=='O') {tabella[0][1]='O'; goto etichetta;}
if (tabella[1][0]=='O' && tabella[1][1]=='O' && tabella[1][2]==0) {tabella[1][2]='O'; goto etichetta;}
if (tabella[1][0]==0 && tabella[1][1]=='O' && tabella[1][2]=='O') {tabella[1][0]='O'; goto etichetta;}
if (tabella[1][0]=='O' && tabella[1][1]==0 && tabella[1][2]=='O') {tabella[1][1]='O'; goto etichetta;}
if (tabella[2][0]=='O' && tabella[2][1]=='O' && tabella[2][2]==0) {tabella[2][2]='O'; goto etichetta;}
if (tabella[2][0]==0 && tabella[2][1]=='O' && tabella[2][2]=='O') {tabella[2][0]='O'; goto etichetta;}
if (tabella[2][0]=='O' && tabella[2][1]==0 && tabella[2][2]=='O') {tabella[2][1]='O'; goto etichetta;}
/////DIFESA/////
if (tabella[2][0]=='X' && tabella[1][1]=='X' && tabella[0][2]==0) {tabella[0][2]='O'; goto etichetta;}
if (tabella[2][0]=='X' && tabella[1][1]==0 && tabella[0][2]=='X') {tabella[1][1]='O'; goto etichetta;}
if (tabella[2][0]==0 && tabella[1][1]=='X' && tabella[0][2]=='X') {tabella[2][0]='O'; goto etichetta;}
if (tabella[2][2]=='X' && tabella[1][1]=='X' && tabella[0][0]==0) {tabella[0][0]='O'; goto etichetta;}
if (tabella[2][2]==0 && tabella[1][1]=='X' && tabella[0][0]=='X') {tabella[2][2]='O'; goto etichetta;}
if (tabella[2][2]=='X' && tabella[1][1]==0 && tabella[0][0]=='X') {tabella[1][1]='O'; goto etichetta;}
if (tabella[0][2]=='X' && tabella[1][2]=='X' && tabella[2][2]==0) {tabella[2][2]='O'; goto etichetta;}
if (tabella[0][2]==0 && tabella[1][2]=='X' && tabella[2][2]=='X') {tabella[0][2]='O'; goto etichetta;}
if (tabella[0][2]=='X' && tabella[1][2]==0 && tabella[2][2]=='X') {tabella[1][2]='O'; goto etichetta;}
if (tabella[0][0]=='X' && tabella[1][0]=='X' && tabella[2][0]==0) {tabella[2][0]='O'; goto etichetta;}
if (tabella[0][0]==0 && tabella[1][0]=='X' && tabella[2][0]=='X') {tabella[0][0]='O'; goto etichetta;}
if (tabella[0][0]=='X' && tabella[1][0]==0 && tabella[2][0]=='X') {tabella[1][0]='O'; goto etichetta;}
if (tabella[0][1]=='X' && tabella[1][1]=='X' && tabella[2][1]==0) {tabella[2][1]='O'; goto etichetta;}
if (tabella[0][1]=='X' && tabella[1][1]==0 && tabella[2][1]=='X') {tabella[1][1]='O'; goto etichetta;}
if (tabella[0][1]==0 && tabella[1][1]=='X' && tabella[2][1]=='X') {tabella[0][1]='O'; goto etichetta;}
if (tabella[0][0]=='X' && tabella[0][1]=='X' && tabella[0][2]==0) {tabella[0][2]='O'; goto etichetta;}
if (tabella[0][0]==0 && tabella[0][1]=='X' && tabella[0][2]=='X') {tabella[0][0]='O'; goto etichetta;}
if (tabella[0][0]=='X' && tabella[0][1]==0 && tabella[0][2]=='X') {tabella[0][1]='O'; goto etichetta;}
if (tabella[1][0]=='X' && tabella[1][1]=='X' && tabella[1][2]==0) {tabella[1][2]='O'; goto etichetta;}
if (tabella[1][0]==0 && tabella[1][1]=='X' && tabella[1][2]=='X') {tabella[1][0]='O'; goto etichetta;}
if (tabella[1][0]=='X' && tabella[1][1]==0 && tabella[1][2]=='X') {tabella[1][1]='O'; goto etichetta;}
if (tabella[2][0]=='X' && tabella[2][1]=='X' && tabella[2][2]==0) {tabella[2][2]='O'; goto etichetta;}
if (tabella[2][0]==0 && tabella[2][1]=='X' && tabella[2][2]=='X') {tabella[2][0]='O'; goto etichetta;}
if (tabella[2][0]=='X' && tabella[2][1]==0 && tabella[2][2]=='X') {tabella[2][1]='O'; goto etichetta;}
/////CASO/////
do {
riga = rand() % 4;
colonna = rand() % 4;
}
while(riga>3 || riga<1 || colonna>3 || colonna<1 ||('X'==tabella[riga-1][colonna-1]||'O'==tabella[riga-1][colonna-1]));
tabella[riga-1][colonna-1]='O';
goto etichetta;
etichetta:
{
cont++;
disegno();
if (tabella[0][0]=='O' && tabella[0][0]==tabella[1][1] && tabella[1][1]==tabella[2][2])
{
cout<<"Hai perso!"<<endl;break;
}
if (tabella[2][0]=='O' && tabella[2][0]==tabella[1][1] && tabella[1][1]==tabella[0][2])
{
cout<<"Hai perso!"<<endl;break;
}
if (tabella[0][0]=='O' && tabella[0][0]==tabella[1][0] && tabella[1][0]==tabella[2][0])
{
cout<<"Hai perso!"<<endl;break;
}
if (tabella[0][1]=='O' && tabella[0][1]==tabella[1][1] && tabella[1][1]==tabella[2][1])
{
cout<<"Hai perso!"<<endl;break;
}
if (tabella[0][2]=='O' && tabella[0][2]==tabella[1][2] && tabella[1][2]==tabella[2][2])
{
cout<<"Hai perso!"<<endl;break;
}
if (tabella[0][0]=='O' && tabella[0][0]==tabella[0][1] && tabella[0][1]==tabella[0][2])
{
cout<<"Hai perso!"<<endl;break;
}
if (tabella[1][0]=='O' && tabella[1][0]==tabella[1][1] && tabella[1][1]==tabella[1][2])
{
cout<<"Hai perso!"<<endl;break;
}
if (tabella[2][0]=='O' && tabella[2][0]==tabella[2][1] && tabella[2][1]==tabella[2][2])
{
cout<<"Hai perso!"<<endl;break;
}
};
}
cout<<"\nVuoi giocare ancora? (S - N)\n";
cin>>risp;
}
main();
}
qui ci sarebbe un altra funzione uguale a quella "gioco con pc" con l'unica differenza è che al posto del pc c'è il giocatore 2, ma è identica x tutto il resto in tutto e per tutto e viene chiusa sempre con
}
cout<<"\nVuoi giocare ancora? (S - N)\n";
cin>>risp;
}
main();
}