NoAl3
09.01.2022 16:36

Обяснить что получается #include
using namespace std;
#define ll long long
vector DO(4000100,1e9);
vector DO2(4000100,1e9);
vector vec;
void add(ll nom, ll l, ll r, ll x, ll n)
{
if(l>r) return;
if(l>x) return;
if(x>r) return;
//cout«nom«" "«l«" "«r«" "«x«" "«n«endl;
if(l==r && r==x)
{
DO[nom]=n;
DO2[nom]=l;
return ;
}
ll mid=(l+r)/2;
add(nom*2, l, mid, x, n);
add(nom*2+1, mid+1, r, x, n);
if(DO[nom*2]>DO[nom*2+1])
{
DO2[nom]=DO2[nom*2+1];
}
else
DO2[nom]=DO2[nom*2];
DO[nom]=min(DO[nom*2],DO[nom*2+1]);
}
pair found(ll nom, ll l, ll r, ll nl, ll nr)
{
if(nr r)return {1e9,-1};
if(l==nl && r==nr)
{
return {DO[nom], DO2[nom]};
}
ll mid=(l+r)/2;
pair a1, a2;
a1=found(nom*2, l, mid,nl, min(nr, mid));
a2=found(nom*2+1, mid+1, r, max(nl, mid+1), nr);
if(a1 lch(500010,0);
for(i=0;i ,ll > > vv;

//cout«"HERE"«endl;
for(i=0;i otv(s+10,0);
ll no=1;
sort(vv.begin(),vv.end());
for(i=0;i p=found(1, 1, a, no, no);
//cout«"del "«p.first«" "«p.second«endl;
if(p.first!=0)add(1, 1, a, p.first, 1e9);
no++;
}
pair pol=found(1, 1, a, a1, a2);
//cout«"found "«pol.first«" "«pol.second«" "«a1«" "«a2«endl;
if(pol.first>=a1)otv[a3]=0; else
{
otv[a3]=pol.second;
}
}
for(i=1;i<=s;i++)
cout«vec[otv[i]]«endl;
}

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Eгор43
15.08.2021 00:33

Когда вы нажимаете клавишу пробел, выполняется условие keyboard.is_pressed('space'). Если это условие выполняется, то вы попадаете с бесконечный цикл while True (строка 5).  Вы один раз нажимаете пробел и попадаете в этот бесконечный цикл.  А так как в нём не предусмотрено никаких условий завершения, то он, логично, никогда не завершится. Что бы исправить это, вы можете добавить условие завершения в цикл или изменить условия его выполнения, например:

while keyboard.is_pressed("space"):

   time.sleep(time)

   keyboard.press_and_release("space")

   time.sleep(time)

P.S Не стоит копировать этот код. Я не знаю, какую библиотеку вы используете, и, соответственно, решения проблемы предлагаю "пальцем в небо"

0,0(0 оценок)
Ответ:
КамиLLочка
13.05.2021 17:53

Логика приложения сохранена. Теперь игрок представлен классом, а не словарём (потому что ооп труъ). Атакующая сторона выбирается случайно.

import random

import time  

import typing

from typing import NewType

player = NewType('Player', object)

class Player:

   def __init__(self, name, hp, dmg):

       self._name = name

       self._health = hp  

       self._damage = dmg  

   @property

   def NAME(self):

       return self._name

   

   @property

   def HP(self):

       return self._health  

   @HP.setter  

   def HP(self, NewValue):

       self._health = NewValue

   @property

   def DMG(self):

       return self._damage

   def Attack(self, trg: player):

       trg.HP -= self._damage

def main():

   enemies = [Player('Bob', 100, 25), Player('Tom', 100, 23)]

   choices = [0, 1]

   while (enemies[0].HP > 0 and enemies[1].HP > 0):

       CurrSelected = random.choice(choices)

       OtherSelected = abs(CurrSelected-1)

       Slc = enemies[CurrSelected]

       Other = enemies[OtherSelected]

       print(f'Player {Slc.NAME} (HP: {Slc.HP}) attack {Other.NAME} (HP: {Other.HP} -> {Other.HP - Slc.DMG})')

       enemies[CurrSelected].Attack(enemies[abs(CurrSelected-1)])

       time.sleep(1)

if __name__ == '__main__':

   main()

   

Объяснение:

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота