"Ara Kooser" <[EMAIL PROTECTED]> wrote
> I am working on trying to understand classes by creating a > character generator for a rpg. You are so ar off base at the moment that I suggest you go back to basics and try a much simpler class. Your MAIN is not really a class at all, it's a function. Classes represent things(ie Objects). Main is not a thing. Secondly classes should not contain any directly executable code such as print/raw_input etc (they can but it's bad practice) Instead, a class should just be a collection of data attruibutes and methods. In your case it would be more appropriate to create a Character class with methods to do whatever characters do... > import random > > class Main: > > print """Welcome to the Classic Traveller character generator. > Written in Python""" > print """Press return to generate a character""" > raw_input() > > > > def upp(): methods of classes should have a first parameter of 'self' > print """Generating your UPP.""" > print > > strength = 0 > dexterity = 0 > endurance = 0 > intelligence = 0 > education = 0 > social = 0 > > strength = random.randrange(2,12) > dexterity = random.randrange(2,12) > endurance = random.randrange(2,12) > intelligence = random.randrange(2,12) > education = random.randrange(2,12) > social = random.randrange(2,12) There is no point in setting them all to zero then initialising them again via randrange. Just do it once. > return strength, dexterity, endurance, intelligence, > education, social But in a class you wouldn't expect to return these values here you would expect to store them as attributes of an object and return the object. > print upp() > def reroll(): > > a = raw_input("Are you satisfied with your UPP? Choose yes or > no.").lower() > try: > > if a == "yes": > career() > > elif a == "no": > upp() > > else: > print "Please choose a valid option." > print > reroll() > > except ValueError: > print "Please choose a valid option." > print > reroll() > > return > > print """You have a chance to reroll if needed.""" > reroll() > > def career(): > print """You will now choose are career path for your > character.""" Basically you don;t really have a class here at all you have a main function calling other functions but because you've wrapped them in a class its confusing things. Try simplifying your class to just define the attributes, something like this: class Upp: def __init__(self): print "Creating your Upp" self.strength = random.randrange(2,12) self.dexterity = random.randrange(2,12) self.endurance = random.randrange(2,12) self.intelligence = random.randrange(2,12) self.education = random.randrange(2,12) self.social = random.randrange(2,12) def display(self) print """ strength = %s dexterity = %s endurance = %s intelligence = %s education = %s social = %s""" % (self.strength, self.dexterity,self.endurance, self. intelligence,self.education, self.social) Now in your main function you can create Upps like so: #create 3 Upps: players = [] for p in range(3): players.append(Upp()) # show the players we created for p in players: p.display() If that is not clear then you need to go back to the tutorials again and work through the basics of wqhat a class and object are. HTH, -- Alan Gauld Author of the Learn to Program web site http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor