def update(self): self.delta_time = pygame.time.get_ticks() - self.last_frame_ticks self.last_frame_ticks = pygame.time.get_ticks() self.spawn_timer -= self.delta_time if self.spawn_timer <= 0: self.spawn_timer = 10000 if len(self.fruits) == 0: fruit = Fruit(self.game_master) fruit.rect.center = (self.fruit_spawn_position_x, self.fruit_spawn_position_y) self.fruits.add(fruit) for fruit in self.fruits: fruit.update()
class Game: BLACK = (0, 0, 0) def __init__(self): pygame.init() self.screen = pygame.display.set_mode((716, 793 + 60)) pygame.display.set_caption("Pacman Portal") self.bricks = Group() self.shields = Group() self.powerpills = Group() self.qpills = Group() self.maze = Maze(self.screen, self.bricks, self.shields, self.powerpills, self.qpills, brickfile='square', mazefile='images/pacmanportalmaze.txt', shieldfile='shield', powerpill='powerpill') self.increase = False self.scoreboard = Scorebord(self.screen, self) self.pacman = Pacman(self.screen, self.scoreboard, self) self.play_button = Button(self.screen, "PLAY GAME", 80 / 100) self.score_button = Button(self.screen, "HIGH SCORES", 90 / 100) self.menu = Menu() self.audio = Audio() self.fruit = Fruit(self.screen) self.blinky = Blinky(self.screen, self.pacman, self.scoreboard) self.inky = Inky(self.screen, self.pacman, self.scoreboard) self.pinky = Pinky(self.screen, self.pacman, self.scoreboard) self.clyde = Clyde(self.screen, self.pacman, self.scoreboard) self.oportal = Portal('o', self.pacman) self.bportal = Portal('b', self.pacman) self.active = False self.pause = False def __str__(self): return 'Game(Pacman Portal), maze=' + str(self.maze) + ')' def play(self): while True: pygame.time.Clock().tick(1800) func.check_events(self.pacman, self.score_button, self.menu, self.play_button, self, self.bportal, self.oportal, self.screen, self.maze, self.audio) self.update_screen() if self.active: func.check_collisions(self.pacman, self.bricks, self.shields, self.powerpills, self.scoreboard, self.blinky, self.pinky, self.inky, self.clyde, self.qpills, self.fruit, self.audio) self.pacman.update(self.oportal, self.bportal, self.audio) if not self.pause: self.fruit.update() self.blinky.update(self.oportal, self.bportal) self.inky.update(self.oportal, self.bportal) self.pinky.update(self.oportal, self.bportal) self.clyde.update(self.oportal, self.bportal) self.scoreboard.update_score(self) if self.increase: self.pacman.reset() self.inky.reset() self.clyde.reset() self.pinky.reset() self.fruit.reset() self.blinky.reset() self.maze.build() self.increase = False if self.scoreboard.lives == 0: self.active = False def update_screen(self): self.screen.fill(Game.BLACK) if self.active: self.maze.blitme(self.screen) self.scoreboard.show_score() self.pacman.blitme() self.blinky.blitme() self.inky.blitme() self.pinky.blitme() self.clyde.blitme() self.oportal.blitme(self.screen) self.bportal.blitme(self.screen) self.fruit.blitme() elif not self.menu.show_scores: self.menu.main(self.play_button, self.score_button, self.screen) else: self.menu.scores(self.score_button, self.screen) pygame.display.flip()
class GameControl2(object): def __init__(self): pygame.mixer.init() pygame.init() self.screen = pygame.display.set_mode(screen_size, 0, 32) self.background = None #self.Fill_Back() pygame.display.set_caption('Pacman Remake') pygame.display.set_icon(icon) self.clock = pygame.time.Clock() pygame.mixer.music.load('Pac-man theme 1.mp3') #pygame.mixer.music.set_volume(0.25) pygame.mixer.music.play(-1, 0.0) self.pellet_count = 0 self.fruit = None self.text = Group_Text() self.count_time = 0 self.time = 0 self.besttime = 0 self.pause = Pause(True) self.level = Level() self.end_game = False self.chase_music = pygame.mixer.Sound("chase_theme_2.wav") self.switch_music = False self.switch_time = 0 self.quit = False #self.pac = pygame.transform.scale(pacr, (20, 22)) #self.clock.tick(30) #def Fill_Back(self): # self.background = pygame.surface.Surface(screen_size).convert() # self.background.fill(black) def eat_pellets(self): pellet = self.pacman.eatPellets(self.pellets.pelletList) if (pellet): self.pellet_count += 1 if (self.pellet_count == 50 or self.pellet_count == 140) and self.fruit is None: self.fruit = Fruit(self.Nodes) self.pellets.pelletList.remove(pellet) if (len(self.pellets.pelletList) == 0): #if (self.pellet_count == 10): #debug mode (check next lvl immediately) self.ghosts.hide() self.pacman.visible = False self.pacman.lives = 0 self.pause.start(3, "dead") if pellet.name == "powerpellet": self.ghosts.reset_points() self.ghosts.fright() self.chase_music.stop() self.chase_music.play() pygame.mixer.music.pause() self.switch_music = True self.switch_time = 0 def eat_ghost(self): ghost = self.pacman.Ghosteat(self.ghosts) if ghost is not None: if ghost.mode[ghost.modeCount].name == "FRIGHT": self.switch_time -= 1 self.text.Create_Temptxt(ghost.points, ghost.location.x - 10, ghost.location.y) self.ghosts.up_points() ghost.spawnMode(speed=2) self.pause.start(1) self.pacman.visible = False ghost.visible = False elif ghost.mode[ghost.modeCount].name != "SPAWN": self.pacman.lives -= 1 self.ghosts.hide() self.pause.start(3, "dead") def start_game(self): #pass self.level.current_lvl = 0 maze = self.level.new_lvl() self.Nodes = Group_Nodes(maze[0]) self.pellets = PelletGroups(maze[1]) self.pacman = Pacman(self.Nodes) self.ghosts = Group_Ghosts(self.Nodes) self.pellet_count = 0 self.fruit = None self.pause.force(True) self.pause.pauseType = None self.end_game = False self.text.Reset_Color(self.besttime) self.time = 0 self.count_time = 0 self.text.Ready() def next_lvl(self): self.level.current_lvl += 1 maze = self.level.new_lvl() self.Nodes = Group_Nodes(maze[0]) self.pellets = PelletGroups(maze[1]) self.pacman.initial_location() self.ghosts = Group_Ghosts(self.Nodes) self.pellet_count = 0 self.fruit = None self.pause.force(True) self.screen.fill(black) pygame.display.update() time.sleep(0.8) self.text.Ready() def restart_lvl(self): self.pacman.initial_location() self.ghosts = Group_Ghosts(self.Nodes) self.fruit = None self.pause.force(True) self.text.Ready() def Time_Check(self, t): self.count_time += t if (int(self.count_time) - self.time == 1): self.time = int(self.count_time) def update(self): t = self.clock.tick(60) / 1000 if self.end_game == False: if self.switch_music == True: self.switch_time += t if self.switch_time >= 7: pygame.mixer.music.unpause() self.switch_time = 0 self.switch_music = False #self.pacman.update() if self.pause.check_pause == False: self.Time_Check(t) if self.fruit is not None: self.fruit.update(t) self.pacman.update(t) self.ghosts.update(t, self.pacman) if self.pause.pauseType == "finish": self.clear_lvl() elif self.pause.pauseType == "dead": self.resolve_restart_lvl() self.eat_pellets() self.ghosts.check_release(self.pellet_count) self.check_fruit() self.eat_ghost() self.pause.update(t) self.pellets.update(t) self.text.update(t) self.checkEvents() self.text.Update_Time(self.time) if self.time > self.besttime: self.besttime = self.time self.text.Update_Besttime(self.besttime) self.redraw(t) def resolve_clear_lvl(self): self.level.next_lvl() self.pause.pauseType = None def resolve_restart_lvl(self): if self.pacman.lives == 0: self.end_game = True self.pacman.visible = False self.text.GameOver() else: self.restart_lvl() self.pause.pauseType = None def check_fruit(self): if self.fruit is not None: if self.pacman.eatFruit(self.fruit) is not None: self.text.Create_Temptxt(self.fruit.points, self.fruit.location.x - 10, self.fruit.location.y) self.fruit = None elif self.fruit.disappear == True: self.fruit = None def checkEvents(self): for event in pygame.event.get(): if event.type == QUIT: pygame.quit() exit() elif event.type == KEYDOWN: if event.key == K_SPACE: if self.end_game == True: self.start_game() else: self.pause.player() if self.pause.check_pause == True: self.text.Pause() else: self.text.Hide_All() elif event.key == K_ESCAPE: self.quit = True #elif event.type == KEYUP: # self.pacman.pressed = False def redraw(self, t): self.screen.fill(black) #for i in range(game_rows): # for j in range(game_cols): # pygame.draw.rect(self.screen, blue,(Tile_Width *(j+0.8) , Tile_Height * (i+0.8), 9, 9)) self.Nodes.refresh(self.screen) self.pellets.draw(self.screen) if self.fruit is not None: self.fruit.draw(self.screen) self.pacman.draw(self.screen) self.pacman.draw_lives(self.screen) self.ghosts.draw(self.screen, t) self.text.draw(self.screen) pygame.display.update()