Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Galgenmännchen (https://www.delphipraxis.net/58111-galgenmaennchen.html)

Tomislav 1. Dez 2005 15:01


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:
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;
hmm? :?

tigerman33 1. Dez 2005 15:20

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 Delphi-Referenz durchsuchenOnPaint-Ereignis an.

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.

Tomislav 1. Dez 2005 15:22

Re: Galgenmännchen
 
ich mache aber doch nur diesen einen Klick und dann kommt nichts!!!

tigerman33 1. Dez 2005 15:30

Re: Galgenmännchen
 
Ich hab deinen Code mit Copy-Paste eingefügt, und bei mir kommt beim Klick ein schwarzes Rechteck.

Tomislav 1. Dez 2005 15:31

Re: Galgenmännchen
 
echt? bei mir kommt garnichts hmm

Tomislav 1. Dez 2005 15:34

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

tigerman33 1. Dez 2005 15:37

Re: Galgenmännchen
 
Zitat:

Zitat von Tomislav
hab aber auch auf button click halt visible true funktionierte trotzdem nicht hmm

:?: :?: :?:

Tomislav 1. Dez 2005 15:45

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??

Nils_13 1. Dez 2005 15:48

Re: Galgenmännchen
 
Zitat:

Zitat von Tomislav
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??

Eine Methode ist, dass du den ganzen Kram per SaveToFile und LoadFromFile speicherst und lädst, eine andere ist INI-Dateien zu benutzen, such einfach mal hier im Forum nach Hier im Forum suchenini.

tigerman33 1. Dez 2005 15:49

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

Tomislav 1. Dez 2005 15:51

Re: Galgenmännchen
 
ja das is klar
boah danke für die super tipps

Tomislav 1. Dez 2005 16:21

Re: Galgenmännchen
 
mit dem TStringList bekomme ich nicht hin
könnte mir jmd. ein beispiel zeigen??

gordon freeman 1. Dez 2005 16:35

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.

Tomislav 1. Dez 2005 16:42

Re: Galgenmännchen
 
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;
    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.
dasist nur das gerüst mehr nicht^^

tigerman33 1. Dez 2005 16:55

Re: Galgenmännchen
 
Es wäre hilfreich, wenn du die Stelle markieren würdest, wo das Problem besteht.

Tomislav 1. Dez 2005 17:16

Re: Galgenmännchen
 
Delphi-Quellcode:
procedure TForm1.btnWortwahlClick(Sender: TObject);
begin

end;

end.
hier möchte ich das:
- 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)

tigerman33 1. Dez 2005 17:39

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.

Tomislav 1. Dez 2005 17:50

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

Tomislav 1. Dez 2005 18:10

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.

Tomislav 1. Dez 2005 18:22

Re: Galgenmännchen
 
www.spvgg-hadamar-tt.de/Galgenmaennchen.exe

soo läuft es im mom!!^^

tigerman33 1. Dez 2005 18:27

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:
var Woerterliste: TStringlist;
begin
  Woerterliste := TStringList.Create;
  Woerterlist.LoadFromFile('Woerter.txt'); // Achtung: hier Hochkommata, das ist ein String!
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.

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 Delphi-Referenz durchsuchenTStringList.Strings :)
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.

Tomislav 1. Dez 2005 18:53

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;

Tomislav 1. Dez 2005 18:59

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????

Khabarakh 1. Dez 2005 19:05

Re: Galgenmännchen
 
Es gibt in diesem Forum einen Edit-Button :warn: !
Delphi-Quellcode:
Wort := Woerterliste[Random(Woerterliste.Count - 1)];
Da 0 <= Random(x) < x gilt, muss die Zeile
Delphi-Quellcode:
Wort := Woerterliste[Random(Woerterliste.Count{ + 1 - 1})];
heißen. Außerdem solltest du die Stringliste auch wieder freigeben, wenn sie nicht mehr benötigt wird.

tigerman33 1. Dez 2005 19:08

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:
begin
  Woerterliste := TStringList.Create;
  try
    Woerterliste.LoadFromFile('Woerter.txt');
    Wort := Woerterliste[Random(Woerterliste.Count - 1)];
  finally
    Woerterliste.Free;
  end;
end;
Was hast du jetzt als nächstes vor?

Tomislav 1. Dez 2005 19:20

Re: Galgenmännchen
 
Delphi-Quellcode:
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;
so jetzt hab ich doch für jedes Zeichen aus dem Wort eine Variable

Tomislav 1. Dez 2005 19:24

Re: Galgenmännchen
 
jetzt habe ich halt das Problem wie ich es einstellen kann das immer abwechselt P1 und P2 dran ist

tigerman33 1. Dez 2005 19:26

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.

Tomislav 1. Dez 2005 19:37

Re: Galgenmännchen
 
Delphi-Quellcode:
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;
ok so muss es aussehen. :wall:

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.

Tomislav 2. Dez 2005 12:44

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

gordon freeman 2. Dez 2005 13:11

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:

tigerman33 2. Dez 2005 13:26

Re: Galgenmännchen
 
Ich zitiere mich mal selbst: :mrgreen:
Zitat:

Zitat von tigerman33
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 Delphi-Referenz durchsuchenOnPaint-Ereignis an.

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.


Tomislav 2. Dez 2005 14:46

Re: Galgenmännchen
 
mit on paint geht es auch nicht richtig
da macht er zeichenfehler

Tomislav 2. Dez 2005 15:08

Re: Galgenmännchen
 
Delphi-Quellcode:
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;
was muss ich machen?

tigerman33 2. Dez 2005 15:13

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.

Tomislav 2. Dez 2005 23:43

Re: Galgenmännchen
 
es ist nicht invisible
guckt es euch an
www.spvgg-hadamar-tt.de/Spiel.zip

tigerman33 3. Dez 2005 00:04

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.

Tomislav 3. Dez 2005 08:05

Re: Galgenmännchen
 
????

tigerman33 3. Dez 2005 10:30

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").

Tomislav 3. Dez 2005 10:33

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 11:12 Uhr.
Seite 1 von 2  1 2      

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