![]() |
Re: Galgenmännchen
Schon besser :wink:
Zunächst mal: TStringList ist ein Typ, dass heißt du musst eine Variable deklarieren vom Typ TStringList:
Delphi-Quellcode:
Dazu solltest du dir in der OH am besten die Kapitel über objektorientierte Programmierung durchlesen. Das brauchst du früher oder später (eher früher) sowieso.
var Woerterliste: TStringlist;
begin Woerterliste := TStringList.Create; Woerterlist.LoadFromFile('Woerter.txt'); // Achtung: hier Hochkommata, das ist ein String! Jetzt stehen in der Woerterliste die Zeilen aus der TXT drin. Und jetzt überleg mal genau, was willst du denn, was anschließend in AString (den du übrigens auch noch deklarieren musst) drinsteht? Einer der Strings aus Woerterliste. Dazu empfehle ich ![]() Und der Index soll zufällig sein (um ein zufälliges Wort auszuwählen), da liegst du mit random ja schon ganz richtig. Was für Parameter erwartet werden steht auch in der Hilfe. Anschließend kannst du mit Free die Stringlist (also Woerterliste) auch wieder freigeben. Wenn das alles geht ohne dass der Compiler meckert postest du nochmal deinen Code und wir machen weiter, würde ich vorschlagen. :???: //edit PS: Ich glaube kaum, dass du es schaffen wirst dass sich jemand vertrauensselig deine exe runterlädt. Häng deinen Source als attachment an, das geht besser. |
Re: Galgenmännchen
Delphi-Quellcode:
rocedure TForm1.btnWortwahlClick(Sender: TObject);
var Woerterliste: TStringlist; var Wort: array of string; begin Woerterliste := TStringList.Create; Woerterliste.LoadFromFile('Woerter.txt'); radomize; GBWort.Visible := true; end; |
Re: Galgenmännchen
Delphi-Quellcode:
´
procedure TForm1.btnWortwahlClick(Sender: TObject);
var Woerterliste: TStringlist; var Wort: String; begin Woerterliste := TStringList.Create; Woerterliste.LoadFromFile('Woerter.txt'); Wort := Woerterliste[Random(Woerterliste.Count - 1)]; end; so stimmts oder???? |
Re: Galgenmännchen
Es gibt in diesem Forum einen Edit-Button :warn: !
Delphi-Quellcode:
Da 0 <= Random(x) < x gilt, muss die Zeile
Wort := Woerterliste[Random(Woerterliste.Count - 1)];
Delphi-Quellcode:
heißen. Außerdem solltest du die Stringliste auch wieder freigeben, wenn sie nicht mehr benötigt wird.
Wort := Woerterliste[Random(Woerterliste.Count{ + 1 - 1})];
|
Re: Galgenmännchen
Exakt :)
Jetzt machen wir etwas, was sozusagen zum guten Stil gehört. Und zwar muss deine Woerterliste am Ende ja auch wieder freigegeben werden. Du brauchst sie ja nicht mehr, und sie frisst nur noch Speicher. (Das ist nicht das was ich meinte, das Freigeben gehört zum Pflichprogramm!). Um sicherzustellen, dass dies auf jeden Fall geschieht, auch wenn zwischendrin ein Fehler auftreten sollte (z.B. Datei nicht gefunden o.ä.), kapselt man das in einen try..finally..end Block:
Delphi-Quellcode:
Was hast du jetzt als nächstes vor?
begin
Woerterliste := TStringList.Create; try Woerterliste.LoadFromFile('Woerter.txt'); Wort := Woerterliste[Random(Woerterliste.Count - 1)]; finally Woerterliste.Free; end; end; |
Re: Galgenmännchen
Delphi-Quellcode:
so jetzt hab ich doch für jedes Zeichen aus dem Wort eine Variable
begin
Woerterliste := TStringList.Create; try Woerterliste.LoadFromFile('Woerter.txt'); Wort := Woerterliste[Random(Woerterliste.Count{ + 1 - 1})]; finally Woerterliste.Free; Wort[1] := 'A'; Wort[2] := 'B'; Wort[3] := 'C'; Wort[4] := 'D'; Wort[5] := 'E'; Wort[6] := 'F'; Wort[7] := 'G'; Wort[8] := 'H'; Wort[9] := 'I'; Wort[10] := 'J'; Wort[11] := 'K'; Wort[12] := 'L'; GBWort.Visible := true; end; |
Re: Galgenmännchen
jetzt habe ich halt das Problem wie ich es einstellen kann das immer abwechselt P1 und P2 dran ist
|
Re: Galgenmännchen
Hast du das auch mal ausprobiert?
Ich vermute nicht, dann wäre dir nämlich aufgefallen, dass du stattdessen die Zeichen 2 bis 13 mit den ersten zwölf Buchstaben des Alphabets überschrieben hast. Wir sind hier alle gerne bereit dir zu helfen, aber du musst dir 1. schon selber Gedanken machen und 2. auch mal ein bisschen arbeiten, experimentieren, ausprobieren. Wenn du eine Idee hast, probiere sie aus, und wenn dann irgendwas nicht funktioniert, dann poste. |
Re: Galgenmännchen
Delphi-Quellcode:
ok so muss es aussehen. :wall:
procedure TForm1.btnWortwahlClick(Sender: TObject);
var Woerterliste: TStringlist; var Wort, A, B, C, D, E, F, G, H, I, J, K, L: String; begin Woerterliste := TStringList.Create; try Woerterliste.LoadFromFile('Woerter.txt'); Wort := Woerterliste[Random(Woerterliste.Count{ + 1 - 1})]; finally Woerterliste.Free; A := Wort[1]; B := Wort[2]; C := Wort[3]; D := Wort[4]; E := Wort[5]; F := Wort[6]; G := Wort[7]; H := Wort[8]; I := Wort[9]; J := Wort[10]; K := Wort[11]; L := Wort[12]; GBWort.Visible := true; end; end; Ich habe für alles eine Lösung nur für die 2 Spieler nicht!!! Könnte man das mit einer Procedur/Spieler machen? der jetztige code sieht so aus
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; Datei1: TMenuItem; N1: TMenuItem; Beenden1: TMenuItem; Neu1: TMenuItem; lblSpieler1: TLabel; edtNameS1: TEdit; lblSpieler2: TLabel; edtNameS2: TEdit; btnStart: TButton; lblName1: TLabel; lblName2: TLabel; PBP1: TPaintBox; PBP2: TPaintBox; btnWortwahl: TButton; GBBuchstaben: TGroupBox; btnF: TButton; btnE: TButton; btnB: TButton; btnG: TButton; btnA: TButton; btnC: TButton; btnD: TButton; btnM: TButton; btnL: TButton; btnK: TButton; btnJ: TButton; btnI: TButton; btnH: TButton; btnS: TButton; btnR: TButton; btnO: TButton; btnT: TButton; btnN: TButton; btnP: TButton; btnQ: TButton; btnV: TButton; btnW: TButton; btnX: TButton; btnY: TButton; btnZ: TButton; btnU: TButton; GBWort: TGroupBox; lblString1: TLabel; lblString2: TLabel; lblString3: TLabel; lblString4: TLabel; lblString6: TLabel; lblString5: TLabel; lblString7: TLabel; lblString8: TLabel; lblString9: TLabel; lblString10: TLabel; lblString11: TLabel; lblString12: TLabel; procedure btnStartClick(Sender: TObject); procedure Beenden1Click(Sender: TObject); procedure Neu1Click(Sender: TObject); procedure FormOnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure btnAClick(Sender: TObject); procedure btnBClick(Sender: TObject); procedure btnCClick(Sender: TObject); procedure btnDClick(Sender: TObject); procedure btnEClick(Sender: TObject); procedure btnFClick(Sender: TObject); procedure btnGClick(Sender: TObject); procedure btnHClick(Sender: TObject); procedure btnIClick(Sender: TObject); procedure btnJClick(Sender: TObject); procedure btnKClick(Sender: TObject); procedure btnLClick(Sender: TObject); procedure btnMClick(Sender: TObject); procedure btnNClick(Sender: TObject); procedure btnOClick(Sender: TObject); procedure btnPClick(Sender: TObject); procedure btnQClick(Sender: TObject); procedure btnRClick(Sender: TObject); procedure btnSClick(Sender: TObject); procedure btnTClick(Sender: TObject); procedure btnUClick(Sender: TObject); procedure btnVClick(Sender: TObject); procedure btnWClick(Sender: TObject); procedure btnXClick(Sender: TObject); procedure btnYClick(Sender: TObject); procedure btnZClick(Sender: TObject); procedure btnWortwahlClick(Sender: TObject); procedure Kontrolle(Sender: TObject); private public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} var S1, S2:String; var x, y: TPoint; var Wort, Antwort, Loesung, A, B, C, D, E, F, G, H, I, J, K, L: String; procedure TForm1.btnStartClick(Sender: TObject); begin S1 := String(edtNameS1.Text); S2 := String(edtNameS2.Text); if (S1 = 'Name') or (S2 = 'Name') then Application.MessageBox('Bitte geben Sie einen Namen ein!!!','Warnung!') else begin PBP1.Visible := true; PBP2.Visible := true; edtNameS1.Visible := false; edtNameS2.Visible := false; lblSpieler1.Visible := false; lblSpieler2.Visible := false; btnStart.Visible := false; lblName1.Visible := true; lblName2.Visible := true; lblName1.Caption := String(S1); lblName2.Caption := String(S2); lblName1.Alignment := taCenter; lblName2.Alignment := taCenter; lblName1.Width := 88; lblName2.Width := 88; btnWortwahl.Visible := true; GBBuchstaben.Visible := true; btnA.Visible := true; btnB.Visible := true; btnC.Visible := true; btnD.Visible := true; btnE.Visible := true; btnF.Visible := true; btnG.Visible := true; btnH.Visible := true; btnI.Visible := true; btnJ.Visible := true; btnK.Visible := true; btnL.Visible := true; btnM.Visible := true; btnN.Visible := true; btnO.Visible := true; btnP.Visible := true; btnQ.Visible := true; btnR.Visible := true; btnS.Visible := true; btnT.Visible := true; btnU.Visible := true; btnV.Visible := true; btnW.Visible := true; btnX.Visible := true; btnY.Visible := true; btnZ.Visible := true; PBP1.Canvas.Rectangle (0,0,PBP1.height,PBP1.width); with PBP1 do begin x.x := 5; x.y := height-5; y.x := width-5; y.y := x.y; canvas.moveto(x.x, x.y); canvas.lineto(y.x, y.y); end; PBP2.Canvas.Rectangle (0,0,PBP2.height,PBP2.width); with PBP2 do begin x.x := 5; x.y := height-5; y.x := width-5; y.y := x.y; canvas.moveto(x.x, x.y); canvas.lineto(y.x, y.y); end; end; end; procedure TForm1.Beenden1Click(Sender: TObject); begin Form1.Close; end; procedure TForm1.Neu1Click(Sender: TObject); begin edtNameS1.Visible := true; edtNameS2.Visible := true; edtNameS1.Text := 'Name'; edtNameS2.Text := 'Name'; lblSpieler1.Visible := true; lblSpieler2.Visible := true; btnStart.Visible := true; lblName1.Visible := false; lblName2.Visible := false; PBP1.Visible := false; PBP2.Visible := false; btnWortwahl.Visible := false; GBBuchstaben.Visible := false; GBWort.Visible := false; end; procedure TForm1.FormOnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if chr(Key) = 'A' then btnAClick(Sender); if chr(Key) = 'B' then btnBClick(Sender); if chr(Key) = 'C' then btnCClick(Sender); if chr(Key) = 'D' then btnDClick(Sender); if chr(Key) = 'E' then btnEClick(Sender); if chr(Key) = 'F' then btnFClick(Sender); if chr(Key) = 'G' then btnGClick(Sender); if chr(Key) = 'H' then btnHClick(Sender); if chr(Key) = 'I' then btnIClick(Sender); if chr(Key) = 'J' then btnJClick(Sender); if chr(Key) = 'K' then btnKClick(Sender); if chr(Key) = 'L' then btnLClick(Sender); if chr(Key) = 'M' then btnMClick(Sender); if chr(Key) = 'N' then btnNClick(Sender); if chr(Key) = 'O' then btnOClick(Sender); if chr(Key) = 'P' then btnPClick(Sender); if chr(Key) = 'Q' then btnQClick(Sender); if chr(Key) = 'R' then btnRClick(Sender); if chr(Key) = 'S' then btnSClick(Sender); if chr(Key) = 'T' then btnTClick(Sender); if chr(Key) = 'U' then btnUClick(Sender); if chr(Key) = 'V' then btnVClick(Sender); if chr(Key) = 'W' then btnWClick(Sender); if chr(Key) = 'X' then btnXClick(Sender); if chr(Key) = 'Y' then btnYClick(Sender); if chr(Key) = 'Z' then btnZClick(Sender); end; procedure TForm1.btnAClick(Sender: TObject); begin btnA.Visible := false; Antwort := 'A'; Loesung := 'A'; Kontrolle(Sender); end; procedure TForm1.btnBClick(Sender: TObject); begin btnB.Visible := false; Antwort := 'B'; Loesung := 'B'; Kontrolle(Sender); end; procedure TForm1.btnCClick(Sender: TObject); begin btnC.Visible := false; Antwort := 'C'; Loesung := 'C'; Kontrolle(Sender); end; procedure TForm1.btnDClick(Sender: TObject); begin btnD.Visible := false; Antwort := 'D'; Loesung := 'D'; Kontrolle(Sender); end; procedure TForm1.btnEClick(Sender: TObject); begin btnE.Visible := false; Antwort := 'E'; Loesung := 'E'; Kontrolle(Sender); end; procedure TForm1.btnFClick(Sender: TObject); begin btnF.Visible := false; Antwort := 'F'; Loesung := 'F'; Kontrolle(Sender); end; procedure TForm1.btnGClick(Sender: TObject); begin btnG.Visible := false; Antwort := 'G'; Loesung := 'G'; Kontrolle(Sender); end; procedure TForm1.btnHClick(Sender: TObject); begin btnH.Visible := false; Antwort := 'H'; Loesung := 'H'; Kontrolle(Sender); end; procedure TForm1.btnIClick(Sender: TObject); begin btnI.Visible := false; Antwort := 'I'; Loesung := 'I'; Kontrolle(Sender); end; procedure TForm1.btnJClick(Sender: TObject); begin btnJ.Visible := false; Antwort := 'J'; Loesung := 'J'; Kontrolle(Sender); end; procedure TForm1.btnKClick(Sender: TObject); begin btnK.Visible := false; Antwort := 'K'; Loesung := 'K'; Kontrolle(Sender); end; procedure TForm1.btnLClick(Sender: TObject); begin btnL.Visible := false; Antwort := 'L'; Loesung := 'L'; Kontrolle(Sender); end; procedure TForm1.btnMClick(Sender: TObject); begin btnM.Visible := false; Antwort := 'M'; Loesung := 'M'; Kontrolle(Sender); end; procedure TForm1.btnNClick(Sender: TObject); begin btnN.Visible := false; Antwort := 'N'; Loesung := 'N'; Kontrolle(Sender); end; procedure TForm1.btnOClick(Sender: TObject); begin btnO.Visible := false; Antwort := 'O'; Loesung := 'O'; Kontrolle(Sender); end; procedure TForm1.btnPClick(Sender: TObject); begin btnP.Visible := false; Antwort := 'P'; Loesung := 'P'; Kontrolle(Sender); end; procedure TForm1.btnQClick(Sender: TObject); begin btnQ.Visible := false; Antwort := 'Q'; Loesung := 'Q'; Kontrolle(Sender); end; procedure TForm1.btnRClick(Sender: TObject); begin btnR.Visible := false; Antwort := 'R'; Loesung := 'R'; Kontrolle(Sender); end; procedure TForm1.btnSClick(Sender: TObject); begin btnS.Visible := false; Antwort := 'S'; Loesung := 'S'; Kontrolle(Sender); end; procedure TForm1.btnTClick(Sender: TObject); begin btnT.Visible := false; Antwort := 'T'; Loesung := 'T'; Kontrolle(Sender); end; procedure TForm1.btnUClick(Sender: TObject); begin btnU.Visible := false; Antwort := 'U'; Loesung := 'U'; Kontrolle(Sender); end; procedure TForm1.btnVClick(Sender: TObject); begin btnV.Visible := false; Antwort := 'V'; Loesung := 'V'; Kontrolle(Sender); end; procedure TForm1.btnWClick(Sender: TObject); begin btnW.Visible := false; Antwort := 'W'; Loesung := 'W'; Kontrolle(Sender); end; procedure TForm1.btnXClick(Sender: TObject); begin btnX.Visible := false; Antwort := 'X'; Loesung := 'X'; Kontrolle(Sender); end; procedure TForm1.btnYClick(Sender: TObject); begin btnY.Visible := false; Antwort := 'Y'; Loesung := 'Y'; Kontrolle(Sender); end; procedure TForm1.btnZClick(Sender: TObject); begin btnZ.Visible := false; Antwort := 'Z'; Loesung := 'Z'; Kontrolle(Sender); end; procedure TForm1.btnWortwahlClick(Sender: TObject); var Woerterliste: TStringlist; begin Woerterliste := TStringList.Create; try Woerterliste.LoadFromFile('Woerter.txt'); Wort := Woerterliste[Random(Woerterliste.Count{ + 1 - 1})]; finally Woerterliste.Free; A := Wort[1]; B := Wort[2]; C := Wort[3]; D := Wort[4]; E := Wort[5]; F := Wort[6]; G := Wort[7]; H := Wort[8]; I := Wort[9]; J := Wort[10]; K := Wort[11]; L := Wort[12]; if (A = ' ') then lblString1.Caption := ' ' else lblString1.Caption := '_'; if (B = ' ') then lblString2.Caption := ' ' else lblString2.Caption := '_'; if (C = ' ') then lblString3.Caption := ' ' else lblString3.Caption := '_'; if (D = ' ') then lblString4.Caption := ' ' else lblString4.Caption := '_'; if (E = ' ') then lblString5.Caption := ' ' else lblString5.Caption := '_'; if (F = ' ') then lblString6.Caption := ' ' else lblString6.Caption := '_'; if (G = ' ') then lblString7.Caption := ' ' else lblString7.Caption := '_'; if (H = ' ') then lblString8.Caption := ' ' else lblString8.Caption := '_'; if (I = ' ') then lblString9.Caption := ' ' else lblString9.Caption := '_'; if (J = ' ') then lblString10.Caption := ' ' else lblString10.Caption := '_'; if (K = ' ') then lblString11.Caption := ' ' else lblString11.Caption := '_'; if (L = ' ') then lblString12.Caption := ' ' else lblString12.Caption := '_'; GBWort.Visible := true; btnA.Visible := true; btnB.Visible := true; btnC.Visible := true; btnD.Visible := true; btnE.Visible := true; btnF.Visible := true; btnG.Visible := true; btnH.Visible := true; btnI.Visible := true; btnJ.Visible := true; btnK.Visible := true; btnL.Visible := true; btnM.Visible := true; btnN.Visible := true; btnO.Visible := true; btnP.Visible := true; btnQ.Visible := true; btnR.Visible := true; btnS.Visible := true; btnT.Visible := true; btnU.Visible := true; btnV.Visible := true; btnW.Visible := true; btnX.Visible := true; btnY.Visible := true; btnZ.Visible := true; end; end; procedure TForm1.Kontrolle(Sender: TObject); begin if (Antwort = A) then lblString1.Caption := Loesung; if (Antwort = B) then lblString2.Caption := Loesung; if (Antwort = C) then lblString3.Caption := Loesung; if (Antwort = D) then lblString4.Caption := Loesung; if (Antwort = E) then lblString5.Caption := Loesung; if (Antwort = F) then lblString6.Caption := Loesung; if (Antwort = G) then lblString7.Caption := Loesung; if (Antwort = H) then lblString8.Caption := Loesung; if (Antwort = I) then lblString9.Caption := Loesung; if (Antwort = J) then lblString10.Caption := Loesung; if (Antwort = K) then lblString11.Caption := Loesung; if (Antwort = L) then lblString12.Caption := Loesung; end; end. |
Re: Galgenmännchen
Ich habe ein Problem mit der Paintbox:
sobald ich ein fenster oder ähnliches über die Paintbox schiebe ist sie weg. sie ist auch dann weg wenn ich das fenster minimiere |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr. |
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