如何在Python

时间:2015-06-01 00:51:35

标签: python python-2.7

对于长代码感到抱歉,但我觉得包含我想要完成的内容非常重要。我是Python和编程的初学者,我试图制作一个简单的基于文本的冒险游戏。这场比赛一开始很好,直到我加入与蜜蜂的相遇。我运行程序,我选择从熊跑,所以我的HP应该是40,显示。然而,当我选择拍打蜜蜂时,我的hp应该是0,因为40(我当前的HP)-40 = 0。然而,我的hp显示在60,好像熊的遭遇从未发生过。有什么方法可以解决这个问题,或者这是Python的限制吗?

from sys import exit
from time import sleep
import time

#Hp at start of game:
hp = 100

#The prompt for inputs
prompt = "> "

#Bear encounter
def bear(hp):
    choice = raw_input("> ")
    if "stand" in choice:
        print "The bear walks off, and you continue on your way"
    elif "run" in choice:
        print "..."
        time.sleep(2)
        print "The bear chases you and your face gets mauled."
        print "You barely make it out alive, however you have sustained serious damage"
        hp = hp-60
        currenthp(hp)
    elif "agressive" in choice:
        print "..."
        time.sleep(2)
        print "The bear sees you as a threat and attacks you."
        print "The bear nearly kills you and you are almost dead"
        hp = hp-90
        currenthp(hp)
    else:
        print "Well do something!"
        bear(hp)

#Bee encounter
def bee(hp):
    choice = raw_input(prompt)
    if "run" in choice:
        print "..."
        sleep(2)
        print "The bee flies away and you continue on your way."
        currenthp(hp)
    elif "swat" in choice:
        print "..."
        sleep(1)
        print "You succesfully kill the bee. Good Job!"
        sleep(1)
        print "Wait a minute"
        sleep(2)
        print "The bee you killed gives off pheremones, now there are hundreds of bees chasing you."
        print "The bees do some serious damage."
        hp = hp-40
        sleep(1)
        currenthp(hp)
    else:
        print "Well, do something."
        bee(hp)

#Function to display the current hp of the current player
def currenthp(hp):
    if hp < 100:
        print "Your hp is now at %d" % hp
    elif hp <= 0:
        dead()
    else:
        print "You are still healthy, good job!"

#Called when player dies
def dead():
    print "You sustained too much damage, and as a result have died."
    time.sleep(3)
    print "GAME OVER!"
    print "Would you like to play again?"
    choice = raw_input("> ")
    if "y" in choice:
        start_game()
    else:
        exit(0)

#Called to Start the Game, useful for restarting the program       
def start_game():
    print "Welcome to Survival 101"

#START OF GAME
start_game()
print "You start your regular trail."
print "It will be just a little different this time though ;)"

time.sleep(3)
print "You are walking along when suddenly."
time.sleep(1)
print "..."
time.sleep(2)

#Start of first encounter
print "Wild bear appears!."
print "What do you do?"
print "Stand your ground, Run away, be agressive in an attempt to scare the bear"

#first encounter
bear(hp)

#Start of second encounter
print "You continue walking and see a killer bee approaching you"
print "What do you do"
print "run away, swat the bee away"
bee(hp)

1 个答案:

答案 0 :(得分:2)

您将hp传递给函数并在要更新它的函数内,但是您没有从函数中获取更新后的值hp。您应该在函数内指定return hp以返回更新的值,并且可以在函数调用中存储(或更新)更新的值 - 例如hp = bear(hp)