def edit_new_clicked(self, widget, data=None): self.cue.set_editing(0) newcue = cue.Cue('', update_refs=0) newcue.editor = self self.set_cue(newcue) gdk.threads_leave() self.update_display() gdk.threads_enter()
def edit_revert_clicked(self, widget, data=None): if lb.cue.has_key(self.cue.name): self.set_cue(lb.cue[self.cue.name].copy()) else: self.cue.set_editing(0) newcue = cue.Cue('', update_refs=0) newcue.editor = self self.set_cue(newcue) gdk.threads_leave() self.update_display() gdk.threads_enter()
def edit_new_child_clicked(self, widget, data=None): self.cue.set_editing(0) newcue = cue.Cue('', update_refs=0) newcue.parent = [ [self.cue.name, 100.0], ] newcue.editor = self newcue.validate() self.set_cue(newcue) gdk.threads_leave() self.update_display() gdk.threads_enter()
def start_pool_mlp(self, ball_pos, other_ball_pos, angle, power): #print("starting pool mlp run") self.reset_state() self.ball_pos = ball_pos config.white_ball_initial_pos = ball_pos self.angle = angle self.power = power self.generate_table() self.set_pool_balls(other_ball_pos) #records the initial positions of all the balls for ball in self.balls: if ball.number == 0: pass else: config.initial_pos[ball.number] = ball.ball.pos config.initial_pos[0] = ball_pos self.cue = cue.Cue(self.white_ball) self.all_sprites.append(self.cue) self.make_move()
def start_pool(self): self.reset_state() self.generate_table() self.set_pool_balls() self.cue = cue.Cue(self.white_ball) self.all_sprites.add(self.cue)
def run_game(game_display, game_clock): game_table = pool_table.PoolTable(game_display.get_width(), game_display.get_height()) game_cue = cue.Cue() # Spawn balls. b1 = ball.Ball(game_table, 800, 400, "yellow") b2 = ball.Ball(game_table, 775, 360, "red") b3 = ball.Ball(game_table, 825, 360, "forestgreen") b4 = ball.Ball(game_table, 800, 320, "black") b5 = ball.Ball(game_table, 750, 320, "purple") b6 = ball.Ball(game_table, 850, 320, "orangered") b7 = ball.Ball(game_table, 720, 280, "forestgreen") b8 = ball.Ball(game_table, 775, 280, "red") b9 = ball.Ball(game_table, 825, 280, "darkorange") b10 = ball.Ball(game_table, 880, 280, "slateblue") b11 = ball.Ball(game_table, 695, 240, "chocolate") b12 = ball.Ball(game_table, 745, 240, "darkslateblue") b13 = ball.Ball(game_table, 800, 240, "gold") b14 = ball.Ball(game_table, 855, 240, "yellow") b15 = ball.Ball(game_table, 905, 240, "mediumblue") white = ball.Ball(game_table, 800, 600, "white") sprite_group = pygame.sprite.Group() sprite_group.add(b1) sprite_group.add(b2) sprite_group.add(b3) sprite_group.add(b4) sprite_group.add(b5) sprite_group.add(b6) sprite_group.add(b7) sprite_group.add(b8) sprite_group.add(b9) sprite_group.add(b10) sprite_group.add(b11) sprite_group.add(b12) sprite_group.add(b13) sprite_group.add(b14) sprite_group.add(b15) sprite_group.add(white) while True: delta_time = game_clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() return False if not sprite_group: return True # Update game. sprite_group.update(delta_time) game_table.update(sprite_group) game_cue.update(sprite_group) # Draw game. game_display.fill("GRAY") game_table.draw(game_display) game_cue.draw(game_display) """ Checks collisions between balls, maintains a dict during this update, so the collision between ball a and b only happens once, and the collision between ball b and a is not handled separately. """ collided = dict() for a in sprite_group: for b in sprite_group: if a != b and ball.overlaps(a, b) and b not in collided.get( a, []): collided[b] = collided.get(b, []) + [a] ball.collision(a, b) for b in sprite_group: b.draw_self(game_display) pygame.display.update()
def start_pool(self): #initiates the break load self.reset_state() self.generate_table() self.set_pool_balls() self.cue = cue.Cue(self.white_ball) self.all_sprites.add(self.cue)