赞
踩
以上是我整体的代码图
bricks.py
__author__ = 'justinarmstrong' import pygame as pg from .. import setup from .. import constants as c from . import powerups from . import coin class Brick(pg.sprite.Sprite): """Bricks that can be destroyed""" def __init__(self, x, y, contents=None, powerup_group=None, name='brick'): """Initialize the object""" pg.sprite.Sprite.__init__(self) self.sprite_sheet = setup.GFX['tile_set'] self.frames = [] self.frame_index = 0 self.setup_frames() self.image = self.frames[self.frame_index] self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.mask = pg.mask.from_surface(self.image) self.bumped_up = False self.rest_height = y self.state = c.RESTING self.y_vel = 0 self.gravity = 1.2 self.name = name self.contents = contents self.setup_contents() self.group = powerup_group self.powerup_in_box = True def get_image(self, x, y, width, height): """Extracts the image from the sprite sheet""" image = pg.Surface([width, height]).convert() rect = image.get_rect() image.blit(self.sprite_sheet, (0, 0), (x, y, width, height)) image.set_colorkey(c.BLACK) image = pg.transform.scale(image, (int(rect.width*c.BRICK_SIZE_MULTIPLIER), int(rect.height*c.BRICK_SIZE_MULTIPLIER))) return image def setup_frames(self): """Set the frames to a list""" self.frames.append(self.get_image(16, 0, 16, 16)) self.frames.append(self.get_image(432, 0, 16, 16)) def setup_contents(self): """Put 6 coins in contents if needed""" if self.contents == '6coins': self.coin_total = 6 else: self.coin_total = 0 def update(self): """Updates the brick""" self.handle_states() def handle_states(self): """Determines brick behavior based on state""" if self.state == c.RESTING: self.resting() elif self.state == c.BUMPED: self.bumped() elif self.state == c.OPENED: self.opened() def resting(self): """State when not moving""" if self.contents == '6coins': if self.coin_total == 0: self.state == c.OPENED def bumped(self): """Action during a BUMPED state""" self.rect.y += self.y_vel self.y_vel += self.gravity if self.rect.y >= (self.rest_height + 5): self.rect.y = self.rest_height if self.contents == 'star': self.state = c.OPENED elif self.contents == '6coins': if self.coin_total == 0: self.state = c.OPENED else: self.state = c.RESTING else: self.state = c.RESTING def start_bump(self, score_group): """Transitions brick into BUMPED state""" self.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。