Немного сложный вопрос, но я надеюсь, что вы можете мне помочь. Я получил задание кодирования, и у меня возникли проблемы с решением проблемы.Координаты карты области в Python
Ситуация такова: предположим, что у меня есть оружие в координатах (X, Y); Когда он стреляет, появляется функция звукового повреждения, которая затрагивает людей в непосредственной близости от пистолета. Мне нужно написать функцию, которая будет вычислять - в соответствии с калибра, который уволен - независимо от того, присутствует ли человек (экземпляр класса Person) в опасной зоне. Звук из пистолета простирается от 45-градусного угла и имеет радиус, который изменяется в соответствии с калибром, который стреляет (но предопределен мной, поэтому допустим, что радиус равен 5). Мое объяснение может быть немного грязным, поэтому я постараюсь немного его организовать, чтобы сделать все более ясным: мне нужно написать функцию, которая вызывается всякий раз, когда запускается пушка. Функция должна проверять, находится ли человек в опасной близости от пушки, стреляющего, как если бы он был нанесен повреждением его слуху (посредством отдельной, предварительно сделанной функции). Масштаб повреждения зависит от относительного расстояния человека от пистолета. Площадь измеряется в конусе, который разбрасывает край пистолета под углом 45 градусов в случайном радиусе.
Я немного смущен относительно того, как решить эту проблему. Я уже написал функцию, которая вычисляет координаты каждого «Лица». Но мне нужен способ наметить все координаты области удара, чтобы я мог: а) указать, должен ли человек быть затронут функцией звукового повреждения и b) рассказать, как сильно он был поражен (поскольку ущерб будет хуже если он стоял на расстоянии 1 метра от пистолета, а не 4 метра).
Возможно, я неправильно подхожу к проблеме - я хочу учиться и рад выслушать любые предложения. Я никоим образом не являюсь экспертом и хотел бы, возможно, получить некоторые указания относительно того, как наиболее эффективно подойти к этой проблеме.
Edit: код, который я написал до сих пор является следующее:
class Soldier(object):
def __init__(self):
# Soldier ID is a randomly generated string including of 3 numbers.
ID = str(int(random.random() * 1000))
self.ID = ID
# soldier's position is set by default to [0,0]
self.position = [0,0]
def getID(self):
# gets the ID number (string) of the instance
print (self.ID)
def setPosition(self, position):
# sets the position (a list) of the instance
self.position = position
def getPosition(self):
# gets the position (list) of the instance
print(self.position)
def randomize_soldier_position(soldiersList):
"""
Gets as input a list of instances of soldiers, and assigns a random location to each one of the instances.
"""
for i in soldiersList:
# for the values of X and Y we generate a random floating point number extending to 3 digits.
X = round((random.random() * 100), 3)
Y = round((random.random()* 100), 3)
# sets the [X,Y] values for each of the instances.
i.setPosition([X,Y])
print(i.position)
Я не трогал код фактической функции мне нужно писать, как я понятия не имею, где даже начать. ..
Заранее спасибо! :)
Предоставьте любой код, который вы написали до сих пор, мы не можем полностью выполнить ваш код. :) –
Можете ли вы составить список вещей, которые вы хотите сделать, о человеке и его повреждении из их координат? тогда было бы легче увидеть проблему по сравнению со стеной текста. –
звук будет ослабевать в соответствии с законом обратного квадрата, который достаточно прост для кодирования: https://en.wikipedia.org/wiki/Inverse-square_law#Sound_in_a_gas –