Am incercat sa fac un joc de X si O in C++ si este aproape gata, subliniez aproape. Am o problema cu acel ciclu. In mod normal ar trebui sa se opreasca la k=9 dar ceva este gresit si nu se opreste.. in rest totul merge bine deocamdata, daca cineva pune 3 x sau 3 o in linie se opreste, dar cand nu castiga nimeni jocul continua mai mult decat trebuie. Care este problema? Am incercat si cu for() dar tot aia este...

#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
using namespace std;
int opt, rez[3][3], casuta,casuta1,k=0;
char player1[11], player2[11], a[8][13];
int main()
{
a[1][1]='-';a[1][2]='-';a[1][3]='-';a[1][4]='-';a[1][5]='-';a[1][6]='-';a[1][7]='-';a[1][8]='-';a[1][9]='-';a[1][10]='-';a[1][11]='-';a[1][12]='-';a[1][13]='-';
a[2][1]='|';a[2][2]=' ';a[2][3]='x';a[2][4]=' ';a[2][5]='|';a[2][6]=' ';a[2][7]='x';a[2][8]=' ';a[2][9]='|';a[2][10]=' ';a[2][11]='o';a[2][12]=' ';a[2][13]='|';
a[3][1]='-';a[3][2]='-';a[3][3]='-';a[3][4]='-';a[3][5]='-';a[3][6]='-';a[3][7]='-';a[3][8]='-';a[3][9]='-';a[3][10]='-';a[3][11]='-';a[3][12]='-';a[3][13]='-';
a[4][1]='|';a[4][2]=' ';a[4][3]='o';a[4][4]=' ';a[4][5]='|';a[4][6]=' ';a[4][7]='x';a[4][8]=' ';a[4][9]='|';a[4][10]=' ';a[4][11]='x';a[4][12]=' ';a[4][13]='|';
a[5][1]='-';a[5][2]='-';a[5][3]='-';a[5][4]='-';a[5][5]='-';a[5][6]='-';a[5][7]='-';a[5][8]='-';a[5][9]='-';a[5][10]='-';a[5][11]='-';a[5][12]='-';a[5][13]='-';
a[6][1]='|';a[6][2]=' ';a[6][3]='x';a[6][4]=' ';a[6][5]='|';a[6][6]=' ';a[6][7]='o';a[6][8]=' ';a[6][9]='|';a[6][10]=' ';a[6][11]='o';a[6][12]=' ';a[6][13]='|';
a[7][1]='-';a[7][2]='-';a[7][3]='-';a[7][4]='-';a[7][5]='-';a[7][6]='-';a[7][7]='-';a[7][8]='-';a[7][9]='-';a[7][10]='-';a[7][11]='-';a[7][12]='-';a[7][13]='-';
cout<<"== X & O game =="<<endl;
cout<<" created by Bratie Fanut"<<endl<<endl;
for(int i=1;i<=7;i++)
{
for(int j=1;j<=13;j++)
cout<<a[i][j];
cout<<endl;
}
cout<<endl;
cout<<"1. Joc Nou"<<endl;
cout<<"2. Instructiuni"<<endl;
cout<<"3. Scor"<<endl;
cout<<"4. Iesire"<<endl;
cout<<endl;
cout<<"Introduceti optiunea dumneavoastra:";
cin>>opt;
if(opt == 1)
{
a[2][3]=' ';
a[2][7]=' ';
a[2][11]=' ';
a[4][3]=' ';
a[4][7]=' ';
a[4][11]=' ';
a[6][3]=' ';
a[6][7]=' ';
a[6][11]=' ';
cout<<"Jocul va incepe dupa ce ambii jucatori si-au introdus numele"<<endl;
cout<<"Introduceti numele, Player1:"<<endl;
cin>>player1;
cout<<"Introduceti numele, Player2:"<<endl;
cin>>player2;
cout<<endl<<"LOADING...............";
system("cls");
cout<<"Jocul a inceput!"<<endl<<endl;
for(int i=1;i<=7;i++)
{
for(int j=1;j<=13;j++)
cout<<a[i][j];
cout<<endl;
}
while(k<=9)
{
cout<<player1<<" sunteti cu ,,X''. Introduceti numarul casutei dorite.";
cin>>casuta;
switch(casuta)
{
case 1:
a[2][3]='X',rez[1][1]=1,k++;
break;
case 2:
a[2][7]='X',rez[1][2]=1,k++;
break;
case 3:
a[2][11]='X',rez[1][3]=1,k++;
break;
case 4:
a[4][3]='X',rez[2][1]=1,k++;
break;
case 5:
a[4][7]='X',rez[2][2]=1,k++;
break;
case 6:
a[4][11]='X',rez[2][3]=1,k++;
break;
case 7:
a[6][3]='X',rez[3][1]=1,k++;
break;
case 8:
a[6][7]='X',rez[3][2]=1,k++;
break;
case 9:
a[6][11]='X',rez[3][3]=1,k++;
break;
}
system("cls");
for(int i=1;i<=7;i++)
{
for(int j=1;j<=13;j++)
cout<<a[i][j];
cout<<endl;
}
if((rez[1][1]==1 && rez[1][2]==1 && rez[1][3]==1) ||
(rez[2][1]==1 && rez[2][2]==1 && rez[2][3]==1) ||
(rez[3][1]==1 && rez[3][2]==1 && rez[3][3]==1) ||
(rez[1][3]==1 && rez[2][2]==1 && rez[3][1]==1))
{
cout<<player1<<" A CASTIGAT!!!"<<endl<<endl;
exit(1);getch();
}
cout<<player2<<" sunteti cu ,,O''. Introduceti numarul casutei dorite.";
cin>>casuta1;
switch(casuta1)
{
case 1:
a[2][3]='O',rez[1][1]=2,k++;
break;
case 2:
a[2][7]='O',rez[1][2]=2,k++;
break;
case 3:
a[2][11]='O',rez[1][3]=2,k++;
break;
case 4:
a[4][3]='O',rez[2][1]=2,k++;
break;
case 5:
a[4][7]='O',rez[2][2]=2,k++;
break;
case 6:
a[4][11]='O',rez[2][3]=2,k++;
break;
case 7:
a[6][3]='O',rez[3][1]=2,k++;
break;
case 8:
a[6][7]='O',rez[3][2]=2,k++;
break;
case 9:
a[6][11]='O',rez[3][3]=2,k++;
break;
}
system("cls");
for(int i=1;i<=7;i++)
{
for(int j=1;j<=13;j++)
cout<<a[i][j];
cout<<endl;
}
if((rez[1][1]==2 && rez[1][2]==2 && rez[1][3]==2) ||
(rez[2][1]==2 && rez[2][2]==2 && rez[2][3]==2) ||
(rez[3][1]==2 && rez[3][2]==2 && rez[3][3]==2) ||
(rez[1][3]==2 && rez[2][2]==2 && rez[3][1]==2))
{
cout<<player2<<" A CASTIGAT!!!"<<endl<<endl;
exit(1); getch();
}
}
cout<<"EGALITATE!!"<<endl;
}
if(opt==4)
exit(0);
cout<<endl<<endl;
return 0;
}