Würfelalgorithmus für Mensch Ärgere Dich Nicht

Diskutiere und helfe bei Würfelalgorithmus für Mensch Ärgere Dich Nicht im Bereich Allgemeines (Games) im SysProfile Forum bei einer Lösung; Hi Leute, ich habe leider keinen passenden Bereich dafür gefunden, deshalb poste ich es einfach mal hier rein. (Wenns falsch ist, einfach verschieben... Dieses Thema im Forum "Allgemeines (Games)" wurde erstellt von Cyborg, 4. Januar 2011.

  1. Cyborg
    Cyborg Computer-Experte
    Registriert seit:
    29. Dezember 2006
    Beiträge:
    776
    Zustimmungen:
    6
    1. SysProfile:
    21503

    Hi Leute,

    ich habe leider keinen passenden Bereich dafür gefunden, deshalb poste ich es einfach mal hier rein. (Wenns falsch ist, einfach verschieben :))

    Ich Programmiere derzeit in C++ und OpenGL eine etwas abgewandelte Version von Mensch Ärgere Dich Nicht.

    Nun zu meinem Problem:

    Ich versuche derzeit das "Würfeln" zu implementieren. Genauer: Der Algorithmus der dahinter steckt.
    Ich muss es irgendwie schaffen einen 3D-Würfel randommäßig drehen zu lassen (schon erledigt) und zum Schluss die Würfelseite, die ich sehe, als Wert in einer Variable zu speichern (um z.B. meine Figur zu bewegen).

    Jetzt habe ich schon probiert, die Anzahl der verschiedenen Drehungen zu zählen, um das hinterher irgendwie nachvollziehen zu können. Das klappt jedoch leider nicht so ganz einfach.
    Das Problem hierbei ist, dass sich das würfeleigene Koordinatensystem immer unterschiedlich mitdreht und somit kann ich nach ein paar Würfen nicht mehr sagen... Wenn sich der Würfel 3 mal um X dreht, 5 mal um Z und 1 mal um Y, dann ist die Augenzahl 4.

    Hatte hier jemand mal ein ähnliches Problem zu lösen ? Oder kann mir vielleicht auch so eine Möglichkeit nennen ? :)
     
  2. Racer X
    Racer X Alter Hase
    Registriert seit:
    11. April 2008
    Beiträge:
    2.222
    Zustimmungen:
    78
    1. SysProfile:
    72607
    2. SysProfile:
    14421

    Würde einfach nen Zufallsgenerator machen und jenachdem was er sagt also 1-6 wird eine Würfelanimation abgespielt. Sodass der wert eig. schon feststeht während der Benutzer erstmal die Animation abwarten muss.

    So brauchst du halt für jede Würfelstellung eine Animation.
     
  3. Cyborg
    Cyborg Computer-Experte
    Themenstarter
    Registriert seit:
    29. Dezember 2006
    Beiträge:
    776
    Zustimmungen:
    6
    1. SysProfile:
    21503
    Du meinst also, ich soll mir 6 Würfelanimationen ausdenken, die dann jenachdem um welche Zahl es sich handelt, zu dieser drehen ?!

    Dann gäbe es jedoch wieder die "Ausgangssituationsproblematik". Wenn ich eine feste Animation von Augenzahl 1 starte landet er ja woanders, als wenn diese Animation von Augenzahl 4 startet ?!
     
  4. Schweini
    Schweini Wandelnde HDD
    Registriert seit:
    26. Dezember 2006
    Beiträge:
    4.271
    Zustimmungen:
    220
    Mal ein anderer Ansatz:

    Die elektronischen Würfel funktionieren ähnlich, wie Racer schrieb. Zuerst wird die Zahl generiert und dann angezeigt, also ist Deine Methode "Erst anzeigen und dann auslesen" anders rum wie üblich.

    Zufallsgenerator und die Animation läuft so, dass man kein "Gewürfel" sieht, sondern ein drehender Würfel, der einfach stehenbleibt. Kein Mensch sieht ja die Zahlen, solange der Würfel in Bewegung ist. Evtl kannst Du ja noch (um hier den Menschen was vorzugaukeln) ein "Drücke Maustaste um Energie anzugeben" einbauen -> was im Endeffekt nur die Zeit für den Generator erhöht (also zwecklos ist).
     
  5. Cyborg
    Cyborg Computer-Experte
    Themenstarter
    Registriert seit:
    29. Dezember 2006
    Beiträge:
    776
    Zustimmungen:
    6
    1. SysProfile:
    21503
    Im Moment ist es bei mir so, dass man während der Würfelrotation alle Seiten erkenne kann. Der Würfel dreht sich also dementsprechend langsam.
    Dieses Verhalten würde ich auch ganz gerne beibehalten wenn es nicht anders geht. Vielleicht hier nochmal die Anmerkung: Der Würfel "schwebt" in einer Position und dreht sich nur um seine Achsen. Es wird also nicht so etwas simuliert wie, dass der Würfel irgendwo hingeschmissen, sich dreht und dann irgendwie liegen bleibt. (Dafür ist die Zeit zu knapp ^^)
     
  6. Shadowchaser
    Shadowchaser Wandelnde HDD
    Registriert seit:
    11. November 2008
    Beiträge:
    21.319
    Zustimmungen:
    731
    1. SysProfile:
    84758
    2. SysProfile:
    134624
    Verstehe ich nicht. Normalerweise müßte das doch gehen.

    Man kann das doch vorrausberechnen lassen. Wenn der Ausgangspunkt feststeht und dann die bestimmte Koordinaten "abgewickelt" werden müßte das doch gehen.:)

    Wenn die Ausgangszahl 1 ist und ich drehe den Würfel zweimal auf Achse x komme ich auf 3 usw. Dann die nächste Achse, 3 wird gemerkt(gespeichert)...
    Man könnte ja ne Tabelle erstellen und dann die Werte auslesen lassen. Und dann die Koordinaten der Tabelle zufällig abfahren.

    Bin selber kein Programmier, aber das müßte doch machbar sein.;)
     
    #6 Shadowchaser, 5. Januar 2011
  7. Cyborg
    Cyborg Computer-Experte
    Themenstarter
    Registriert seit:
    29. Dezember 2006
    Beiträge:
    776
    Zustimmungen:
    6
    1. SysProfile:
    21503
    Funktionieren tut es. Aber nur beim ersten Mal ;)

    Danach liegt der Würfel jedoch in einer anderen Ausgansposition (bsp mit 4 nach vorne). Und wenn du dann nochmal in die gleichen Richtungen drehst, kriegst du nicht weder das selbe Ergebnis :)

    Aber ich denke, wenn ich bis zum Wochenende nichts besseres hinbekomme, werde ich es nach dieser Art machen.
    Dann muss ich eben den Würfel immer wieder auf die Ausgangsposition setzen. Sieht vielleicht doof aus, aber ich glaube ich sollte mich nicht zu lange mit so einer Kleinigkeit dann aufhalten. Immerhin ist ein Abgabetermin einzuhalten.
     
  8. Shadowchaser
    Shadowchaser Wandelnde HDD
    Registriert seit:
    11. November 2008
    Beiträge:
    21.319
    Zustimmungen:
    731
    1. SysProfile:
    84758
    2. SysProfile:
    134624
    Wie gesagt würde ich das mit ner Tabelle machen und dann die Werte auslesen. Also sozusagen synchronisieren.
    Da ich aber kein Programmierer bin weiß ich net wie man das genau umsetzen kann.

    Edit: War eben mal gerade in der Badewanne und habe nochmal drüber nachgedacht. Manchmal mache ich es auch komplizierter als es ist(bin nicht der stärkste Logiker)...aber hatte irgendwie Spaß dran drüber nachzudenken. Also da ich keine Programmiersprache kann versuche ich es mal in ner selbsterdachten "Funktion" zu veranschaulichen

    If A1 X-Axis Rotation 0 Times then B is 1
    If A1 X-Axis Rotation 1 Times then B is 3
    If A1 X-Axis Rotation 2 Times then B is 6
    If A1 X-Axis Rotation 3 Times then B is 4
    Weil 4 Seiten.

    If B1 Y-Axis Rotation 0 Times then C is 1
    If B1 Y-Axis Rotation 1 Times then C is 5
    If B1 Y-Axis Rotation 2 Times then C is 6
    If B1 Y-Axis Rotation 3 Times then C is 2
    usw

    4*4 Möglichkeiten

    C1 wäre dann für die Y-Achse. Wobei das komplizierter ist, da würde ich nur die Zahlen in der Draufsicht nehmen. Also eine Seite immer auslassen weil man sonst auf die Kanten und zwei Seiten gleichzeitig guckt.

    Dann müßte man auf die "Befehle", ich weiß nicht wie man geometrische Befehle usw damit verbinden kann, das in die 3 Achsen unterteilen und die Ausgangspunkte zufällig abfahren lassen.
    A,B,C sind auch die jeweiligen Ausgangspunkte. Auf der nächsten Achse. Von denen weitergezählt wird.

    Noch einfacher wäre es nen stehender Würfel mit Ansicht von Schräg oben wo auf 3 Flächen Bilder(mit den Zahlen) zufällig sich abwechseln. Also nur die Zahlen von 1-6 und dann stoppen. Dann haste oben dann die Zahl die stehen bleibt.

    Hoffe das ich jetzt keinen groben UNfug verbreitet habe(und es wohlmöglich viel einfacher geht). ABer hat Spaß gemacht...nur mal nen paar Ideen.;)

    Und nochwas: vielleicht hat es auch nur einmal bei dir geklappt weil man den Würfel auch noch anders legen kann. Selbst wenn Ausgangspunkt 1 festgelegt ist. Es kommt drauf an auf mit welcher Achse du anfängst. Und dann natürlich noch auf die Drehrichtung. Das muß auch mit beachtet werden:

    1-3-6-4
    1-2-6-5
    1-4-6-3
    1-5-6-2
     
    #8 Shadowchaser, 5. Januar 2011
    Zuletzt bearbeitet: 5. Januar 2011
  9. Racer X
    Racer X Alter Hase
    Registriert seit:
    11. April 2008
    Beiträge:
    2.222
    Zustimmungen:
    78
    1. SysProfile:
    72607
    2. SysProfile:
    14421
    Ich hab das so gemeint das du so eine Art Feste "Filme" hast die je nachdem abgespielt werden. Quasi Machst du nen Würfel in 3D und Erstellst für jedes mal ne Animation, Speicherst das als Film mit Alpha kanal. Dann kommt der Zufallsgenerator und Spuckt der ne 4 Aus wird animation/Film 4 Abgespielt...
     
  10. Cyborg
    Cyborg Computer-Experte
    Themenstarter
    Registriert seit:
    29. Dezember 2006
    Beiträge:
    776
    Zustimmungen:
    6
    1. SysProfile:
    21503
    Danke nochmal für euere Antworten.

    @ Shadowchaser: Deinen Gedanken kann ich leider noch nicht so folgen ^^
    Hier sei nochmal gesagt, dass der Würfel wirklich nur von einer Seite (mit Augenzahl 1) sichtbar ist. Alle Überlegungen sollte also diese Ansicht beinhalten.

    @ Race X: Und Animation 4 müsste aber dann den Würfel so drehen, dass zum Schluss die Augenzahl 4 oben liegt ?!

    Dann haben wir aber wieder das Problem, dass jede Animation von dem gleichen Startpunkt starten muss. Der Würfel kann also nicht aus gewürfelter Position (im Spiel sozusagen) starten.

    Habe ich das richtig verstanden ?!
     
  11. Racer X
    Racer X Alter Hase
    Registriert seit:
    11. April 2008
    Beiträge:
    2.222
    Zustimmungen:
    78
    1. SysProfile:
    72607
    2. SysProfile:
    14421
    Hast du richtig verstanden.
     
  12. Shadowchaser
    Shadowchaser Wandelnde HDD
    Registriert seit:
    11. November 2008
    Beiträge:
    21.319
    Zustimmungen:
    731
    1. SysProfile:
    84758
    2. SysProfile:
    134624
    @Cyborg: Das habe ich mir fast gedacht.:confused:
    Sollte einfach nur eine Art weiterzählen sein von einen Ausgangspunkt sein. Welche Zahl dann rauskommt. Und die Zahl die rauskommt ist dann der nächste Ausgangspunkt(wird gespeichert) usw. So könntest du immer von einen anderen Ausgangspunkt starten weil der vorige gemerkt wurde(und von da wieder weitergezählt wird). Aber keine Ahnung wie das zu realisieren ist.

    Noch einfacher wäre es das du die Würfelanimation wegläßt und wie gesagt nur zufällig Bilder auf der Würfelseite wiedergibst. Dann kann man sich auch das letzte Bild merken lassen.

    Oder wie von RacerX vorgeschlagen, aber dann hast du immer den selben Ausgangspunkt.;)
     
    #12 Shadowchaser, 9. Januar 2011
  13. Cyborg
    Cyborg Computer-Experte
    Themenstarter
    Registriert seit:
    29. Dezember 2006
    Beiträge:
    776
    Zustimmungen:
    6
    1. SysProfile:
    21503

    Aus Zeitgründen musste ich jetzt wirklich erstmal die "vordefinierte Animationen" Variante nehmen. Das Spiel muss fertig werden und da kann ich mich jetzt leider nicht weiter daran mit dem Würfel "aufhalten".

    Ein Dank an alle für ihre Anteilnahme. :)
     
Thema:

Würfelalgorithmus für Mensch Ärgere Dich Nicht

Andere User suchten nach Lösung und weiteren Infos nach:

  1. mensch ärgere dich nicht algorithmus

    ,
  2. mensch ärger dich nicht mit beeinträchtigung

    ,
  3. mensch ärgere dich nicht programmieren java 6 gewürfelt

    ,
  4. algorithmus mensch ärgere dich nicht
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden