• 0
Sign in to follow this  
Mateus Fontanini

Jogo da Lebre e da Tartaruga

Question

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!!!

Edited by Durub
Adicionar tags code [Durub]

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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