Как я могу указать функции, чтобы она просмотрела и взяла значение определенного индекса списка, значения которого обновPython

Программы на Python
Anonymous
Как я могу указать функции, чтобы она просмотрела и взяла значение определенного индекса списка, значения которого обнов

Сообщение Anonymous »

Я создал класс, объект которого falcon_visual_vectors содержит каждый добавляемый к нему вектор, и этот класс также отвечает за обновление координат векторов, т.е. в основной функции обновления я просто вызываю falcon_visual_vectors.update(). Каждый из них начинается в одной и той же исходной точке, но их конечные точки (x2, y2) различаются в зависимости от типа вектора (например, вектор горизонтальной скорости, вектор вертикальной скорости, оба).
Моя проблема: когда я передаю список в функцию (то есть список f9.v_vector_m_s (v означает скорость, первоначально [0;0])... поэтому первый вектор, состоящий как из горизонтального, так и из вертикального компонента )
он отображает вектор правильно, поскольку (я считаю) вместо передачи начальных координат 0;0 Python передает весь список, а затем в функцию, когда функция просматривает список, он обнаруживает, что координаты больше не 0;0, а, например, 100;100, поэтому вектор отображается правильно.
Но как только я хочу визуализировать только горизонтальную составляющую этого вектора, т. е. я ввожу только горизонтальное значение x этого вектора и оставьте вертикальное значение равным 0 (я считаю), что Python передает только начальные координаты 0;0, что означает, что функция обновления всегда добавляет 0;0 к x2,y2 вместо текущих , обновлены координаты, поэтому вектор вообще не отображается, поскольку конечная точка линии совпадает с начальной точкой
так как я могу указать функции обновления, чтобы она просмотрела первый индекс f9.v_m_s каждый раз обновляет координаты вектора?
class VisualVector:
def __init__(self, coordinates, color, visual_enlargement_factor) -> None:
self.pyglet_component = pyglet.shapes.Line(0,0,0,0,3,color,sw_batch)
self.coordinates = coordinates
self.visual_enlargement_factor = visual_enlargement_factor

class FalconVisualVectors:
def __init__(self) -> None:
self.vectors = []

def new_vector(self, coordinates, color, visual_enlargement_factor):
vector = VisualVector(coordinates, color, visual_enlargement_factor)
self.vectors.append(vector)

def update(self):
for vector in self.vectors:
vector.pyglet_component.position = falcon_screen_location_point_px.position
vector.pyglet_component.x2 = falcon_screen_location_point_px.x + m_into_px(vector.coordinates[0]) * vector.visual_enlargement_factor
vector.pyglet_component.y2 = falcon_screen_location_point_px.y + m_into_px(vector.coordinates[1]) * vector.visual_enlargement_factor

falcon_visual_vectors = FalconVisualVectors()
#f9.v_vector_m_s = [0,0] None:
self.pyglet_component = pyglet.shapes.Line(0,0,0,0,3,color,sw_batch)
self.coordinates = coordinates
self.access_0 = access_0
self.access_1 = access_1
self.visual_enlargement_factor = visual_enlargement_factor

class FalconVisualVectors:
def __init__(self) -> None:
self.vectors = []

def new_vector(self, coordinates, access_0, access_1, color, visual_enlargement_factor):
vector = VisualVector(coordinates, access_0, access_1, color, visual_enlargement_factor)
self.vectors.append(vector)

def update(self):
for vector in self.vectors:
vector.pyglet_component.position = falcon_screen_location_point_px.position
vector.pyglet_component.x2 = falcon_screen_location_point_px.x
vector.pyglet_component.y2 = falcon_screen_location_point_px.y
if vector.access_0:
vector.pyglet_component.x2 += m_into_px(vector.coordinates[0]) * vector.visual_enlargement_factor
if vector.access_1:
vector.pyglet_component.y2 += m_into_px(vector.coordinates[1]) * vector.visual_enlargement_factor

falcon_visual_vectors = FalconVisualVectors()
#f9.v_vector_m_s = [0, 0]

Подробнее здесь: https://stackoverflow.com/questions/786 ... ific-index

Вернуться в «Python»