Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   False or True zufällig. (https://www.delphipraxis.net/174935-false-true-zufaellig.html)

Aboz1 19. Mai 2013 19:49

False or True zufällig.
 
Guten Abend zusammen.
Ich bin gerade dabei ein Ping Pong Spiel in 2D zu programmieren. Die Bewegung des Balls habe ich mit 2 Booleans und einem Timer gemacht. Ein Boolean sorgt für die x-Achse. Also wenns true ist geht er 2 nach rechts, sobald er clientwidth überschreitet wirds zu false und geht 2 nach links. Problem ist, dass der Ball am Anfang immer nach rechts geht, also das Boolean zu Beginn immer true ist. Es soll aber zufällig sein ob er zu Beginn nach links oder rechts geht, also Zufall ob das Boolean false oder true ist. Hat jemand ne Idee, wie ich das umsetzten könnnte?:)

CHackbart 19. Mai 2013 19:53

AW: False or True zufällig.
 
Randseed := Gettickcount;
Dir := Random(50)>25;

Das wäre zum Beispiel eine Variante. Wichtig ist das der Randseed gesetzt wird, da random nicht wirklich zufällig ist.

Aboz1 19. Mai 2013 20:05

AW: False or True zufällig.
 
Jetzt wird permanent zwischen false und true gewechselt. Das hilft mir aber nicht, da nur zu Beginn zufällig false oder true entschieden werden soll.

mkinzler 19. Mai 2013 20:13

AW: False or True zufällig.
 
Dann verwende disen Code nur am Anfang.

hathor 19. Mai 2013 20:16

AW: False or True zufällig.
 
Besser so:

Delphi-Quellcode:
//uses math;
function QQuersumme(x: integer): integer;
begin Result := Sign(x) * (1 + ((Abs(x)-1) mod 9)); end;

(*
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Checkbox1.checked:= odd(QQuersumme(GetTickCount));
end;
*)
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if odd(QQuersumme(GetTickCount))=true then
BEGIN
Checkbox1.checked:=true;
Timer1.Interval:= Timer1.Interval +15;
END
else
BEGIN
Checkbox1.checked:=false;
Timer1.Interval:= Timer1.Interval -15;
END;
//Fenster definieren, um Ausreisser zu verhindern
If Timer1.Interval>1100 then Timer1.Interval:=1000;
If Timer1.Interval<900 then Timer1.Interval:=1000;
end;

Uwe Raabe 19. Mai 2013 20:18

AW: False or True zufällig.
 
Das ist doch ein Paradebeispiel für Odd:

Delphi-Quellcode:
Dir := Odd(Random(2));

Aboz1 19. Mai 2013 20:20

AW: False or True zufällig.
 
werde es ausprobieren, danke.

Uwe Raabe 19. Mai 2013 20:40

AW: False or True zufällig.
 
Jetz nicht wirklich, oder?

Zitat:

Zitat von hathor (Beitrag 1215792)
Delphi-Quellcode:
if odd(Quersumme(GetTickCount))=true then


Aboz1 19. Mai 2013 20:42

AW: False or True zufällig.
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1215793)
Das ist doch ein Paradebeispiel für Odd:

Delphi-Quellcode:
Dir := Odd(Random(2));

Hier wird auch permanent zwischen true und false gewechselt :o

hathor 19. Mai 2013 21:02

AW: False or True zufällig.
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1215795)
Jetz nicht wirklich, oder?

Ist das die saublöde norddeutsche Eigenart, sich SO auszudrücken?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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