ERLEDIGT
JA
JA
ANTWORTEN
19
19
ZUGRIFFE
3802
3802
EMPFEHLEN
-
Hallo,
ich möchte es so programmieren, dass ein Zufallsgenerator eine Zahl zwischen 11 und 66 erstellt und diese dann ausgibt. Es dürfen aber nur 11, 21, 22, 32, 33, 42, 43, 44, 52, 53, 54, 55, 61, 62, 63, 64, 65, 66 herauskommen. Ich weiß, dass ich randomize anwenden muss, aber wie?
Zweite Frage: Wie gebe ich die erstellte Zahl am besten aus?
-
05.06.08 17:56 #2
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hi,
erstell dir doch einfach ein Array, in dem du die erlaubten Zahlen ablegst. Du kannst dann mit fortlaufenden Zufallszahlen auf die Elemente des Arrays zugreifen.
Code delphi:1 2 3 4 5 6 7 8 9 10
procedure RollDice(); const numbers: array[0..17] of Integer = (11, 21, 22, 32, 33, 42, 43, 44, 52, 53, 54, 55, 61, 62, 63, 64, 65, 66); var i: Integer; begin Randomize; // Zufallszahlengenerator vorbereiten i := Random(17); // Zufallszahl erstellen ShowMessage(IntToStr(numbers[i])); // Würfelergebnis als MessageBox ausgeben end;
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
Gut, dass klappt soweit.
Ich möchte ein Programm schreiben, wo User gegen Computer spielt.
Weitere Fragen:
1. Wie kann ich Zahlen abspeichern?
2. Wie kann ich es machen, dass das Programm automatisch eine weitere Zahl erstellt und diese mit meiner eingegebenen Zahl vergleicht?
-
06.06.08 08:10 #4
- Registriert seit
- Mar 2004
- Beiträge
- 441
Klugscheis.serei meinerseits:
Das von dir gebastelte Array unterscheidet nicht zwischen 12 und 21 und gibt damit eine falsche Wahrscheinlichkeitsverteilung für die einzelnen Werte weiter.
Mit zwei Würfeln habe ich 6 * 6 = 36 verschiedene Ergebnismöglichkeiten. Die Wahrscheinlichkeit auf einen bestimmten Pasch ist dabei 1 / 36. Die Möglichkeit einer bestimmten Zahlenkombination (z.B. 12) ist jedoch doppelt so hoch.
-
07.06.08 16:38 #5
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hi,
genau genommen stimmt das natürlich. Man könnte auch den komplizierteren Weg gehen und nach den jeweiligen Wahrscheinlichkeiten verschiedene Intervalle der Zufallszahlen auswerten.
Effektiv wird das aber bei einer Handvoll von Zufallszahlen kaum merkbar sein, dafür reicht die Funktion. Für einen spürbaren Unterschied der Wahrscheinlichkeiten müsste man schon eine Messreihe mit mehreren hundert Ergebnissen auswerten. Wenn es darauf ankommt, lohnt sich auch der Aufwand einer genaueren Funktion, ansonsten stimmt das Verhältnis von Aufwand zu Nutzen m.M.n. nicht so ganz.
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
Weitere Fragen:
1.Wie sage ich dem Compiler, dass 21, 11, 22, 33, 44, 55 mehr zählt als 66?
2. Ich habe folgendes als Vergleichsmethode geschrieben..
Code :1
if eingabe <> w then ShowMessage('Gelogen!');
Weiter oben steht dann:
Code :1 2 3 4
w := Random(20); // Zufallszahl für Spieler ShowMessage(IntToStr(numbers[w])); ... eingabe := StrToInt(EdEingabe.Text);
Trotzdem gibt der Computer oft "Gelogen" aus, auch wenn ich die echte Zahl eingetippt habe.Geändert von HarryXVI (21.06.08 um 18:01 Uhr)
-
21.06.08 20:06 #7
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hi!
1. Wie die Ergebnisse gewertet werden (und wie du demnach die Regeln implementieren musst) hängt von den Regeln selbst ab. Dem Compiler musst du das nicht erklären, der interessiert sich nur für syntaktische Richtigkeit des Codes.
2. Du musst auch auf das Würfelergebnis vergleichen, nicht auf dessen Index.
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
-
22.06.08 13:22 #9
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hi,
wenn du die Würfelergebnisse in deinem Array hast, solltest du auch die Eingabe mit dem Inhalt des Arrays an der w-ten Stelle vergleichen, nicht mit w selbst.
Code delphi:1
if eingabe <> numbers[w] then // ...
Zumindest soweit ich dich verstanden habe.
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
gut, was ist der operator für "enthalten in"? also "if eingabe enthalten in numbers[20] then ..."
-
22.06.08 22:50 #11
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hi,
ich glaube, so einen Operator gibt es in Pascal/Delphi (zumindest für einfache Arrays) nicht. Schreib dir am besten eine Methode, die dein Array durchsucht und entweder true oder false zurück gibt. Oder benutz sowas wie TList, das könnte sogar eine entsprechende Methode anbieten.
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
Wie soll ich denn nun die Rangfolge der Würfelzahlen (31,...41,...51,...61,...66, 11,...55, 21) implementieren?
Bitte Vorschläge mit [U]sinnvollem Code{/U], dann kann ich das besser nachvollziehen. Wenn ihr nur schreibt "mit einer ListBox", hilft mir das nicht viel weite!Geändert von HarryXVI (25.06.08 um 15:00 Uhr) Grund: Ergänzung notwendig
-
hey,
ich will net fies sein, aber warum verlangst du hier den kompletten Code?
.. so kannste ja gleich jemand Fragen ob er dir das Programm schreibt.
Es gibt in Delphi ne gute Hilfe, gib da mal ListBox ein da findest du extreme viel!
ohne fleiß kein Preis ....
naja
Mfg ImoDwww.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi
-
Ich habe mir nun eine ListBox gemacht und die Würfelzahlen nach Werten sortiert als Strings eingegeben. Dann habe ich die ListBox unsichtbar gemacht, denn sie nimmt nur Platz weg.
Könnt ihr mir vielleicht noch einen Tipp geben, wie der Compiler von dieser Liste auf die Reihenfolge der gewürfelten Zahlen schließen kann?
-
03.07.08 12:33 #15
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hi,
ich an deiner Stelle würde das nicht über eine ListBox machen, denn die frisst nur unnötig viel Speicher. Eine verkettete Liste (TList) sollte es auch tun und ist relativ flexibel, was das Anhängen neuer Elemente angeht. Neue Würfelergebnisse hängst du einfach hinten an und bekommst so eine sortierte Liste nach der Reihenfolge, in der die Würfelergebnisse anfallen.
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
Ähnliche Themen
-
4D-Würfel
Von helo03 im Forum Cinema 4DAntworten: 39Letzter Beitrag: 21.10.08, 13:57 -
[vb.net]3D Würfel?
Von oyla12 im Forum .NET Grafik und SoundAntworten: 4Letzter Beitrag: 01.07.07, 09:19 -
Würfel
Von Tobias K. im Forum 3D-StillsAntworten: 34Letzter Beitrag: 05.01.06, 21:30 -
Würfel
Von worstcase im Forum 3D-StillsAntworten: 6Letzter Beitrag: 18.07.05, 17:04 -
Würfel mit Textur
Von e-w-i im Forum 3D Studio MaxAntworten: 1Letzter Beitrag: 09.03.04, 08:54





Zitieren
Login





