Whouzuo: Stein-Schere-Papier-Echse-Spock in OOP

Beitrag lesen

Hab meinen code auf 5 statt 3 Karten ausgelegt.

[code lang=php]abstract class motherofallcards
{
    protected $arCheck = null;
    public function check( motherofallcards $objCheck )
    {
        return $this->arCheck[ get_class($objCheck) ];
    }
}

//--- Ableiten und benutzen
class stein extends motherofallcards
{
    public function __construct()
    {
        $this->arCheck = array(
            "stein" => 0,    //--- Unentschieden
            "papier" => 1,   //--- Stärker
            "echse" => 1,   //--- Stärker (weiß nicht ob das stimmt)
            "schere" => -1,   //--- Schwächer
            "spock" => -1   //--- Schwächer
        );
    }
}

Das ist schon besser, allerdings auch immernoch etwas ungünstig. Will man z.B. eine neue Karte hinzufügen, so muss man _jede_ andere Karte ändern. Man stelle sich das mal bei einem Kartenspiel mit 500 Karten vor...
Zudem hat man Redundanz: in jeder Klasse steht ein Vergleichsarray für jede andere Karte. Dabei braucht man lediglich die Hälfte der Einträge, um eindeutig bestimmen zu können, welche Karte welche andere Karte schlägt.

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