Rollenspielwürfel

OP #953831
Guten Tach,

ich spiel sehr gerne Rollenspiele, bei denen man mit 2 Würfeln muss. 
Einen 6er und einen 20er, nun habe ich mir gedacht ich Programmier mir 
einen PIC(kann nur PIC programmieren) der für mich würfelt. Da der 
Würfel ein paar spezielle Funktionen haben soll, benötige ich Hilfe.

Es soll 2 Taster geben, einen für den 6er Würfel und einen für den 20er 
Würfel, 2 7-Segmentanzeigen zum anzeigen der Zahlen. Wenn ein Taster 
gedrückt würde, leuchtet die Anzeige komplett, nach dem loslassen des 
Tasters soll der Würfel langsam ausrollen. Ist der Würfel ausgerollt, 
soll die Anzeige 2mal Blinken und am besten noch über einen kleinen 
Lautsprecher ein Ton ausgegeben werden.

Mit freundlichen Gruß
Michael Brucksch
Gast
Naja die ist relativ einfach machbar, einfach ein Timer der durchzählt.

Bei mehreren MHz und einer normale Geschwindigkeit von vielleicht 1x 
drücken in 5sekunden ist da der zufall doch schon ziemlich gegeben...
Persönliche Seite
MichiB wrote:
> Die eigentliche Frage ist doch wie ein 20er Würfel
> aussieht?

Ähm, ja wie? Halt mit Zahlen von 1 bis 20. Wo ist das Problem?

Ansonsten wie von Stefan M. beschrieben ausprobieren. Zehntausendmal 
drücken und aufschreiben, dann bekommt man schon ein Gefühl, ob es für 
ein Spiel zufällig genug ist ;-)
ein Würfel hat doch aber per Definition nur 6 Seiten. Schreibt man da 
mehrere Zahlen auf eine Seite und sucht sich dann die passendste aus? 
Wem der Zufall mit floatendem AD-Pin noch nicht zufällig genug ist 
könnte auch einen Transistor vor sich hinrauschen lassen und per AD 
abtasten. Man kanns aber auch direkt mit dem Controller machen wenns 
kein analoger Zufall sein muss. Hier http://mondo-technology.com/ ist 
unter Tricks und Tips sowas fürn PIC beschrieben.

bye

Frank
Wahrscheinlich wird das mit dem Speicher des PIC etwas knapp, aber man 
könnte, was das Ausrollen angeht, eine Vorüberlegung anstellen, auf 
welche angrenzenden Seiten der Würfel von einer bestimmten Seite aus 
kippen kann. Dann wird das vielleicht realistischer aussehen. 
Andererseits merkt wahrscheinlich kein Mensch, daß es einfach nur 
Zufallszahlen sind, die immer langsamer durch das Display laufen.
Das in Assembler zu programmieren, ist durchaus eine schöne 
Übungsaufgabe. Displayansteuerung (ggf. Multiplexbetrieb über 
Timer-Interrupt, oder statisch mit externen BCD-Decodern), 
(Pseudo)-Zufallszahlen, Tastenabfrage, Umgang mit Verzögerungsschleifen 
und Zählvariablen...
Wenn ich Zeit hätte, würde mich das als Aufgabe sogar reizen... aber ich 
muß die nächsten Tage noch 2 Layouts zeichnen, sorry. Vielleicht fühlt 
sich ja jemand anders motiviert.
Stefan M. wrote:
> Naja die ist relativ einfach machbar, einfach ein Timer der durchzählt.


Nein das ist überhaupt nicht einfach!

Du mußt auch vom Programmablauf her sicherstellen, daß die Chancen, 
einen Zustand zu erwischen exakt gleich sind.

Auch kann durch die unterschiedliche Stromaufnahme der LED-Ziffern eine 
Verschiebung der Schaltschwelle des Tasteneingangs erfolgen, d.h. 
bestimmte Ziffern werden bevorzugt, je nach Entladungsgrad der Batterie.


Hier mal ein funktionierendes Beispiel:

http://home.tiscali.de/peterd/appl/soft/c51/dice/index.htm


Peter
Gast
Interessantes Projekt. Machbar auf alle Fälle.

Aber ich finde ja, dass Rollenspiele etwas an Flair verlieren, wenn man 
nicht mehr mit echten Würfeln spielt. :)
Gast
Ich kenn jetzt nur die AVR-Hardware. Aber da würd ich einen Timer nehmen 
und den im CTC-Modus bis zum Höchstwert des Würfels* laufen lassen. Dann 
den Taster an einen Input-Capture-Pin. Dann müsste die 
Wahrscheinlichkeit doch ausreichend gleich verteilt sein.


*natürlich Höchstwert - 1
@Peter:

Nein, ich meine nicht, daß der Speicher für das Würfelprojekt allgemein 
zu knapp ist. Lediglich eine realistische "Ausrollsimulation" in 
Tabellenform wird, insbesondere beim 20seitigen, etwas Programmspeicher 
verbrauchen. Bei einem 16C54 oder 16C505 kann es dann, zusammen mit der 
7-Segment-Tabelle, vielleicht zu knapp werden. Aber gut, PIC kann 
genausogut ein 16F876 sein. Dann reicht's immer.
Persönliche Seite
Kein Hobbybastler programmiert mit den 16C PICs! Und ein 16F628 (welchen 
ich wohl dazu nehmen würde) hat 2K Flash und 224 Byte RAM. Das sollte ja 
wohl ausreichen für dieses Projekt.

Und PIC kann auch ein dsPIC33 FJ256GP710 sein, der hätte dann 256kByte 
Flash und 30kByte RAM wäre aber hier wohl etwas überperformt.

Sven

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.