AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zufallsprinzip bei einem kleinen Spiel
Thema durchsuchen
Ansicht
Themen-Optionen

Zufallsprinzip bei einem kleinen Spiel

Ein Thema von xXcomputerrookieXx · begonnen am 2. Feb 2008 · letzter Beitrag vom 4. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
xXcomputerrookieXx

Registriert seit: 16. Nov 2007
Ort: Bielefeld
61 Beiträge
 
Delphi 7 Personal
 
#1

Zufallsprinzip bei einem kleinen Spiel

  Alt 2. Feb 2008, 19:58
Hallo,

ich bräuchte mal eine kleine Hilfe und zwar:

Wie kann ich bei einem ''Schere-Stein-Papier''-Spiel den Gegner zufällig eines dieser drei auswählen lassen?Ich habe auf dem Formular einfach 3 Button zum auswählen von Schere,Stein und Papier und ein Label das ausgibt,was der Gegner genommen hat.Wie kann ich das machen?

MfG
Gruß Rookie

Wer kämpft kann verlieren,wer nicht kämpft hat schon verloren!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 2. Feb 2008, 19:59
Schau Dir mal Randomize und Random an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Elko

Registriert seit: 2. Feb 2008
52 Beiträge
 
Delphi 7 Personal
 
#3

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 2. Feb 2008, 20:09
Also, als erstes benutzt du randomize(); um den Zufallsgenerator zu initialisieren. Dann würde ich Random(3); nutzen um eine Zufallszahl zwischen 0 und 2 zu erzeugen. Dann per case-Abfrage mit der Zufallszahl den Inhalt des Labels ändern. Hier der Code (habb ich zwar nicht ausprobiert, aber müsste aber eigentlich funktionieren):
Code:
randomize();
case random(3) of
  0: Label1.caption := 'Schere';
  1: Label1.caption := 'Stein';
  2: Label1.caption := 'Papier';
end;
Gruß, Elko
Keyboard not found. Press any key to continue.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#4

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 2. Feb 2008, 20:18
Fast richtig . Randomize sollte einmalig aufgerufen werden. Also könnte das Ganze dann so aussehen:
Delphi-Quellcode:
procedure TDeinForm.FormCreate(Sender: TObject);
begin
  Randomize;
end;

procedure TDeinForm.btnErmittelnClick(Sender: TObject);
begin
  case Random(3) of
    0: lblZug.Caption := 'Schere';
    1: lblZug.Caption := 'Stein';
    2: lblZug.Caption := 'Papier';
  end;
end;
P.S.: Willkommen in der DP, Elko
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 2. Feb 2008, 22:10
edit: bitte löschen, hat sich erleditgt
  Mit Zitat antworten Zitat
Elko

Registriert seit: 2. Feb 2008
52 Beiträge
 
Delphi 7 Personal
 
#6

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 4. Feb 2008, 12:55
Zitat von DeddyH:
Randomize sollte einmalig aufgerufen werden.
Stimmt schon, dass man Randomize() nur einmal am Anfang nutzt, aber was für einen Unterschied würde es eigentlich machen, es öfters aufzurufen (würde er dann nicht jedes mal einfach neu initialisiert werden, also noch "zufälligere" Zufallszahlen?)?

Gruß, Elko
Keyboard not found. Press any key to continue.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#7

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 4. Feb 2008, 12:59
Zitat:
aber was für einen Unterschied würde es eigentlich machen, es öfters aufzurufen (würde er dann nicht jedes mal einfach neu initialisiert werden, also noch "zufälligere" Zufallszahlen?)?
Da Randomize die Zeit für die Initialisierung des Pseudozufallszahlengenerators verwendet, wird man im schlimmsten Fall mehrmals hintereinander exakt dasselbe Ergebnis bekommen (nämlich solange, wie GetTickCount dasselbe Ergebnis zurückliefert). "Zufälliger" werden die Zahlen damit so oder so nicht.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#8

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 4. Feb 2008, 13:12
In Ergänzung
Mit dem selben Startwert der Variablen "RandSeed" (Welche durch Randomize einen anderen "zufälligen" zugewiesen bekommt) wird mit jedem Aufruf von Random dieselbe Reihe "zufälliger" Zahlen erzeugt.
Das lässt sich z.b. auch bei Hobby-Verschluesselungsroutinen verwenden ...
Peter Schaible
  Mit Zitat antworten Zitat
Elko

Registriert seit: 2. Feb 2008
52 Beiträge
 
Delphi 7 Personal
 
#9

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 4. Feb 2008, 14:29
Gut, wieder was dazu gelernt
Gruß, Elko
Keyboard not found. Press any key to continue.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Zufallsprinzip bei einem kleinen Spiel

  Alt 4. Feb 2008, 14:42
Zitat von peschai:
Das lässt sich z.b. auch bei Hobby-Verschluesselungsroutinen verwenden ...
Wenn man es ertragen kann, sich dafür ein paar (verbale) Ohrfeigen einzuhandeln, wenn man fremde "black boxed" RNGs benutzt, die nicht gewährleisten in jeder Version für jeden Seed die selben Werte zu erzeugen. Wie z.B. der Delphi RNG, der sich zwar bis Dato nicht im Verhalten geändert hat, aber von den Entwicklern ausdrücklich nicht ausgeschlossen wird, dass das mal der Fall sein könnte.
Bei Anwendungen die also potentiell mal irgendwann mit einem neueren Compiler übersetzt werden könnten (was im Grunde mindestens jede ist, die man irgendwo mal als Source ins Netz stellt), sollte man da tunlichst von abraten. Dann lieber einen eigenen RNG bauen, der dann sicher immer im gleichen Kontext gleich bleibt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr.
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