Hallo, also es geht um das Spiel Hangman.
Auf dem Fenster sieht man 3 editfeld. in das ertse also ERatewort tippt der eine spieler ein wort ein.
der 2 spieler muss in das 2 editfeld buchstaben eintippen.
Im 3 editfeld stehen dann fragezeichen (genauso viele fragezeichen wir buchstaben des wortes). wird ein buchstabe eraten so wir aus dem fragezaichen der richtige buchstabe.
das problem ist jedoch dass das nicht klappt. tippe ich ddddd im ratewort ein und in das 2. editfeld d dann kommt im 3. editfeld nicht die lösung.
bitte helft mir hier unten mein quelltext, danke im voraus
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83:
| unit UHaupt;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, URaetsel;
type TForm1 = class(TForm) LRatewort: TLabel; MainMenu1: TMainMenu; ERatewort: TEdit; LBuchstabe: TLabel; EBuchstabe: TEdit; BSetzen: TButton; ELoesungswort: TEdit; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure BSetzenClick(Sender: TObject); procedure ERatewortExit(Sender: TObject); procedure ERatewortEnter(Sender: TObject); procedure EBuchstabeEnter(Sender: TObject); private public end;
var Form1: TForm1; Raetsel: TRaetsel; swort:string; i:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Raetsel:= TRaetsel.Create; i:=0; end;
procedure TForm1.FormDestroy(Sender: TObject); begin Raetsel.free; end;
procedure TForm1.BSetzenClick(Sender: TObject); begin Raetsel.BuchstabeSenden(EBuchstabe.Text); end;
procedure TForm1.ERatewortExit(Sender: TObject); var leange,i:integer; begin swort:=eRatewort.text; raetsel.Init(swort); Ebuchstabe.setfocus; if Raetsel.pruefen=true then begin showmessage('falsch'); ERatewort.setfocus; Eratewort.clear; end else eloesungswort.text:=Raetsel.Zielwort;
end;
procedure TForm1.ERatewortEnter(Sender: TObject); begin ERatewort.Text:=''; eLoesungswort.text:=''; EBuchstabe.text:=''; end;
procedure TForm1.EBuchstabeEnter(Sender: TObject); begin ebuchstabe.Clear; end;
end. |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80:
| unit URaetsel;
interface type TRaetsel=class (Tobject) private sWort, sZielwort:string; byVersuche:byte; procedure ZielWortSetzen;
public constructor create; procedure Init (sSuchwort:string); function Zielwort:string; procedure BuchstabeSenden(sBuchstabe:string); function Rateversuche:byte; function pruefen:boolean; end;
implementation constructor TRaetsel.create; begin end;
procedure TRaetsel.ZielWortSetzen; var i,laenge:integer; begin laenge:=length(sWort); For i:=1 To laenge do sZielwort:=sZielwort+'?'; end;
procedure TRaetsel.Init (sSuchwort:string); begin swort:=sSuchwort; sZielwort:=''; byversuche:=0; end;
function TRaetsel.Zielwort:string; begin Zielwortsetzen; Zielwort:=sZielwort; end;
procedure TRaetsel.BuchstabeSenden(sBuchstabe:string); var iStelle:integer; busta:string; begin byVersuche:=byVersuche+1; If sBuchstabe=sWort then sZielwort:=sWort else begin For iStelle:=1 to length(swort) do begin busta:=copy(sWort,iStelle,1); If busta=sBuchstabe then begin delete(sZielwort,iStelle,1); insert(sBuchstabe,sZielwort,iStelle); end; end; end; end; function TRaetsel.Rateversuche:byte; begin Rateversuche:=byVersuche; end;
function TRaetsel.pruefen:boolean; var iStelle:integer; busta:string; begin pruefen:=false; for iStelle:=1 to length(swort) do begin busta:=copy(sWort,iStelle,1); If(busta<'A') or (busta >'Z') then pruefen:=true; end; end;
end. |