[Tutor] While loops

Emile van Sebille emile at fenx.com
Sat Jul 7 15:56:30 CEST 2012


On 7/7/2012 5:57 AM myles broomes said...
>
> 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:

Please paste in the traceback you're getting, and please set your mail 
client program for plain text when posting.  What I see here has the 
indentation stripped out of your script so that before I can even test 
your code I'll have to guess at how you have it indented, and I'm more 
likely than you to get it right and may inadvertently fix your bug and 
never know it even before getting a chance to see the bug.

Emile


>
> #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 way
> import time
> player_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+10
> class 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 functions
> def 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
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor




More information about the Tutor mailing list