![]() |
will randomzahlen aufaddieren
so, nocheinmal mein problem, nachdem ich es schon an der falschen stelle geschildert habe...
also, ich will randomzahlen aufadieren. jetzt habe ich es soweit geshaft: zufallszahl:=random(5)+1; edit1.Text:=inttostr(zufallszahl); if zufallszahl=1 then summe:=summe-summe else summe:=summe+zufallszahl; aber es funktioniert nicht... |
Re: will randomzahlen aufaddieren
schreib das doch in deinen alten Thread, sonst verliert man hier den Überblick !
|
Re: will randomzahlen aufaddieren
hm, ja, hab ich gemacht, oder wurde gemacht...
aber die frage... die gilt immer noch :arrow: |
Re: will randomzahlen aufaddieren
Delphi-Quellcode:
Warum nun die IF Abfrage ? Erkläre mal warum du das so gecodet hast.
if zufallszahl=1 then
summe:=summe-summe // ---> X - X == 0 das gilt immer else summe:=summe+zufallszahl; Gruß hagen PS: am obigen Beispiel erkennt man auch warum ein besserer Programmierstil eventuelle logische Fehler verhindert. |
Re: will randomzahlen aufaddieren
naja, wenn eine eins gewürfelt wird, soll ja der punktestand gelöscht werden, darum...
|
Re: will randomzahlen aufaddieren
Gut dann wäre das richtig:
Delphi-Quellcode:
Was funktioniert nun nicht richtig ? Denn dein eigene Code macht exakt das du willst.
if ZufallsZahl = 1 then Summe := 0
else Inc(Summe, ZufallsZahl); Gruß Hagen |
Re: will randomzahlen aufaddieren
HI
Dein Soude sieht ganz in Ordnung aus! Also wenn etwas nicht funktioniert dann sollte dies an den Zeilen davor oder danach liegen. Ich weiß nicht ob du das nicht schon weißt, weil dein Source dies nicht beinhaltet, aber der Befehl Random spuckt immer die gleichen Zahlen aus und bei einem Würfelspiel wie du es programmieren willst wäre das ja eher schlecht. Mit dem Befehl
Delphi-Quellcode:
leitet Random die Zufallszahl von der Systemzeit ab und somit kommen nicht immer die gleichen Zahlen.
Randomize;
|
Re: will randomzahlen aufaddieren
ja danke, ich werds gleich mal ausprobieren...
aber wenn es das gleiche macht. Das Problem das ich hatte, "summe" muss als variable stehn und wenn ich vor der if-bedingung summe keinem Wert oder sonstigem zugeordnet hatte, kam als ergbnis immer 18920 oder ähnliches rauß... |
Re: will randomzahlen aufaddieren
so siehts bei mri jetzt aus... aber klappen tuts noch nicht
var zufallszahl, summe: integer; begin randomize; zufallszahl:=random(6)+1; edit1.Text:=inttostr(zufallszahl); if zufallszahl = 1 then Summe := 0 else Inc(Summe, ZufallsZahl); |
Re: will randomzahlen aufaddieren
wenn du solche werte rausbekommst solltest du vielleicht bevor du anfängst zu würfeln, summe ienene wert zu ordnen, zb 0 oder ähnliches...
|
Re: will randomzahlen aufaddieren
ich hab mir deinen ersten thread angeschaut und mir daraufhin ein spiel daraus gebastelt ;) die stelle die du meinst sieht bei mir so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var zahl,i: integer; begin zahl:=strtoint(label1.Caption); i:=random(5)+1; if i = 1 then zahl:=0 else zahl:=zahl+i; label1.Caption:=inttostr(zahl); end; |
Re: will randomzahlen aufaddieren
und so?
Delphi-Quellcode:
var zufallszahl, summe: integer;
begin summe:=0; randomize; zufallszahl:=random(6)+1; edit1.Text:=inttostr(zufallszahl); if zufallszahl = 1 then Summe:=0 else Summe:=Inc(Summe, zufallszahl) edit2.Text:=inttostr(summe); |
Re: will randomzahlen aufaddieren
oh, kannst du mir dasspiel vielleicht mal zukomm lassen?
|
Re: will randomzahlen aufaddieren
Zitat:
|
Re: will randomzahlen aufaddieren
so, jetzt habe iches geschaft!!!!!!!!
dank an alle
Delphi-Quellcode:
:thuimb:
var zahl,i: integer;
begin zahl:=strtoint(edit2.text); randomize; i:=random(6)+1; edit1.Text:=inttostr(i); if i = 1 then zahl:=0 else zahl:=zahl+i; edit2.text:=inttostr(zahl); |
Re: will randomzahlen aufaddieren
Jetzt verstehe ich dein Problem :)
Nun deine Methode TForm1.Button1Click(Sender: TObject); ist ja Bestandteil eines Objectes -> TForm. Das was du anscheinend noch nicht weist ist das auch ein Object eigene Variablen deklarieren kann. Statt also Summe, eg. Zahl, als Lokale Variable in der Methode .Button1Click() zu deklarieren, wird diese Variable als Feld des Objectes definiert. Das sieht dann so aus:
Delphi-Quellcode:
Wie du siehst wurde FSumme als neues privates Feld der Klasse TForm1 definiert. Jedes Object vom Typ TForm1 enthält nun eine eigene Variable mit dem Namen FSumme. Diese existiert exakt so lange wie auch das Object existert. Alle Felder von solchen Objecten werden per default mit 0, nil, '' usw. initialisiert.
type
TForm1 = class(TForm) Button1: TButton; Edit2: TEdit; ... procedure Button1Click(Sender: TObject); ... private FSumme: Integer; protected public published end; procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin I := Random(5) +1; if I = 1 then FSumme := 0 else Inc(FSumme, I); Edit2.Text := IntToStr(FSumme); end; Innerhalb jeder Methode zur Klasse TForm1 kann man direkt auf diese Object-Felder zugreifen. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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