def __init__(self,_rules=None): settings = settingsManager.getSetting().setting self.rules = _rules self.height = settings['windowHeight'] self.width = settings['windowWidth'] pygame.init() screen = pygame.display.get_surface() background = pygame.Surface(screen.get_size()) background = background.convert() clock = pygame.time.Clock() self.player_controls = [] self.player_panels = [] for i in range(0,4): self.player_controls.append(settingsManager.getControls(i)) self.player_panels.append(PlayerPanel(i)) self.player_controls[i].linkObject(self.player_panels[i]) #So playerPanel will take the inputs self.player_controls[i].flushInputs() status = 0 musicManager.getMusicManager().stopMusic(100) while status == 0: music = musicManager.getMusicManager() music.doMusicEvent() if not musicManager.getMusicManager().isPlaying(): musicManager.getMusicManager().rollMusic('css') #Start event loop for bindings in self.player_controls: bindings.passInputs() for event in pygame.event.get(): for bindings in self.player_controls: k = bindings.getInputs(event) if k == 'attack': if self.checkForSelections(): sss.StageScreen(self.rules,self.getFightersFromPanels()) for panel in self.player_panels: panel.active_object = panel.wheel panel.chosen_fighter = None panel.bg_surface = None for i in range(0,4): self.player_controls[i].linkObject(self.player_panels[i]) #So playerPanel will take the inputs self.player_controls[i].flushInputs() if event.type == pygame.QUIT: status = -1 elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: status = 1 #End event loop screen.fill((128, 128, 128)) for panel in self.player_panels: panel.update() panel.draw(screen) pygame.display.flip() clock.tick(60)
def startBattle(self,screen): # Fill background background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((128, 128, 128)) current_stage = self.stage active_hitboxes = pygame.sprite.Group() #gameObjects currentFighters = self.players gameObjects = [] gameObjects.extend(currentFighters) trackStocks = True trackTime = True if self.rules.stocks == 0: trackStocks = False if self.rules.time == 0: trackTime = False for fighter in currentFighters: fighter.rect.midbottom = current_stage.spawnLocations[fighter.playerNum] fighter.gameState = current_stage current_stage.follows.append(fighter.rect) if trackStocks: fighter.stocks = self.rules.stocks current_stage.initializeCamera() clock = pygame.time.Clock() clockTime = self.rules.time * 60 """ ExitStatus breaks us out of the loop. The battle loop can end in many ways, which is reflected here. In general, ExitStatus positive means that the game was supposed to end, while a negative value indicates an error. ExitStatus == 1: Battle ended early by user. No Contest. ExitStatus == 2: Battle ended by time or stock, decide winner, show victory screen ExitStatus == -1: Battle ended in error. """ exitStatus = 0 if trackTime: pygame.time.set_timer(pygame.USEREVENT+2, 1000) countdownSprite = spriteManager.TextSprite('5','full Pack 2025',128,[0,0,0]) countdownSprite.rect.center = screen.get_rect().center countAlpha = 0 countdownSprite.alpha(countAlpha) while exitStatus == 0: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() return -1 if event.type == pygame.KEYDOWN: if event.key == pygame.K_RETURN: print("saving screenshot") pygame.image.save(screen,settingsManager.createPath('screenshot.jpg')) for fight in currentFighters: fight.keyPressed(event.key) if event.type == pygame.KEYUP: if event.key == pygame.K_ESCAPE: exitStatus = 1 for fight in currentFighters: fight.keyReleased(event.key) if event.type == pygame.JOYAXISMOTION: for fight in currentFighters: fight.joyAxisMotion(event.joy, event.axis) if event.type == pygame.JOYBUTTONDOWN: for fight in currentFighters: fight.joyButtonPressed(event.joy, event.button) if event.type == pygame.JOYBUTTONUP: for fight in currentFighters: fight.joyButtonReleased(event.joy, event.button) if event.type == pygame.USEREVENT+2: pygame.time.set_timer(pygame.USEREVENT+2, 1000) clockTime -= 1 print(clockTime) if clockTime <= 5 and clockTime > 0: countdownSprite.changeText(str(clockTime)) countAlpha = 255 if clockTime == 0: exitStatus = 2 # End pygame event loop screen.fill([100, 100, 100]) current_stage.update() current_stage.cameraUpdate() current_stage.drawBG(screen) for obj in gameObjects: obj.update() if hasattr(obj,'active_hitboxes'): active_hitboxes.add(obj.active_hitboxes) offset = current_stage.stageToScreen(obj.rect) scale = current_stage.getScale() obj.draw(screen,offset,scale) if hasattr(obj, 'hurtbox'): if (self.settings['showHurtboxes']): offset = current_stage.stageToScreen(obj.hurtbox.rect) obj.hurtbox.draw(screen,offset,scale) hitbox_collisions = pygame.sprite.spritecollide(obj.hurtbox, active_hitboxes, False) for hbox in hitbox_collisions: if hbox.owner != obj: hbox.onCollision(obj) if (self.settings['showHitboxes']): for hbox in active_hitboxes: hbox.draw(screen,current_stage.stageToScreen(hbox.rect),scale) for fight in currentFighters: if fight.rect.right < current_stage.blast_line.left or fight.rect.left > current_stage.blast_line.right or fight.rect.top > current_stage.blast_line.bottom or fight.rect.bottom < current_stage.blast_line.top: if not trackStocks: # Get score fight.die() else: fight.stocks -= 1 print fight.stocks if fight.stocks == 0: fight.die(False) currentFighters.remove(fight) #If someon's eliminated and there's 1 or fewer people left if len(currentFighters) < 2: exitStatus = 2 #Game set else: fight.die() if trackTime and clockTime <= 5: countdownSprite.draw(screen, countdownSprite.rect.topleft, 1) countAlpha = max(0,countAlpha - 5) countdownSprite.alpha(countAlpha) # End object updates current_stage.drawFG(screen) clock.tick(60) pygame.display.flip() # End while loop if exitStatus == 1: print("NO CONTEST") elif exitStatus == 2: musicManager.getMusicManager().stopMusic() frameHold = 0 gameSprite = spriteManager.TextSprite('GAME!','full Pack 2025',128,[0,0,0]) gameSprite.rect.center = screen.get_rect().center while frameHold < 150: gameSprite.draw(screen, gameSprite.rect.topleft, 1) clock.tick(60) pygame.display.flip() frameHold += 1 print("GAME SET") elif exitStatus == -1: print("ERROR!") return exitStatus # This'll pop us back to the character select screen.
def __init__(self,rules,characters): settings = settingsManager.getSetting().setting self.rules = rules self.fighters = characters self.stages = [] self.getStages() self.grid = StageGrid(self.stages) self.height = settings['windowHeight'] self.width = settings['windowWidth'] pygame.init() screen = pygame.display.set_mode((self.width, self.height)) pygame.display.set_caption(settings['windowName']) background = pygame.Surface(screen.get_size()) background = background.convert() clock = pygame.time.Clock() self.playerControls = [] self.playerPanels = [] x = 0 y = 0 for i in range(0,4): self.playerControls.append(settingsManager.getControls(i)) status = 0 while status == 0: #Start event loop for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: status = 1 for i,bindings in enumerate(self.playerControls): if bindings.get(event.key) == 'left': self.grid.updateSelection(-1, 0) elif bindings.get(event.key) == 'right': self.grid.updateSelection(1, 0) elif bindings.get(event.key) == 'up': self.grid.updateSelection(0, -1) elif bindings.get(event.key) == 'down': self.grid.updateSelection(0, 1) elif bindings.get(event.key) == 'attack': if not self.grid.isStageStruckAt(self.grid.getXY()[0],self.grid.getXY()[1]): #choose if self.grid.getSelectedStage() == 'random': stage = self.grid.getRandomStage() else: stage = self.grid.getSelectedStage() musicManager.getMusicManager().stopMusic(500) #This will wait until the music fades out for cool effect while musicManager.getMusicManager().isPlaying(): pass musicList = stage.getMusicList() musicManager.getMusicManager().createMusicSet('stage', musicList) musicManager.getMusicManager().rollMusic('stage') currentBattle = battle.Battle(self.rules,self.fighters,stage.getStage()) currentBattle.startBattle(screen) status = 1 #do something with battle result #TODO: Fix this when special button is added elif bindings.get(event.key) == 'jump': x,y = self.grid.getXY() self.grid.changeStageStruckAt(x,y) elif event.type == pygame.KEYUP: pass #I shouldn't actually need this, but just in case. #End event loop screen.fill((0,0,0)) self.grid.drawScreen(screen) pygame.display.flip() clock.tick(60)
def __init__(self,rules=None): settings = settingsManager.getSetting().setting self.rules = rules self.height = settings['windowHeight'] self.width = settings['windowWidth'] pygame.init() screen = pygame.display.set_mode((self.width, self.height)) pygame.display.set_caption(settings['windowName']) background = pygame.Surface(screen.get_size()) background = background.convert() clock = pygame.time.Clock() self.playerControls = [] self.playerPanels = [] for i in range(0,4): self.playerControls.append(settingsManager.getControls(i)) self.playerPanels.append(PlayerPanel(i)) status = 0 while status == 0: if not musicManager.getMusicManager().isPlaying(): musicManager.getMusicManager().rollMusic('menu') #Start event loop for event in pygame.event.get(): if event.type == pygame.QUIT: status = -1 elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: status = 1 for i,bindings in enumerate(self.playerControls): if bindings.get(event.key) == 'left': self.playerPanels[i].keyPressed('left') elif bindings.get(event.key) == 'right': self.playerPanels[i].keyPressed('right') elif bindings.get(event.key) == 'attack': self.playerPanels[i].keyPressed('confirm') if self.checkForSelections(): sss.StageScreen(self.rules,self.getFightersFromPanels()) for panel in self.playerPanels: panel.activeObject = panel.wheel panel.chosenFighter = None panel.bgSurface = None #TODO: Fix this when special button is added elif bindings.get(event.key) == 'shield': self.playerPanels[i].keyPressed('cancel') elif event.type == pygame.KEYUP: for i,bindings in enumerate(self.playerControls): if bindings.get(event.key) == 'left': self.playerPanels[i].keyReleased('left') elif bindings.get(event.key) == 'right': self.playerPanels[i].keyReleased('right') #End event loop screen.fill((128, 128, 128)) for panel in self.playerPanels: panel.update() panel.draw(screen) pygame.display.flip() clock.tick(60)
def __init__(self, _rules, _characters): settings = settingsManager.getSetting().setting self.rules = _rules self.fighters = _characters self.stages = [] self.getStages() self.grid = StageGrid(self.stages) self.height = settings['windowHeight'] self.width = settings['windowWidth'] pygame.init() screen = pygame.display.get_surface() background = pygame.Surface(screen.get_size()) background = background.convert() clock = pygame.time.Clock() self.player_controls = [] self.player_panels = [] x = 0 y = 0 for i in range(0, 4): self.player_controls.append(settingsManager.getControls(i)) status = 0 while status == 0: music = musicManager.getMusicManager() music.doMusicEvent() #Start event loop for event in pygame.event.get(): for bindings in self.player_controls: k = bindings.getInputs(event, False, False) if k == 'left': self.grid.updateSelection(-1, 0) elif k == 'right': self.grid.updateSelection(1, 0) elif k == 'up': self.grid.updateSelection(0, -1) elif k == 'down': self.grid.updateSelection(0, 1) elif k == 'attack': if not self.grid.isStageStruckAt( self.grid.getXY()[0], self.grid.getXY()[1]): #choose if self.grid.getSelectedStage() == 'random': stage = self.grid.getRandomStage() else: stage = self.grid.getSelectedStage() musicManager.getMusicManager().stopMusic(500) #This will wait until the music fades out for cool effect while musicManager.getMusicManager().isPlaying(): pass music_list = stage.getMusicList() musicManager.getMusicManager().createMusicSet( 'stage', music_list) musicManager.getMusicManager().rollMusic('stage') bindings.flushInputs() current_battle = battle.Battle( self.rules, self.fighters, stage.getStage()) current_battle.startBattle(screen) status = 1 #do something with battle result elif k == 'jump': x, y = self.grid.getXY() self.grid.changeStageStruckAt(x, y) if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: status = 1 #End event loop screen.fill((0, 0, 0)) self.grid.drawScreen(screen) pygame.display.flip() clock.tick(60)
def __init__(self, _rules=None): settings = settingsManager.getSetting().setting self.rules = _rules self.height = settings['windowHeight'] self.width = settings['windowWidth'] pygame.init() screen = pygame.display.get_surface() background = pygame.Surface(screen.get_size()) background = background.convert() clock = pygame.time.Clock() self.player_controls = [] self.player_panels = [] for i in range(0, 4): self.player_controls.append(settingsManager.getControls(i)) self.player_panels.append(PlayerPanel(i)) self.player_controls[i].linkObject( self.player_panels[i]) #So playerPanel will take the inputs self.player_controls[i].flushInputs() status = 0 musicManager.getMusicManager().stopMusic(100) while status == 0: music = musicManager.getMusicManager() music.doMusicEvent() if not musicManager.getMusicManager().isPlaying(): musicManager.getMusicManager().rollMusic('css') #Start event loop for bindings in self.player_controls: bindings.passInputs() for event in pygame.event.get(): for bindings in self.player_controls: k = bindings.getInputs(event) if k == 'attack': if self.checkForSelections(): sss.StageScreen(self.rules, self.getFightersFromPanels()) for panel in self.player_panels: panel.active_object = panel.wheel panel.chosen_fighter = None panel.bg_surface = None for i in range(0, 4): self.player_controls[i].linkObject( self.player_panels[i] ) #So playerPanel will take the inputs self.player_controls[i].flushInputs() if event.type == pygame.QUIT: status = -1 elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: status = 1 #End event loop screen.fill((128, 128, 128)) for panel in self.player_panels: panel.update() panel.draw(screen) pygame.display.flip() clock.tick(60)
def startBattle(self, _screen): self.screen = _screen self.debug_console = debugConsole.debugConsole(self.screen, self) # Try block to catch any and every error try: self.clock = pygame.time.Clock() self.clock_speed = 60 self.clock_time = self.rules.time * 60 self.screen.fill(self.stage.background_color) # game_objects self.current_fighters = self.players[ : ] # We have to slice this list so it passes by value instead of reference self.game_objects = [] self.game_objects.extend(self.current_fighters) self.gui_objects = [] if self.track_time: pygame.time.set_timer(pygame.USEREVENT + 2, 1000) countdown_sprite = spriteManager.TextSprite("5", "full Pack 2025", 128, [0, 0, 0]) countdown_sprite.rect.center = self.screen.get_rect().center self.count_alpha = 0 countdown_sprite.alpha(self.count_alpha) self.gui_objects.append(countdown_sprite) self.clock_sprite = spriteManager.TextSprite("8:00", "Orbitron Medium", 32, [0, 0, 0]) self.clock_sprite.rect.topright = self.screen.get_rect().topright self.clock_sprite.changeText(str(self.clock_time / 60) + ":" + str(self.clock_time % 60).zfill(2)) self.gui_objects.append(self.clock_sprite) gui_offset = self.screen.get_rect().width / (len(self.players) + 1) for fighter in self.current_fighters: fighter.loadSpriteLibrary() fighter.rect.midbottom = self.stage.spawn_locations[fighter.player_num] fighter.sprite.updatePosition(fighter.rect) fighter.ecb.normalize() fighter.ecb.store() fighter.game_state = self.stage fighter.players = self.players self.stage.follows.append(fighter.rect) log = DataLog() self.data_logs.append(log) fighter.data_log = log if self.track_stocks: fighter.stocks = self.rules.stocks percent_sprite = HealthTracker(fighter) percent_sprite.rect.bottom = self.screen.get_rect().bottom percent_sprite.rect.centerx = gui_offset gui_offset += self.screen.get_rect().width / (len(self.players) + 1) self.gui_objects.append(percent_sprite) center_stage_rect = pygame.rect.Rect((0, 0), (16, 16)) center_stage_rect.center = self.stage.size.center self.stage.follows.append(center_stage_rect) self.stage.initializeCamera() self.debug_mode = False """ ExitStatus breaks us out of the loop. The battle loop can end in many ways, which is reflected here. In general, ExitStatus positive means that the game was supposed to end, while a negative value indicates an error. ExitStatus == 1: Battle ended early by submission. Declare the other players winners, show victory screen. ExitStatus == 2: Battle ended by time or stock. Declare winner from stocks and percentage, show victory screen. ExitStatus == 3: Battle ended early by mutual agreement. Declare draw by agreement, return to menu. ExitStatus == -1: Battle ended in error. Print stack trace, return to menu. """ self.exit_status = 0 data_log = DataLog() data_log.addSection("test", 1) data_log.setData("test", 3, (lambda x, y: x + y)) self.dirty_rects = [pygame.Rect(0, 0, self.settings["windowWidth"], self.settings["windowHeight"])] # initialises network self.network = network.Network() while self.exit_status == 0: self.gameEventLoop() except: try: import traceback traceback.print_exc() finally: self.exit_status = -1 if self.exit_status == 1: musicManager.getMusicManager().stopMusic(1000) print("SUBMISSION") elif self.exit_status == 2: musicManager.getMusicManager().stopMusic() frame_hold = 0 game_sprite = spriteManager.TextSprite("GAME!", "full Pack 2025", 128, [0, 0, 0]) game_sprite.rect.center = self.screen.get_rect().center while frame_hold < 150: game_sprite.draw(self.screen, game_sprite.rect.topleft, 1) self.clock.tick(60) pygame.display.flip() frame_hold += 1 print("GAME SET") elif self.exit_status == -1: musicManager.getMusicManager().stopMusic() frame_hold = 0 game_sprite = spriteManager.TextSprite("NO CONTEST", "full Pack 2025", 64, [0, 0, 0]) game_sprite.rect.center = self.screen.get_rect().center while frame_hold < 150: game_sprite.draw(self.screen, game_sprite.rect.topleft, 1) self.clock.tick(60) pygame.display.flip() frame_hold += 1 print("NO CONTEST") self.endBattle(self.exit_status) return self.exit_status # This'll pop us back to the character select screen.
def startBattle(self, _screen): self.screen = _screen self.debug_console = debugConsole.debugConsole(self.screen, self) # Try block to catch any and every error try: self.clock = pygame.time.Clock() self.clock_speed = 60 self.clock_time = self.rules.time * 60 self.screen.fill(self.stage.background_color) #game_objects self.current_fighters = self.players[:] #We have to slice this list so it passes by value instead of reference self.game_objects = [] self.game_objects.extend(self.current_fighters) self.gui_objects = [] if self.track_time: pygame.time.set_timer(pygame.USEREVENT + 2, 1000) countdown_sprite = spriteManager.TextSprite( '5', 'full Pack 2025', 128, [0, 0, 0]) countdown_sprite.rect.center = self.screen.get_rect().center self.count_alpha = 0 countdown_sprite.alpha(self.count_alpha) self.gui_objects.append(countdown_sprite) self.clock_sprite = spriteManager.TextSprite( '8:00', 'Orbitron Medium', 32, [0, 0, 0]) self.clock_sprite.rect.topright = self.screen.get_rect( ).topright self.clock_sprite.changeText( str(self.clock_time / 60) + ':' + str(self.clock_time % 60).zfill(2)) self.gui_objects.append(self.clock_sprite) gui_offset = self.screen.get_rect().width / (len(self.players) + 1) for fighter in self.current_fighters: fighter.loadSpriteLibrary() fighter.posx = self.stage.spawn_locations[ fighter.player_num][0] fighter.posy = self.stage.spawn_locations[ fighter.player_num][1] - 200 fighter.updatePosition() fighter.ecb.normalize() fighter.ecb.store() fighter.posy += fighter.ecb.current_ecb.rect.height / 2.0 fighter.players = self.players self.stage.follows.append(fighter.ecb.tracking_rect) log = DataLog() self.data_logs.append(log) fighter.data_log = log if self.track_stocks: fighter.stocks = self.rules.stocks percent_sprite = HealthTracker(fighter) percent_sprite.rect.bottom = self.screen.get_rect().bottom percent_sprite.rect.centerx = gui_offset gui_offset += self.screen.get_rect().width / ( len(self.players) + 1) self.gui_objects.append(percent_sprite) center_stage_rect = pygame.rect.Rect((0, 0), (16, 16)) center_stage_rect.center = self.stage.size.center self.stage.follows.append(center_stage_rect) self.stage.initializeCamera() self.debug_mode = False """ ExitStatus breaks us out of the loop. The battle loop can end in many ways, which is reflected here. In general, ExitStatus positive means that the game was supposed to end, while a negative value indicates an error. ExitStatus == 1: Battle ended early by submission. Declare the other players winners, show victory screen. ExitStatus == 2: Battle ended by time or stock. Declare winner from stocks and percentage, show victory screen. ExitStatus == 3: Battle ended early by mutual agreement. Declare draw by agreement, return to menu. ExitStatus == -1: Battle ended in error. Print stack trace, return to menu. """ self.exit_status = 0 data_log = DataLog() data_log.addSection('test', 1) data_log.setData('test', 3, (lambda x, y: x + y)) self.dirty_rects = [ pygame.Rect(0, 0, self.settings['windowWidth'], self.settings['windowHeight']) ] #initialises network self.network = network.Network() while self.exit_status == 0: self.gameEventLoop() except: try: import traceback traceback.print_exc() finally: self.exit_status = -1 for fighter in self.current_fighters: print('Fighter ' + fighter.name + ' Player ' + str(fighter.player_num)) print(fighter.input_buffer.buffer) if self.exit_status == 1: musicManager.getMusicManager().stopMusic(1000) print("SUBMISSION") elif self.exit_status == 2: musicManager.getMusicManager().stopMusic() frame_hold = 0 game_sprite = spriteManager.TextSprite('GAME!', 'full Pack 2025', 128, [0, 0, 0]) game_sprite.rect.center = self.screen.get_rect().center while frame_hold < 150: game_sprite.draw(self.screen, game_sprite.rect.topleft, 1) self.clock.tick(60) pygame.display.flip() frame_hold += 1 print("GAME SET") elif self.exit_status == -1: musicManager.getMusicManager().stopMusic() frame_hold = 0 game_sprite = spriteManager.TextSprite('NO CONTEST', 'full Pack 2025', 64, [0, 0, 0]) game_sprite.rect.center = self.screen.get_rect().center while frame_hold < 150: game_sprite.draw(self.screen, game_sprite.rect.topleft, 1) self.clock.tick(60) pygame.display.flip() frame_hold += 1 print("NO CONTEST") self.endBattle(self.exit_status) return self.exit_status # This'll pop us back to the character select screen.
def __init__(self,_rules,_characters): settings = settingsManager.getSetting().setting self.rules = _rules self.fighters = _characters self.stages = [] self.getStages() self.grid = StageGrid(self.stages) self.height = settings['windowHeight'] self.width = settings['windowWidth'] pygame.init() screen = pygame.display.get_surface() background = pygame.Surface(screen.get_size()) background = background.convert() clock = pygame.time.Clock() self.player_controls = [] self.player_panels = [] x = 0 y = 0 for i in range(0,4): self.player_controls.append(settingsManager.getControls(i)) status = 0 while status == 0: music = musicManager.getMusicManager() music.doMusicEvent() #Start event loop for event in pygame.event.get(): for bindings in self.player_controls: k = bindings.getInputs(event,False,False) if k == 'left': self.grid.updateSelection(-1, 0) elif k == 'right': self.grid.updateSelection(1, 0) elif k == 'up': self.grid.updateSelection(0, -1) elif k == 'down': self.grid.updateSelection(0, 1) elif k == 'attack': if not self.grid.isStageStruckAt(self.grid.getXY()[0],self.grid.getXY()[1]): #choose if self.grid.getSelectedStage() == 'random': stage = self.grid.getRandomStage() else: stage = self.grid.getSelectedStage() musicManager.getMusicManager().stopMusic(500) #This will wait until the music fades out for cool effect while musicManager.getMusicManager().isPlaying(): pass music_list = stage.getMusicList() musicManager.getMusicManager().createMusicSet('stage', music_list) musicManager.getMusicManager().rollMusic('stage') bindings.flushInputs() current_battle = battle.Battle(self.rules,self.fighters,stage.getStage()) current_battle.startBattle(screen) status = 1 #do something with battle result elif k == 'jump': x,y = self.grid.getXY() self.grid.changeStageStruckAt(x,y) if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: status = 1 #End event loop screen.fill((0,0,0)) self.grid.drawScreen(screen) pygame.display.flip() clock.tick(60)