Dieses Beispiel soll später einmal ein Rollenspiel werden mit lauter Dieben, die sich gegenseitig bestehlen.
Ich bitte um Kritik bzw Verbesserungsvorschläge. Was mich am meisten beschäftigt:
*)Wäre es besser die Klasse "Dieb" in eine Überklasse "Diebe" zu packen und mittels __iter__ zu arbeiten als alle Diebe in eine Liste zu stopfen und mittels for - Schleife zu arbeiten ? Ich bin mit dem __iter__ und next nicht ganz vertraut..
*) Abgesehen von den fehlenden Docstrings, stimmt die Gross/Kleinschreibung soweit ?
*) geht das ganze eleganter, denke ich zu verworren ? Ich fürchte es wird zu kompliziert für die Kinder (ca. 11 Jahre alt).
Code: Alles auswählen
# -*- coding: utf-8 -*-
import random
class Dieb:
def __init__(self, name):
self.Name = name
self.Geld = 100
self.Diebstahl = 25 + random.randrange(-20,20)
self.Aufpassen = 25 + random.randrange(-20,20)
self.Ruf = 25 + random.randrange(-5,5)
self.Zustand = "lungert herum"
def saghallo(self):
return "ich bin " + self.Name + " und habe " + str(self.Geld) + " Euro und " + str(self.Ruf) + " Ruf."
def stehlen(self, GegnerVerteidigung):
if random.randrange(0,20) + self.Diebstahl > random.randrange(0,20) + GegnerVerteidigung:
return True
else:
return False
def verteidigung(self):
if self.Zustand == "abgelenkt":
return self.Aufpassen * 0,5
else:
return self.Aufpassen
def Diebstahl(Taeter, Opfer):
if Taeter.stehlen(Opfer.verteidigung()) == True:
Betrag = round(Opfer.Geld * 0.5,0 ) # Taeter nimmt
Opfer.Geld -= Betrag # dem Opfer das
Taeter.Geld += Betrag # halbe Geld weg
return "Diebstahl erfolgreich. \n" + Taeter.Name + " stiehlt von " + Opfer.Name + " " + str(Betrag)
else:
Taeter.Ruf -= round(Taeter.Ruf * .6, 0) # Taeter verliert Ruf
return "Diebstahl erfolglos. \n" +Taeter.Name + " wurde von " + Opfer.Name + " beim stehlen erwischt und verprügelt."
def diebname():
liste1 = ["Benno", "Beppo", "Hasso", "Luigi", "Bobo", "Ede", "Eddi",
"NixNutz", "August", "Butch", "Ricky"]
liste2 = ["Hasenfuss", "Flinkfinger", "Tunichtgut", "Taschenkrebs",
"Langfinger", "Butterhand", "Riff-Raff", "Ruchlos"]
return random.choice(liste1) + " " + random.choice(liste2)
def neuerDieb():
while True:
Vorschlag = diebname()
for Kerl in Diebe:
if Vorschlag == Kerl.Name:
#print "diesen Namen gibt es schon"
break #else wird NICHT ausgeführt, zurück zur while Schleife
else:
Diebe.append(Dieb(Vorschlag))
#print "Dieb wurde angefügt"
break #raus aus der while Schleife
print "Ein neuer Dieb erscheint ! Es gibt jetzt " + str(len(Diebe)) + " Diebe"
# -------------------mainloop---------------------
Diebe = []
for x in range(2):
neuerDieb()
print "---" + str(len(Diebe))
for x in range(5):
print "Diebstahl " + str(x)
print Diebstahl(Diebe[0], Diebe[1])
print Diebe[0].saghallo()
print Diebe[1].saghallo()