Корявенько конечно, но вроде работает)
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()
Объяснение:
Поделитесь своими знаниями, ответьте на вопрос:
F(x) = sin x/2 X принадлежит [0;3;6]. h=3 Решите надо
Объяснение:
Системы электронного документооборота с развитыми средствами workflow (WF). Эти системы в основном рассчитаны на обеспечение движения неких объектов по заранее заданным маршрутам (так называемая "жесткая маршрутизация"). На каждом этапе объект может меняться, поэтому его называют общим словом "работа" (work). Системы такого типа называют системами workflow - "поток работ" (к сожалению, для этого термина нет точного эквивалента в русском языке). К работам могут быть привязаны документы, но не документы являются базовым объектом этих систем. С таких систем можно организовать определенные работы, для которых заранее известны и могут быть прописаны все этапы.