繁体   English   中英

如何插入重启游戏选项?

[英]How do I insert a restart game option?

我想在我的骰子游戏结束时有一个选项,上面写着:

你想重新开始吗? 是还是不是

如果用户输入“是”,游戏将重新启动,并且无限次,直到用户玩够了游戏并退出。

我知道你可以用循环来做到这一点,但是怎么做呢?

import random

print("Dice Game: try to roll a bigger number than the computer! Good luck!")

print("Type 'go' to roll")
dieroll = input()
if dieroll == 'go':
    myNumber = random.randint(1,6)
    pcNumber = random.randint(1,6)
    print("You rolled " + str(myNumber))
    print("He rolled " + str(pcNumber))
    if myNumber < pcNumber:
        print("You lose!")
    if pcNumber < myNumber:
        print("You win!")

您可以将游戏包装到例如game()的函数中,并在无限循环中执行它。 如果用户说 NO,则退出循环,否则再次运行。 等等...

    while True:
        game()
        restart = input('do you want to restart Y/N?')
        if restart == 'N'
            break
        elif restart == 'Y':
            continue

您可以使用while循环来实现此选项。

这是一个示例实现:

import random

# Instructions for starting the game

while True:
    print("Type 'go' to roll")
    dieroll = input()
    if dieroll == 'go':
        myNumber, pcNumber = random.randint(1,6), random.randint(1,6)
        print("You rolled " + str(myNumber))
        print("He rolled " + str(pcNumber))
        if myNumber <= pcNumber:
            print("You lose!")
        else:
            print("You win!")

    print("Do you want to restart ? Yes or No")
    response = input()
    if not response == "Yes":
        break

首先,您应该将代码打包到一个函数中,例如

def game():
    your code

对于用户提示,您可以使用 raw_input() - Python 2.x 和 Python 3.x 中的 input() 在程序末尾尝试添加如下内容:

answer = raw_input("Restart?")
if answer == "Yes":
    print "Leaving the game"
    sys.exit(0) # import sys module 
elif answer == "No":
    print "Starting new game"
    game()

将您的程序划分为每个任务的单独函数是一个好主意。 它将变得易于阅读和修改,因此可以轻松创建和实现重启功能。

函数 restart() 根据用户输入返回一个布尔值。 主 startGame 循环在 while 循环的每次迭代中检查该值。

当用户想要停止播放 (False) 时,函数返回并且程序停止。

import random

def rollDie():
    myNumber = random.randint(1, 6)
    pcNumber = random.randint(1, 6)

    print("You rolled %d" % myNumber)
    print("The PC rolled %d" % pcNumber)

    if myNumber > pcNumber:
        return "--- You win! ---"
    else:
        return "--- You lose! ---"

def restart():
    user_input = input("Would you like to play again? Type 'Yes' or 'No'\n\n")

    if user_input.lower() == "no": # Converts input to lowercase for comparison
        return False
    elif user_input.lower() == "yes":
        return True

def startGame():
    while True:
        user_input = input("Dice Game: Try to roll a bigger number than the computer! Good Luck \n" +
                          "Type 'go' to roll the die... \n\n")

        if user_input == "go":
             print(rollDie())
            if not restart():
                return

startGame()

如果要在OOP python中添加重启游戏的功能,只需将整个main.py代码放在一个函数内,在main.py末尾触发该函数即可。 在 main.py 文件中写好问题语句后,在(If 部分)先清屏然后触发放入 main.py 文件代码的函数,在(else 部分)使布尔语句为 false。

**def game():**
import time
from turtle import Screen
from player import Player
from car_manager import CarManager
from scoreboard import Scoreboard

SPEED = 0.1
player = Player()
screen = Screen()
screen.setup(width=600, height=600)
screen.tracer(0)

car_manager = CarManager()

screen.listen()
screen.onkey(player.move, "Up")
scoreboard = Scoreboard()

game_is_on = True
while game_is_on:
    time.sleep(SPEED)
    screen.update()

    car_manager.create_car()
    car_manager.move()

    for car in car_manager.all_cars:
        if car.distance(player) < 20:
            game_is_on = False
            scoreboard.game_over()
            **q = screen.textinput("Restart", "Do you want to restart? ")
            if q == "yes".lower():
                screen.clear()
                game()
            else:
                game_is_on = False**

    if player.is_at_finish():
        player.start()
        car_manager.level_up()
        car_manager.box_inc()
        scoreboard.score_up()
screen.exitonclick()

游戏()

我刚刚提交了一篇关于类似问题的帖子。 让我知道这是否有帮助:

简单的 Python 游戏重启解决方案

为了满足您的特定需求,您可以将重启代码更新为如下所示,以允许输入是/否选项。

play_again = input("Do you want to restart? Yes or No\n")

if play_again == "Yes":
    exec(open("./yourfilenamehere.py").read())
else:
    exit()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM