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


Python Rect.move_ip方法代码示例

本文整理汇总了Python中pygame.rect.Rect.move_ip方法的典型用法代码示例。如果您正苦于以下问题:Python Rect.move_ip方法的具体用法?Python Rect.move_ip怎么用?Python Rect.move_ip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在pygame.rect.Rect的用法示例。


在下文中一共展示了Rect.move_ip方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: Select

# 需要导入模块: from pygame.rect import Rect [as 别名]
# 或者: from pygame.rect.Rect import move_ip [as 别名]
class Select(Sprite):
    def __init__(self):
        Sprite.__init__(self)
        self.image = pygame.image.load('images/selector.png').convert()
        self.image.set_colorkey(PUCE, RLEACCEL)
        self.rect=Rect(10, 10, 30, 30)
        self.index = 0

    def setX(self, x):
        newpos = (self.rect.topleft[0] + x)
        if (newpos > 0) and (newpos < COLUMNS * 40 + 10):
            self.rect.move_ip(x,0)
            if x > 0:
                self.index += 1
            else:
                self.index -= 1

    def setY(self, y):
        newpos = (self.rect.topleft[1] + y)
        if (newpos > 0) and (newpos < ROWS * 40 + 10):
            self.rect.move_ip(0, y)
            if y > 0:
                self.index += COLUMNS
            else:
                self.index -= COLUMNS
开发者ID:bry,项目名称:pybomber2,代码行数:27,代码来源:color_picker.py

示例2: nearest_edge

# 需要导入模块: from pygame.rect import Rect [as 别名]
# 或者: from pygame.rect.Rect import move_ip [as 别名]
 def nearest_edge(self, x, y):
     """ The nearest lot boundary on which a fence might be erected """
     lot = self.nearest_lot(x, y)
     if not lot:
         return None
     proximities = [(y - lot.top,"north"),
                    (lot.bottom-y,"south"),
                    (lot.right-x,"east"),
                    (x-lot.left,"west")]
     proximities.sort()
     closest = proximities[0]
     dist,side = closest
     if dist > EDGE_TOLERANCE:
         return None
     horizontal = (side=="north" or side=="south")
     vertical = (side=="east" or side=="west")
     if horizontal:
         rect = Rect(lot.left, lot.top - FENCE_MARGIN_NORTH, lot.width, 2*FENCE_MARGIN_NORTH)
         if side == "south":
             rect.move_ip(0, LOT_DEPTH)
         if not WATER_RECT.colliderect(rect):
             return rect
     elif vertical:
         rect = Rect(lot.left - FENCE_MARGIN_WEST, lot.top, 2*FENCE_MARGIN_WEST, lot.height)
         if side == "east":
             rect.move_ip(LOT_WIDTH, 0)
         if not WATER_RECT.colliderect(rect):
             return rect
开发者ID:scavpy,项目名称:Scav-Threads-PyWeek-Sep-2012,代码行数:30,代码来源:grid.py

示例3: Player

# 需要导入模块: from pygame.rect import Rect [as 别名]
# 或者: from pygame.rect.Rect import move_ip [as 别名]
class Player(Animated):
    """
    An instance is compatible with the level manager. Note that if
    :func:`rapidpg.levelmgr.collision.Level.update` is not used, a player
    instance doesn't have to be passed to the level manager
    """
    def __init__(self, surfs, interval):
        """
        :param surfs: A list of surfaces for animation
        :param interval: The interval between animation updates
        """
        super(Player, self).__init__({"right": Animation(surfs, interval)},
                                     lambda: "right", "right")
        self.jump_frames_left = 0
        self.jumping = False
        self.in_air = False
        self.up_speed = 20
        self.down_speed = 0
        self.dir = 'right'
        self.surfs = surfs
        self.rect = Rect(0, 0, 0, 0)
        if surfs:
            self.rect = surfs[0].get_rect()
        self.animation_interval = interval
        self.speed = 7

    def move(self, x, y):
        """
        Alias for ``plr.rect.move_ip``
        """
        self.rect.move_ip(x, y)

    def start_jump(self):
        """
        This method is used by the level manager to start the jump
        """
        if not self.jumping:
            self.jumping = True
            self.in_air = True
开发者ID:XrXr,项目名称:RapidPygame,代码行数:41,代码来源:player.py

示例4: Hero

# 需要导入模块: from pygame.rect import Rect [as 别名]
# 或者: from pygame.rect.Rect import move_ip [as 别名]
class Hero(EventObserver):

    def __init__(self, x, y, rect_martix, container, evenent_handler):
        super().__init__(container, evenent_handler)
        self.rect_matrix = rect_martix
        self.map_point = (y, x) #cooridnates on map.txt
        self.x = x * 20 - 3 # coordinates used to paint object
        self.y = y * 20 - 3
        self.speed = 2
        self.active = True
        self.area_rect = Rect(self.x + 3, self.y + 3, 20, 20)
        self.direction = K_RIGHT
        self.new_direction = K_RIGHT
        self.movements = {K_UP: (0, -self.speed), K_RIGHT: (self.speed, 0),
                          K_DOWN: (0, self.speed), K_LEFT: (-self.speed, 0),
                          K_w: (0, -self.speed), K_d: (self.speed, 0),
                          K_s: (0, self.speed), K_a: (-self.speed, 0),
                          K_DELETE: (0, 0)}

    def move_hero(self, arguments):
        pass

    def move(self):
        self.x += self.movements[self.direction][0]
        self.y += self.movements[self.direction][1]
        self.area_rect.move_ip(self.movements[self.direction][0], self.movements[self.direction][1])

    def go_back(self):
        self.x -= self.movements[self.direction][0]
        self.y -= self.movements[self.direction][1]
        self.area_rect.move_ip(-self.movements[self.direction][0], -self.movements[self.direction][1])

    def get_proper_random_direction(self):
        directions = []
        if self.direction in PLAYER_ONE_KEYS:
            for direction in PLAYER_ONE_KEYS :
                if not self.is_this_the_wall(direction):
                    directions.append(direction)
            return directions[randint(0, len(directions) - 1)]
        else:
            for direction in PLAYER_TWO_KEYS:
                if not self.is_this_the_wall(direction):
                    directions.append(direction)
            return directions[randint(0, len(directions) - 1)]

    def in_place_to_change_direction(self):
        return self.rect_matrix.is_at_direction_change_place(self.area_rect)

    #checks if next point with givien direction to current hero map_point have wall on it
    def is_this_the_wall(self, direction):
         return self.rect_matrix.is_this_the_wall(self.area_rect, (int(self.movements[direction][0]/self.speed),
                                                             int(self.movements[direction][1]/self.speed)))

    def reload_movements(self):
        self.movements = {K_UP: (0, -self.speed), K_RIGHT: (self.speed, 0),
                          K_DOWN: (0, self.speed), K_LEFT: (-self.speed, 0),
                          K_DELETE: (0, 0)}

    def teleport(self, map_point):
        self.map_point = map_point #cooridnates on map.txt
        self.x = map_point[1] * 20 - 3 # coordinates used to paint object
        self.y = map_point[0] * 20 - 3
        self.area_rect = Rect(self.x + 3, self.y + 3, 20, 20)
开发者ID:Kranek,项目名称:PacMan,代码行数:65,代码来源:hero.py

示例5: __init__

# 需要导入模块: from pygame.rect import Rect [as 别名]
# 或者: from pygame.rect.Rect import move_ip [as 别名]
class Camera:
    """
    Class for keeping track of the camera position. In early stage of development
    """
    def __init__(self, screen_res, level_rect, x_speed=15, y_speed=15,
                 left_threshold=10, right_threshold=75, up_threshold=10,
                 down_threshold=75):
        """

        :param screen_res: A tuple of int. (w, h)
        :param level_rect: A rectangle that covers all of the level
        :param x_speed: The horizontal speed of the camera
        :param y_speed: The vertical speed of the camera
        :param left_threshold:
            The percentage of screen to reach in order for the camera to scroll
            left
        :param right_threshold:
            The percentage of screen to reach in order for the camera to scroll
            right
        :param up_threshold:
            The percentage of screen to reach in order for the camera to scroll
            up
        :param down_threshold:
            The percentage of screen to reach in order for the camera to scroll
            down
        """
        self.level_rect = level_rect
        self.horizontal_speed = x_speed
        self.vertical_speed = y_speed
        self.screen_res = screen_res
        self.rect = Rect((0, 0), screen_res)

        self.x_bound = self.level_rect.width - self.rect.width
        self.y_bound = self.level_rect.height - self.rect.height

        self.right_threshold = self.rect.width * right_threshold / 100
        self.left_threshold = self.rect.width * left_threshold / 100
        self.up_threshold = self.rect.height * up_threshold / 100
        self.down_threshold = self.rect.height * down_threshold / 100

    def pan_left(self, h_speed):
        if self.rect.x == 0:
            return
        if self.rect.move(-h_speed, 0).x < 0:
            self.rect.move_ip(-self.rect.x, 0)
        else:
            self.rect.move_ip(-h_speed, 0)

    def pan_right(self, h_speed):
        if self.rect.x == self.x_bound:
            return
        if self.rect.x + h_speed + self.rect.width > self.level_rect.width:
            self.rect.move_ip((self.level_rect.width - (self.rect.x + self.rect.width)), 0)
        else:
            self.rect.move_ip(h_speed, 0)

    def pan_down(self, v_speed):
        if self.rect.y == self.y_bound:
            return
        if self.rect.y + v_speed + self.rect.height > self.level_rect.height:
            self.rect.move_ip(0, (self.level_rect.height - self.rect.y - self.rect.height))
        else:
            self.rect.move_ip(0, v_speed)

    def pan_up(self, v_speed):
        if self.rect.y == 0:
            return
        if self.rect.move(0, -v_speed).y < 0:
            self.rect.move_ip(0, -self.rect.y)
        else:
            self.rect.move_ip(0, -v_speed)

    def snap_to(self, player_rect):
        propose = self.rect.move(0, 0)
        propose.x = min(max(0, player_rect.x - self.screen_res[0] / 2), self.x_bound)
        propose.y = min(max(0, player_rect.y - self.screen_res[1] / 2), self.y_bound)
        self.rect = propose

    def update(self, player_rect, custom_speed=None):
        h_speed, v_speed = self.horizontal_speed, self.vertical_speed
        if custom_speed:
            h_speed, v_speed = custom_speed
        if player_rect.x - self.rect.x > self.right_threshold:
            self.pan_right(h_speed)
        elif player_rect.x - self.rect.x < self.left_threshold:
            self.pan_left(h_speed)
        if player_rect.y - self.rect.y > self.down_threshold:
            self.pan_down(v_speed)
        elif player_rect.y - self.rect.y < self.up_threshold:
            self.pan_up(v_speed)
开发者ID:XrXr,项目名称:RapidPygame,代码行数:92,代码来源:camera.py

示例6: Widget

# 需要导入模块: from pygame.rect import Rect [as 别名]
# 或者: from pygame.rect.Rect import move_ip [as 别名]

#.........这里部分代码省略.........
           rectangle, and (x,y) movement pair.
        """
        Sprite.__init__(self)
        self.movement = [0, 0]
        self.rect = Rect(rect)
        self.lastRect = self.rect
        self.image = image
        self.name = name
        self.frames = []
        self.frameIndex = 0
        self.frameRate = 1
        self.timeDelay = WIDGETFRAMES
        self.lastUpdate = 0
        self.world = None
        self.undone = False
        self.id = self.rect.top + self.rect.left +\
                  self.rect.width + self.rect.height

    def attachToWorld(self, world):
        self.world = world
        self.id = self.world.curWidgetID
        self.world.curWidgetID += 1

    def startAnimation(self, frames, startIndex, frameRate):
        self.frames = frames
        self.frameIndex = startIndex
        self.frameRate = frameRate
        self.image = self.frames[startIndex]
        self.lastUpdate = self.timeDelay

    def __str__(self):
        return str(self.rect.left) + str(self.rect.top) + str(self.id)

    def setMovement(self, vector):
        """Set movement with a pair"""
        if(self.movement != [0,0]
           and vector == [0,0]):
            self.world.dirtyGroup.add(self)
        self.movement = vector

    def getMovement(self):
        """Return movement as a pair"""
        return self.movement

    def setStop(self):
        """Set movement to 0"""
        self.setMovement([0,0])

    def setY(self, y):
        """Set y-component of movement"""
        self.movement[1] = y

    def setX(self, x):
        """Set x-component of movement"""
        self.movement[0] = x

    def getX(self):
        """Get x-component of movement"""
        return self.movement[0]
    def getY(self):
        """Set y-component of movement"""
        return self.movement[1]

    def setPosition(self, pair):
        """Set x and y coords of Widget"""
        self.rect.topleft = pair

    def getPosition(self):
        """Get x and y coords of Widget"""
        return self.rect.topleft

    def update(self):
        """Move sprite according to its movement vector"""
        # Widget needs to be animated
        if (len(self.frames) > 0):
            if self.lastUpdate <= 0:
                self.frameIndex = (self.frameIndex+1)%(len(self.frames))
                self.image = self.frames[self.frameIndex]
                self.lastUpdate = self.timeDelay
                self.world.dirtyGroup.add(self)
            else:
                self.lastUpdate -= 1

        elif(self.getMovement != [0,0]):
            self.lastRect = Rect(self.rect)
            self.rect.move_ip(self.movement)
            self.world.dirtyGroup.add(self)

    def undoUpdate(self):
        """Widget returns to state prior to last update()"""
        self.rect = self.lastRect

    def getShadow(self):
        shadow = Sprite()
        shadow.rect = self.lastRect.move(0,0)
        return shadow

    def getName(self):
        """Get name of Widget"""
        return self.name
开发者ID:bry,项目名称:pybomber2,代码行数:104,代码来源:widget.py


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