Tool zu Astralen Meditation für DSA helden

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

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
Zuletzt geändert von feldmaus am Mittwoch 14. November 2007, 21:57, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

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?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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.
Zuletzt geändert von Rebecca am Mittwoch 14. November 2007, 15:50, insgesamt 1-mal geändert.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
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.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

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
Antworten