• 0
Sign in to follow this  
Daniel Soares

Dúvida: Como fazer um programa rodar novamente?

Question

Olá amigos, eu me chamo Daniel e sou aluno de ADS, alguns dias atrás eu encontrei um código pela internet de um jogo da velha simples, o código funciona perfeita mente, porèm, eu queria adaptar o programa para executar novamente, e é ai que està o problema, eu não consigo fazer o programa zerar e reiniciar novamente a partida, vou inserir o código logo abaixo, desde já agradeço sua ajuda.

P.S 1 Já tentei colocar system("cls") em quase todos os lugares possiveis do código, mas não resolveu.

#include <iostream>
#include <stdlib.h>

using namespace std;

char matriz[3][3] = {'1','2','3','4','5','6','7','8','9'};
int n;
char jog = 'X';
char sair = 's';
bool s = true;

void Jogo(){
    system("cls");
    cout << "\n   JOGO  DA  VELHA\n\n";
    for (int a=0;a<3;a++){
       cout << "\t";
         for (int j=0;j<3;j++){
            cout << matriz[a][j] << " ";
        }
        cout << "\n";
    }
    cout << "\n";
}
void Entrada(){
    int p;
    cout << "Digite um numero: ";
    cin >> p;
    
    if (p==1){
        if(matriz[0][0] == '1'){
            matriz[0][0] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==2){
        if(matriz[0][1] == '2'){
            matriz[0][1] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==3){
        if(matriz[0][2] == '3'){
            matriz[0][2] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==4){
        if(matriz[1][0] == '4'){
            matriz[1][0] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==5){
        if(matriz[1][1] == '5'){
            matriz[1][1] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==6){
        if(matriz[1][2] == '6'){
            matriz[1][2] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==7){
        if(matriz[2][0] == '7'){
            matriz[2][0] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==8){
        if(matriz[2][1] == '8'){
            matriz[2][1] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==9){
        if(matriz[2][2] == '9'){
            matriz[2][2] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
}
void Alterna(){
    if (jog == 'X')
        jog = 'O';
    else
        jog = 'X';
}

char Vencedor(){

    // Jogador 1

    if (matriz[0][0] == 'X' && matriz[0][1] == 'X' && matriz[0][2] == 'X')
        return 'X';
    if (matriz[1][0] == 'X' && matriz[1][1] == 'X' && matriz[1][2] == 'X')
        return 'X';
    if (matriz[2][0] == 'X' && matriz[2][1] == 'X' && matriz[2][2] == 'X')
        return 'X';

    if (matriz[0][0] == 'X' && matriz[1][0] == 'X' && matriz[2][0] == 'X')
        return 'X';
    if (matriz[0][1] == 'X' && matriz[1][1] == 'X' && matriz[2][1] == 'X')
        return 'X';
    if (matriz[0][2] == 'X' && matriz[1][2] == 'X' && matriz[2][2] == 'X')
        return 'X';

    if (matriz[0][0] == 'X' && matriz[1][1] == 'X' && matriz[2][2] == 'X')
        return 'X';
    if (matriz[0][2] == 'X' && matriz[1][1] == 'X' && matriz[2][0] == 'X')
        return 'X';

    //Jogador2

    if (matriz[0][0] == 'O' && matriz[0][1] == 'O' && matriz[0][2] == 'O')
        return 'O';
    if (matriz[1][0] == 'O' && matriz[1][1] == 'O' && matriz[1][2] == 'O')
        return 'O';
    if (matriz[2][0] == 'O' && matriz[2][1] == 'O' && matriz[2][2] == 'O')
        return 'O';

    if (matriz[0][0] == 'O' && matriz[1][0] == 'O' && matriz[2][0] == 'O')
        return 'O';
    if (matriz[0][1] == 'O' && matriz[1][1] == 'O' && matriz[2][1] == 'O')
        return 'O';
    if (matriz[0][2] == 'O' && matriz[1][2] == 'O' && matriz[2][2] == 'O')
        return 'O';

    if (matriz[0][0] == 'O' && matriz[1][1] == 'O' && matriz[2][2] == 'O')
        return 'O';
    if (matriz[0][2] == 'O' && matriz[1][1] == 'O' && matriz[2][0] == 'O')
        return 'O';

    return 'e';
}

int main(){
     
   while (s == true){
         Jogo();    
        while (true){
            n++;
            Entrada();
            Jogo();
                if (Vencedor() == 'X'){
                    cout << "Jogador X Venceu!\n\n";
                    break;
                }
                else if(Vencedor() == 'O'){
                    cout << "Jogador O Venceu!\n\n";
                   break; 
                }
                else if(Vencedor() == 'e' &&     n == 9){
                    cout << "Deu empate!\n\n";
                    break;
                }       
               Alterna();
        }
       cout << "Jogar novamente?\n(s/n): ";
        cin >> sair;
        
        if(sair == 's' || sair == 'S'){
            s = true;
        }
        else if(sair == 'n' || sair == 'N'){
            s = false;
            break;
        }
    }
    system("pause");
}

Edited by Daniel Soares
Correção na matriz

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Olá, acabei de criar uma conta justamente pra poder tentar te ajudar kkkk. Espero que já tenha conseguido a resposta, mas caso não tenha aqui vai uma. o system("cls") ,até onde eu sei, apenas irá limpar tudo o que foi escrito na tela (pelo usuário ou por você, através do printf) até o "system("cls")". O que você precisa é usar um "goto" no seu código ou, se quiser mais completo, use um "scanf" pra pegar um valor digitado pelo usuário e caso esse valor seja , por exemplo, 20, o "goto" irá fazer com que o usuário volte para um ponto de sua escolha no código. Aqui tem um exemplo em C de um código simples que eu fiz agora.

 

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>

main()
{
    setlocale(LC_ALL,"portuguese");
    
    int cont=0;
    char name[50];
    
    inicio:     // "goto" irá "jogar" o usuário para "inicio" caso a condição do if seja atendida
    
    printf("Insira um nome : ");
    setbuf(stdin,NULL);  // Limpa o buffer 
    gets(name);
    
    printf("Insira sua idade : ");
    scanf("%d",&cont);
    
    if(cont>18)    // Se a idade for maior do que 18, o if é ativado e, junto com ele, o "goto" também.
    {
        system("cls");
        goto inicio;
    }
    
    
    return 0;
}

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this