Delphi-PRAXiS

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?

Sir Rufo 19. Mai 2013 21:04

AW: False or True zufällig.
 
Zitat:

Zitat von Aboz1 (Beitrag 1215796)
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

Ach, was hast du denn gedacht, was passiert, wenn diese Zeile aufgerufen wird?
Ein zufälliger Bool-Wert wird der Variable zugewiesen.

Und was passiert wenn man den öfter und immer wieder ausführt?
Immer noch ein zufälliger Bool-Wert.

Und wenn der bei Mondfinsternis nach 20 Uhr ausgeführt wird?
Immer noch ...

Rufe diesen Code also nur dann auf, wenn du eine zufällige Richtung benötigst.

Oder haust du auch pauschal jede Sekunde auf den Lichtschalter und wunderst dich warum das Licht flackert? :roll:

Aboz1 19. Mai 2013 21:16

AW: False or True zufällig.
 
Zitat:

Zitat von Sir Rufo (Beitrag 1215798)
Zitat:

Zitat von Aboz1 (Beitrag 1215796)
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

Ach, was hast du denn gedacht, was passiert, wenn diese Zeile aufgerufen wird?
Ein zufälliger Bool-Wert wird der Variable zugewiesen.

Und was passiert wenn man den öfter und immer wieder ausführt?
Immer noch ein zufälliger Bool-Wert.

Und wenn der bei Mondfinsternis nach 20 Uhr ausgeführt wird?
Immer noch ...

Rufe diesen Code also nur dann auf, wenn du eine zufällige Richtung benötigst.

Oder haust du auch pauschal jede Sekunde auf den Lichtschalter und wunderst dich warum das Licht flackert? :roll:

Danke.
Habs in ein Button gepackt,klappt super.

Uwe Raabe 19. Mai 2013 21:19

AW: False or True zufällig.
 
Zitat:

Zitat von Aboz1 (Beitrag 1215796)
Hier wird auch permanent zwischen true und false gewechselt :o

Natürlich! Alles, was du hier findest, dient lediglich dazu, die Richtung einmalig am Anfang festzulegen.

Uwe Raabe 19. Mai 2013 21:21

AW: False or True zufällig.
 
Zitat:

Zitat von hathor (Beitrag 1215797)
Zitat:

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

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

Kein Grund ausfallend zu werden.

Sir Rufo 19. Mai 2013 21:43

AW: False or True zufällig.
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1215803)
Zitat:

Zitat von hathor (Beitrag 1215797)
Zitat:

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

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

Kein Grund ausfallend zu werden.

Scheint wohl eine Art süddeutsche Gereiztheit zu sein :mrgreen:


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