Tim Tepaße: Höchste Zahl ermitteln

Beitrag lesen

Hallo $unleserlichername,

[31 Zeilen Code]
du meine Güte, ist die Sprache furchtbar ausschweifend.

Nun ja, Du musst auch zugeben, dass viel überflüssiger Überbau dadurch kommt, dass Biesterfeld (für die Absicht des Spieles zurecht) objekt-orientiert programmiert hat. Vergleiche mal diese minimale Lösung in Python:

~~~python #!/usr/bin/env python

import sys
  from random import choice

players = sys.argv[1:]

round = dict([(player, choice(range(1,7))) for player in players])
  while len(round) > 1:
      maximum = max(round.values())
      round = dict([(player, choice(range(1, 7))) for player in round
                    if round[player] == maximum])

print round.keys()[0]

  
  
mit dieser längeren objekt-orientierten:  
  
  ~~~python
#!/usr/bin/env python  
  
  import sys  
  from random import choice  
  
  class NoPlayerError(Exception):  
      pass  
  
  class Game(object):  
      def __init__(self, players):  
          if not players:  
              raise NoPlayerError  
          self.players = players  
  
     def calcbeginner(self):  
         round = dict([(p, p.rolldice()) for p in self.players])  
         while len(round) > 1:  
             maximum = max(round.values())  
             round = dict([(p, p.rolldice()) for p in round.keys()  
                           if round[p] == maximum])  
         return round.keys()[0]  
  
      def start(self):  
          beginner = self.calcbeginner()  
          print "%s startet das Spiel" % beginner.name  
          # Tue irgendwas, was zum Spiel gehört  
  
  class Player(object):  
      def __init__(self, name):  
          self.name = name  
  
      def rolldice(self):  
          return choice(range(1, 7))  
  
  if __name__ == '__main__':  
      names = sys.argv[1:]  
      players = [Player(name) for name in names]  
      game = Game(players)  
      game.start()

Dadurch kommt schon was zusammen, hilft einem aber im größeren Konzept des Spieles. Der restliche Krempel ist natürlich Java-Syntax und das explizite Typing, ja.

Tim