Ola,sou novo no fórum e também na área de programação e estou com uma dúvida e precisando de ajuda em um código que acredito eu ser simples, estou tentando executar um jogo da forca utilizando arquivo binário e parece que a variável palavraCerta não está recebendo nenhuma das palavras cadastradas, alguém poderia dar uma olhada no código e me apontar o erro(s) do código? segue o código abaixo:
Program pzim ;
type biblioteca = record
palavra : string;
dica : string;
end;
type declareg = file of biblioteca;
{------------------------------------------------------------------------------------------------}
procedure criarArquivo (var arquivoPalavras : declareg);
begin
{$I-}
reset(arquivoPalavras);
if IOResult <> 0 then
rewrite(arquivoPalavras);
{$I+}
end;
{-----------------------------------------------------------------------------------------------}
procedure inserirPalavras (var arquivoPalavras : declareg);
var PeD : biblioteca;
cont : integer;
begin
for cont:= 1 to 2 do
begin
clrscr;
write('Digite uma palavra: ');
read(PeD.palavra);
seek (arquivoPalavras, filesize(arquivoPalavras));
write(arquivoPalavras,PeD);
write('Digite uma dica: ');
read(PeD.dica);
seek (arquivoPalavras, filesize(arquivoPalavras));
write(arquivoPalavras,PeD);
end;
end;
{-----------------------------------------------------------------------------------------------}
procedure adivinhar(var arquivoPalavras : declareg);
var vetorpalav: array [1..2] of string;
palavraCerta, palavraParcial:string;
tentativa :Char;
qtdTentativas, X, opc :Integer;
acertouPalavra: Boolean;
begin
qtdTentativas := 8;
repeat
writeln;
writeln (' Jogo da Forca');
writeln;
write (' Digite de 1 a 2 para escolher uma palavra: ');
readln (opc);
until (opc >= 1) and (opc <= 2);
palavraCerta := vetorpalav[opc];
for X := 0 to Length(palavraCerta) do
begin
if (palavraCerta[X] = ' ') then
palavraParcial[X] := ' '
else if (palavraCerta[X] = '-') then
palavraParcial[X] := '-'
else
palavraParcial[X] := '*';
end;
repeat
ClrScr;
writeln;
writeln (' ',palavraParcial);
writeln;
acertouPalavra := true;
for X := 1 to Length (palavraCerta) do
if palavraParcial[X] = '*' then
acertouPalavra := false;
if acertouPalavra = true then
begin
writeln (' Parabens, voce acertou a palavra.');
readln;
break;
end
else if qtdTentativas > 0 then
begin
writeln (' Voce tem ', qtdTentativas, ' tentativas restantes.');
write (' Digite uma letra (letra minuscula): ');
tentativa := readkey;
if Pos(tentativa, palavraParcial) = 0 then
for X := 1 to Length(palavraCerta) do
begin
if (palavraCerta[X] = tentativa) then
begin
palavraParcial[X] := tentativa;
end
else if Pos(tentativa, palavraCerta) = 0 then
begin
qtdTentativas := qtdTentativas - 1;
break;
end;
end
else
qtdTentativas := qtdTentativas - 1;
end
else
begin
writeln (' Voce perdeu, tente novamente.');
readln;
break;
end;
until tentativa = Chr(27);
end;
{----------------------------------------------------------------------}
procedure Menu;
var opcao : integer;
arquivoPalavras : declareg;
begin
assign(arquivoPalavras,'C:\Forca.bin');
criarArquivo(arquivoPalavras);
repeat
clrscr;
writeln(' Forca ');
writeln('1 - Inserir Palavras');
writeln('2 - Jogar');
writeln('3 - Sair');
writeln('Opcao: ');
readln(opcao);
case opcao of
1: inserirPalavras(arquivoPalavras);
2: adivinhar(arquivoPalavras);
end;
until opcao = 3;
close(arquivoPalavras);
end;
Pergunta
Universo
Ola,sou novo no fórum e também na área de programação e estou com uma dúvida e precisando de ajuda em um código que acredito eu ser simples, estou tentando executar um jogo da forca utilizando arquivo binário e parece que a variável palavraCerta não está recebendo nenhuma das palavras cadastradas, alguém poderia dar uma olhada no código e me apontar o erro(s) do código? segue o código abaixo:
Program pzim ;
type biblioteca = record
palavra : string;
dica : string;
end;
type declareg = file of biblioteca;
{------------------------------------------------------------------------------------------------}
procedure criarArquivo (var arquivoPalavras : declareg);
begin
{$I-}
reset(arquivoPalavras);
if IOResult <> 0 then
rewrite(arquivoPalavras);
{$I+}
end;
{-----------------------------------------------------------------------------------------------}
procedure inserirPalavras (var arquivoPalavras : declareg);
var PeD : biblioteca;
cont : integer;
begin
for cont:= 1 to 2 do
begin
clrscr;
write('Digite uma palavra: ');
read(PeD.palavra);
seek (arquivoPalavras, filesize(arquivoPalavras));
write(arquivoPalavras,PeD);
write('Digite uma dica: ');
read(PeD.dica);
seek (arquivoPalavras, filesize(arquivoPalavras));
write(arquivoPalavras,PeD);
end;
end;
{-----------------------------------------------------------------------------------------------}
procedure adivinhar(var arquivoPalavras : declareg);
var vetorpalav: array [1..2] of string;
palavraCerta, palavraParcial:string;
tentativa :Char;
qtdTentativas, X, opc :Integer;
acertouPalavra: Boolean;
begin
qtdTentativas := 8;
repeat
writeln;
writeln (' Jogo da Forca');
writeln;
write (' Digite de 1 a 2 para escolher uma palavra: ');
readln (opc);
until (opc >= 1) and (opc <= 2);
palavraCerta := vetorpalav[opc];
for X := 0 to Length(palavraCerta) do
begin
if (palavraCerta[X] = ' ') then
palavraParcial[X] := ' '
else if (palavraCerta[X] = '-') then
palavraParcial[X] := '-'
else
palavraParcial[X] := '*';
end;
repeat
ClrScr;
writeln;
writeln (' ',palavraParcial);
writeln;
acertouPalavra := true;
for X := 1 to Length (palavraCerta) do
if palavraParcial[X] = '*' then
acertouPalavra := false;
if acertouPalavra = true then
begin
writeln (' Parabens, voce acertou a palavra.');
readln;
break;
end
else if qtdTentativas > 0 then
begin
writeln (' Voce tem ', qtdTentativas, ' tentativas restantes.');
write (' Digite uma letra (letra minuscula): ');
tentativa := readkey;
if Pos(tentativa, palavraParcial) = 0 then
for X := 1 to Length(palavraCerta) do
begin
if (palavraCerta[X] = tentativa) then
begin
palavraParcial[X] := tentativa;
end
else if Pos(tentativa, palavraCerta) = 0 then
begin
qtdTentativas := qtdTentativas - 1;
break;
end;
end
else
qtdTentativas := qtdTentativas - 1;
end
else
begin
writeln (' Voce perdeu, tente novamente.');
readln;
break;
end;
until tentativa = Chr(27);
end;
{----------------------------------------------------------------------}
procedure Menu;
var opcao : integer;
arquivoPalavras : declareg;
begin
assign(arquivoPalavras,'C:\Forca.bin');
criarArquivo(arquivoPalavras);
repeat
clrscr;
writeln(' Forca ');
writeln('1 - Inserir Palavras');
writeln('2 - Jogar');
writeln('3 - Sair');
writeln('Opcao: ');
readln(opcao);
case opcao of
1: inserirPalavras(arquivoPalavras);
2: adivinhar(arquivoPalavras);
end;
until opcao = 3;
close(arquivoPalavras);
end;
Begin
Menu;
End.
Obrigado!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.