Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Hangman Problem (https://www.delphipraxis.net/91277-hangman-problem.html)

ection 2. Mai 2007 17:01


Hangman Problem
 
Ersteinmal ein Hallo an alle hier im Forum

Ich habe ein Problem mit der Programmierung des Spieles Hangman^^

ich hänge im Grunde genommen an dem Punkt, wo, wenn der richtige Buchstabe vom Benutzer eingeben wurde ,das Programm den Buchstaben in das Label einfügen soll

Hier mal etwas genauer ;)

x:= Length(suchwort);
for i=0 to x do
ratewort.caption:=ratewort.caption +'_ ';

Das pasiert beim Button und bei Key Press fügt der in ein Label ("Eingabe") den vom Benutzer gewählten Buchstaben ein..bis dahin geht alles aber jetzt kommt meint Problem.

proceduer OnkeyPress(...)

y:=Pos(key,suchwort);
if y > 0 then

Was soll hier jetzt hin?

else
showmessage('Nicht vorhanden')


Ich würde mich über eine Antwort sehr freuen, da die Frage mir recht zu schaffen macht :pale:
Vielleicht könntet ihr mir eine Erklärung zumindest vom Ansatz her geben

Danke! :D

Matze 2. Mai 2007 17:36

Re: Hangman Problem
 
Hi, herzlich willkommen!

Ich vermute, dich bist noch kein fortgeschrittener Programmierer, daher bleibe ich auf einem leichten (Anfänger-)Level und keinem performance-optimierten Code, was du aber nicht merken wirst. Ich hoffe, ich liege hier nicht falsch in meiner Annahme. ;)

Lösen könntest du es beispielsweise so in der Art:

Delphi-Quellcode:
// auktuelles Wort auf dem label ausgeben
procedure WortAusgeben(WortAngezeigt: string);
var
  i: Integer;
begin
  Form1.Ratewort.Caption := '';

  for i := 1 to Length(WortAngezeigt) do
  begin
    Form1.Ratewort.Caption := Form1.Ratewort.Caption + UpperCase(WortAngezeigt[i]);
    if i < Length(WortAngezeigt) then
      Form1.Ratewort.Caption := Form1.Ratewort.Caption + ' ';
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Wort := 'DasKannstDuJaIrgendwoSelbstZuweisen';

  // alles klein schreiben, damit der Vergleich nicht von
  // Groß-/Kleinbuchstaben abhängig ist
  Wort := LowerCase(Wort);
  Ratewort.Caption := '';

  for i := 1 to Length(Wort) do
    WortAngezeigt := WortAngezeigt + '_';

  WortAusgeben(WortAngezeigt);
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
  i: Integer;
begin
  if Pos(LowerCase(Key), Wort) > 0 then
  begin
    for i := 1 to Length(Wort) do
    begin
      if Wort[i] = Key then
        WortAngezeigt[i] := Key;
    end;
  end;
  WortAusgeben(WortAngezeigt);
end;
Viel Spaß.

Grüße, Matze


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz