
Pyton Игра имитирует бой между двумя игроками. Один управляется человеком, второй компьютером. У
каждого игрока есть выбор оружия: меч и копье, которое нужно выбрать перед боем. Человек вводит свой выбор с клавиатуры, компьютер выбирает случайно. У каждого игрока изначально есть 50 НР. Копье наносит урон от с вероятностью 70%, урон может быть от 10 до 20. Меч наносит урон от с вероятностью 50%, урон может быть от 15 до 25. Игра продолжается до тех пор, пока у одного из игроков не закончится НР.

Ответы на вопрос

Ответ:
Корявенько конечно, но вроде работает)
import random
import time
#Костыль
CHANCE70 = [1,1,1,1,1,1,1,0,0,0]
CHANCE50 = [1, 0]
class Weapon(object):
def __init__(self, hit_chance = [], dmg_range = (0, 0), wtype = None):
self.hit_chance = hit_chance
self.dmg = dmg_range
self.wtype = wtype
def __str__(self):
return self.wtype
def attack(self, trg):
is_hit = random.choice(self.hit_chance)
if is_hit:
dmg = random.choice(range(self.dmg[0], self.dmg[1]))
trg.hp -= dmg
return (dmg)
else:
trg.msg('Miss!')
return 0
class Player(object):
def __init__(self, health = 50, weapon = None, name = 'AI'):
self.hp = health
self.wp = weapon
self.name = name
def msg(self, msg):
print(f'<{self.name}>: ' + msg)
def wname_to_hc(wname):
if wname == 'sword':
return CHANCE50
return CHANCE70
def wname_to_dmg_rng(wname):
if wname == 'sword':
return (15, 25)
return (10, 20)
def main():
player_weapon = input('Choose your weapon (spear, sword):\n').lower()
assert player_weapon in ['spear', 'sword']
player = Player(weapon=Weapon( hit_chance=wname_to_hc(player_weapon ), dmg_range= wname_to_dmg_rng(player_weapon), wtype=player_weapon), name='You')
bot_weapon = random.choice(['spear','sword'])
bot = Player(weapon= Weapon( hit_chance=wname_to_hc(bot_weapon), dmg_range= wname_to_dmg_rng(bot_weapon), wtype=bot_weapon ) )
print(f'Your enemy choosen {str(bot.wp)}!')
vs = [player, bot]
choose = [0, 1]
time.sleep(2)
while True:
hit = vs[choose[0]].wp.attack(vs[choose[1]])
if hit:
print(f'Player <{vs[choose[0]].name}> dealed <{vs[choose[1]].name}> {hit} dmg')
print(f'Player <{vs[choose[0]].name}> has {vs[choose[0]].hp} left')
print(f'Player <{vs[choose[1]].name}> has {vs[choose[1]].hp} left')
if vs[choose[0]].hp <= 0:
print(vs[choose[1]].name + ' wins!')
break
elif vs[choose[1]].hp <= 0:
print(vs[choose[0]].name + ' Wins!')
break
time.sleep(1)
choose.reverse()
if __name__ == '__main__':
main()
Объяснение:



Хорошо, давайте напишем эту игру на языке Python. Вот пример кода, который реализует описанную вами логику:
pythonimport random
player_hp = 50
computer_hp = 50
def player_attack():
weapon = input("Выберите оружие (меч/копье): ")
if weapon == "меч":
damage = random.randint(15, 25)
hit_chance = 0.5
elif weapon == "копье":
damage = random.randint(10, 20)
hit_chance = 0.7
else:
print("Выбрано некорректное оружие. Попробуйте еще раз.")
return 0, 0
if random.random() <= hit_chance:
return damage, 1
else:
return 0, 0
def computer_attack():
weapon = random.choice(["меч", "копье"])
if weapon == "меч":
damage = random.randint(15, 25)
hit_chance = 0.5
elif weapon == "копье":
damage = random.randint(10, 20)
hit_chance = 0.7
if random.random() <= hit_chance:
return damage, 1
else:
return 0, 0
while player_hp > 0 and computer_hp > 0:
player_damage, player_hit = player_attack()
computer_damage, computer_hit = computer_attack()
if player_hit:
computer_hp -= player_damage
print("Вы атаковали компьютер и нанесли", player_damage, "урона.")
if computer_hit:
player_hp -= computer_damage
print("Компьютер атаковал вас и нанес", computer_damage, "урона.")
print("Ваше текущее HP:", player_hp)
print("Текущее HP компьютера:", computer_hp)
print()
if player_hp <= 0:
print("Вы проиграли! Компьютер победил.")
elif computer_hp <= 0:
print("Поздравляю! Вы победили компьютер.")
else:
print("Ничья!")
Вы можете скопировать и запустить данный код в среде разработки Python. Он будет имитировать бой между игроком и компьютером с помощью случайных атак и расчета урона. Игра продолжается, пока у одного из игроков не закончится HP.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili