示例#1
0
    def load(self):
        self.boundary = Boundary(self.screen, 0, 0)

        snake_position_x, snake_position_y = self.random_position()
        self.snake = Snake(self.screen, snake_position_x, snake_position_y)

        apple_position_x, apple_position_y = self.random_position()
        self.apple = Apple(self.screen, apple_position_x, apple_position_y)
        self.collision = Collision(self.boundary.get_boundaries())
示例#2
0
class ExperimentalScene(Scene):
    def __init__(self, screen, id=0):
        super().__init__(screen, id)

    def load(self):
        self.boundary = Boundary(self.screen, 0, 0)

        snake_position_x, snake_position_y = self.random_position()
        self.snake = Snake(self.screen, snake_position_x, snake_position_y)

        apple_position_x, apple_position_y = self.random_position()
        self.apple = Apple(self.screen, apple_position_x, apple_position_y)
        self.collision = Collision(self.boundary.get_boundaries())

    def random_position(self):
        x = random.randint(21, 379)
        y = random.randint(21, 379)
        return x, y

    def draw(self):
        self.boundary.draw()
        self.apple.draw()
        self.snake.draw_snake()

    def limit_movements(self):
        is_collider, object_collider = self.collision.check_collision(
            self.snake)
        if object_collider == self.boundary.horizontal_bar_left.get_rectangule(
        ):
            self.snake.update(25, 0, 25, -25)
        elif object_collider == self.boundary.horizontal_bar_right.get_rectangule(
        ):
            self.snake.update(0, -25, 25, -25)
        elif object_collider == self.boundary.vertical_bar_botton.get_rectangule(
        ):
            self.snake.update(25, -25, 0, -25)
        elif object_collider == self.boundary.vertical_bar_top.get_rectangule(
        ):
            self.snake.update(25, -25, 25, 0)
        else:
            self.snake.update(25, -25, 25, -25)

    def eat_apple(self):
        is_collider, object_collider = self.collision.check_collision(
            self.snake)
        if self.collision.object_colision(self.snake, self.apple):
            del self.apple
            new_x, new_y = self.random_position()
            self.apple = Apple(self.screen, new_x, new_y)
            self.snake.grow_body(self.snake.get_position()[0],
                                 self.snake.get_position()[1])

    def update(self):
        self.limit_movements()
        self.eat_apple()
示例#3
0
    def __init__(self, screen, screen_x, info_x, rocket, world):
        self.screen = screen
        self.info_x = info_x
        self.rocket = rocket
        self.world = world

        self.factory = NumberFactory()
        self.basic_unit = 25

        #Setup boundary
        self.info_width = screen_x - self.info_x
        self.boundary = Boundary(self.info_width, 0, 3, screen.get_height(),
                                 screen)
示例#4
0
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.ui = Ui_BouncingBall() 
        self.ui.setupUi(self)
        self.setWindowTitle( "Bouncing Balls" )
        self.boundary = Boundary(self.ui.bouncingFrame.frameGeometry( ))
        
        self.ui.pressure_timer = QtCore.QTimer( )
        self.ui.pressure_timer.timeout.connect(self.pressure_measure)
        self.ui.pressure_timer.start(PRESSURE_TIMER)

        self.ui.pauseButton.clicked.connect(self.cmd_pauseButton)
        self.ui.resetButton.clicked.connect(self.cmd_resetButton)
        
        self.ui.resetButton.clicked.connect(self.cmd_resetButton)

        self.ui.globalSpeedSlider.setMinimum(GLOBAL_SPEED_RANGE[0])
        self.ui.globalSpeedSlider.setMaximum(GLOBAL_SPEED_RANGE[1])
        self.connect(self.ui.globalSpeedSlider, QtCore.SIGNAL('valueChanged(int)'), self.change_global_speed)        
        self.connect(self.ui.nbSlider, QtCore.SIGNAL('valueChanged(int)'), self.nb_slider_change)

        self.ui.SoundBox.stateChanged.connect(self.cmd_setSoundBox)
        self.ui.backgroundSoundBox.stateChanged.connect(self.cmd_setBackgroundSoundBox)
        self.ui.allowCollisionBox.stateChanged.connect(self.cmd_setCollisionBox)

        self.ui.backgroundSoundBox.hide( )

        self.setValueSignal = QtCore.pyqtSignal(int)            
        #self.setValueSignal.connect(self.ui.collisionNumber.display)      
        self.connect(self.ui.collisionNumber, SIGNAL('setValueSignal(int)'), self.ui.collisionNumber.display)
              
        self.ui.collisionNumber.display(str(0))
        
        self.backgroundSound = SoundCell("background/Autumn_Winds_preview_whitenoisemp3s-com.mp3")
        self.sound_status = False
      
        self.spriteList = [];
        self.set_nb_ball(INITIAL_NB_BALL);

        self.nb_wall_hit = 0;        
        self.total_nb_collision = 0
        self.update_balls = True
        self.allow_collision = False
        
        self.animation_thread  =  AnimationThread()
        self.connect( self.animation_thread, SIGNAL( "window_update_request" ), self.process_window_update_request )
        #  After the following method call, the program execution
        #  system will automatically call the run() method of the
        #  AnimationThread class. The run() method is executed
        #  in parallel with "this" thread.
        self.animation_thread.start()
示例#5
0
    def __init__(self, name):
        Component.__init__(self, name, facility="exchanger")

        self.sink = None
        self.source = None

        self.mesh = None
        self.rank = None
        self.communicator = None

        from Boundary import Boundary
        self.boundary = Boundary()

        import journal
        self._info = journal.debug("exchanger")
        return
示例#6
0
    def start_battle(self, clock):
        pygame.display.set_caption("Fight!!")

        # ENTITIES
        # Background
        background = pygame.Surface(self.screen.get_size())
        background.fill((0, 0, 0))
        self.screen.blit(background, (0, 0))
        # Sprites
        top_widget_size = (self.screen.get_size()[0],
                           round(self.screen.get_size()[1] / 10))
        top_widget = Boundary((self.screen.get_size()[0] / 2,
                               round(self.screen.get_size()[1] / 20)),
                              color=(255, 255, 0),
                              size=top_widget_size)
        # Grids
        grid_sprites, safe_grid, grid_position = self.make_grid(
            (0, round(self.screen.get_size()[1] / 10)))
        curr_map = Map(grid_position)
        obsticles = curr_map.make_map(OBSTACLE_GRID_TILE)
        potential_box = curr_map.get_box_position()
        obsticles = pygame.sprite.Group(obsticles)

        # Boundary
        top_boundary = Boundary((600, 69), (255, 255, 255), (1200, 20))
        left_boundary = Boundary((-4, 350), (255, 255, 255), (20, 700))
        right_boundary = Boundary((1204, 350), (255, 255, 255), (20, 700))
        bottom_boundary = Boundary((600, 701), (255, 255, 255), (1200, 20))
        top_boundary.make_invisible()
        left_boundary.make_invisible()
        right_boundary.make_invisible()
        bottom_boundary.make_invisible()
        obsticles.add(top_boundary, left_boundary, right_boundary,
                      bottom_boundary)

        # Player
        player_1 = Player(grid_position[7][32])
        player_2 = Player(grid_position[7][0])
        player_1_attacks = pygame.sprite.Group()
        player_2_attacks = pygame.sprite.Group()

        # Player score zone
        p1_score_zone = Boundary((0, 0), (0, 0, 0), (72, 144))
        p1_score_zone.rect.topleft = (grid_position[6][0][0] - 18,
                                      grid_position[6][0][1] - 18)
        p1_score_zone.make_invisible()
        p2_score_zone = Boundary((0, 0), (0, 0, 0), (72, 144))
        p2_score_zone.rect.topleft = (grid_position[6][31][0] - 18,
                                      grid_position[6][31][1] - 18)
        p2_score_zone.make_invisible()
        score_zone = [p1_score_zone, p2_score_zone]

        # Zombies
        zombie_group = pygame.sprite.Group()
        zombie_group.add(Zombie(player_1, player_2, (500, -5), safe_grid))
        zombie_group.add(Zombie(player_1, player_2, (700, -5), safe_grid))
        zombie_group.add(Zombie(player_1, player_2, (600, 350), safe_grid))
        zombie_group.add(Zombie(player_1, player_2, (500, 705), safe_grid))
        zombie_group.add(Zombie(player_1, player_2, (700, 705), safe_grid))

        # HP Bar
        player_2_bar = StatBar((200, 35), (0, 255, 0), (300, 25), MAX_HP)
        player_1_bar = StatBar((1000, 35), (0, 255, 0), (300, 25), MAX_HP)
        player_1_bar.set_reversed_direction()
        bars = [
            player_2_bar.get_full_bar((255, 0, 0)),
            player_1_bar.get_full_bar((255, 0, 0))
        ]

        # Box

        # Item Box
        box_sprites = pygame.sprite.Group()

        # Goals
        flag = Flag((600, 350))
        goal = CaptureFlag([player_1, player_2], score_zone, flag, num_round=3)
        # Label color
        p1_label_color = (0, 0, 255)
        p2_label_color = (255, 0, 0)
        # Flag
        flag_p2 = Label(44, (400, 35))
        flag_p2.set_color(p2_label_color)
        flag_p1 = Label(44, (780, 35))
        flag_p1.set_color(p1_label_color)

        # timer
        timer = Timer(30, (560, 35), 4, 20, FRAME_RATE)
        # Labels
        p2_label = Label(20, (20, 35))
        p2_label.set_color(p2_label_color)
        p2_label.set_msg("P2  ")
        p1_label = Label(20, (1160, 35))
        p1_label.set_color(p1_label_color)
        p1_label.set_msg("P1")

        p1_head = Label(15, (player_1.rect.centerx - 8, player_1.rect.top - 5))
        p1_head.set_color(p1_label_color)
        p1_head.set_msg("P1")
        p2_head = Label(15, (player_2.rect.centerx - 8, player_2.rect.top - 5))
        p2_head.set_color(p2_label_color)
        p2_head.set_msg("P2")

        p1_weapon = Label(20, (990, 56))
        p1_weapon.set_msg("sada")
        p2_weapon = Label(20, (170, 56))
        p2_weapon.set_msg("sada")

        labels = [
            p1_label, p2_label, p1_head, p2_head, p1_weapon, p2_weapon,
            flag_p1, flag_p2
        ]

        keep_going = True
        box_flag = True
        all_sprites = pygame.sprite.OrderedUpdates(grid_sprites, obsticles,
                                                   flag, player_1, player_2,
                                                   zombie_group, top_widget,
                                                   timer, labels, bars,
                                                   player_1_bar, player_2_bar)
        # LOOP
        while keep_going:
            if goal.screen_pause:
                pygame.time.wait(1500)
                goal.screen_pause = False
            # TIME
            clock.tick(FRAME_RATE)

            if timer.get_real_second() % 5 == 0:
                # Box
                if box_flag:
                    box_flag = False
                    box = self.generate_box(potential_box)
                    box_sprites.add(box)
                    all_sprites.add(box)
            else:
                box_flag = True

            if timer.get_real_second() % 20 == 0 and len(zombie_group) <= 1:
                zombie_group.add(
                    Zombie(player_1, player_2, (500, -5), safe_grid))
                zombie_group.add(
                    Zombie(player_1, player_2, (700, -5), safe_grid))
                zombie_group.add(
                    Zombie(player_1, player_2, (600, 350), safe_grid))
                zombie_group.add(
                    Zombie(player_1, player_2, (500, 705), safe_grid))
                zombie_group.add(
                    Zombie(player_1, player_2, (700, 705), safe_grid))
                all_sprites.add(zombie_group)

            for z in zombie_group:
                z.move(zombie_group)

            # Check for Goal
            if goal.check_for_win():
                keep_going = False
            if timer.time_up():
                keep_going = False

            flag_p1.set_msg(str(goal.score[0]))
            flag_p2.set_msg(str(goal.score[1]))
            # EVENT HANDLING
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return 3
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_p:
                        keep_going = False

            #Player 1 event handle
            if pygame.key.get_pressed()[pygame.K_RIGHT]:
                temp_block = TempBlock(player_1.rect.center,
                                       player_1.rect.size)
                temp_block.rect.x += player_1.velocity
                if pygame.sprite.spritecollide(temp_block, obsticles, False):
                    # Check the previous directoin
                    if player_1.direction == 1 or player_1.prev_direction == 1:
                        i = 1
                        # Check if the we continue with previous direction for more frames will be able to pass through
                        while i < player_1.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.y += 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_1.go_down()
                                break
                    elif player_1.direction == 3 or player_1.prev_direction == 3:
                        i = 1
                        while i < player_1.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.y -= 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_1.go_up()
                                break
                    else:
                        pass
                else:
                    player_1.go_right()

            elif pygame.key.get_pressed()[pygame.K_DOWN]:
                temp_block = TempBlock(player_1.rect.center,
                                       player_1.rect.size)
                temp_block.rect.y += player_1.velocity
                if pygame.sprite.spritecollide(temp_block, obsticles, False):
                    if player_1.direction == 0 or player_1.prev_direction == 0:
                        i = 1
                        while i < player_1.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.x += 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_1.go_right()
                                break
                    elif player_1.direction == 2 or player_1.prev_direction == 2:
                        i = 1
                        while i < player_1.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.x -= 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_1.go_left()
                                break
                    else:
                        pass
                else:
                    player_1.go_down()

            elif pygame.key.get_pressed()[pygame.K_UP]:
                temp_block = TempBlock(player_1.rect.center,
                                       player_1.rect.size)
                temp_block.rect.y -= player_1.velocity
                if pygame.sprite.spritecollide(temp_block, obsticles, False):
                    if player_1.direction == 0 or player_1.prev_direction == 0:
                        i = 1
                        while i < player_1.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.x += 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_1.go_right()
                                break
                    elif player_1.direction == 2 or player_1.prev_direction == 2:
                        i = 1
                        while i < player_1.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.x -= 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_1.go_left()
                                break
                    else:
                        pass
                else:
                    player_1.go_up()

            elif pygame.key.get_pressed()[pygame.K_LEFT]:
                temp_block = TempBlock(player_1.rect.center,
                                       player_1.rect.size)
                temp_block.rect.x -= player_1.velocity
                if pygame.sprite.spritecollide(temp_block, obsticles, False):
                    if player_1.direction == 1 or player_1.prev_direction == 1:
                        i = 1
                        while i < player_1.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.y += 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_1.go_down()
                                break
                    elif player_1.direction == 3 or player_1.prev_direction == 3:
                        i = 1
                        while i < player_1.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.y -= 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_1.go_up()
                                break
                    else:
                        pass
                else:
                    player_1.go_left()

            if pygame.key.get_pressed()[pygame.K_RCTRL]:
                lst = player_1.attack()
                player_1_attacks.add(lst)
                all_sprites.add(lst)
            # Player 2 event handle
            if pygame.key.get_pressed()[pygame.K_d]:
                temp_block = TempBlock(player_2.rect.center,
                                       player_2.rect.size)
                temp_block.rect.x += player_2.velocity
                if pygame.sprite.spritecollide(temp_block, obsticles, False):
                    # Check the previous directoin
                    if player_2.direction == 1 or player_2.prev_direction == 1:
                        i = 1
                        # Check if the we continue with previous direction for more frames will be able to pass through
                        while i < player_2.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.y += 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_2.go_down()
                                break
                    elif player_2.direction == 3 or player_2.prev_direction == 3:
                        i = 1
                        while i < player_2.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.y -= 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_2.go_up()
                                break
                    else:
                        pass
                else:
                    player_2.go_right()

            elif pygame.key.get_pressed()[pygame.K_s]:
                temp_block = TempBlock(player_2.rect.center,
                                       player_2.rect.size)
                temp_block.rect.y += player_2.velocity
                if pygame.sprite.spritecollide(temp_block, obsticles, False):
                    if player_2.direction == 0 or player_2.prev_direction == 0:
                        i = 1
                        while i < player_2.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.x += 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_2.go_right()
                                break
                    elif player_2.direction == 2 or player_2.prev_direction == 2:
                        i = 1
                        while i < player_2.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.x -= 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_2.go_left()
                                break
                    else:
                        pass
                else:
                    player_2.go_down()

            elif pygame.key.get_pressed()[pygame.K_w]:
                temp_block = TempBlock(player_2.rect.center,
                                       player_2.rect.size)
                temp_block.rect.y -= player_2.velocity
                if pygame.sprite.spritecollide(temp_block, obsticles, False):
                    if player_2.direction == 0 or player_2.prev_direction == 0:
                        i = 1
                        while i < player_2.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.x += 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_2.go_right()
                                break
                    elif player_2.direction == 2 or player_2.prev_direction == 2:
                        i = 1
                        while i < player_2.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.x -= 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_2.go_left()
                                break
                    else:
                        pass
                else:
                    player_2.go_up()

            elif pygame.key.get_pressed()[pygame.K_a]:
                temp_block = TempBlock(player_2.rect.center,
                                       player_2.rect.size)
                temp_block.rect.x -= player_2.velocity
                if pygame.sprite.spritecollide(temp_block, obsticles, False):
                    if player_2.direction == 1 or player_2.prev_direction == 1:
                        i = 1
                        while i < player_2.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.y += 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_2.go_down()
                                break
                    elif player_2.direction == 3 or player_2.prev_direction == 3:
                        i = 1
                        while i < player_2.velocity * SMOOTH_TURNING_FRAME_DELAY:
                            i += 1
                            temp_block.rect.y -= 1
                            if not pygame.sprite.spritecollide(
                                    temp_block, obsticles, False):
                                player_2.go_up()
                                break
                    else:
                        pass
                else:
                    player_2.go_left()

            if pygame.key.get_pressed()[pygame.K_SPACE]:
                lst2 = player_2.attack()
                player_2_attacks.add(lst2)
                all_sprites.add(lst2)

            # Collisions handleling
            for box1 in pygame.sprite.spritecollide(player_1, box_sprites,
                                                    False):
                temp_label = TempLabel(
                    15, (player_1.rect.centerx - 8, player_1.rect.top - 5), 3,
                    FRAME_RATE)
                temp_label.set_msg(box1.__str__())
                all_sprites.add(temp_label)
                box1.collide(player_1)
            for box2 in pygame.sprite.spritecollide(player_2, box_sprites,
                                                    False):
                box2.collide(player_2)
                temp_label = TempLabel(
                    15, (player_2.rect.centerx - 8, player_2.rect.top - 5), 3,
                    FRAME_RATE)
                temp_label.set_msg(box2.__str__())
                all_sprites.add(temp_label)

            # Zombie hit player
            for zombie in pygame.sprite.spritecollide(player_1, zombie_group,
                                                      False):
                zombie.collide(player_1)
            for zombie in pygame.sprite.spritecollide(player_2, zombie_group,
                                                      False):
                zombie.collide(player_2)

            # Players hit zombies
            for zombie in zombie_group:
                for bullet in pygame.sprite.spritecollide(
                        zombie, player_2_attacks, False):
                    bullet.collide(zombie)
                for bullet in pygame.sprite.spritecollide(
                        zombie, player_1_attacks, False):
                    bullet.collide(zombie)

            # bullet_hit_walls
            for wall in obsticles:
                for bullet in pygame.sprite.spritecollide(
                        wall, player_1_attacks, False):
                    bullet.end()
                for bullet in pygame.sprite.spritecollide(
                        wall, player_2_attacks, False):
                    bullet.end()
            # Player_1 attacks
            for hit in pygame.sprite.spritecollide(player_2, player_1_attacks,
                                                   False):
                hit.collide(player_2)

            # Player_2 attacks
            for hit in pygame.sprite.spritecollide(player_1, player_2_attacks,
                                                   False):
                hit.collide(player_1)

            # Player hp bar
            player_2_bar.set_curr_stat(player_2.health)
            player_1_bar.set_curr_stat(player_1.health)

            # Player head
            p1_head.set_position(
                (player_1.rect.centerx - 8, player_1.rect.top - 5))
            p2_head.set_position(
                (player_2.rect.centerx - 8, player_2.rect.top - 5))

            p1_weapon.set_msg(str(player_1.weapon))
            p2_weapon.set_msg(str(player_2.weapon))

            if player_1.is_dead():
                if flag.get_player() == player_1:
                    flag.drop()
                player_1.respawn()

            if player_2.is_dead():
                if flag.get_player() == player_2:
                    flag.drop()
                player_2.respawn()
            for zombie in zombie_group:
                if zombie.is_dead(): zombie.kill()

            all_sprites.clear(self.screen, background)
            all_sprites.update()
            all_sprites.draw(self.screen)
            pygame.display.flip()

            lst = player_1.weapon.update()
            player_1_attacks.add(lst)
            all_sprites.add(lst)

            lst = player_2.weapon.update()
            player_2_attacks.add(lst)
            all_sprites.add(lst)

        end_msg = Label(60, (500, 350))
        end_msg.set_color((255, 255, 0))
        end_msg.set_msg(goal.get_wining_msg())
        self.screen.blit(end_msg.image, end_msg)
        pygame.display.flip()
        pygame.time.wait(2000)
        return 2
示例#7
0
class InfoField():
    def __init__(self, screen, screen_x, info_x, rocket, world):
        self.screen = screen
        self.info_x = info_x
        self.rocket = rocket
        self.world = world

        self.factory = NumberFactory()
        self.basic_unit = 25

        #Setup boundary
        self.info_width = screen_x - self.info_x
        self.boundary = Boundary(self.info_width, 0, 3, screen.get_height(),
                                 screen)

    #Hp display
    def hp_display_setup(self):
        heart_size = 60

        if self.rocket.hp > 5:
            heart_image = 'max_health.png'
        else:
            heart_image = 'extra_health.png'

        heart_x = self.screen.get_width() - self.info_x / 2 - heart_size / 2
        heart_y = self.screen.get_height() / 2 - heart_size / 2

        return_list = []

        return_list.append(
            DisplayObject(heart_size, heart_size, heart_image, heart_x,
                          heart_y, self.screen))
        return_list.append(self.hp_number_display(heart_x, heart_y))

        return return_list

    def hp_number_display(self, parent_x, parent_y):
        if self.rocket.hp < 6:
            hp = str(self.rocket.hp)
            number_image = self.factory.number_picker(hp)
        else:
            number_image = 'six_max.png'

        number_width = 20
        number_height = 28
        number_x = parent_x + number_width
        number_y = parent_y + number_height / 2 + 5

        return DisplayObject(number_width, number_height, number_image,
                             number_x, number_y, self.screen)

    #Powerup display
    def powerup_display_setup(self):
        if self.rocket.piercingshot:
            powerup_width = 48
            powerup_height = 80
            powerup_image = 'piercing_shot.png'
        elif self.rocket.wideshot:
            powerup_width = 90
            powerup_height = 64
            powerup_image = 'wide_shot.png'
        elif self.rocket.rapidshot:
            powerup_width = 60
            powerup_height = 90
            powerup_image = 'rapid_shot.png'
        elif self.rocket.bombshot:
            powerup_width = 84
            powerup_height = 84
            powerup_image = 'bomb_shot.png'
        else:
            powerup_width = 56
            powerup_height = 56
            powerup_image = 'default_shot.png'

        powerup_x = self.screen.get_width(
        ) - self.info_x / 2 - powerup_width / 2
        powerup_y = self.screen.get_height(
        ) - self.screen.get_height() / 3 - powerup_height / 2

        return_list = []

        return_list.append(
            DisplayObject(powerup_width, powerup_height, powerup_image,
                          powerup_x, powerup_y, self.screen))
        return_list.append(
            self.powerup_number_display(powerup_x + powerup_width / 2,
                                        powerup_y + powerup_height / 2))

        return return_list

    def powerup_number_display(self, parent_x, parent_y):
        powerup_num = str(len(self.rocket.powerup_projectiles))

        if len(self.rocket.powerup_projectiles) < 10:
            if len(self.rocket.powerup_projectiles) <= 0:
                number_width = 28
                number_height = 20
                number_image = 'infinite.png'
            else:
                number_width = 20
                number_height = 28
                number_image = self.factory.number_picker(powerup_num)

        else:
            number_width = 45
            number_height = 28
            number_image = 'ten_max.png'

        number_x = parent_x - number_width / 2
        number_y = parent_y + number_height + self.basic_unit

        return DisplayObject(number_width, number_height, number_image,
                             number_x, number_y, self.screen)

    #Ufo display
    def ufo_display_setup(self):
        ufo_size = 60
        for ufo in self.world.enemies:
            ufo_image = ufo.chosen_image
        ufo_x = self.screen.get_width() - self.info_x / 2 - ufo_size / 2
        ufo_y = self.screen.get_height(
        ) - self.screen.get_height() * 2 / 3 - ufo_size / 2 - self.basic_unit

        return_list = []

        return_list.append(
            DisplayObject(ufo_size, ufo_size, ufo_image, ufo_x, ufo_y,
                          self.screen))
        return_list.append(
            self.ufo_number_display(ufo_x + ufo_size / 2,
                                    ufo_y + ufo_size / 2))

        return return_list

    def ufo_number_display(self, parent_x, parent_y):
        for ufo in self.world.enemies:
            ufo_hp = str(ufo.hp)

        number_width = 20
        number_height = 28

        number_image = self.factory.number_picker(ufo_hp)
        number_x = parent_x - number_width / 2
        number_y = parent_y + number_height + self.basic_unit / 2

        return DisplayObject(number_width, number_height, number_image,
                             number_x, number_y, self.screen)

    def score_display_setup(self):
        score_width = 120
        score_height = 28
        score_image = 'score.png'
        score_x = self.screen.get_width() - self.info_x / 2 - score_width / 2
        score_y = self.basic_unit

        return_list = []

        return_list.append(
            DisplayObject(score_width, score_height, score_image, score_x,
                          score_y, self.screen))
        return_list = return_list + self.score_number_display(
            score_x + score_width, score_y + score_height / 2)

        return return_list

    def score_number_display(self, parent_x, parent_y):
        score = self.world.score

        number_width = 20
        number_height = 28
        number_x = parent_x - number_width
        number_y = parent_y + number_height

        gap = 5
        return_list = []

        if len(str(score)) == 1:
            return_list.append(
                DisplayObject(number_width, number_height,
                              self.factory.number_picker(str(score)), number_x,
                              number_y, self.screen))

        if len(str(score)) == 2:
            return_list.append(
                DisplayObject(number_width, number_height,
                              self.factory.number_picker(str(score)[0]),
                              number_x - number_width - gap, number_y,
                              self.screen))
            return_list.append(
                DisplayObject(
                    number_width, number_height,
                    self.factory.number_picker(
                        str(score)[len(str(score)) - 1]), number_x, number_y,
                    self.screen))

        if len(str(score)) == 3:
            return_list.append(
                DisplayObject(number_width, number_height,
                              self.factory.number_picker(str(score)[0]),
                              number_x - number_width * 2 - gap * 2, number_y,
                              self.screen))
            return_list.append(
                DisplayObject(number_width, number_height,
                              self.factory.number_picker(str(score)[1]),
                              number_x - number_width - gap, number_y,
                              self.screen))
            return_list.append(
                DisplayObject(
                    number_width, number_height,
                    self.factory.number_picker(
                        str(score)[len(str(score)) - 1]), number_x, number_y,
                    self.screen))

        return return_list

    #Rendering
    def render(self):
        self.boundary.render()

        hp_display = self.hp_display_setup()
        for object in hp_display:
            object.render()

        powerup_display = self.powerup_display_setup()
        for object in powerup_display:
            object.render()

        if len(self.world.enemies) > 0:
            ufo_display = self.ufo_display_setup()
            for object in ufo_display:
                object.render()

        score_display = self.score_display_setup()
        for object in score_display:
            object.render()


##End
示例#8
0
    winningPlayer = myfont.render(winnerText, False, WHITE)

    while (run):
        for event in pygame.event.get():
            if (event.type == pygame.QUIT):
                pygame.quit()
                quit()

        screen.fill(BLACK)

        screen.blit(header, (350, 100))
        screen.blit(winningPlayer, (350, 300))
        pygame.display.update()


boundaryArray.append(Boundary((0, 0), (0, WINDOW_HEIGHT), BLACK))
boundaryArray.append(Boundary((0, 0), (WINDOW_WIDTH, 0), BLACK))
boundaryArray.append(
    Boundary((0, WINDOW_HEIGHT), (WINDOW_WIDTH, WINDOW_HEIGHT), BLACK))
boundaryArray.append(
    Boundary((WINDOW_WIDTH, 0), (WINDOW_WIDTH, WINDOW_HEIGHT), BLACK))
boundaryArray.append(
    Boundary((WINDOW_WIDTH / 2, 0), (WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2),
             BLACK))

playerArray.append(Player(100, 100, GREEN, 45, 1))
playerArray.append(Player(700, 100, RED, 135, 2))

game1 = Game(boundaryArray, playerArray, screen, [0, 0])

game_menu()
示例#9
0
#pygame configurations
pygame.init()
pygame.display.set_caption("2D Raymarching")
screen = pygame.display.set_mode(size)
clock = pygame.time.Clock()
fps = 60
screen_offset = 50

object_count = 10
angle = 0
objects = []

for i in range(object_count):
    obj = Boundary(randint(screen_offset, width - screen_offset),
                   randint(screen_offset, height - screen_offset),
                   randint(20, 100))
    objects.append(obj)

run = True
while run:
    clock.tick(fps)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    ray = Ray(width // 2, height // 2, 0, screen, white)
    ray.angle = angle

    screen.fill(black)
    for object in objects:
示例#10
0
class BouncingBallWindow(QtGui.QWidget):
    """
    The main window. Contains a region for the bouncing balls, and controls
    widgets.
    
    Pause Button: stop the sprite
    Reset Button: recreate the sprite list, with random sizes, speeds
    Global Speed Slider: Controls a multipler factor to all current sprite speeds.
    Nb Sprites Sliders: Number of objects in the screen
    Sound Check box: turns on/off sound
    """
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.ui = Ui_BouncingBall() 
        self.ui.setupUi(self)
        self.setWindowTitle( "Bouncing Balls" )
        self.boundary = Boundary(self.ui.bouncingFrame.frameGeometry( ))
        
        self.ui.pressure_timer = QtCore.QTimer( )
        self.ui.pressure_timer.timeout.connect(self.pressure_measure)
        self.ui.pressure_timer.start(PRESSURE_TIMER)

        self.ui.pauseButton.clicked.connect(self.cmd_pauseButton)
        self.ui.resetButton.clicked.connect(self.cmd_resetButton)
        
        self.ui.resetButton.clicked.connect(self.cmd_resetButton)

        self.ui.globalSpeedSlider.setMinimum(GLOBAL_SPEED_RANGE[0])
        self.ui.globalSpeedSlider.setMaximum(GLOBAL_SPEED_RANGE[1])
        self.connect(self.ui.globalSpeedSlider, QtCore.SIGNAL('valueChanged(int)'), self.change_global_speed)        
        self.connect(self.ui.nbSlider, QtCore.SIGNAL('valueChanged(int)'), self.nb_slider_change)

        self.ui.SoundBox.stateChanged.connect(self.cmd_setSoundBox)
        self.ui.backgroundSoundBox.stateChanged.connect(self.cmd_setBackgroundSoundBox)
        self.ui.allowCollisionBox.stateChanged.connect(self.cmd_setCollisionBox)

        self.ui.backgroundSoundBox.hide( )

        self.setValueSignal = QtCore.pyqtSignal(int)            
        #self.setValueSignal.connect(self.ui.collisionNumber.display)      
        self.connect(self.ui.collisionNumber, SIGNAL('setValueSignal(int)'), self.ui.collisionNumber.display)
              
        self.ui.collisionNumber.display(str(0))
        
        self.backgroundSound = SoundCell("background/Autumn_Winds_preview_whitenoisemp3s-com.mp3")
        self.sound_status = False
      
        self.spriteList = [];
        self.set_nb_ball(INITIAL_NB_BALL);

        self.nb_wall_hit = 0;        
        self.total_nb_collision = 0
        self.update_balls = True
        self.allow_collision = False
        
        self.animation_thread  =  AnimationThread()
        self.connect( self.animation_thread, SIGNAL( "window_update_request" ), self.process_window_update_request )
        #  After the following method call, the program execution
        #  system will automatically call the run() method of the
        #  AnimationThread class. The run() method is executed
        #  in parallel with "this" thread.
        self.animation_thread.start()
        
    def set_nb_ball(self, nb=1):
        if nb<=0:
            self.spriteList = []
        else:
            current_size = len(self.spriteList)
            delta = (nb-current_size)
            print delta
            if delta>0:
                for i in range(0, delta):
                    size = randrange(1, 20)
                    eps = 2*size
                    center = QPointF(randrange(eps, self.boundary.width()-eps), randrange(eps, self.boundary.height()-eps))
                    self.spriteList.append(RotatingBouncer(center, size, get_random_color( ),  self.boundary, self.sound_status))
            else:
                # remove the n-th last eleemnts
                self.spriteList = self.spriteList[ : current_size-abs(delta)]
                    
        # print "debug: sprite list size: nb=%d current_size=%d" %(nb, len(self.spriteList))

    def pressure_measure(self):
        current_pressure = int(100.0* (self.nb_wall_hit / (float(PRESSURE_TIMER)/1000.0)))
        self.ui.pressureBar.setValue(current_pressure)

    # changes the temperature values (val in 0...100)
    def change_global_speed(self, val):
        alpha = val/GLOBAL_SPEED_RANGE[1]
        [ sprite.set_global_speed(alpha) for sprite in self.spriteList ]

        
    # changes the number of balls
    def nb_slider_change(self, val):
        self.set_nb_ball(val);
            
    def process_window_update_request(self):
        collision = False
        nb_wall_hit_before = self.nb_wall_hit
        if self.update_balls:
            for sprite in self.spriteList:
                 hit_wall = sprite.move( )
                 self.nb_wall_hit += hit_wall
            if self.allow_collision:
                reverted = set([])
                for S1, S2 in list(combinations(self.spriteList, 2)):
                    if S1.colides(S2):
                        reverted.add(S1)
                        reverted.add(S2)
                        collision = True
                        self.total_nb_collision += 1
                [S.revert() for S in reverted]
               
        if collision and self.ui.stopBox.isChecked( ):
            self.cmd_pauseButton( )
        if collision:
            self.ui.collisionNumber.display(str(self.total_nb_collision))
           
        if self.nb_wall_hit > nb_wall_hit_before:
            self.ui.wallCollisionNumber.display(str(self.nb_wall_hit))
        
        self.update()
        

    def cmd_pauseButton(self):
        if self.update_balls:
            self.ui.pauseButton.setText("Start")
        else:
            self.ui.pauseButton.setText("Pause")
        self.update_balls = not self.update_balls

    def cmd_setSoundBox(self, i):
        if(i == 0): # sound is off
            self.sound_status = False
            [S.set_sound_status(False) for S in self.spriteList]
            self.ui.backgroundSoundBox.hide( )
            self.backgroundSound.set_sound_status(False)
        else:      # sound is on
            self.sound_status = True
            self.ui.backgroundSoundBox.show( )
            if self.ui.backgroundSoundBox.isChecked():
                self.backgroundSound.set_sound_status(True)
                self.backgroundSound.play( )
            self.backgroundSound.set_sound_status(True)
            [S.set_sound_status(True) for S in self.spriteList]

    def cmd_setBackgroundSoundBox(self, i):
        if(i == 0): # sound is off
            self.backgroundSound.stop( )
        else:      # sound is on
            if self.sound_status:
                self.backgroundSound.set_sound_status(True)
                self.backgroundSound.play( )

    def cmd_setCollisionBox(self, i):
        if(i == 0): # collision if off
            self.allow_collision = False
            self.ui.stopBox.hide( )
        else:
            self.allow_collision = True
            self.ui.stopBox.show( )

    def cmd_resetButton(self):
        nb = len(self.spriteList)
        self.set_nb_ball(0)
        self.set_nb_ball(nb)
        self.total_nb_collision = 0
        self.nb_wall_hit = 0
        self.ui.collisionNumber.display(str(self.total_nb_collision))
        self.ui.wallCollisionNumber.display(str(self.nb_wall_hit))
        #self.setValueSignal.emit(self.total_nb_collision)
        self.emit(SIGNAL("setValueSignal(val)"), self.total_nb_collision)

    def keyPressEvent(self, event):
        if  event.key() == Qt.Key_Escape:
            [ S.move() for S in self.spriteList]

    def paintEvent( self, event):
        painter = QPainter( )
        painter.begin(self)
        [S.draw(painter) for S in self.spriteList]
           
        self.boundary.draw(painter)
        painter.end( )

    def exit_this_window(self):
        self.animation_thread.stop( )
        self.close() #is this necessary???
示例#11
0
#pygame configs

pygame.init()
pygame.display.set_caption("2D raymarching")
screen = pygame.display.set_mode(size)
clock = pygame.time.Clock()
fps = 60

objects = []
object_count = 10
angle = 0
screen_offset = 50

for i in range(object_count):
    obj = Boundary(randint(screen_offset, width - screen_offset),
                   randint(screen_offset, height - screen_offset),
                   randint(10, 100))
    objects.append(obj)

run = True
while run:
    clock.tick(fps)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    ray = Ray(width // 2, height // 2, 0, screen, white)
    ray.angle = angle
    screen.fill(black)

    for obj in objects:
pygame.init()
pygame.display.set_caption("2D Raymarching")
screen = pygame.display.set_mode(size)
clock = pygame.time.Clock()
fps = 60
screen_offset = 50

Collisions = []

object_count = 10
angle = 0
objects = []

for i in range(object_count):
    obj = Boundary(randint(screen_offset, width - screen_offset),
                   randint(screen_offset, height - screen_offset),
                   randint(20, 100))
    obj.color = (0, 0, 0)
    obj.outline = 0
    objects.append(obj)

autoRotation = True

run = True
while run:
    clock.tick(fps)
    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN: