Don P: Mensch ärgere dich nicht als Browsergame in JS

Beitrag lesen

Hallo Felix,

Sehr gern gesehen ist auch Feedback bezüglich des User Interfaces. Wenn jemand ganz andere (Verbesserungs)Vorschläge hat, so bin ich daran selbstverständlich ebenso interessiert.

Da hätte ich schon einige Vorschläge zum Design des ganzen Programms, nicht zum Look & Feel der Oberfläche. Letzere finde ich ganz gut gelungen: Man ist unweigerlich an das Original erinnert, das auch so bunt und relativ schlicht daherkommt.

Die Spielfiguren sind einfach süß. Jetzt, wo ich auch mal die Gewinner sehen konnte, gefallen sie mir noch besser. Etwas fällt mir noch dazu ein: Wenn Schlagzwang besteht und es nur eine Möglichkeit zum Ziehen gibt, dann kann die zu schlagende Figur bereits sofort nach dem Würfeln wissen, dass sie jetzt fällig ist. Sie könnte sich also schon ängstlich zeigen, bevor man die schlagende Figur zum Ziehen anklickt. So wie es jetzt ist, kann man nämlich die ängstlichen Gesichter immer nur ganz kurz genießen ;), während die schlagende Figur sich fortbewegt.

Aber den Code und das ganze Konzept, naja... die würde ich anders gestalten:

Für das Spielfeld mit den Waypoints z.B. könnte man hervorragend mit Object.create (JavaScript 1.8.5) bzw. der Crockfordschen Urversion davon arbeiten. Ich würde jeder Figur ein eigenes Parcours-Array mitgeben, die alle einfach vom Basisobjekt erben und zum Ziehen und Einstellen des Startpunkte nur die einzelnen Parcours-Arrays rotieren mit meiner genialen Array.rotate-Funktion, die ich im Forum schon mal vorgestellt habe, aber fast nur Spott erntete, ihr Ignoranten :P ;).

Diese Parcours-Arrays wären ja eigentlich leer; es reicht, wenn sie den Basisparcours als Prototyp haben. Die aktuelle Position eines Spielsteins wäre immer Figur.Parcours[0], wobei der das tatsächliche Waypoint-Objekt natürlich nur im Prototyp existiert, was für den Zugriff aber keinen Unterschied macht. Die Startposition als Waypoint für jedes Farbvolk würde man anfangs wie gesagt einfach durch Rotation des neu erzeugten FarbParcours einstellen.

Die Infos über die Nachfolger eines Waypoints wären überflüssig. Die Waypoint-Objekte selber könnte man direkt miteinander vergleichen, weil jeder Waypoint nur einmal als Objekt existiert (im Basisparcours) so dass ein Vergleich auf Gleichheit immer das richtige Ergebnis liefert (nur true wenn die Operanden identisch sind).

Irgendwie so:

var parcours = [ /* Waypoint-Objekte ohne Nachfolger-Info */ ],  
    gelb.parcours = Object.create(parcours),  
    grün.parcours = Object.create(parcours).rotate(10),  
    rot.parcours  = Object.create(parcours).rotate(20),  
    blau.parcours = Object.create(parcours).rotate(30);  

Man könnte natürlich eleganter in einer Schleife über die vier Member eines Farbvölker-Objekts iterieren. Die StartObjekte liegen danach jeweis in volk.parcours[0] griffbereit.

Für die einzenen Spielsteine einer Farbe in einer Schleife i=0..3 den individuellen Weg initialisieren:

grün.Figur[i].weg = Object.create(grün.parcours);

Zum Ziehen einer Figur und Position vergleichen etwas wie

    volk.figur[i].weg.rotate(wurf);  
    if (volk.figur[i].weg[0] === volk.parcours[0]) {/* Figur i steht auf Startposition */}  
    if (volk.figur[i].weg[1] === volk.parcours[0]) {/* Figur i steht vor dem Zieleinlauf */}  
  
    if ( isbesetzt(volk.figur[i].weg[wurf]) ) {/* Figur i kann schlagen */}  

usw.
JSLint würde vielleicht wieder sagen "Weird program.", aber was soll's...

Gruß, Don P

0 92

Mensch ärgere dich nicht als Browsergame in JS

Felix Riesterer
  • seitenbewertung
  1. 0
    Kai345
    1. 0
      Felix Riesterer
  2. 0
    suit
    1. 0
      Felix Riesterer
      1. 0
        Gunnar Bittersmann
        1. 0
          Felix Riesterer
          1. 0
            Gunnar Bittersmann
    2. 0
      Detlef G.
      1. 0
        Gunnar Bittersmann
  3. 0
    Gunnar Bittersmann
    1. 0
      Felix Riesterer
      1. 0
        Gunnar Bittersmann
        1. 0
          Felix Riesterer
  4. 0
    LX
    1. 0
      Der Martin
      1. 0
        LX
      2. 0

        Tippfehler in der Signatur

        hgfhfs
        • menschelei
    2. 0
      Felix Riesterer
    3. 0
      Gunnar Bittersmann
  5. 0
    Der Martin
    1. 0
      Kai345
      1. 2
        Tom
        1. 0
          Felix Riesterer
      2. 0
        Felix Riesterer
    2. 0
      Felix Riesterer
      1. 0
        Der Martin
        1. 0
          Felix Riesterer
          1. 0
            Detlef G.
  6. 2
    Gernot Back
    1. 0
      Felix Riesterer
      1. 0
        Gernot Back
  7. 0
    Blubb
    1. 0
      Felix Riesterer
      1. 0
        Matthias Apsel
    2. 0
      Gunnar Bittersmann
      1. 0
        Felix Riesterer
  8. 0
    Klawischnigg
    1. 0
      Felix Riesterer
      1. 0
        Der Martin
        1. 0
          Felix Riesterer
          1. 0
            Der Martin
            1. 0
              Felix Riesterer
              1. 0
                Der Martin
      2. 0
        Gunnar Bittersmann
        1. 0
          Felix Riesterer
          1. 0
            Gunnar Bittersmann
            1. 0
              Gunnar Bittersmann
              1. 0
                Der Martin
                1. 0
                  Gunnar Bittersmann
  9. 0
    romy
    1. 0
      romy
    2. 0
      Felix Riesterer
  10. 0
    Gunnar Bittersmann
    1. 0
      Felix Riesterer
      1. 0
        Kai345
        1. 0
          Felix Riesterer
    2. 0
      O'Brien
    3. 0
      Don P
      1. 0
        Der Martin
        1. 0
          Felix Riesterer
          1. 0
            Eingefroren
            1. 0
              Felix Riesterer
      2. 0
        Felix Riesterer
        1. 0
          Don P
          1. 0
            Felix Riesterer
  11. 0

    Schneller? Schneller!

    Felix Riesterer
    1. 0
      Gunnar Bittersmann
  12. 0
    Don P
    1. 0
      Felix Riesterer
      1. 0
        Don P
    2. 0

      "ängstliche" Spielfiguren länger ängstlich sein lassen

      Felix Riesterer
      1. 0
        Don P
        1. 0
          Felix Riesterer
          1. 0
            Don P
            1. 0
              Don P
  13. 0
    O'Brien
  14. 0

    Schlagzwang optional + neue Hierarchie der möglichen Spielsteine

    Felix Riesterer
    1. 0
      Der Martin
      1. 0
        Felix Riesterer
        1. 0
          Der Martin
          1. 0
            Felix Riesterer
            1. 0
              Der Martin
              1. 0
                O'Brien
                1. 0
                  Der Martin
              2. 0
                Felix Riesterer
                1. 0
                  Der Martin
                  1. 0

                    Warum Grafiken vorladen...?

                    Felix Riesterer
  15. 0

    Safari unter iPhone macht mit

    Felix Riesterer
    • browser
  16. 0

    Spielregeln ergänzt - Kritik?

    Felix Riesterer
    1. 0
      Don P
  17. 0

    MÄDN: Spielregeln, individuelle Details

    Der Martin
    • sonstiges