Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi hangman programm - delphi 3 (https://www.delphipraxis.net/114056-hangman-programm-delphi-3-a.html)

Klaus01 19. Mai 2008 20:14

Re: hangman programm - delphi 3
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Abend,

habe mal in deinem Quelltext herumgeschrieben.
- eine ImageList hinzugefügt (die Bilder mußt Du noch selber hineinladen)
- einen Fehlerzähler implementiert (wie Rollstulfahrer schon beschrieben hat)

Was passiert wenn der Galgen fertig ist (nach 12 Fehlversuchen)?
Das mußt Du auch noch implementieren.

Meine Schritte habe ich soweit wie möglich kommentiert.

Grüße
Klaus

Eduard1 19. Mai 2008 21:06

Re: hangman programm - delphi 3
 
Danke an euch, wir werden uns morgen oder am Mittwoch mal im Informatik-Unterricht dransetzen und dannach Bericht erstatten :)

Eduard1 27. Mai 2008 17:54

Re: hangman programm - delphi 3
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
Erstmals danke an alle die uns weiter geholfen haben.
Im Moment funktioniert das Programm, jedoch haben wir mit dem Zeichnen wir noch ein paar Schwierigkeiten.
Wir können nur einen Stirch beim 1. Fehler zeichen.
Beim 2. Fehler zeichnet das Programm nicht weiter und reagiert überhaupt nicht.
Es wäre sehr nett, wenn sich jemand nochmal unseren Quelltext angucken könnte. Wir kommen leider kein Stück weiter.

Viele Grüße
Eduard

bigben37 27. Mai 2008 18:14

Re: hangman programm - delphi 3
 
Delphi-Quellcode:
     
with ImBild.Canvas do
  begin
    if falsch = 1
    then
    moveto (50,150);
    lineto (50,250);

    if falsch = 2
    then
    moveto (50,250);
    lineto (150,250);
Da fehlen begin und end.

Delphi-Quellcode:
     
if falsch = 1 then
  begin
    moveto (50,150);
    lineto (50,250);
  end;

if falsch = 2 then
  begin
    moveto (50,150);//50, 250 gibt es nicht, da das TImage nur eine Höhe von 225 Pixeln hat
    lineto (150,150);
  end;

DeddyH 27. Mai 2008 18:19

Re: hangman programm - delphi 3
 
Außerdem würde ich das ganze Zeichnen ins OnPaint des Image verschieben (noch besser statt des Image eine Paintbox nehmen) und dort falsch auswerten.

[edit] Ich meine damit natürlich die Variable "falsch" :lol: [/edit]

Klaus01 27. Mai 2008 18:19

Re: hangman programm - delphi 3
 
Hallo,
in Deinem Code fehler so einige begin und ends.

Wenn Du in einer if Abfrage mehrere Befehle ausführen wills
solltest Du diese in begin end einfassen.
Ansonsten wird nur der erste Befehl ausgeführt.
Der zweite wird unabhängig vom Ausgang der if Abfrage
im ausgegührt.

Delphi-Quellcode:
if erraten = 0  then
  begin
    falsch := falsch + 1;
    LbFehler.Caption := IntToStr(falsch);
    with ImBild.Canvas do
      begin
        if falsch = 1 then
          begin // fehlt bei Dir
            moveto (50,150);
            lineto (50,250);
          end // fehlt auch bei Dir

      end;
    end;
Übersichtlicher würde es auch, wenn Du case statements verwenden würdest:

Delphi-Quellcode:
with ImBild.Canvas do
  begin
    ...
    case falsch of
      1: begin
            ...  
          end;
      2: begin
            ...
          end;
    end //case
  end // with
Grüße
Klaus

DeddyH 27. Mai 2008 18:23

Re: hangman programm - delphi 3
 
case halte ich in diesem Fall nicht für sinnvoll. Ich würde das eher so machen:
Delphi-Quellcode:
procedure TFrmHangman.ImBildPaint(Sender: TObject);
begin
  ImBild.Canvas.Pen.Color := clBlack;
  if falsch > 0 then
    begin
      ImBild.Canvas.moveto (50,150);
      ImBild.Canvas.lineto (50,220);
    end;
  if falsch > 1 then
    begin
      ImBild.Canvas.moveto (50,220);
      ImBild.Canvas.lineto (80,220);
    end;
end;

bigben37 27. Mai 2008 18:26

Re: hangman programm - delphi 3
 
Zitat:

Zitat von DeddyH
case halte ich in diesem Fall nicht für sinnvoll. Ich würde das eher so machen:
Delphi-Quellcode:
procedure TFrmHangman.ImBildPaint(Sender: TObject);
begin
  ImBild.Canvas.Pen.Color := clBlack;
  if falsch > 0 then
    begin
      ImBild.Canvas.moveto (50,150);
      ImBild.Canvas.lineto (50,220);
    end;
  if falsch < 1 then
    begin
      ImBild.Canvas.moveto (50,220);
      ImBild.Canvas.lineto (80,220);
    end;
end;

Ich hab noch nie einen Hangman gesehen, der nur aus zwei Strichen besteht.
Ich denke, die anderen Zeichenschritte hat Eduard noch nicht in den Code geschrieben.

DeddyH 27. Mai 2008 18:33

Re: hangman programm - delphi 3
 
Das war mir auch klar, ich schreib doch anderen nicht das Programm fertig, es ging mir um das Prinzip *koppschüttel*

Klaus01 27. Mai 2008 18:44

Re: hangman programm - delphi 3
 
Warum in dem Zitat von bigben37 das steht:
Delphi-Quellcode:
if falsch < 1 then
und im Original von DeddyH
Delphi-Quellcode:
if falsch > 1 then
ist mir ein Rätsel.

Aber es macht schon Sinn immer auf if falsch > x zu prüfen,
denn dann wird die Grafik immer wieder neu gezeichnet.

Im Fall von Case werden nur die neuen Teile des Hangmans gezeichnet.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.
Seite 2 von 3     12 3      

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