Ir ao conteúdo
  • Cadastre-se

Jogo de adivinha em Pascal


Posts recomendados

Alguém me ajuda nessa parte que esta logo abaixo, não estou conseguindo fazer, tentei mais da erro.

 

Sempre que o jogador repetir um chute que ele já tenha dado anteriormente, o programa deverá recusá-lo e emitir uma mensagem informando ao jogador sobre essa situação e pedindo para ele tentar outro chute. Obviamente, esse chute duplicata não deverá ser contabilizado com uma das 10 tentativas que o jogador tem direito. (SUGESTÃO: Utilizar um array de 10 elementos para armazenar os chutes do jogador.)


program guessgame;



function Status(n: integer; chute: integer) : string;
begin
  if chute < (n-18) then
     status := 'CG'
  else
  if chute < (n-15) then
     status := 'MF'
  else
   if chute < (n-12) then
      status := 'FR'
   else
    if chute < (n-9) then
     status := 'MO'
  else
    if chute < (n-6) then
       status := 'QT'
    else
     if chute < (n-3) then
        status := 'MQ'
     else
      if chute <= (n+3) then
         status := 'FV'
    else
     if chute <= (n+6) then
        status := 'MQ'
     else
     if chute <= (n+9) then
        status := 'QT'
        else
     if chute <= (n+12) then
         status := 'MO'
    else
    if chute <= (n+15) then
         status := 'FR'
    else
    if chute <= (n+18) then
         status := 'MF'
    else
        status := 'CG';
end;


procedure emiteMensagem(var e1, e2: string);
begin
  case e1 of
   'FV': case e2 of
          'FV': writeln('Ainda continua fervendo');
          'MQ': writeln('Oops, deu uma pequena esfriada, agora está muito quente.');
          'QT': writeln('Oops, deu uma esfriada, agora esta quente.');
          'MO': writeln('Oops, agora você esta morno.');
          'FR': writeln('Oops, esfriou mais ainda ,agora ficou frio.');
          'MF': writeln('Oops, esfriou muito, agora ficou muito frio.');
          'CG': writeln('Oops, Agora esfriou de vez, esta congelando.');
          else writeln('esta Fervendo.');
         end;


  'MQ': case e2 of
          'FV': writeln('Oops, esta pegando fogo, agora estar fervendo.');
          'MQ': writeln('Ainda continua muito quente.');
          'QT': writeln('Oops, deu uma esfriada, mas ainda esta quente.');
          'MO': writeln('Oops, Agora esfrio, mas ainda esta morno.');
          'FR': writeln('Oops, agora ficou frio.');
          'MF': writeln('Oops, agora ficou muito frio.');
          'CG': writeln('Oops, Agora esfriou de vez, esta congelando.');
          else writeln('esta muito quente.');
         end;
   'QT': case e2 of
          'FV': writeln('Oops, esta pegando fogo, agora estar fervendo.');
          'MQ': writeln('Oops, deu uma esquentada e agora ficou muito quente.');
          'QT': writeln('Ainda continua quente.');
          'MO': writeln('Oops, Agora esfrio mais ainda, esta morno.');
          'FR': writeln('Oops, deu uma esfriada e agora ficou frio.');
          'MF': writeln('Oops, deu uma baita esfriada e agora ficou muito frio.');
          'CG': writeln('Oops, Agora esfriou de vez, esta congelando.');
          else writeln('esta quente.');
         end;
   'MO': case e2 of
          'FV': writeln('Oops, esta pegando fogo, agora esta fervendo.');
          'MQ': writeln('Oops, deu uma baita esquentada e agora ficou muito quente.');
          'QT': writeln('Oops, deu uma esquentada e agora ficou quente.');
          'MO': writeln('Ainda continua morno');
          'FR': writeln('Oops, esfriou um pouco, agora esta frio.');
          'MF': writeln('Oops, deu uma esfriada e agora ficou muito frio.');
          'CG': writeln('Oops, agora esfriou muito e esta congelando.');
          else writeln('esta morno.');
           end;


   'FR': case e2 of
          'FV': writeln('Oops, esta pegando fogo, agora esta fervendo.');
          'MQ': writeln('Oops, deu uma baita esquentada e agora ficou muito quente.');
          'QT': writeln('Oops, deu uma esquentada e agora ficou quente.');
          'MO': writeln('Oops, deu uma pequena esquentada, agora ficou morno.');
          'FR': writeln('Ainda continua frio.');
          'MF': writeln('Oops, deu uma esfriada e agora ficou muito frio.');
          'CG': writeln('Oops, deu uma baita esfriada, agora esta congelando.');
          else writeln('esta frio.');
           end;
   'MF': case e2 of
          'FV': writeln('Oops, esta pegando fogo, agora esta fervendo.');
          'MQ': writeln('Oops, deu uma baita esquentada e agora ficou muito quente.');
          'QT': writeln('Oops, de uma esquentada e agora ficou quente.');
          'MO': writeln('Oops, esquentou mais um pouco, mas agora esta mortno.');
          'FR': writeln('Oops, esquentou um pouco, mas ainda esta frio.');
          'MF': writeln('Ainda continua muito frio.');
          'CG': writeln('Oops, deu uma baita esfriada, agora esta congelando.');
           else writeln('esta muito frio.');
           end;
   'CG': case e2 of
          'FV': writeln('Oops, esta pegando fogo, agora esta fervendo.');
          'MQ': writeln('Oops, deu uma baita esquentada e agora ficou muito quente.');
          'QT': writeln('Oops, deu uma esquentada e agora ficou quente.');
          'MO': writeln('Oops, ficou um pouco quente, agora esta morno.');
          'FR': writeln('Oops, esquentou um pouco , mas ainda esta frio.');
          'MF': writeln('Oops, esquentou bem pouco, mas ainda esta muito frio.');
          'CG': writeln('Ainda continua congelando')
          else writeln('esta Congelando.');
           end;
         end;
  end;
var
k: array [1..10] of integer;
acertos, n, j, chute, erro, p: integer;
e1, e2, resp: string;


begin


// gerar número aleatório entre 1 e 100
randomize;
n := random(100);
// zerar contador de acertos
acertos := 0;
// apresentar jogo ao usuãrio
writeln('voce tem 10 chances de acertar o numero que eu estou pensando.');
writeln('Trata-se de um valor entre 1 e 100. então vamos la.');
writeln;
// executar laço de 10 tentativas:
for j := 1 to 10 do
begin
  // < ler (chute) >
  write ('Tentativa ', j, ': ');
  repeat
    readln(resp);
    val(resp, chute[k], erro);
    if erro <> 0 or <> k then
    begin
       writeln('Valor invalido, ou você já chutou esse numero!');
       write ('Tente de novo: ');
    end;
  until (erro = 0) or (chute[k] = k) ;
  // < se acertou: >
  if chute[k] = n then
  begin
  // < parabenizar o usuário >
  writeln;
  writeln('Parabens !');
  // < incrementar contador de acertos >
  inc(acertos);
  // < quebrar laço >
  break;
  end
  // < senão: >
  else
  begin
    // < determinar status >
    if j = 1 then              // determinar estado1
    begin
       e1 := status(n, chute);
       e2 := '';
    end
    else                       // determinar estado2
      e2 := status(n, chute);
    // < gerar mensagem correspondente >
   emiteMensagem(e1, e2);
    // < alterar status >
    if e2 <> '' then
        e1 := e2;
    writeln;
  end;
end;
// < comunicar resultado ao usuário >
writeln;
if acertos = 0 then
   writeln('Infelizmente, apos 10 tentativas, voce nao conseguiu acertar o numero ', n, '.')
else
   writeln('voce acertou o numero ', n, ' apos ', j, ' tentativas.');
readln;
end.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...