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

Вопрос школьника по предмету Информатика

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

Объяснение:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие вопросы от пользователей