我试图为LPTHW完成这项额外的学分练习,但我碰壁了。我不断收到价值错误,我不知道为什么。我知道我应该使用 dict 和 classes,但我还没有达到书中的那部分内容。
这个想法是我想获得这个库存功能来从列表中删除以前的武器character_sheet
并将其替换为用户刚刚购买的武器。这是我认为相关的代码,如果我遗漏了什么,请告诉我。
在此先感谢,堆栈溢出确实帮助了我,因为我正在努力从没有以前的经验中学习 python。
weapon_choice = raw_input(":> ")
if "sword" in weapon_choice:
current_weapon = weapons[0]
inventory(weapons[0])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[1] in weapon_choice:
current_weapon = weapons[1]
inventory(weapons[1])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[2] in weapon_choice:
current_weapon = weapons[2]
inventory(weapons[2])
character_sheet.append("Current Weapon %s" % current_weapon)
else:
print "I dont know what %s means" % weapon_choice
buy_weapon(level_zero_weapons)
这是下一段相关代码。
weapon_choice = raw_input(":> ")
if weapons[0] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[0]
inventory(weapons[0])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[1] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[1]
inventory(weapons[1])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[2] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[2]
inventory(weapons[2])
character_sheet.append("Current Weapon %s" % current_weapon)
这是我正在处理的列表。
# Weapon lists
level_zero_weapons = ['short sword', 'club', 'dagger']
level_one_weapons = ['sword', 'mace', 'rapier']
level_two_weapons = ['long sword', 'morningstar', 'trident']
level_three_weapons = ['claymore', 'flail', 'sycthe']
level_four_weapons = ['bastard sword', 'dragon bone', 'crystal halbred']
这是我的输出,我不明白,如果我应该添加更多代码,请告诉我。
Please tell me your name brave soul. :> Ray
Lets now randomly generate brave gladiator Ray.
[ 'Name: Ray:',
'Gender: Male',
'Character Class: Warrior',
'Strength: 11',
'Dexterity: 7',
'Constitution: 8',
'Damage 1D6',
'Crit Chance 10%',
'Hit Points: 6/6']
Please Press Enter To Buy A Weapon
Please type in the weapon you want to buy.
short sword, price: 1 gold pieces
club, price: 1 gold pieces
dagger, price: 1 gold pieces.
:> dagger
Your current weapon is now a dagger. Press Enter To Continue
Type in the weapon you want to buy, type quit to return to the barracks.
sword, price: 3 gold pieces
mace, price: 4 gold pieces
rapier, price: 5 gold pieces.
:> sword
Traceback (most recent call last):
File "lodarena.py", line 399, in <module>
character_gen()
File "lodarena.py", line 394, in character_gen
buy_weapon(level_one_weapons)
File "lodarena.py", line 144, in buy_weapon
character_sheet.remove(current_weapon)
ValueError: list.remove(x): x not in list
Raymond-Weisss-MacBook-Pro:lodarena Raylug$
编辑:这是我的整个购买武器方法。
# Doing Stuff for weapons and the shopkeeper. #################################
def level_zero_price():
"""Generates the price for level one weapons"""
return randint(1, 3)
def level_one_price():
"""Generates the price for level two weapons"""
return randint(3, 6)
def level_two_price():
"""Generates the price for level three weapons"""
return randint(6, 9)
def level_three_price():
"""Generates the price for level four weapons"""
return randint(9, 12)
def level_four_price():
"Generates the price for level four weapons"""
return randint(12, 15)
### Major Buying Stuff / Inventory Code ##########################################
def buy_weapon(weapons):
"""big bit of code that allows you to buy a weapons from a weapon list.
The function acts a little differently after level zero weapons"""
global current_weapon
if weapons == level_zero_weapons:
sword_price = level_zero_price()
blunt_price = level_zero_price()
agile_price = level_zero_price()
print t.bright_yellow_on_magenta + """
Please type in the weapon you want to buy.
%s, price: %d gold pieces
%s, price: %d gold pieces
%s, price: %d gold pieces.
""" % (weapons[0], sword_price, weapons[1], blunt_price,weapons[2],
agile_price)
weapon_choice = raw_input(":> ")
if weapons[0] in weapon_choice:
current_weapon = weapons[0]
inventory(weapons[0])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[1] in weapon_choice:
current_weapon = weapons[1]
inventory(weapons[1])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[2] in weapon_choice:
current_weapon = weapons[2]
inventory(weapons[2])
character_sheet.append("Current Weapon %s" % current_weapon)
else:
print "I dont know what %s means" % weapon_choice
buy_weapon(level_zero_weapons)
elif weapons == level_one_weapons:
sword_price = level_one_price()
blunt_price = level_one_price()
agile_price = level_one_price()
print"""
Type in the weapon you want to buy, type quit to return to the barracks.
%s, price: %d gold pieces
%s, price: %d gold pieces
%s, price: %d gold pieces.
""" % (weapons[0], sword_price, weapons[1], blunt_price, weapons[2],
agile_price)
weapon_choice = raw_input(":> ")
if weapons[0] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[0]
inventory(weapons[0])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[1] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[1]
inventory(weapons[1])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[2] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[2]
inventory(weapons[2])
character_sheet.append("Current Weapon %s" % current_weapon)
else:
print "I dont know what %s means" % weapon_choice
buy_weapon(level_one_weapons)
elif weapons == level_two_weapons:
sword_price = level_two_price()
blunt_price = level_two_price()
agile_price = level_two_price()
print"""
Type in the weapon you want to buy, type quit to return to the barracks.
%s, price: %d gold pieces
%s, price: %d gold pieces
%s, price: %d gold pieces.
""" % (weapons[0], sword_price, weapons[1], blunt_price,weapons[2],
agile_price)
weapon_choice = raw_input(":> ")
if weapons[0] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[0]
inventory(weapons[0])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[1] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[1]
inventory(weapons[1])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[2] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[2]
inventory(weapons[2])
character_sheet.append("Current Weapon %s" % current_weapon)
else:
print "I dont know what %s means" % weapon_choice
buy_weapon(level_two_weapons)
elif weapons == level_three_weapons:
sword_price = level_three_price()
blunt_price = level_three_price()
agile_price = level_three_price()
print"""
Type in the weapon you want to buy, type quit to return to the barracks.
%s, price: %d gold pieces
%s, price: %d gold pieces
%s, price: %d gold pieces.
""" % (weapons[0], sword_price, weapons[1], blunt_price,weapons[2],
agile_price)
weapon_choice = raw_input(":> ")
if weapons[0] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[0]
inventory(weapons[0])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[1] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[1]
inventory(weapons[1])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[2] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[2]
inventory(weapons[2])
character_sheet.append("Current Weapon %s" % current_weapon)
else:
print "I dont know what %s means" % weapon_choice
buy_weapon(level_three_weapons)
elif weapons == level_four_weapons:
sword_price = level_four_price()
blunt_price = level_four_price()
agile_price = level_four_price()
print"""
Type in the weapon you want to buy, type quit to return to the barracks.
%s, price: %d gold pieces
%s, price: %d gold pieces
%s, price: %d gold pieces.
""" % (weapons[0], sword_price, weapons[1], blunt_price,weapons[2],
agile_price)
weapon_choice = raw_input(":> ")
if weapons[0] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[0]
inventory(weapons[0])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[1] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[1]
inventory(weapons[1])
character_sheet.append("Current Weapon %s" % current_weapon)
elif weapons[2] in weapon_choice:
character_sheet.remove(current_weapon)
current_weapon = weapons[2]
inventory(weapons[2])
character_sheet.append("Current Weapon %s" % current_weapon)
else:
print "I dont know what %s means" % weapon_choice
buy_weapon(level_four_weapons)
else:
print"~~~There is a bug somwhere, forgot to assign (weapons)\n\n\n"
raw_input(t.white_on_red("""
Your current weapon is now a %s. Press Enter To Continue
""" % current_weapon))