Como fazer um jogo da velha autônomo(versus seu PC) em C++

Tela inicial do jogo


O desenho do jogo é feito conforme o código abaixo onde é utilizado dois arranjos de repetição do tipo "for" afim de  apresentarmos os caracteres "x" e "0" que futuramente estarão presentes em velha[i][j] da matriz[3][3], que inicialmente é ocupado por espaços vazios.

void desenho(){
for(int i = 0 ;i<3;i++){

for(int j = 0 ;j<3;j++){

if(i==0){//montagem aparencia do jogo
cout<<"_";
}

if(i==1){
cout<<"_";
}

if(i==2){
cout<<" ";
}
cout<<velha[i][j];

if(i==0){
cout<<"_";
}

if(i==1){
cout<<"_";
}

if(i==2){
cout<<" ";
}

if((j==0)||(j==1)){
cout<<"|";
}
}
cout<<"\n";
}
}

Conforme o jogador faz sua jogada, ou seja, escolhe uma linha e uma coluna onde será inserido o caractere "x", é feito uma analise, assim  o programa decide se fará uma jogada de "defesa" ou uma jogada de "ataque", de acordo com o código abaixo:

void analize(){
int linha = 0,coluna = 0,x=0,o=0,x2=0,o2=0,x3=0,o3=0,x4=0,o4=0;
bool o1 = false,x1 = false,d1 = false,d2 = false;

for(int i = 0 ;i<3;i++){

for(int j = 0 ;j<3;j++){

if(linha!=i){//confere linh

linha = i;
x = 0;
o = 0;
}

if((velha[i][j] == 'X')&&(i == linha)){
x++;
}

if((velha[i][j] == 'O')&&(i == linha)){
o++;
}
if((x==2)&&(!o1)){//prioridade p ataque
ContraMedidas(0,linha);//defesa
}

if(o==2){//ataque
ContraMedidas(0,linha);
o1 = true;
}

if(coluna!=i){//confere coluna
coluna = i;
x2 = 0;
o2 = 0;
}

if((velha[j][i] == 'X')&&(i == coluna)){
x2++;
}

if((velha[j][i] == 'O')&&(i == coluna)){
o2++;
}

if((x2 == 2)&&(!x1)){
ContraMedidas(1,coluna);
}

if(o2 == 2){//ataque
ContraMedidas(1,coluna);
x1 = true;
}

if(i==j){//confere diagonal

if(velha[j][i] == 'X'){
x3++;
}

if(velha[j][i] == 'O'){
o3++;
}

if((x3 == 2)&&(!d1)){

ContraMedidas(2,0);

}

if(o3 == 2){

ContraMedidas(2,0);
d1 = true;
}

if(i==2){
x3 = 0;
o3 = 0;
}
}

if((i+j)==2){//confere diagonal

if(velha[j][i] == 'X'){
x4++;
}

if(velha[j][i] == 'O'){
o4++;
}

if((x4 == 2)&&(!d2)){

ContraMedidas(3,0);

}

if(o4 == 2){

ContraMedidas(3,0);
d2 = true;
}

if(i==2){
x4 = 0;
o4 = 0;
}
}
}
}
}

Código completo para testes e melhorias em JogoDaVeia - Replit ou GitHub - Aertyps/JogoDaVeia.

Comentários

Postagens mais visitadas deste blog

Montanha Game