как сделать «играть ещё раз? да/нет» и рестарт игры на python?
Сделал несколько мини-игр, но после конца игры программа просто закрывается. Хочу спрашивать «Сыграем ещё? (да/нет)» и если да — начинать заново, а ещё лучше меню с выбором игры. Как это правильно сделать, чтобы не было лесенки из вложенных циклов?
2 ответа
Самый чистый способ — обернуть саму игру в функцию, а снаружи крутить цикл «играть ещё?». Вот шаблон, который подойдёт под любую твою игру:
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
Так у тебя получится одна программа-сборник из всех твоих игр!
Совет: принимай ответ помягче, а то игрок напишет «д», «yes», «ага» — и игра закроется зря:
if again not in ("да", "д", "yes", "y", "ага"):
break
И оформи каждую игру отдельной функцией — тогда меню собирается за минуту, и код не превращается в кашу.