Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida: Como fazer um programa rodar novamente?


Daniel Soares

Pergunta

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");
}

Editado por Daniel Soares
Correção na matriz
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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;
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...