![]() |
Galgenmännchen
Erstmal eine Frage zu der Paintbox: Ich möchte den Galgen usw. in einer Paintbox zeichnen lassen. Beim Start des Spiels soll der Boden gezeichnet werden, warum zeichnet er ihn nicht wie ich vorgebe.
Code:
hmm? :?
procedure Button.Click {ka halt}
var a, b: TPoint; begin PaintBox.Canvas.Rectangle (0,0,PaintBox.height,PaintBox.width); with PaintBox do begin a.x := 1; a.y := height-1; b.x := width-1; b.y := a.y; canvas.moveto(a.x, a.y); canvas.lineto(b.x, b.y); end; end; |
Re: Galgenmännchen
Zeichnen tut ers vermute ich mal schon. Aber beim nächsten Neuzeichnen der Paintbox wird alles wieder übergepinselt, deswegen ist nichts zu sehen. Sieh dir dazu mal das
![]() Wenn du selbst auf dem Canvas rumzeichnest, bist du auch selbst dafür verantwortlich, dass bei jedem Neuzeichnen der Paintbox bzw des Controls auf dessen Canvas du malst auch deine eigene Grafik wieder ausgegeben wird. |
Re: Galgenmännchen
ich mache aber doch nur diesen einen Klick und dann kommt nichts!!!
|
Re: Galgenmännchen
Ich hab deinen Code mit Copy-Paste eingefügt, und bei mir kommt beim Klick ein schwarzes Rechteck.
|
Re: Galgenmännchen
echt? bei mir kommt garnichts hmm
|
Re: Galgenmännchen
bei mir gehts auch
ich hatte visible auf false hab aber auch auf button click halt visible true funktionierte trotzdem nicht hmm |
Re: Galgenmännchen
Zitat:
|
Re: Galgenmännchen
egal
so was als nächstes ansteht^^ ich möchte gerne die wörter in eine txt datei wie kann ich das wort daraus laden (geht das wie mit C++ mit zufall (random)?? und loadfromfile???) und wie kann ich das Wort dann in einzelne Buchstaben zerlegen?? |
Re: Galgenmännchen
Zitat:
![]() |
Re: Galgenmännchen
Neue Frage -> neuer Thread.
Aber ja, du kannst mit TStringList.LoadFromFile die Wörter einlesen und dann mit random eins aussuchen (wenn es das war was du meintest). Und auf die einzelnen Zeichen kannst du per Indizierung, wie bei Arrays, zugreifen: AString := 'XYZ'; AString[0] = X AString[1] = Y AString[2] = Z //edit Dafür muss in der Textdatei jeweils jede Zeile nur ein Wort enthalten |
Re: Galgenmännchen
ja das is klar
boah danke für die super tipps |
Re: Galgenmännchen
mit dem TStringList bekomme ich nicht hin
könnte mir jmd. ein beispiel zeigen?? |
Re: Galgenmännchen
Poste doch mal, was du schon gemacht hast. Hier wird dir niemand eine komplette Sache so "schenken", aber wir sehen uns gerne deine Versuche an und helfen dir an den Stellen, wo du nicht weiter kommst.
|
Re: Galgenmännchen
Delphi-Quellcode:
dasist nur das gerüst mehr nicht^^
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; procedure btnStartClick(Sender: TObject); procedure Beenden1Click(Sender: TObject); procedure Neu1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} var S1, S2:String; var a, b: TPoint; 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; GBBuchstaben.Visible := true; 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; PBP1.Canvas.Rectangle (0,0,PBP1.height,PBP1.width); with PBP1 do begin a.x := 5; a.y := height-5; b.x := width-5; b.y := a.y; canvas.moveto(a.x, a.y); canvas.lineto(b.x, b.y); end; PBP2.Canvas.Rectangle (0,0,PBP2.height,PBP2.width); with PBP2 do begin a.x := 5; a.y := height-5; b.x := width-5; b.y := a.y; canvas.moveto(a.x, a.y); canvas.lineto(b.x, b.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; end; end. |
Re: Galgenmännchen
Es wäre hilfreich, wenn du die Stelle markieren würdest, wo das Problem besteht.
|
Re: Galgenmännchen
Delphi-Quellcode:
hier möchte ich das:
procedure TForm1.btnWortwahlClick(Sender: TObject);
begin end; end. - die Wörter aus Wörter.txt geladen werden - das ein Wort ausgewählt wird - das das Wort aueinander genommen wird - und das die Buchstaben als _ angezeigt werden (denke das die Lösung mit Lables gemacht werden kann) |
Re: Galgenmännchen
Ich glaube nicht, dass du jemand finden wirst, der dir jetzt den Code dafür schreibt. Versuch es selbst, und wenn du irgendwo konkret nicht weiterkommst, helfen wir dir weiter.
|
Re: Galgenmännchen
ich bekomm die variablen ja nicht hin
und wie man das schreibt weiß ich auch nicht in der hilfe find ich auch nichts passendes |
Re: Galgenmännchen
Delphi-Quellcode:
procedure TForm1.btnWortwahlClick(Sender: TObject);
begin TStringList.LoadFromFile(Woerter.txt); random(); AString := 'XYZ'; AString[0] = X; AString[1] = Y; AString[2] = Z; end; end. |
Re: Galgenmännchen
|
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 |
Re: Galgenmännchen
Du solltest dich mal mit PaintBox.OnrePaint oder so befassen. Die PaintBox zeichnet bei dir das ganze wahrscheinlich nur 1 Mal. Es muss ja ber immer gezeichnet werden, wenn das Fenster verdeckt ist. Also hau den ganzen Code zum zeichnen in die OnPaint deiner Paintbox rein.
P.S. Häng doch das nächste mal den Code bitte als Anhang dran, da scrollt man sich ja die Finger wund :wink: |
Re: Galgenmännchen
Ich zitiere mich mal selbst: :mrgreen:
Zitat:
|
Re: Galgenmännchen
mit on paint geht es auch nicht richtig
da macht er zeichenfehler |
Re: Galgenmännchen
Delphi-Quellcode:
was muss ich machen?
procedure TForm1.PBP1OnPaint(Sender: TObject);
begin if (lblFehler1.Caption = '0') then begin with PBP1.canvas do begin x.x := 5; x.y := 65; y.x := 65; y.y := x.y; moveto(x.x, x.y); lineto(y.x, y.y); end; end; if (lblFehler1.Caption = '1') then begin with PBP1.canvas do begin x.x := 5; x.y := 65; y.x := 65; y.y := x.y; xx1.x := 20; xx1.y := x.y; xx2.x := 20; xx2.y := 10; moveto(x.x, x.y); lineto(y.x, y.y); moveto(xx1.x, xx1.y); lineto(xx2.x, xx2.y); end; end; end; |
Re: Galgenmännchen
Also zumindest in deinem letzten Code tauchte lblFehler nicht auf. Generell solltest du solche Abfragen über die Caption vermeiden, das ist nicht besonders elegant. Mach lieber eine Boolean-Variable für deine Abfrage.
Zu deinem konkreten Problem würde ich mal vermuten, dass entweder lblFehler.Caption weder '1' noch '0' ist, oder du deine Paintbox wieder auf invisible gestellt hast. |
Re: Galgenmännchen
|
Re: Galgenmännchen
Da gibt's nicht viel zum angucken, es fehlt nämlich der Sourcecode... :roll:
//edit: von dem ich vorschlagen würde, dass du ihn einfach mal anhängst. |
Re: Galgenmännchen
????
|
Re: Galgenmännchen
In dem zipfile ist nur die exe und die txt. Wie sollen wir denn den Fehler in deinem Code finden, wenn du den Code nicht da mit reinpackst?
Wenn du den nicht auf dieser Webseite zur Verfügung stellen willst, kannst du ihn ja einfach als Anhang (!) hier im Forum posten.(Ganz unten über dem Button "Vorschau"). |
Re: Galgenmännchen
Delphi-Quellcode:
procedure TForm1.Spieler1(Sender: TObject);
begin if (RBP1.Checked = true) and (lblString1.Caption = A) and (lblString2.Caption = B) and (lblString3.Caption = C) and (lblString4.Caption = D) and (lblString5.Caption = E) and (lblString6.Caption = F) and (lblString7.Caption = G) and (lblString8.Caption = H) and (lblString9.Caption = I) and (lblString10.Caption = J) and (lblString11.Caption = K) and (lblString12.Caption = L) then begin Application.MessageBox('Spieler 1 hat gewonnen!','Gewinner'); btnWortwahlClick(Sender); end; if (Antwort = A) or (Antwort = B) or (Antwort = C) or (Antwort = D) or (Antwort = E) or (Antwort = F) or (Antwort = G) or (Antwort = H) or (Antwort = I) or (Antwort = J) or (Antwort = K) or (Antwort = L) then begin end else begin RBP1.Checked := false; RBP2.Checked := true; Application.MessageBox('Leider ist dieser Buchstabe nicht dabei! Spieler 2 ist an der Reihe!','!!!'); aa := StrToInt(lblFehler1.Caption); aa := aa+1; lblFehler1.Caption := IntToStr(aa); end; end; procedure TForm1.Spieler2(Sender: TObject); begin if (RBP2.Checked = true) and (lblString1.Caption = A) and (lblString2.Caption = B) and (lblString3.Caption = C) and (lblString4.Caption = D) and (lblString5.Caption = E) and (lblString6.Caption = F) and (lblString7.Caption = G) and (lblString8.Caption = H) and (lblString9.Caption = I) and (lblString10.Caption = J) and (lblString11.Caption = K) and (lblString12.Caption = L) then begin Application.MessageBox('Spieler 2 hat gewonnen!','Gewinner'); btnWortwahlClick(Sender); end; if (Antwort = A) or (Antwort = B) or (Antwort = C) or (Antwort = D) or (Antwort = E) or (Antwort = F) or (Antwort = G) or (Antwort = H) or (Antwort = I) or (Antwort = J) or (Antwort = K) or (Antwort = L) then begin end else begin RBP2.Checked := false; RBP1.Checked := true; Application.MessageBox('Leider ist dieser Buchstabe nicht dabei! Spieler 1 ist an der Reihe!','!!!'); bb := StrToInt(lblFehler2.Caption); bb := bb+1; lblFehler2.Caption := IntToStr(bb); end; end; procedure TForm1.PBP2OnPaint(Sender: TObject); begin if (lblFehler2.Caption = '0') then begin with PBP2.canvas do begin x.x := 5; x.y := 65; y.x := 65; y.y := x.y; moveto(x.x, x.y); lineto(y.x, y.y); end; end; if (lblFehler2.Caption = '1') then begin with PBP2.canvas do begin x.x := 5; x.y := 65; y.x := 65; y.y := x.y; xx1.x := 20; xx1.y := x.y; xx2.x := 20; xx2.y := 10; moveto(x.x, x.y); lineto(y.x, y.y); moveto(xx1.x, xx1.y); lineto(xx2.x, xx2.y); end; end; end; procedure TForm1.PBP1OnPaint(Sender: TObject); begin if (lblFehler1.Caption = '0') then begin with PBP1.canvas do begin x.x := 5; x.y := 65; y.x := 65; y.y := x.y; moveto(x.x, x.y); lineto(y.x, y.y); end; end; if (lblFehler1.Caption = '1') then begin with PBP1.canvas do begin x.x := 5; x.y := 65; y.x := 65; y.y := x.y; xx1.x := 20; xx1.y := x.y; xx2.x := 20; xx2.y := 10; moveto(x.x, x.y); lineto(y.x, y.y); moveto(xx1.x, xx1.y); lineto(xx2.x, xx2.y); end; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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