Chciałem sobie napisać grę w kółko i krzyżyk w konsoli. Przed napisaniem warunku wygranej chciałem napisać wszystkie blokady i zabezpieczenia. Trafiłem na błąd którego nie potrafię naprawić. Albo po prostu rozwiązanie jest proste a ja go nie widzę. Chodzi o to że po wciśnięciu 8 klawiszy, pętla jakby zatrzymuje cały proces.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#include <time.h>
#include <iostream>
#include <conio.h>
#include <string>
int xo[] = {2,2,2,2,2,2,2,2,2};
int zt(int a)
{
xo[0] = a;
xo[1] = a;
xo[2] = a;
xo[3] = a;
xo[4] = a;
xo[5] = a;
xo[6] = a;
xo[7] = a;
xo[8] = a;
}
int cls()
{
system("cls");
}
int main()
{
srand( time( NULL ) );
bool q = false;
int r;
int w;
int e;
int c;
int y;
int u;
bool t=false;
std::string b;
bool a = false;
std::cout << "Menu:" <<std::endl;
while(a==false)
{
//<--
cls();
e=0;
if(xo[0]==2) std::cout << "@|";
if(xo[0]==1) std::cout << "X|";
if(xo[0]==0) std::cout << "O|";
if(xo[1]==2) std::cout << "@|";
if(xo[1]==1) std::cout << "X|";
if(xo[1]==0) std::cout << "O|";
if(xo[2]==2) std::cout << "@" << std::endl;
if(xo[2]==1) std::cout << "X" << std::endl;
if(xo[2]==0) std::cout << "O" << std::endl;
if(xo[3]==2) std::cout << "@|";
if(xo[3]==1) std::cout << "X|";
if(xo[3]==0) std::cout << "O|";
if(xo[4]==2) std::cout << "@|";
if(xo[4]==1) std::cout << "X|";
if(xo[4]==0) std::cout << "O|";
if(xo[5]==2) std::cout << "@" <<std::endl;
if(xo[5]==1) std::cout << "X" <<std::endl;
if(xo[5]==0) std::cout << "O" <<std::endl;
if(xo[6]==2) std::cout << "@|";
if(xo[6]==1) std::cout << "X|";
if(xo[6]==0) std::cout << "O|";
if(xo[7]==2) std::cout << "@|";
if(xo[7]==1) std::cout << "X|";
if(xo[7]==0) std::cout << "O|";
if(xo[8]==2) std::cout << "@" <<std::endl;
if(xo[8]==1) std::cout << "X" <<std::endl;
if(xo[8]==0) std::cout << "O" <<std::endl;
while(q==false){
w=getch();
if(w==51 && xo[8]!=0 && e==0 && xo[8]!=1)
{xo[8]=1;
e = 1;
Sleep(10);
q=true;}
if(w==50 && xo[7]!=0 && e==0 && xo[7]!=1)
{xo[7]=1;
e = 1;
Sleep(10);
q=true;}
if(w==49 && xo[6]!=0 && e==0 && xo[6]!=1)
{xo[6]=1;
e = 1;
Sleep(10);
q=true;}
if(w==54 && xo[5]!=0 && e==0 && xo[5]!=1)
{xo[5]=1;
e = 1;
Sleep(10);
q=true;}
if(w==53 && xo[4]!=0 && e==0 && xo[4]!=1)
{xo[4]=1;
e = 1;
Sleep(10);
q=true;}
if(w==52 && xo[3]!=0 && e==0 && xo[3]!=1)
{xo[3]=1;
e = 1;
Sleep(10);
q=true;}
if(w==57 && xo[2]!=0 && e==0 && xo[2]!=1)
{xo[2]=1;
e = 1;
Sleep(10);
q=true;}
if(w==56 && xo[1]!=0 && e==0 && xo[1]!=1)
{xo[1]=1;
e = 1;
Sleep(10);
q=true;}
if(w==55 && xo[0]!=0 && e==0 && xo[0]!=1)
{xo[0]=1;
e = 1;
Sleep(10);
q=true;}
}
q=false;
if(w==114)
{
zt(2);
y = 0;
u = 0;
}
while(t==false)
{
y=0;
r = ( rand() % 9 ) + 0;
//if not
if(r==0 && xo[0]==1 && xo[0]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(r==1 && xo[1]==1 && xo[1]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(r==2 && xo[2]==1 && xo[2]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(r==3 && xo[3]==1 && xo[3]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(r==4 && xo[4]==1 && xo[4]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(r==5 && xo[5]==1 && xo[5]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(r==6 && xo[6]==1 && xo[6]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(r==7 && xo[7]==1 && xo[7]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(r==8 && xo[8]==1 && xo[8]==0){
r = ( rand() % 9 ) + 0;
y+=1;
}
if(y==8 || y==9)
{
u+=1;
}
if(u==10)t=true;
if(r==0 && xo[0]==2){
xo[0]=0;
t=true;
}
if(r==1 && xo[1]==2){
xo[1]=0;
t=true;
}
if(r==2 && xo[2]==2){
xo[2]=0;
t=true;
}
if(r==3 && xo[3]==2){
xo[3]=0;
t=true;
}
if(r==4 && xo[4]==2){
xo[4]=0;
t=true;
}
if(r==5 && xo[5]==2){
xo[5]=0;
t=true;
}
if(r==6 && xo[6]==2){
xo[6]=0;
t=true;
}
if(r==7 && xo[7]==2){
xo[7]=0;
t=true;
}
if(r==8 && xo[8]==2){
xo[8]=0;
t=true;
}
}
t=false;
}
return 0;
}
Jakby co, wiem że kod spisany byle jak ale to można ogarnąć jak już gra/program będzie działać poprawnie.