[Tutor] While loops

myles broomes mylesbroomes at hotmail.co.uk
Sat Jul 7 14:57:27 CEST 2012


I am currently coding a 'text-based adventure game', and im having a bit of trouble with while loops. Here is my code so far: #Text-based Adventure RPG
#The player travels through different towns and dungeons
#The overall goal of the game is simple; the player must make it to the final town,
#Battling various monsters and overcoming several challenges along the wayimport timeplayer_name = None
player_invent = [30]
emb_town_visit=None
YES='yes'
NO='no'
user_choice=None
plyr_location='Embark'
shopkeep_mny=100
shopkeep_invent=['Bronze Sword (10)','Steel Sword (100)','Rounded Shield (10)','Kite Shield (50)','Medicine (5)','Mana Potion (5)'] class Main_char(object):
        """A class for the main character object."""
        def __init__(self,name,invent,level=1,health=30,mana=15):
                self.name=name
                self.level=level
                self.invent=invent
                self.hp=health
                self.mana=mana
                print("\nYour journey begins here in Embark town,"+self.name)        def __str__(self):
                print("\nName: ",self.name, "\nLevel: ",self.level, "\nYour inventory: ",self.invent)        def town_chcklist(self):
                """A checklist showing a list of the towns the player has already visited."""
                self.checklist=[]
                if town1==YES:
                        self.checklist.append(town1) def use_item(item):
        """Allows the player to use an item in their inventory."""
        if item in ('Medicine','Mana Potion'):
                Hero.invent.delete(item)
                if item=='Medicine':
                        Hero.hp+20
                elif item=='Mana Potion':
                        Hero.mana+10class Shopkeep(object):
        """A blueprint for the shopkeeper objects."""
        def __init__(self,inv,money):
                self.inv=inv
                self.money=money        def __str__(self):
                print("Shopkeeper: Here are my wares: \n\n",self.inv+". \nI currently have",self.money,"gold.") #Create the towns/ dungeons/ areas in different functionsdef Embark():
        """The town in which the player begins there journey."""
        if emb_town_visit==None:
                print("Welcome to Embark Town",player_name+"!")        while True:
                print("\n",hero)
                print("""
                        \n\t\tPress '1' to exit the town...
                        \n\t\tPress '2' to enter the local shop...""")
                user_choice=input('What would you like to do?: ')
                if user_choice=='1':
                        shop()
                        continue
                elif user_choice=='2':
                        if emb_town_visit==None:
                                print("\n\t\t\tAs you leave your home of Embark Town, you look back with a smile, then proceed North.")
                        break
                else:
                        print("\n\t\t\tThat is not a valid choice...")
                        continue
 
        #The player has visited Embark Town
        if emb_town_visit==None:
                emb_town_visit=YES        #Exit the function and change the players location variable
        return 'Left Embark Town',emb_town_visit def shop():
        """A generic shop that is placed in each town."""
        while True:
                print("""
                \nWhat would you like to do?
                \nPress '1' to buy an item...
                \n...Press '2' to exit the shop...
                \n...Or press '3' to ask about the town...""")
                user_choice=input(">")
                if user_choice=='1':
                        print("Shopkeeper: Goodbye.")
                        break
                elif user_choice=='2':
                        print(emb_shopkeep)
                        user_choice=None
                        print("Enter the name of the item you would like to purchase.")
                        user_choice=title(input(">"))
                        for item in emb_shopkeep.inv:
                                if user_choice in emb_shopkeep.inv:
                                        message=handle_pur(user_choice)
                                        print(message)
                                        emb_shopkeep.inv.delete(user_choice)
                                else:
                                        print("\n\t\t\tThat is not a valid choice!")def handle_pur(item):
        """Handles purhchases made by the player in the shop."""
        if item=='Bronze Sword':
                if Hero.invent[0] >= 10:
                        Hero.invent[0]-10
                        Hero.invent.append(item)
                        msg='You now own a',item
                elif Hero.invent[0] < 10:
                        msg='You cannot afford that item.'
        elif item=='Steel Sword':
                if Hero.invent[0] >= 100:
                        Hero.invent[0] - 100
                        Hero.invent.append(item)
                        msg='You now own a',item
                elif Hero.invent[0] < 100:
                        msg='You cannot afford that item.'
        elif item =='Rounded Shield':
                if Hero.invent[0] >= 10:
                        Hero.invent[0] - 10
                        Hero.invent.append(item)
                        msg='You now own a',item
                elif Hero.invent < 10:
                        msg='You cannot afford that item.'
        elif item=='Kite Shield':
                if Hero.invent[0] >= 50:
                        Hero.invent[0] - 50
                        Hero.invent.append(item)
                        msg='You now own a',item
                elif Hero.invent < 50:
                        msg='You cannot afford that item.'
        elif item=='Medicine':
                if Hero.invent[0] >= 5:
                        Hero.invent[0] - 5
                        Hero.invent.append(item)
                        msg='You now own a',item
                elif Hero.invent[0] < 5:
                        msg='You cannot afford that item.'
        elif item=='Mana Potion':
                if Hero.invent[0] >= 5:
                        Hero.invent[0] - 5
                        Hero.invent.append(item)
                        msg='You now own a',item
                elif Hero.invent[0] < 5:
                        msg='You cannot afford that item.'        #Informs the program of which message to tell the player
        return msg emb_shopkeep=Shopkeep(shopkeep_invent,shopkeep_mny) #Player creation loop
while True:
        print("""
        \nValiant hero, your quest begins here in Embark Town.""",
        time.sleep(200),
        """\nWhere you will go is up to you...""", 
        time.sleep(200),
        """\nHow your adventure will pan out is up to you...""",
        time.sleep(200), 
        """\nBut first...""", 
        time.sleep(200),
        """\n...tell me your name...""")
        player_name=title(input(">"))
        print("\nAh! So your name is",player_name,"- a truly heroic name!")
        Hero=Main_char(player_name,player_invent)
        break def main():
        """Main game loop."""
        while True:
                if plyr_location=='Embark':
                        plyr_location,emb_town_visit=Embark()
                elif plyr_location=='Left Embark Town':
                        return #Launch the game
main()
 
 For some reason that I cant figure out, the 'Player creation loop' wont run when I try to run the program. When I try to run it in IDLE, nothing happens, Any help is much appreciated. Myles Broomes 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120707/b430a7c5/attachment-0001.html>


More information about the Tutor mailing list