当前位置: 首页>>代码示例>>Python>>正文


Python Rect.union方法代码示例

本文整理汇总了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)        
开发者ID:fhorinek,项目名称:pi8bit,代码行数:104,代码来源:cell.py


注:本文中的pygame.rect.Rect.union方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。