本文整理汇总了Python中pygame.rect.Rect.union方法的典型用法代码示例。如果您正苦于以下问题:Python Rect.union方法的具体用法?Python Rect.union怎么用?Python Rect.union使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pygame.rect.Rect
的用法示例。
在下文中一共展示了Rect.union方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Cell
# 需要导入模块: from pygame.rect import Rect [as 别名]
# 或者: from pygame.rect.Rect import union [as 别名]
#.........这里部分代码省略.........
self.parent.draw_line(start, end, state)
for c in self.outputs:
state = self.output(c)
if c in self.output_cache:
if self.output_cache[c] == state:
continue
self.output_cache[c] = state
pos_xy = self.output_xy[c]
self.parent.draw_circle(pos_xy, state)
def check_output_collision(self, pos):
for pin in self.outputs:
if pin in self.output_xy:
out_pos = self.output_xy[pin]
p = self.parent.canvas.style["d_point"]
rect = pygame.Rect(out_pos[0] - p, out_pos[1] - p, p * 2, p * 2)
if (rect.collidepoint(pos)):
return pin
return False
def check_input_collision(self, pos):
for pin in self.inputs:
if pin in self.input_xy:
out_pos = self.input_xy[pin]
p = self.parent.canvas.style["d_point"]
rect = pygame.Rect(out_pos[0] - p, out_pos[1] - p, p * 2, p * 2)
if (rect.collidepoint(pos)):
return pin
return False
def check_input_line_collision(self, pos):
for p in self.inputs:
if self.inputs[p]:
obj, pin = self.inputs[p]
if isinstance(obj, Invisible):
continue
start = self.input_xy[p]
end = obj.output_xy[pin]
#basic rect TODO
offset = self.parent.canvas.style["d_line_col"]
x = min((start[0], end[0])) - offset
y = min((start[1], end[1])) - offset
w = abs(start[0] - end[0]) + offset * 2
h = abs(start[1] - end[1]) + offset * 2
basic = Rect(x, y, w, h)
if basic.collidepoint(pos):
dx = end[0] - start[0]
dy = end[1] - start[1]
if dx == 0 and dy == 0:
return False
if abs(dx) < abs(dy):
k = float(dx) / float(dy)
x = start[0] + k * (pos[1] - start[1])
if abs(x - pos[0]) < offset:
return self, p, obj, pin
else:
k = float(dy) / float(dx)
y = start[1] + k * (pos[0] - start[0])
if abs(y - pos[1]) < offset:
return self, p, obj, pin
return False
def disconnect(self):
for wire_output in self.outputs:
while True:
target = self.parent.find_output(self, wire_output)
if target:
obj, pin = target
obj.clear_input(pin)
else:
break
def calc_border(self):
self.border = Rect(self.rect)
for c in self.inputs:
if self.inputs[c] is not False:
in_obj, in_pin = self.inputs[c]
if not isinstance(in_obj, Invisible):
x, y = in_obj.output_xy[in_pin]
self.border = self.border.union(Rect(x, y, 0, 0))
def solve_drawable(self, window, drawable_list):
self.calc_border()
self.drawable = self.border.colliderect(window)
if self.drawable:
drawable_list.append(self)