М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет242/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   238   239   240   241   242   243   244   245   ...   334
Байланысты:
Изучаем Python

random_walk.py
def fill_walk(self):
"""Вычисляет все точки блуждания."""
# Шаги генерируются до достижения нужной длины.

while len(self.x_values) < self.num_points:
# Определение направления и длины перемещения.

x_direction = choice([1, -1])
x_distance = choice([0, 1, 2, 3, 4])

x_step = x_direction * x_distance
y_direction = choice([1, -1])
y_distance = choice([0, 1, 2, 3, 4])

y_step = y_direction * y_distance
# Отклонение нулевых перемещений.

if x_step == 0 and y_step == 0:
continue
# Вычисление следующих значений x и y.

x = self.x_values[-1] + x_step
y = self.y_values[-1] + y_step
self.x_values.append(x)
self.y_values.append(y)
В точке 

запускается цикл, который выполняется вплоть до заполнения пути пра-
вильным количеством точек. Главная часть метода 
fill_walk()
сообщает Python, 
как следует моделировать четыре случайных решения: двигаться вправо или влево? 
как далеко идти в этом направлении? двигаться вверх или вниз? как далеко идти 
в этом направлении?
Выражение 
choice([1,
-1])
выбирает значение 
x_direction
; оно возвращает 1 для 
перемещения вправо или –1 для движения влево 

. Затем выражение 
choice([0,
1,
2,
3,
4])
определяет дальность перемещения в этом направлении (
x_distance

случайным выбором целого числа от 0 до 4. (Включение 0 позволяет выполнять 
шаги по оси 
y
, а также шаги со смещением по обеим осям.)
В точках 

и 

определяется длина каждого шага в направлениях 
x
и 
y
, для чего 
направление движения умножается на выбранное расстояние. При положитель-
ном результате 
x_step
смещает вправо, при отрицательном — влево и при нуле-
вом — вертикально. При положительном результате 
y_step
смещает вверх, при 
отрицательном — вниз и при нулевом — горизонтально. Если оба значения, 
x_step
и 
y_step
, равны 0, то блуждание останавливается, но цикл продолжается 

.


332

Достарыңызбен бөлісу:
1   ...   238   239   240   241   242   243   244   245   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет