【问题标题】:How to loop my game back to the start如何让我的游戏回到起点
【发布时间】:2016-02-17 14:21:17
【问题描述】:

我正在制作一个简单的格斗游戏,如果你死了,我希望它循环到开始,如果你赢了第 2 阶段解锁并且他们造成更多伤害,我已经到了你输入 y 或 no 的地步开始第二阶段,但它什么也没做,完全卡住了。这是我的代码。

import random

xp = 0

level = 1

player1 = raw_input("player1 enter name")

enemyhealth = 100

playerhealth = 100

stage2 = "false"

difficulty = raw_input("choose difficulty, rookie,pro,master,legend or god")

if difficulty == "rookie":

    enemyhealth = enemyhealth - 15

if difficulty == "pro":

    enemyhealth = enemyhealth + 10

if difficulty == "master":

    enemyhealth = enemyhealth + 35

if difficulty == "legend":

    enemyhealth = enemyhealth + 40

if difficulty == "god":

    enemyhealth = enemyhealth + 60                                                             

print ("A quick tutorial: Make sure you type you actions with no spaces,  heres a list of the moves you can perform")


while(1):
 while enemyhealth >0:

    fight = raw_input("fight")

    if fight == "punch":

        print ("You punched the enemy")

        enemyhealth = enemyhealth - random.randint(5,10)

        xp = xp + 1

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(5,10)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (0,5)

        print "you now have..", playerhealth

    elif fight =="flyingkick":

        print "you flying kicked the enemy"

        enemyhealth = enemyhealth - random.randint(5,25)

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!" 

        playerhealth = playerhealth - random.randint(5,15)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (0,5)

        print "you now have..", playerhealth

    elif fight =="uppercut":

        print "you uppercutted the enemy"

        enemyhealth = enemyhealth - random.randint(10,25)                                       

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(5,15)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (1,5)

        print "you now have..", playerhealth

    elif fight =="rko":

        print "you rko'ed the enemy, out of nowhere!"

        enemyhealth = enemyhealth - random.randint(9,29)                                       

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(5,12)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (1,5)

        print "you now have..", playerhealth

    elif fight =="kick":

        print "you kicked the enemy"

        enemyhealth = enemyhealth - random.randint(5,10)

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(5,10)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (1,5)

        print "you now have..", playerhealth

    elif fight =="ninjastar":

        print "you ninjastarred the enemy"

        enemyhealth = enemyhealth - random.randint(5,20)

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(5,10)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (1,5)

        print "you now have..", playerhealth

    elif fight =="headbutt":

        print "you headbutted the enemy"

        enemyhealth = enemyhealth - random.randint(5,18)

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(5,10)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (1,5)

        print "you now have..", playerhealth

    elif fight =="deathray":

        print "you deathrayed the enemy"

        enemyhealth = enemyhealth - random.randint(1,50)

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(1,30)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (1,5)

        print "you now have..", playerhealth

    elif fight =="stab":

        print "you stabbed the enemy"

        enemyhealth = enemyhealth - random.randint(3,40)

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(2,20)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (1,5)

        print "you now have..", playerhealth

    elif fight =="shoot":

        print "you shot the enemy"

        enemyhealth = enemyhealth - random.randint(1,50)

        xp = xp + 1  

        print "the enemy now has", enemyhealth, "health"

        print "they fight back!"

        playerhealth = playerhealth - random.randint(1,30)

        if stage2 == "true":

            playerhealth = playerhealth - random.randit (1,5)

        print "you now have..", playerhealth

    if xp == 5:

       print "you leveled up! move unlocked: 'rko'"

    if xp == 7:
       print "you leveled up! move unlocked: 'ninjastar'"

    if xp == 10:
       print "you leveled up! move unlocked: 'headbutt'"

    if xp == 100:
       print " you reached the max level! move 'deathray' is now unlocked"

    if playerhealth <1:

        again = raw_input('you died! Play agian? [y/n]')
        if again is "y":
            next
        else:
            print('Thanks for playing!\n')
            exit()


    if enemyhealth < 1:


        again = raw_input('You Won! stage 2 is unlocked would you like to try and beat it?[y/n]:')

        if again is "y":
            next
        else:
            print('Thanks for playing!\n')
            exit()

        stage2 = "true"

else:

        None

【问题讨论】:

  • 代码太多了,你的代码没有正确缩进
  • 代码重复太多。尝试重构它(然后您只需更正一次random.randit)。

标签: java python python-2.7


【解决方案1】:

将程序包含在一个while循环中while true;
如果他们赢了,那么你 break
如果没有,那么它将继续循环

它看起来像

while true:
   (a bunch of code, all indented)  

当该人获胜时,只需添加单词break

【讨论】:

    【解决方案2】:

    试试这个:

    # code for game
    while playerhealth < 1:
        # code for game
    

    【讨论】:

    • 如果在代码中包含解释,这将是一个更好的答案。
    猜你喜欢
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2017-03-27
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多