AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hangman Problem

Ein Thema von Kudle · begonnen am 24. Mai 2011 · letzter Beitrag vom 26. Mai 2011
Antwort Antwort
Kudle

Registriert seit: 31. Okt 2010
14 Beiträge
 
#1

Hangman Problem

  Alt 24. Mai 2011, 13:46
Hallo ihr Delphi-Experten,

ich sitze schon seit Stunden an diesem Delphi-Projekt und komme nicht weiter.. Andauernd treten Fehler auf. Könnt ihr mir hierbei weiterhelfen? Natürlich habe ich alle unnötigen Prozeduren (die lediglich zur Behebung von Fehlern usw. dienen) nicht zusätzlich gepostet. Was muss ich noch verändern, damit das Programm funktioniert?

Delphi-Quellcode:
unit mHangman;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, Menus;

type
  THangman = class(TForm)
    imHangman: TImage;
    paWort: TPanel;
    laFehler: TLabel;
    edFehler: TEdit;
    edBuchstabe: TEdit;
    laBuchstabe: TLabel;
    mmMenue: TMainMenu;
    Start1: TMenuItem;
    Kategorie1: TMenuItem;
    Sport1: TMenuItem;
    Schule1: TMenuItem;
    Natur1: TMenuItem;
    Geografie1: TMenuItem;
    Fernsehen1: TMenuItem;
    Prominente1: TMenuItem;
    Bearbeiten1: TMenuItem;
    Loeschen1: TMenuItem;
    N1: TMenuItem;
    Ende1: TMenuItem;
    N2: TMenuItem;
    ber1: TMenuItem;
    Hilfe1: TMenuItem;
    N3: TMenuItem;
    Neue_Runde1: TMenuItem;
    Label1: TLabel;
    Label2: TLabel;
    edRichtig: TEdit;
    edFalsch: TEdit;
    Statistiken1: TMenuItem;
    N4: TMenuItem;
    tiEnabled: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Sport1Click(Sender: TObject);
    procedure Schule1Click(Sender: TObject);
    procedure Natur1Click(Sender: TObject);
    procedure Geografie1Click(Sender: TObject);
    procedure Fernsehen1Click(Sender: TObject);
    procedure Prominente1Click(Sender: TObject);
    procedure Neue_Runde1Click(Sender: TObject);
    procedure Ende1Click(Sender: TObject);
    procedure ber1Click(Sender: TObject);
    procedure Statistiken1Click(Sender: TObject);
    procedure Loeschen1Click(Sender: TObject);
    procedure tiEnabledTimer(Sender: TObject);
    procedure Hilfe1Click(Sender: TObject);
  private
    function Zufallswort: string;
    procedure Erzeugen(Suchwort:string;var Ratewort: string);
    function IstVorhanden (Zeichen: char; Wort: string):Boolean;
    procedure Ersetzen(Buchstabe: char; Suchwort: string; var Ratewort: string);
    procedure MenuLoeschen;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Hangman: THangman;
  Phase, Zahl, Fehlversuche: Integer;
  Suchwort, Ratewort: String;

implementation

{$R *.dfm}


procedure THangman.FormCreate(Sender: TObject);
begin
  Phase := 0;
  Fehlversuche := 0;
  Randomize;
  imHangman.Canvas.Brush.Color := clWhite;
  imHangman.Canvas.Fillrect(imHangman.Canvas.ClipRect)
end;

function THangman.Zufallswort: string;
begin
  case Zahl of
       0: Result := 'BERGETAPPE';
       ...
end;

procedure THangman.Erzeugen(Suchwort:string; var Ratewort: string);
var i: integer;
begin
  Ratewort := '';
  for i := 1 to Length(Suchwort) do
      Ratewort := Ratewort + '_ '
end;

function THangman.IstVorhanden (Zeichen: char; Wort: string):Boolean;
var i: integer;
    Vorhanden: Boolean;
begin
  i := 1;
  Vorhanden := False;
  while (Vorhanden = False) or (i<= Length(Wort)) do
    begin
          if Zeichen = Wort[i]
             then Vorhanden := True;
          i := i+1;
       end;
  if Vorhanden = False
     then begin
            Fehlversuche := Fehlversuche + 1;
            Phase := Phase + 1;
            with imHangman.Canvas do
                 case Phase of
                      1: begin
                           Pen.Width := 5;
                           Pie(10,410,110,270,110,340,10,340);
                           MoveTo(9,339);
                           Pen.Color := clWhite;
                           LineTo(110,339);
                           Pen.Color := clBlack
                         end;
                      2: begin
                           MoveTo(60,270);
                           LineTo(60,10)
                         end;
                      3: LineTo(250,10);
                      4: begin
                           MoveTo(60,50);
                           LineTo(100,10)
                         end;
                      5: begin
                           MoveTo(250,10);
                           LineTo(250,60)
                         end;
                      6: Ellipse(225,60,275,110);
                      7: begin
                           MoveTo(250,110);
                           LineTo(250,210)
                         end;
                      8: begin
                           MoveTo(250,160);
                           LineTo(205,115)
                         end;
                      9: begin
                           MoveTo(250,160);
                           LineTo(295,115)
                         end;
                     10: begin
                           MoveTo(250,210);
                           LineTo(215,270)
                         end;
                     11: begin
                           MoveTo(250,210);
                           LineTo(285,270)
                         end;
                 end;
          end;
  Result := Vorhanden;
end;

procedure THangman.Ersetzen(Buchstabe: char; Suchwort: string; var Ratewort: string);
var i: integer;
begin
  for i := 1 to Length(Suchwort) do
      if Suchwort[i] = Buchstabe
         then Ratewort[2*i-1] := Buchstabe;
end;

procedure THangman.FormKeyPress(Sender: TObject; var Key: Char);
var Zeichen, Unterstrich: Char;
begin
  Key := Upcase(Key);
  edBuchstabe.Text := '';
  if not (Key in ['A'..'Z'])
            then begin
                  Key := #00;
                  Messagebeep(mb_iconexclamation);
              end
         else begin
                edBuchstabe.Text := Key;
                IstVorhanden (Zeichen,Suchwort);
                Ersetzen (Zeichen,Suchwort, Ratewort);
                paWort.Caption := Ratewort;
                Unterstrich := '_';
              end;
end;

procedure THangman.MenuLoeschen;
begin
  Sport1.Checked := False;
  Schule1.Checked := False;
  Natur1.Checked := False;
  Geografie1.Checked := False;
  Fernsehen1.Checked := False;
  Prominente1.Checked := False
end;

procedure THangman.Sport1Click(Sender: TObject);
begin
  Zahl := Random(100);
  MenuLoeschen;
  Sport1.Checked := True
end;

procedure THangman.Neue_Runde1Click(Sender: TObject);
begin
  edBuchstabe.Enabled := True;
  MenuLoeschen;
  Loeschen1.Click;
  Fehlversuche := 0;
  Phase := 0;
  Zufallswort;
  Erzeugen(Suchwort,Ratewort);
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Hangman Problem

  Alt 24. Mai 2011, 13:48
Sag uns doch erst einmal, welche Fehler wo auftreten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Kudle

Registriert seit: 31. Okt 2010
14 Beiträge
 
#3

AW: Hangman Problem

  Alt 24. Mai 2011, 13:58
Hier stürzt das Programm ab, sobald ich einen Buchstaben eingebe:
if Zeichen = Wort[i]
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Hangman Problem

  Alt 24. Mai 2011, 14:00
Zitat:
while (Vorhanden = False) or (i<= Length(Wort)) do
-->
while not Vorhanden and (i<= Length(Wort)) do Sonst geht die Schleife ja weiter, solange Vorhanden false ist. Es müssen ja beide Bedingungen zutreffen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Kudle

Registriert seit: 31. Okt 2010
14 Beiträge
 
#5

AW: Hangman Problem

  Alt 26. Mai 2011, 14:18
Super! Danke =)
Jetzt stürzt es schonnmal nicht ab.
Das Wort kann er leider noch nicht erraten und die Buchstaben, die man bereits verwendet hat, wiederholen sich nur, aber ansonsten sieht es schonmal ganz gut aus!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 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