Где это можно применить на практике? В gamedeveloping игра "Астероид", в set добавляем все летающие по экрану камни, пробегаемся по set-у и сверяем дистанцию между кораблем и камнями:
для этого вычисляем дистанцию между координатами центров фигур
>>> def dist(p, q):
>>> return math.sqrt((p[0] - q[0]) ** 2 + (p[1] - q[1]) ** 2)
и вычитаем радиус корабля и радиус камня, если получившееся значение <= 0 значит столкновение, то добавляем экземпляр класса камень во временный set. После окончания обхода set-а с камнями - удаляем из этого set-а временный set (один или более камней при столкновении) и уменьшаем счетчик жизней кораблю.
>>> import random
>>> class A:
>>> def __init__(self, a):
>>> self.a = a
>>> def __str__(self):
>>> return ("%s") % self.a
>>> st = set()
>>> for i in range(10):
>>> st.add(A(random.randrange(0, 10)))
>>> print [str(x) for x in st]
['6', '5', '3', '8', '4', '9', '2', '9', '9', '8']>>> temp = set()
>>> for x in st:
>>> if str(x) == '9' or str(x) == '8':
>>> temp.add(x)
>>> print [str(x) for x in temp]
['8', '9', '9', '9', '8']>>> st.difference_update(temp)
>>> print [str(x) for x in st]
['6', '5', '3', '4', '2']
Комментариев нет:
Отправить комментарий