Jogo da Forca em Pascal - Ajuda

Medievil

Power Member
Boas tardes!

Antes de mais quero pedir desculpa pela criação deste post que pouco contribui para o fórum. Não é minha intenção incomodar alguém, mas sim de pedir ajuda.

A minha namorada está preocupada com um trabalho que lhe foi proposto pelo professor (Aplicações Informáticas B, 12º ano), que consiste na criação de um jogo da Forca em linguagem Pascal. Ela está bastante perdida de como fazer o trabalho e, por isso, queria pedir a alguém que dispusesse um pouco do seu tempo a tentar ajudar, o que seria bastante importante e ficaria profundamente agradecido.

À frente coloco um conjunto de instruções que ela recebeu do professor para a criação do programa e seria indispensável segui-las à regra:

"Pretende-se uma aplicação em pascal que implemente o jogo da forca. A aplicação deverá:
- Começar por solicitar a palavra;
- Limpar o ecrã;
- Colocar no ecrã o carater “_” por cada letra separando os carateres por espaços;
- Pedir a inserção de letras ao utilizador e verificar se fazem ou não parte da palavra introduzida. Após a verificação se a letra introduzida fizer parte da palavra terá de “rescrever” a palavra substituindo o carater “_” pela letra em questão ou contar como penalização;
- Considerar o máximo de 6 penalizações, à sétima perde;
- No final de cada introdução deverá ser questionado o utilizador se pretende tentar descobrir a palavra. Se tentar e falhar conta como penalização.
- Após o términos do jogo com uma palavra deverá ser dada a possibilidade de jogar novamente.
Nota: a dimensão máxima das palavra é de 10 carateres."

(a citação acabou)

Antes de vir aqui pedir a vossa ajuda, ela ainda fez isto:

Program Jogo_da_forca
Uses
Crt;
Var
Palavra: array[1..10] of string[10]
Letras,falhas,encontrou,I:string

Begin
Palavra:= ‘informatica’;
Letras:=0;
Falhas:=0;
I:=1;
Repeat
For I:=1 to LETRAS do

Begin
Write (‘_’);
Repeat
Writeln (‘Digite a letra correta’);
If letra
Readln (letra);
Letras:=Letras+1
I:=I+1
Until (A: ‘);
Encontrou:=false;
For I:=1 to LETRAS do

Begin
If letra:=A then

Begin
Write (letra ‘ ‘)
Encontrou:=true;
Write (‘_’);
End;
If Encontrou:=false then

Begin
Falhas:=Falhas+1;
Writeln (‘o número de falhas está em ‘,falhas);
End;
Until (Falhas=7) or (letras=letras)


No entanto, como já puderam verificar, está de longe correto. Por esse motivo, queria pedir a ajuda a alguém experiente na matéria, que não se importasse de dar uma mãozinha com isto.

Peço desculpa, mais uma vez, e obrigado pela vossa atenção :).
 
Última edição:
Boas,

meu deus ... ainda alguem dá Pascal? já nao via isso à anos (fizeste-me sentir tao velho :( )

tive prai 30 minutos para fazer esta poia (estou mesmo a ficar velho), mas já nao tenho paciencia para mais.

ajuda um pouquinho, sou bastante contra dar codigo feito, mas tinha saudades de ver o Pascal.

Program forca;

Uses Crt,sysutils;

var
palavra_chave : String;
letra : char;
palavra_acertada : packed array [1..10] of char;
chars_introduzidas : packed array [1..20] of char;
numero_chars,flag, count,tentativas,falhas : integer;
begin

flag := 0;
while flag = 0 do
begin
writeln('Inserir Palavra:');
readln(palavra_chave);
numero_chars := length(palavra_chave);
if numero_chars > 10 then
begin
writeln('ERRO:Numero de caracteres > 10');
flag := 0;
end
else if numero_chars < 1 then
begin
flag := 0;
writeln('ERRO:palavra vazia');
end
else
flag := 1;
end;

for count:= 1 to numero_chars do
begin
palavra_acertada[count] := '_' ;
end;

flag := 0;
tentativas := 1;
falhas := 0;
Writeln('<enter> para começar o jogo...');
readln();
ClrScr;
chars_introduzidas := '';

while flag = 0 do
begin

Writeln('Tentativa numero:',tentativas, ' Numero de caracteres: ',numero_chars );
Writeln(palavra_acertada);
Writeln('Caracteres introduzidos: ',chars_introduzidas);
write('Introduza letra: ');readln(letra);
Writeln(LastDelimiter(letra,palavra_chave));
flag := 1;
end;
end.
 
Começa por ser a primeira matéria da disciplina, com objectivo de introduzir a malta nova ao espírito.

Percebo o que queiras dizer com o "contra dar codigo feito", e não era de maneira alguma fugir ao trabalho mas pronto, precisava mesmo de uma mãozinha.

Agradeço profundamente e peço desculpa o tempo que lhe fiz perder. Ajudou bastante, muito obrigado :)
 
Começa por ser a primeira matéria da disciplina, com objectivo de introduzir a malta nova ao espírito.

Percebo o que queiras dizer com o "contra dar codigo feito", e não era de maneira alguma fugir ao trabalho mas pronto, precisava mesmo de uma mãozinha.

Agradeço profundamente e peço desculpa o tempo que lhe fiz perder. Ajudou bastante, muito obrigado :)

Boas. Não sei o que andas a estudar, mas não era suposto começares com algoritmos, e depois ir para algo como C?
Realmente pascal é um pouco inutilizado xD.
 
Boas. Não sei o que andas a estudar, mas não era suposto começares com algoritmos, e depois ir para algo como C?
Realmente pascal é um pouco inutilizado xD.

Aplicações Informáticas B, uma disciplina opcional no 12º ano que tem só como objectivo introduzir a malta a este mundo, e por isso, são só as bases e assim.
 
olha ainda bem que deu para ajudar um pouquinho :)

a parte inicial acho que ficou toda feita ... a parte final do ultimo While é que ficou bastante incompleta, mas vai dizendo os teus problemas e acabamos isso este fim de semana :)
 
Talvez tenha sido o suficiente. A gente vai ver ao pormenor este fim de semana e se precisar de mais alguma eu digo te alguma coisa. Muito obrigado :D
 
Back
Topo