![]() |
Delphi-Version: 7
Bei Random werden immer die selben Zahlen ausgespuckt
Also ich will ein böse Eins spiel mit delphi programmieren.
Hier mein Formular(Die Spieler würfeln der Reihe nach mit einem Würfel. Jeder Spieler darf so oft wirfeln wie er will. Die Augen aus den einzelnen Würfen werden notiert. Wirft man jedoch eine Eins, werden die Augen der jeweiligen Runde ungültig. Sieger ist, wer als erster 50 Punkte hat.) ![]() Hier mein Quelcode
Delphi-Quellcode:
Immer wenn ich auf Würfeln gehe kommt am anfang eine eins und der andere spieler ist dran(noch nicht ganz fertig)
unit u_boese_eins;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, StdCtrls; type TForm1 = class(TForm) b_wuerfeln: TButton; l_summe1: TLabel; XPManifest1: TXPManifest; Label1: TLabel; l_gewuerfelte_zahl1: TLabel; Label3: TLabel; Label4: TLabel; b_wuerfeln2: TButton; l_summe2: TLabel; Label6: TLabel; l_gewuerfelte_zahl2: TLabel; Label8: TLabel; Label9: TLabel; b_aufhoeren: TButton; b_aufhoeren2: TButton; procedure b_wuerfelnClick(Sender: TObject); procedure b_aufhoerenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; zahl1,zahl2,summe1,summe2,falls1:integer; implementation {$R *.dfm} procedure TForm1.b_wuerfelnClick(Sender: TObject); begin zahl1:=random(6)+1; l_gewuerfelte_zahl1.Caption:=IntToStr(zahl1); If zahl1=1 Then begin summe1:=0; l_summe1.Caption:=IntToStr(summe1); b_wuerfeln.enabled := false; end else begin summe1:=summe1+zahl1; l_summe1.Caption:=IntToStr(summe1); end; end; procedure TForm1.b_aufhoerenClick(Sender: TObject); begin b_wuerfeln.enabled := false; end; end. procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; end. wie bekomme ich es hin, dass am anfang wirklich zufällig ausgelost wird |
AW: Bei Random werden immer die selben Zahlen ausgespuckt
Guten Abend,
rufe randomize in der projekt1.dpr auf. Wie oft hast Du denn getestet? Kommt wirklich nie eine andere Zahl als erstes? Grüße Klaus |
AW: Bei Random werden immer die selben Zahlen ausgespuckt
Da ich TForm1.FormCreate nichtmal in der Deklaration von TForm1 finde und der gezeigte Code nichtmal dein vollständiger Originalcode sein kann .... bist du sicher, daß dieses auch aufgerufen/ausgeführt wird?
PS: Was machen die Variablen
Delphi-Quellcode:
überhaupt im globalen Bereich?
zahl1,zahl2,summe1,summe2,falls1:integer;
Globale sollten möglichst vermieden werden, abgesehn davon, daß diese Variablen nur lokal in b_wuerfelnClick verwendet werden ... also gehören diese auch dort hinein. |
AW: Bei Random werden immer die selben Zahlen ausgespuckt
Also ich habe es bestimmt 30-40mal probiert, ja ich kann das formular ausführen....quelltext mit str+a reinkopiert
|
AW: Bei Random werden immer die selben Zahlen ausgespuckt
|
AW: Bei Random werden immer die selben Zahlen ausgespuckt
So hab die variablen in den lokalen bereich getan, problem besteht noch immer
|
AW: Bei Random werden immer die selben Zahlen ausgespuckt
Was himitsu vielleicht meinte.
Delphi-Quellcode:
Grüße
type
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); // das steht bei Dir nicht in der Deklaration private { Private declarations } public { Public declarations } end; Klaus |
AW: Bei Random werden immer die selben Zahlen ausgespuckt
Wie rufe ich randomize in der projekt1.dpr auf, wie deklariere ich FormCreate?
|
AW: Bei Random werden immer die selben Zahlen ausgespuckt
Zitat:
Zitat:
|
AW: Bei Random werden immer die selben Zahlen ausgespuckt
So Deklarierung hab ich soweit geschafft ... jetzt kommt bei der summe riesige zahlen
nur weiß ich nicht genau was ich bei dem angezeigten quelltext eintragen soll... |
AW: Bei Random werden immer die selben Zahlen ausgespuckt
Ist Summe1 vielleicht nicht initialisiert?
Delphi-Quellcode:
procedure TForm1.b_wuerfelnClick(Sender: TObject);
begin zahl1:=random(6)+1; l_gewuerfelte_zahl1.Caption:=IntToStr(zahl1); If zahl1=1 Then begin summe1:=0; l_summe1.Caption:=IntToStr(summe1); b_wuerfeln.enabled := false; end else begin summe1:=summe1+zahl1; l_summe1.Caption:=IntToStr(summe1); end; end;
Delphi-Quellcode:
Grüße
procedure TForm1.FormCreate(Sender: TObject);
begin randomize; summe1 := 0; end; Klaus |
AW: Bei Random werden immer die selben Zahlen ausgespuckt
initialisiert Du Summe1 irgendwo?
Die Variable darf dann auch im Public Bereich stehen und im Create mit 0 initialisiert werden. EDIT: upps zu spät... |
AW: Bei Random werden immer die selben Zahlen ausgespuckt
Danke an alle ;)
Habe das Spiel fertiggestellt. Alle die es gerne mal ausprobieren möchten --> ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 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