-
Notifications
You must be signed in to change notification settings - Fork 0
/
Guessgame [Fonte].txt
121 lines (118 loc) · 3.53 KB
/
Guessgame [Fonte].txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
program guessgame;
function Status(n: integer; chute: integer) : string;
begin
if chute < (n-9) then
status := 'MF'
else if chute < (n-6) then
status := 'FR'
else if chute < (n-3) then
status := 'QT'
else if chute <= (n+3) then
status := 'MQ'
else if chute <= (n+6) then
status := 'QT'
else if chute <= (n+9) then
status := 'FR'
else
status := 'MF';
end;
procedure emiteMensagem(var e1, e2: string);
begin
case e1 of
'MQ': case e2 of
'MQ': write(' Continua muito quente.');
'QT': write(' Oops, deu uma esfriada, mas continua quente.');
'FR': write(' Oops, agora estah frio.');
'MF': write(' OOps, agora estah muito frio.');
else write(' Estah muito quente.');
end;
'QT': case e2 of
'MQ': write(' Oops, agora estah muito quente.');
'QT': write(' Continua quente.');
'FR': write(' Oops, agora estah frio.');
'MF': write(' Oops, agora estah muito frio.');
else write(' Estah quente.');
end;
'FR': case e2 of
'MQ': write(' Oops, agora estah muito quente.');
'QT': write(' Oops, agora estah quente.');
'FR': write(' Continua frio.');
'MF': write(' Oops, agora estah muito frio.');
else write(' Estah frio.');
end;
'MF': case e2 of
'MQ': write(' Oops, agora estah muito quente.');
'QT': write(' Oops, agora estah quente.');
'FR': write(' Oops, deu uma esquentada, mas continua frio.');
'MF': write(' Continua muito frio.');
else write(' Estah muito frio.');
end;
end;
end;
var
acertos, chute, n, j, erro: 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. Entao 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, erro);
if (erro <> 0) or (chute < 1) or (chute > 100) then
begin
erro := -1;
writeln('Valor invalido! Tente de novo.');
writeln;
write ('Tentativa ', j, ': ');
end;
until (erro = 0);
// se acertou:
if chute = 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.