← Все вопросы

как сделать «играть ещё раз? да/нет» и рестарт игры на python?

Задан 4 месяца назад209 просмотров2 ответа
5

Сделал несколько мини-игр, но после конца игры программа просто закрывается. Хочу спрашивать «Сыграем ещё? (да/нет)» и если да — начинать заново, а ещё лучше меню с выбором игры. Как это правильно сделать, чтобы не было лесенки из вложенных циклов?

2 ответа

11
✓ Принятый ответ — помог автору

Самый чистый способ — обернуть саму игру в функцию, а снаружи крутить цикл «играть ещё?». Вот шаблон, который подойдёт под любую твою игру:

import random

def play_game():
    secret = random.randint(1, 10)
    guess = int(input("Угадай число 1-10: "))
    if guess == secret:
        print("Угадал!")
    else:
        print(f"Не-а, было {secret}")

while True:
    play_game()
    again = input("Сыграем ещё? (да/нет): ").lower().strip()
    if again != "да":
        print("Пока! Спасибо за игру :)")
        break

Как работает: вся игра живёт в функции play_game(), а внешний while True гоняет её снова и снова. После каждой партии спрашиваем «Сыграем ещё?» — если ответ не «да», break выходит и программа прощается. Никакой лесенки вложенных циклов, потому что логика игры спрятана в функцию.

Как улучшить: сделай меню — выводи список игр и по номеру вызывай нужную функцию:

while True:
    print("1 — Угадай число\n2 — Кубик\n0 — Выход")
    choice = input("Выбери: ")
    if choice == "1":
        play_game()
    elif choice == "0":
        break

Так у тебя получится одна программа-сборник из всех твоих игр!

4

Совет: принимай ответ помягче, а то игрок напишет «д», «yes», «ага» — и игра закроется зря:

if again not in ("да", "д", "yes", "y", "ага"):
    break

И оформи каждую игру отдельной функцией — тогда меню собирается за минуту, и код не превращается в кашу.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект