Hallo zusammen,
ich habe mir hier ein Proggi geschrieben was folgendes tut.
Einlesen 2 Spielernamen, Würfelbereich (später zufallszahl) und Anzahl der Runden.
Wenn das Proggi dann startet und man die Felder füllt und auf start klickt erscheint eine 2. Form wo Spieler 1 und Spieler 2 eine Zahl eingeben dürfen.
Jetzt ermittelt das Programm wer näher dran ist und zeigt den Sieger an.
Jetzt kommt mein Problem:
Ich wollte eine Schleife bauen die so lange durch läuft wie man am Anfang die Anzahl der Runden eingibt.
Wenn ich im 2. Fenster auf den Button Würfeln klicke läuft die erste Runde, dann soll man wieder 2 Zahlen eingeben dürfen und
die nächste runde wenn wieder auf Würfeln geklickt wird.
Habe mir n Tutos durchgelesen wie Schleifen geschrieben werden.
Muss ich ich die Schleife über dem:
procedure Tspiel.Button1Click(Sender: TObject); einstellen?
also so:
Zitat:
FOR...
procedure Tspiel.Button1Click(Sender: TObject);
...
FOR ENDE
Weil ich will ja immer das man in jeder Runde der Spieler1 und Spieler2 eine andere Zahl eingeben können und dann wieder auf den Button Würfeln klicken sollen.
Bis hier hin läuft das Proggi übrigens super.
Könnt ihr mir weiterhelfen bzw. eventuell zeigen wie ich das am besten Lösen kann?
Ich nutze auch Variablen die von einer Form in die andere übergeben werden für die Übernahme der Namen und runden und bereich.
Stehen unter PUBLIC. Hatte ich so nachgelesen und funktioniert super.
Das ist der erste Teil meines Programmes, für die Aufnahme der Spieloptionen:
Delphi-Quellcode:
unit start_programm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tstart =
class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
spieler1: TEdit;
Label2: TLabel;
spieler2: TEdit;
ueberschrift: TLabel;
GroupBox2: TGroupBox;
Label3: TLabel;
bereich: TEdit;
Label4: TLabel;
runden: TEdit;
start: TButton;
beenden: TButton;
procedure beendenClick(Sender: TObject);
procedure startClick(Sender: TObject);
private
{ Private declarations }
public
player1, player2:
String;
range, round : integer;
{ Public declarations }
end;
var
start: Tstart;
implementation
uses das_spiel;
{$R *.dfm}
procedure Tstart.beendenClick(Sender: TObject);
begin
close;
end;
procedure Tstart.startClick(Sender: TObject);
begin
player1 := spieler1.Text;
player2 := spieler2.Text;
range := StrToInt(bereich.Text);
round := StrToInt(runden.Text);
spiel.showModal;
end;
end.
Hier ist der 2. Teil das Spiel selbst:
Delphi-Quellcode:
unit das_spiel;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
Tspiel =
class(TForm)
ueberschrift: TLabel;
p1: TGroupBox;
Label1: TLabel;
zahl_p1: TEdit;
p2: TGroupBox;
Label2: TLabel;
zahl_p2: TEdit;
Image1: TImage;
Button1: TButton;
Label3: TLabel;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
spiel: Tspiel;
implementation
uses start_programm;
{$R *.dfm}
procedure Tspiel.FormActivate(Sender: TObject);
begin
p1.Caption := start.player1;
p2.Caption := start.player2;
end;
procedure Tspiel.Button1Click(Sender: TObject);
var zahl_sp1, zahl_sp2, Erg1, Erg2, zufallszahl : integer;
begin
zahl_sp1 := StrToInt(zahl_p1.Text);
zahl_sp2 := StrToInt(zahl_p2.Text);
zufallszahl := 1 + Random(start.range);
Label3.Caption := IntToStr(zufallszahl);
Erg1 := Abs(zahl_sp1 - Zufallszahl);
Erg2 := Abs(zahl_sp2 - Zufallszahl);
if Erg1 = Erg2
then
begin
ShowMessage('
Beide Gleich');
end
else
if Erg1 > Erg2
then
begin
ShowMessage('
Spieler 2 hat gewonnen');
end
else
ShowMessage(start.player1+'
hat gewonnen');
end;
end.
Ich hoffe es ist nicht zu viel. Aber dachte mir ich Poste alles damit ihr besser klar kommt.
Ich bin neu in Delphi, habe vorher nur PHP,
SQL, JavaScript und Makro und so programmiert und Versuche mich jetzt in Delphi
Vielen Dank schonmal!!!
Gruß, Picard