from pygame import Rect from core import color from core import config from core import settings from game.gameobject import GameObject ### Constants ################################################################## BALL_STATES = ('IDLE', 'APPEARING', 'MOVING', 'DYING', 'RESET') FRAMES = tuple(Rect(32 * i, 96, 32, 32) for i in range(5)) TIME_TO_MOVE = 30 #In frames; remember, our target is 60FPS ################################################################################ ### Globals #################################################################### _ball_frames = color.get_colored_objects(FRAMES) _ball_frames_color_blind = color.get_colored_objects(FRAMES, True, True, True) _balls = set() ################################################################################ ### Functions ################################################################## def clean_up(): ''' Removes all BallOfLights from memory. ''' _balls.clear() def get_ball(startpos, target, newcolor): ''' Returns a spare BallOfLight, or creates one if there are none.
from pygame import Rect from core import color from core import config from core import settings from core.particles import ParticleEmitter from game import balloflight from game.gameobject import GameObject ### Constants ################################################################## ENEMY_STATES = ('IDLE', 'APPEARING', 'LOWERING', 'ACTIVE', 'DYING', 'CHEERING') FRAMES = tuple(Rect(32 * i, 32, 32, 32) for i in range(4)) LOWER_INCREMENT = 16 START_POS = (32.0, 32.0) ENEMY_FRAMES = color.get_colored_objects(FRAMES, True, False, True) ENEMY_FRAMES_COLOR_BLIND = color.get_colored_objects(FRAMES, True, True , True) del FRAMES ################################################################################ ### Globals #################################################################### _hurt = config.load_sound('enemyhit.wav') ################################################################################ class Enemy(GameObject): STATES = config.Enum(*ENEMY_STATES) anim = 0.0 base_speed = 0.5 GROUP = None shoot_odds = 0.002 should_flip = False
from pygame import Rect from core import color from core import config from core import settings from core.particles import ParticleEmitter from game import balloflight from game.gameobject import GameObject ### Constants ################################################################## ENEMY_STATES = ('IDLE', 'APPEARING', 'LOWERING', 'ACTIVE', 'DYING', 'CHEERING') FRAMES = tuple(Rect(32 * i, 32, 32, 32) for i in range(4)) LOWER_INCREMENT = 16 START_POS = (32.0, 32.0) ENEMY_FRAMES = color.get_colored_objects(FRAMES, True, False, True) ENEMY_FRAMES_COLOR_BLIND = color.get_colored_objects(FRAMES, True, True, True) del FRAMES ################################################################################ ### Globals #################################################################### _hurt = config.load_sound('enemyhit.wav') ################################################################################ class Enemy(GameObject): STATES = config.Enum(*ENEMY_STATES) anim = 0.0 base_speed = 0.5 GROUP = None shoot_odds = 0.002
from core import color from core import config from core.particles import ParticleEmitter from game.block import get_block from game.gameobject import GameObject from game import gamedata ### Constants ################################################################## AVG_WAIT = 9000 #Expected time in frames between UFO appearance DEATH = config.load_sound('ufo_explosion.wav') FRAMES = tuple( Rect(64 * (i % 4), 192 + 32 * (i // 4), 64, 32) for i in range(10, -1, -1)) INVADE = config.load_sound('ufo.wav') START_POS = (640, 16) UFO_FRAMES = color.get_colored_objects(FRAMES) UFO_STATES = ('IDLE', 'APPEARING', 'ACTIVE', 'DYING', 'LEAVING', 'LOWERING', 'GAMEOVER') ################################################################################ class UFO(GameObject): STATES = config.Enum(*UFO_STATES) GROUP = None BLOCK_GROUP = None def __init__(self): super().__init__() self._anim = 0.0 self.column = None self.current_frame_list = UFO_FRAMES
from pygame import Rect from core import color from core import config from core import settings from game.gameobject import GameObject ### Constants ################################################################## BALL_STATES = ('IDLE', 'APPEARING', 'MOVING', 'DYING', 'RESET') FRAMES = tuple(Rect(32 * i, 96, 32, 32) for i in range(5)) TIME_TO_MOVE = 30 #In frames; remember, our target is 60FPS ################################################################################ ### Globals #################################################################### _ball_frames = color.get_colored_objects(FRAMES) _ball_frames_color_blind = color.get_colored_objects(FRAMES, True, True, True) _balls = set() ################################################################################ ### Functions ################################################################## def clean_up(): ''' Removes all BallOfLights from memory. ''' _balls.clear() def get_ball(startpos, target, newcolor):
from game import blockgrid from game import gamedata ### Constants ################################################################## BLOCK_STATES = ('IDLE', 'APPEARING', 'ACTIVE', 'START_FALLING', 'FALLING', 'IMPACT', 'DYING') FRAMES = tuple(pygame.Rect(32 * i, 160, 32, 32) for i in range(8)) GRAVITY = 0.5 MAX_SPEED = 12.0 UFO_BLOCK = config.load_sound('ufo_block.wav') ################################################################################ ### Globals #################################################################### _blocks_set = set() _bump = config.load_sound('bump.wav') _block_frames = color.get_colored_objects(FRAMES, True, False, True) _block_frames_color_blind = color.get_colored_objects(FRAMES, True, True , True) ################################################################################ ### Functions ################################################################## def clean_up(): ''' Removes every Block from memory. @postcondition: No more Blocks exist, on-screen and off. ''' _blocks_set.clear() Block.block_full = False def get_block(position, newcolor=choice(color.LIST), special=False): '''
from core import config from core.particles import ParticleEmitter from game.block import get_block from game.gameobject import GameObject from game import gamedata ### Constants ################################################################## AVG_WAIT = 9000 #Expected time in frames between UFO appearance DEATH = config.load_sound('ufo_explosion.wav') FRAMES = tuple( Rect(64 * (i % 4), 192 + 32 * (i // 4), 64, 32) for i in range(10, -1, -1) ) INVADE = config.load_sound('ufo.wav') START_POS = (640, 16) UFO_FRAMES = color.get_colored_objects(FRAMES) UFO_STATES = ('IDLE', 'APPEARING', 'ACTIVE', 'DYING', 'LEAVING', 'LOWERING', 'GAMEOVER') ################################################################################ class UFO(GameObject): STATES = config.Enum(*UFO_STATES) GROUP = None BLOCK_GROUP = None def __init__(self): super().__init__() self._anim = 0.0 self.column = None self.current_frame_list = UFO_FRAMES self.image = config.get_sprite(FRAMES[0]) self.odds = expovariate(AVG_WAIT)
from game import gamedata ### Constants ################################################################## BLOCK_STATES = ('IDLE', 'APPEARING', 'ACTIVE', 'START_FALLING', 'FALLING', 'IMPACT', 'DYING') FRAMES = tuple(pygame.Rect(32 * i, 160, 32, 32) for i in range(8)) GRAVITY = 0.5 MAX_SPEED = 12.0 UFO_BLOCK = config.load_sound('ufo_block.wav') ################################################################################ ### Globals #################################################################### _blocks_set = set() _bump = config.load_sound('bump.wav') _block_frames = color.get_colored_objects(FRAMES, True, False, True) _block_frames_color_blind = color.get_colored_objects(FRAMES, True, True, True) ################################################################################ ### Functions ################################################################## def clean_up(): ''' Removes every Block from memory. @postcondition: No more Blocks exist, on-screen and off. ''' _blocks_set.clear() Block.block_full = False