Matthias Apsel: Stein-Schere-Papier-Echse-Spock in OOP

Beitrag lesen

Om nah hoo pez nyeetz, Whouzuo!

  

> > {Var.2}  
> > 	  
> > gewinn := check[min(h,c),max(h,c)] * sgn(h-c);  
> >   
> > case gewinn of  
> > 	-1: {verloren}  
> > 	0:  {unentschieden}  
> > 	1:  {gewonnen}  
> > end;

Man benötigt tatsächlich nur eine Zeile Quelltext mehr, die aber 3 Funktionsaufrufe enthält.

Ich verstehe jetzt das zweite Beispiel nicht. Wieso hier objektorientiert nicht einfach karte1.compareTo(karte2) mittels Compare Interfaces oder aber gewinner = check(karte1, karte2)
?
Der wirkliche check führt dann natürlich entsprechend die Funktion aus und negiert sie ggf. aber für den Aufrufer ist das eine blackbox, der soll davon gar nichts sehen.

Das ist die Funktion, die genau das tut, wenn das Array reduziert ist. h und c sind IDs für karte1 und karte2. h steht in der Zeile, c in der Spalte

Also mal so
Das Array heißt check
1=Stein, 2=Schere, 3=Papier

ausführlich                reduziert mit Diagonale  
   |  1  |  2  |  3           |  1  |  2  |  3  
---------------------      ---------------------  
 1 |  0  |  1  | -1         1 |  0  |  1  | -1  
 2 | -1  |  0  |  1         2 |     |  0  |  1  
 3 |  1  |  -1 |  0         3 |     |     |  0

Wenn das Array reduziert wird, gibt es nur noch Einträge check[h,c] mit h ≤ c.

Deshalb also der Aufruf check[min(h,c),max(h,c)]. Ist jetzt aber h > c, muss ich den Wert, der im Array steht, mit -1 multiplizieren. sgn liefert das Vorzeichen einer Zahl also -1 für c-h falls h > c, 0 falls h = c und 1 falls h < c.

Das heißt, die gewünschte Zahl ist check[min(h,c),max(h,c)] * sgn(c-h). Hier wäre ein Fehler in dem, was ich heute morgen mal eben schnell gepostet habe.

Matthias

--
Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Bus und Bussard.

0 55

Stein-Schere-Papier-Echse-Spock in OOP

Matthias Apsel
  • programmiertechnik
  1. 0
    Whouzuo
    1. 0
      T-Rex
      1. 0
        Whouzuo
  2. 0
    T-Rex
    1. 0

      Stein-Schere-Papier-Echse-Spock

      Auge
      • menschelei
  3. 0
    M.
  4. 0
    Encoder
    1. 0
      Matthias Apsel
      1. 0
        Encoder
        1. 0
          Matthias Apsel
          1. 0
            Whouzuo
            1. 0
              Matthias Apsel
              1. 0
                Whouzuo
        2. 0
          Matthias Apsel
  5. 0
    T-Rex
    1. 0
      Whouzuo
      1. 0
        Encoder
        1. 0
          Whouzuo
          1. 0
            Encoder
            1. 0
              Whouzuo
              1. 0
                Encoder
                1. 0
                  Matthias Apsel
                2. 0
                  Whouzuo
                  1. 0
                    Matthias Apsel
                    1. 0
                      Whouzuo
                    2. 0
                      Whouzuo
                      1. 0
                        Matthias Apsel
      2. 0
        Matthias Apsel
        1. 0
          Whouzuo
          1. 0
            Matthias Apsel
            1. 0
              Whouzuo
              1. 0
                Matthias Apsel
                1. 0
                  Whouzuo
                  1. 0
                    Matthias Apsel
              2. 0
                dedlfix
                1. 0
                  dedlfix
                2. 0
                  Whouzuo
      3. 0
        T-Rex
    2. 0
      T-Rex
      1. 0
        Matthias Apsel
  6. 3
    Der-Dennis
    1. 3
      Der-Dennis
      1. 0
        Whouzuo
        1. 0
          Der-Dennis
          1. 0
            Whouzuo
            1. 0
              Der-Dennis
          2. 0

            Stein-Schere-Papier-Echse-Spock in OOP (Teil 2)

            Whouzuo
            1. 0
              Der-Dennis
              • menschelei
    2. 0
      Matthias Apsel
      1. 0
        Der-Dennis
        1. 0
          bubble
          1. 0
            Der-Dennis
        2. 0
          Matthias Apsel
        3. 0
          Matthias Apsel