Вопрос задан 09.07.2023 в 05:02. Предмет Информатика. Спрашивает Валишин Даниил.

Pyton Игра имитирует бой между двумя игроками. Один управляется человеком, второй компьютером. У

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Шаповалова Катя.

Ответ:

Корявенько конечно, но вроде работает)

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()

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Хорошо, давайте напишем эту игру на языке Python. Вот пример кода, который реализует описанную вами логику:

python
import 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.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос