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

Jogo da Lebre e da Tartaruga


Mateus Fontanini

Pergunta

Gente, foi proposto pelo meu professor, o seguinte exercicio:

BÔNUS:

(Simulação: a tartaruga e a lebre) Neste problema, você recriará a clássica corrida da tartaruga e da lebre. Você utilizará geração de números aleatórios

para desenvolver uma simulação desse memorável evento.

Nossos competidores começam a corrida no quadrado 1 de 70 quadrados. Cada quadrado representa uma possível posição ao longo do percurso da competição.

A linha de chegada está no quadrado 70. O primeiro competidor a alcançar ou passar o quadrado 70 é recompensado com um cesto de cenouras frescas e alface.

O percurso envolve subir uma montanha escorregadia, então ocasionalmente os competidores perdem terreno.

Um relógio emite um tique por segundo. A cada tique do relógio, seu aplicativo deve ajustar a posição dos animais de acordo com as regras na

Utilize variáveis para monitorar a posição dos animais (isto é, os números de posição são 1-70). Inicie cada animal na posição 1 (a 'partida').

Se um animal escorregar para a esquerda do quadrado 1, mova-o novamente para o quadrado 1.

Gere as percentagens da tabela abaixo, produzindo um inteiro aleatório i no intervalo 1 <= i <= 10. Para a tartaruga, realize uma 'caminhada rápida' quando 1 <= i <= 5, um 'escorregão' quando 6 <= i <= 7 ou uma 'caminhada lenta' quando 8 <= i <= 10. Utilize uma técnica semelhante para mover a lebre.

Comece a corrida exibindo

BANG !!!!!

A corrida começou !!!!!

Então, para cada tique do relógio (istó é, para cada repetição de um loop), exiba uma linha de 70 posições mostrando a letra T na posição da tartaruga e

a letra L na posição da lebre. Ocasionalmente os competidores aterrisarão no mesmo quadrado. Nesse caso, a tartaruga morde a lebre e seu aplicativo deve

exibir AI!!! começando nessa posição. Todas as outras posições de saída diferentes de T, L ou AI!!! (no caso de um empate) devem estar em branco.

Depois de cada linha a ser exibida, teste se o animal alcançou o quadrado 70. Se tiver alcançado, exiba o vencedor e termine a aplicação. Se a tartaruga

ganhar, exiba A TARTARUGA VENCEU!!!é!!! Se a lebre ganhar, exiba A LEBRE GANHOU. OH!

Se as duas ganharem na mesma hora, você pode querer favorecer a tartaruga (a 'coitadinha') ou pode querer exibir OCORREU UM EMPATE. Se nenhum animal

ganhar, realize o loop novamente para simular o próximo tique do relógio. Quando você estiver pronto para executar seu aplicativo, monte um grupo de fãs para

observar a corrida. Você se surpreenderá com a empolgação da sua audiência!

ANIMAL Tipo de movimento % do tempo Movimento Real

Tartaruga Caminhada rápida 50% 3 quadrados à direita

Escorregão 20% 6 quadrados à esquerda

Caminhada lenta 30% 1 quadrados à direita

Lebre Dormir 20% Nenhum movimento

Salto grande 20% 9 quadrados à direita

Escorregão grande 10% 12 quadrados à esquerda

Salto pequeno 30% 1 quadrados à direita

Escorregão pequeno 20% 2 quadrados à esquerda

Consegui fazê-lo, entretanto, meu professor quer que a cada passo que a LEBRE ou a Tartaruga de, apague o seu passo anterior, mas não estou conseguindo fazer! Alguém pode me ajudar? Obrigado!!!

Meu programa ficou:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

using namespace std;
#define CHEGADA 70

void gotoxy(int x, int y)
{
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD)
    {
        x-1,y-1
    });

}


int main(void)
{


    cout << "                            333333333                            " << endl;
    cout << "                                  333                            " << endl;
    cout << "                                  333                            " << endl;
    cout << "                            333333333                            " << endl;
    cout << "                                  333                            " << endl;
    cout << "                                  333                            " << endl;
    cout << "                            333333333                            " << endl;

    Sleep(400);
    system("cls");

    cout << "                            222222222                            " << endl;
    cout << "                                  222                            " << endl;
    cout << "                                  222                            " << endl;
    cout << "                            222222222                            " << endl;
    cout << "                            222                                  " << endl;
    cout << "                            222                                  " << endl;
    cout << "                            222222222                            " << endl;

    Sleep(400);
    system("cls");

    cout << "                                 1111                            " << endl;
    cout << "                               11 111                            " << endl;
    cout << "                             11   111                            " << endl;
    cout << "                                  111                            " << endl;
    cout << "                                  111                            " << endl;
    cout << "                                  111                            " << endl;
    cout << "                                  111                            " << endl;

    Sleep(400);
    system("cls");

    cout << "    BBBBBBBB      AAAAAAAAAAA    NNN         NN      GGGGGGGGGGG    " << endl;
    cout << "    B       B     A         A    NN N        NN      G              " << endl;
    cout << "    B       B     A         A    NN  N       NN      G              " << endl;
    cout << "    B      B      A         A    NN   N      NN      G              " << endl;
    cout << "    BBBBBBB       AAAAAAAAAAA    NN    N     NN      GGGGGGGGGGG    " << endl;
    cout << "    B       B     AAAAAAAAAAA    NN     N    NN      G         G    " << endl;
    cout << "    B       B     A         A    NN      N   NN      G         G    " << endl;
    cout << "    B      B      A         A    NN       N  NN      G         G    " << endl;
    cout << "    BBBBBB        A         A    NN        NNNN      GGGGGGGGGGG    " << endl;
    Sleep(1000);
    system("cls");
    gotoxy(28,3);
    cout << " O jogo começou!!!";
    gotoxy(1,6);
    cout <<"-----------------------------------------------------------------------------\n";
    gotoxy(1,10);
    cout <<"-----------------------------------------------------------------------------\n";

    char linha1[70];
    char linha2[70];
    int moveT, moveL;
    int contT=0, contL=0;

    while (contT<70 && contL<70)
    {
        if(contT==0)
        {
            gotoxy(1,8);
            linha1[contT]='T'; // inicia a tartaruga
            cout << (linha1[contT]);
            moveT=rand()%100;
            Sleep(1000);
        }else{

        gotoxy (contT,8);
        linha1[contT]='T'; // inicia a tartaruga
        cout << (linha1[contT]);
        linha1[contT]=' '; // limpa posiçao apos exibir
        moveT=rand()%100;
        Sleep(1000);
        }

        if (moveT==0||moveT==1)
            contT=contT-6;
        else if (moveT==2||moveT==3||moveT==4)
            contT=contT+1;
        else
            contT=contT+3;

        if (contT<0)
            contT=0; // termina verificação da tartaruga
        if (contL==0){
        gotoxy(1,8);
        linha2[contL]='L'; // inicia lebre
        cout << (linha2[contL]);
        linha2[contL]=' '; // limpa posição
        moveL= rand()%100;
        Sleep(1000); }
        else{
        gotoxy(contL,8);
        linha2[contL]='L'; // inicia lebre
        cout << (linha2[contL]);
        linha2[contL]=' '; // limpa posição
        moveL= rand()%100;
        Sleep(1000);
        }

        if (moveL==0) // escorregao grande
            contL=contL-12;
        else if (moveL==1||moveL==2) //domindo
            contL=contL;
        else if (moveL==3||moveL==4) //salto grande
            contL=contL+9;
        else if (moveL==5||moveL==6)//escorregao pequeno
            contL=contL-2;
        else
            contL=contL+1;

        if (contL<0)
            contL=0; //termina lebre
    } //fim laço while

gotoxy(10,20);
    if (contT>=70)
        cout << ("A tartaruga vence!!!");
    else if (contL>=70)
        cout <<("A Lebre vence!!!");
    else
        cout <<("Empate");
}

Consegui fazê-lo, entretanto, meu professor quer que a cada passo que a LEBRE ou a Tartaruga de, apague o seu passo anterior, mas não estou conseguindo fazer! Alguém pode me ajudar? Obrigado!!!

Editado por Durub
Adicionar tags code [Durub]
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...