Мини-туториал по созданию текстового RPG на Python
Отредактировано
Мини-туториал для новичков по созданию текстовой PRG-игры на языке Python. Внутри — код с подробными комментариями.
33К открытий42К показов
Я в этом особо не шарю, но попробовал сделать хоть что-то. Данный пост для новичков, которые заинтересованы данной темой, но не понимают, что надо делать.
Для начала нам нужен randint.
from random import randint
Теперь можем сделать классы.
class Player:
hp = 100
damage = 10
# Записываем в переменную, чтобы было удобно.
p = Player()
class Enemy:
# Рандомно получает хп врага от 70 до 130, рандомно получает дамаг врага от 6 до 13.
hp = randint(70,130)
damage = randint(6,13)
# Записываем в переменную, чтобы было удобно.
e = Enemy()
Пожалуй, можно сделать меню.
def menu(p):
while True:
print("1) Сражаться")
print("2) Посмотреть статистику")
# try и except просто фиксят ошибки. Не обращайте внимания.
try:
n = input("Введите число: ")
if n == 1:
menu_fight(p)
if n == 2:
menu_stats(p)
else:
print("Чего ждем?")
except NameError:
print("Введите число")
except SyntaxError:
print("Введите число")
Статистика тоже не помешает.
def menu_stats(p):
print("Статистика игрока")
print("*****************")
# Попробую обьяснить, что значит %s. Она по последовательности списка вписывает в %s переменную.
print("hp {p.hp}")
print("damage: {p.damage}")
input("Нажмите Enter для продолжения.")
Теперь потруднее, нужно сделать сражение.
def menu_fight(p):
while e.hp > 0:
# Также, как я и сказал по последовательности списка расставляет переменные.
print(f"Вы hp: {p.hp} damage: {p.damage}")
print(f"Враг hp: {e.hp} damage: {e.damage}")
print("**********************")
print("1)Ударить")
print("2)Хил 0-5")
n = input("Введите число: ")
if n == 1:
# Здоровье врага отнимает от вашего дамага.
e.hp -= p.damage
print("Вы ударили противника, у него осталось %s hp")%(e.hp)
# Здоровье игрока отнимает от дамага врага.
p.hp -= e.damage
print("Противник ударил вас, у вас осталось %s hp")%(p.hp)
print("*********************")
if n == 2:
# Рандомно от 0 до 5 добавляет хп.
p.hp += randint(0,5)
# Если здоровье игрока больше, то хп игрока будет равна 100.
if p.hp > 100:
p.hp = 100
print("Ваши хп %s")%(p.hp)
else:
print("Чего ждем?")
if p.hp < 0:
print("Вы проиграли")
if e.hp < 0:
print("Вы победили")
print("******************")
Под конец осталось просто вызвать меню.
# Вызов меню.
menu(p)
Полный код
from random import randint
class Player:
hp = 100
damage = 10
# Записываем в переменную, чтобы было удобно.
p = Player()
class Enemy:
# Рандомно получает хп врага от 70 до 130, рандомно получает дамаг врага от 6 до 13.
hp = randint(70,130)
damage = randint(6,13)
# Записываем в переменную, чтобы было удобно.
e = Enemy()
def menu(p):
while True:
print("1) Сражаться")
print("2) Посмотреть статистику")
# try и except просто фиксят ошибки. Не обращайте внимания.
try:
n = input("Введите число: ")
if n == 1:
menu_fight(p)
if n == 2:
menu_stats(p)
else:
print("Чего ждем?")
except NameError:
print("Введите число")
except SyntaxError:
print("Введите число")
def menu_stats(p):
print("Статистика игрока")
print("*****************")
# Попробую обьяснить, что значит %s. Она по последовательности списка вписывает в %s переменную.
print("hp %s."%(p.hp))
print(f"Вы hp: {p.hp} damage: {p.damage}")
print("damage %s."%(p.damage))
input("Нажмите Enter для продолжения.")
def menu_fight(p):
while e.hp > 0:
# Также, как я и сказал по последовательности списка расставляет переменные.
print("Вы hp: %s damage: %s")%(p.hp, p.damage)
print("Враг hp: %s damage: %s")%(e.hp, e.damage)
print("**********************")
print("1)Ударить")
print("2)Хил 0-5")
n = input("Введите число: ")
if n == 1:
# Здоровье врага отнимает от вашего дамага.
e.hp -= p.damage
print("Вы ударили противника, у него осталось %s hp")%(e.hp)
# Здоровье игрока отнимает от дамага врага.
p.hp -= e.damage
print("Противник ударил вас, у вас осталось %s hp")%(p.hp)
print("*********************")
if n == 2:
# Рандомно от 0 до 5 добавляет хп.
p.hp += randint(0,5)
# Если здоровье игрока больше, то хп игрока будет равна 100.
if p.hp > 100:
p.hp = 100
print("Ваши хп %s")%(p.hp)
else:
print("Чего ждем?")
if p.hp < 0:
print("Вы проиграли")
if e.hp < 0:
print("Вы победили")
print("******************")
# Вызов меню.
menu(p)
Спасибо, что прочитали. Можете дать советы, мне будет интересно почитать.
33К открытий42К показов
Также рекомендуем




В 2026 году ожидаются два новых проекта по вселенной Halo: ремейк Halo: Combat Evolved с современным геймплеем и новая мультиплеерная live-service-игра в духе Fortnite. Официальных анонсов пока нет, но инсайдеры уверены — релизы близко.

Battlefield 6 официально вышла, и игровой сезон 2025 в самом разгаре! Рассказываем, какие громкие релизы уже доступны на PS5, Xbox Series X|S, PC и Switch 2, и какие хиты ждут нас этой зимой — от Metroid Prime 4 и Call of Duty: Black Ops 7 до Anno 117 и Vampire: Bloodlines 2.

Управляющие конструкции в программировании. Показываем, как работают if, else, switch, for, while. Рассматриваем пошаговую инструкцию и практические примеры ✔ Tproger

Выбираете первый язык программирования? Узнайте о низкоуровневых (C, C++), среднеуровневых (Java, C#) и высокоуровневых (Python, JavaScript) языках: плюсы, минусы и примеры применения. Чек-лист от экспертов поможет новичкам выбрать язык для веб, мобильной разработки или игр.