Masaru hat geschrieben: "OOP oder Python?" ... "Schlagsahne oder Schokosauce?"
Wobei das eine, nicht das andere unbedingt ausschließt ... ebenso natürlich umgekehrt.
SCHOKOSOßE

Masaru hat geschrieben: "OOP oder Python?" ... "Schlagsahne oder Schokosauce?"
Wobei das eine, nicht das andere unbedingt ausschließt ... ebenso natürlich umgekehrt.
Code: Alles auswählen
print self.Angriffskill * "+"
print self.Defensifskill * "."
Code: Alles auswählen
##from __future__ import division
##from random import randrange, shuffle
import random
import easygui
easygui.DEFAULT_FONT_SIZE=16
easygui.CODEBOX_FONT_SIZE=16
HERUMLUNGERN = 'lungert herum'
ABGELENKT = 'abgelenkt'
class Dieb(object):
def __init__(self, name, geld=100):
self.name = name
self.geld = geld
self.geschicklichkeit = random.randrange(5, 45)
self._aufmerksamkeit = random.randrange(5, 45)
self.ruf = random.randrange(20, 30)
self.zustand = HERUMLUNGERN
def __str__(self):
#return '%s, besitzt %d EUR, Ruf: %d' % (self.name, self.geld, self.ruf)
ausgabe = "Name: " + self.name + "\n"
ausgabe += "Geld: " + str(self.geld) + "\n"
ausgabe += "Geschicklichkeit: " + str(self.geschicklichkeit) + "\n"
ausgabe += "Aufmerksamkeit: " + str(self._aufmerksamkeit) + "\n"
ausgabe += "Ruf: " + str(self.ruf) + "\n"
ausgabe += "Zustand: " + self.zustand + "\n"
return ausgabe
@property
def aufmerksamkeit(self):
if self.zustand == ABGELENKT:
return self._aufmerksamkeit // 2
else:
return self._aufmerksamkeit
def kann_bestehlen(self, opfer):
return (random.randrange(0, 20) + self.geschicklichkeit
> random.randrange(0, 20) + opfer.aufmerksamkeit)
def bestiehlt(self, opfer):
if self.kann_bestehlen(opfer):
betrag = opfer.geld // 2
opfer.geld -= betrag
self.geld += betrag
else:
betrag = 0
self.ruf -= int(self.ruf * 0.6)
return betrag
### die folgende Klasse wurde komplett auskommentiert
##class Namen(object):
def diebstahl(taeter, opfer):
betrag = taeter.bestiehlt(opfer)
if betrag:
print 'Diebstahl erfolgreich.'
print '%s stiehlt %d EUR von %s.' % (taeter.name, betrag, opfer.name)
else:
print 'Diebstahl erfolglos.'
def status():
for dummy in diebe:
print dummy
def getstatus(gangsterliste):
"""Berichtet ueber alle Diebe in gangsterliste."""
text=""
for gangster in gangsterliste:
#text += gangster.__str__()
text += str(gangster)
return text
### die folgende Klasse wurde komplett auskommentiert
##def main():
# hier gehts los, austesten am python-prompt
#diebe=[Dieb("Leo"),Dieb("Lexi"),Dieb("Chen")]
#print status()
#a=getstatus(diebe)
#easygui.msgbox(a)
diebe = []
name = "Unbekannter Dieb"
while name != "":
name = easygui.enterbox("Name des Diebes eingeben: ","ENTER für abbruch","N A M E")
if name == "":
break
geld = easygui.integerbox("Geld des Diebes eingeben: ","GELD",100,5,150)
diebe.append(Dieb(name,geld))
easygui.msgbox(getstatus(diebe))
#opfernummer = easygui.integerbox
Code: Alles auswählen
# -*- coding: utf-8 -*-
##from __future__ import division
import random
import easygui
HERUMLUNGERN = 'lungert herum'
ABGELENKT = 'abgelenkt'
class Dieb(object):
namensliste = []
def __init__(self, name, geld=100, nummer=0):
self.waffe=random.choice(["bogen und pfeile","schwert","speer","rüstung,schild und schwert","pistole"])
self.name = name
self.nummer = nummer
self.geld = geld
self.geschicklichkeit = random.randrange(5, 45)
self._aufmerksamkeit = random.randrange(5, 45)
self.ruf = random.randrange(20, 30)
self.zustand = HERUMLUNGERN
self.pleite = False
self.namensliste.append(self.name)
def __del__(self):
print self.name + " verschwindet.."
self.namensliste.remove(self.name)
def __str__(self):
##return '%s, besitzt %d EUR, Ruf: %d' % (self.name, self.geld, self.ruf)
ausgabe = "========================================" + self.name + "------" + "\n"
ausgabe+="Geld: "+str(self.geld)+"\n"
ausgabe+="$"*(self.geld/5) +"\n"
ausgabe+="geschicklichkeit: "+str(self.geschicklichkeit)+"\n"
ausgabe+="."*self.geschicklichkeit+"\n"
ausgabe+="aufmerksamkeit: "+str(self.aufmerksamkeit)+"\n"
ausgabe+="ruf: "+str(self.ruf)+"\n"
ausgabe+=":-)"*self.ruf +"\n"
ausgabe+="zustand: "+(self.zustand)+"\n"
ausgabe+="waffe: "+(self.waffe)+"\n"
return ausgabe
@property
def aufmerksamkeit(self):
if self.zustand == ABGELENKT:
return self._aufmerksamkeit // 2
else:
return self._aufmerksamkeit
def kann_bestehlen(self, opfer):
return (random.randrange(0, 20) + self.geschicklichkeit
> random.randrange(0, 20) + opfer.aufmerksamkeit)
def bestiehlt(self, opfer):
if self.kann_bestehlen(opfer):
betrag = opfer.geld // 2
opfer.geld -= betrag
self.geld += betrag
else:
betrag = 0
self.ruf -= int(self.ruf * 0.6)
return betrag
def diebstahl(taeter, opfer):
betrag = taeter.bestiehlt(opfer)
if betrag:
return "Diebstahl erfolgreich.\n %s stiehlt %s EUR von %s." % (taeter.name, betrag, opfer.name)
else:
return "Diebstahl erfolglos."
def reportall():
ausgabe = ""
for name in Dieb.namensliste:
ausgabe += str(diebe[name])
return ausgabe
def getliste(ohnemich):
copyliste = Dieb.namensliste[:]
copyliste.remove(ohnemich)
return copyliste
#def main():
#----- erzeuge die Diebe ------
diebe={} # { Diebname1:Diebobjekt1, Diebname2:Diebobjekt2, usw}
name="Unbekannter Dieb"
nummer = 0
#geld = 55 # soviel Geld hat ein Dieb am Anfang
geld = easygui.integerbox("Standard-Geldbetrag","Geldbetrag", 100, 50, 500)
#grenze = 35 # soviel Geld muss ein Dieb haben, sonst wird er ehrlich
grenze = easygui.integerbox("Betrag ab dem man pleite geht eingeben: ", "Pleitegrenze", geld/2,2,geld-1)
while name != "":
name=easygui.enterbox("Name des Diebes eingeben \n ENTER für Abbruch \n $ am Ende für Geldeingabe \n z.B. Hansi$ :","Dieb Nummer: " + str(nummer) + " Geld: " + str(geld))
if name=="":
break
if name[-1] == "$":
name = name[:-1] # Dollar vom Namen entfernen
geld=easygui.integerbox("Geld des Diebes eingeben (50 bis 150): ","GELD",100,50,150)
nummer +=1
diebe[name] = Dieb(name,geld, nummer)
runde=0
while len(diebe)>1:
easygui.codebox("So schaut es aus", "Report all", reportall())
runde += 1
for spieler in Dieb.namensliste:
opfer = easygui.buttonbox("Ich bin der "+spieler+".\nWen soll ich bestehlen ?","Runde " + str(runde) + ", wähle Dein Opfer:",getliste(spieler))
easygui.msgbox(diebstahl(diebe[spieler],diebe[opfer]))
if easygui.ccbox("Weiterspielen oder aufhören?") == 0:
break # Cancel = 0
# --- pleite ?---
for spieler in Dieb.namensliste:
if diebe[spieler].geld < grenze:
easygui.msgbox("Spieler " + spieler + " ist pleite und beendet seine kriminelle Laufbahn.")
del diebe[spieler]
if len(diebe)==1:
easygui.msgbox("Sieger: "+ Dieb.namensliste[0])
else:
easygui.msgbox("bye-bye")