Seite 1 von 1

Tool zu Astralen Meditation für DSA helden

Verfasst: Mittwoch 14. November 2007, 12:57
von feldmaus
Hallo Alle,

ich habe ein Skript geschrieben wo noch Fehler drinne sind ich aber nicht weiss warum.

Auf die Verwendung des Skriptes wollte ich nicht detailliert eingehen, da die meisten wahrscheinlich noch nicht einmal von Rollenspiel und DSA gehört haben.

Mein Tool besteht aus zwei Python Dateien, die Hauptdatei und dem Modul Meditation.

Als Fehler bekomme ich Zeile 14(in der "hauptdatei.py") die Meldung Object not call able.

Wäre schön wenn einer mir sagen könnte was ich falsch gemacht habe.

Hier die "hauptdatei.py":

Code: Alles auswählen

#!/usr/bin/python
#Author:Markus Feldmann

import meditation

LE=28
LEMAX=LE
AE=46
AEMAX=AE
MU=13
IN=13
CH=13
KO=11

OBJ_MEDITATION=meditation.meditation()
OBJ_MEDITATION.speicher_stack_mit_allen_Werten(LE, LEMAX, AE, AEMAX, MU, IN, CH, KO)
Veraenderte_Werte=OBJ_MEDITATION.frage_den_benutzer()
print "Sie haben: \n", \
        "   LE= ",Veraenderte_Werte[0],"\n" \
        "   AE= ",Veraenderte_Werte[1],"\n"

Hier die "meditation.py":

Code: Alles auswählen

###Author:Markus Feldmann

class meditation:
    def __init__(self):
        self.erzeuge_stack_mit_allen_Attributen()
        
    def erzeuge_stack_mit_allen_Attributen(self):
        self.stack_Attribute=[0, 0, 0, 0, 0, 0, 0, 0]
        
    def speicher_stack_mit_allen_Werten(self, LEalt, LEMAX, AEalt, AEMAX, MU, IN, CH, KO):
        self.stack_Attribute=[LEalt, LEMAX, AEalt, AEMAX, MU, IN, CH, KO]
        
    def frage_den_benutzer(self):
        LEalt=self.stack_Attribute[0]
        LEMAX=self.stack_Attribute[1]    
        AEalt=self.stack_Attribute[2]
        AEMAX=self.stack_Attribute[3]
        MU=self.stack_Attribute[4]
        IN=self.stack_Attribute[5]
        CH=self.stack_Attribute[6]
        KO=self.stack_Attribute[7]
        while 1:
            print "**********************************************"
            print "Es wird eine Astrale Meditation durchgefuehrt!"
            print "**********************************************"
            LEneu=LEalt
            AEneu=AEalt-1
            LEUMSETZEN=0
            PROBAUSGLEICH=int(round(MU/2))
            INPROB = int(raw_input("Bitte wuerfel IN-Probe: "))
            CHPROB = int(raw_input("Bitte wuerfel CH-Probe: "))
            KOPROB = int(raw_input("Bitte wuerfel KO-Probe: "))
            if INPROB < IN:
                pass
            else:
                PROBAUSGLEICH=PROBAUSGLEICH-abs(IN-INPROB)
            
            if CHPROB < CH:
                pass
            else:
                PROBAUSGLEICH=PROBAUSGLEICH-abs(CH-CHPROB)
                
            if KOPROB < KO:
                pass
            else:
                PROBAUSGLEICH=PROBAUSGLEICH-abs(KO-KOPROB)
                
            if (PROBAUSGLEICH >= 0):
                print "Probe geschafft! :-)\n", \
                  "Sie haben zur Zeit,\n", \
                "	LE=",LEneu," von",LEMAX,"\n" \
                "	AE=",AEneu," von",AEMAX,"\n"
                LEUMSETZEN = int(raw_input("Wieviel Le umsetzen? : "))
                if LEUMSETZEN>=LEneu:
                    print "Wollen Sie Harakierie begehen? Idiot!\n"
                AEneu=AEneu+1
            elif (AEneu+LEUMSETZEN)<=AEMAX:
                LEneu=LEneu-LEUMSETZEN
                AEneu=AEneu+LEUMSETZEN
                print "	LE=",LEneu
                print "	AE=",AEneu,"\n"
            elif ((AEneu+LEUMSETZEN)<=AEMAX) and (LEUMSETZEN>LEneu):
                print "Soviel Le haben Sie nicht mehr!\n"
                AEneu=AEneu+1
            elif ((AEneu+LEUMSETZEN)>AEMAX):
                print "Sie wuerden mehr AE erhalten als ihr Max-Ae.Geht nicht!\n"
                AEneu=AEneu+1
            else:
                print "Error: Unbekannte Bedingung bei LEUMSETZEN=...\n"
                AEneu=AEneu+1
            if (PROBAUSGLEICH < 0):
                print "Probe vergeigt!"
                print "Sie haben noch," \
                "	AE=",AEneu,"\n"
            else:
                print "Error: Variable PROBAUSGLEICH undefiniert.\n"
            LEalt=LEneu
            AEalt=AEneu
            return [LEalt, AEalt]

Grüsse Markus

Verfasst: Mittwoch 14. November 2007, 13:20
von Leonidas
Gib mal vor der Zeile 14 `print meditation` ein, dann siehst du dass du nicht die Klasse instanziierst sondern versuchst, dass Modul aufzurufen, was nicht funktioniert.
Du musst also allen Namen aus `meditation.py` in deiner Hauptdatei `meditation.` vorranstellen.

Verfasst: Mittwoch 14. November 2007, 15:11
von feldmaus
Du meinst wegen dem Namensraum.
Wie müsste ich denn an dieser Stelle ein Objekt erstellen?

Wenn ich ein Objekt erstellt habe dann kann ich doch anstatt 'meditation.' voranzustellen auch in meinem Beipiel 'OBJ_MEDITATION.' voranstellen oder sehe ich das Falsch?

Verfasst: Mittwoch 14. November 2007, 15:38
von Rebecca
Einfach so:

Code: Alles auswählen

OBJ_MEDITATION=meditation.meditation()
OBJ_MEDITATION.speicher_stack_mit_allen_Werten(LE, AE, MU, IN, CH, KO)


Ausserdem hast du bei der Methode frage_den_benutzer das self-Argument vergessen.

Verfasst: Mittwoch 14. November 2007, 15:48
von BlackJack
Und bitte mal den Style Guide lesen. Die Namen sind ja gruselig. Und da sind noch *einige* Fehler drin.

Kleiner Tipp: Nicht ellenlang Quelltext runterschreiben und hoffen das am Ende alles zusammenpasst, sondern immer schön eine Funktion/Methode nach der anderen implementieren und sofort Testen ob es soweit funktioniert. Nicht weitermachen bis es geht.

Verfasst: Mittwoch 14. November 2007, 21:59
von feldmaus
Danke für eure Hilfe ich habe es erstmal soweit das es funktioniert. Ich werde mir in den kommenden Tagen mal den Style Guide angucken.

Grüsse Markus