Beispiel #1
0
def startGame():
    all_sprites_list = pygame.sprite.RenderPlain()

    block_list = pygame.sprite.RenderPlain()

    monsta_list = pygame.sprite.RenderPlain()

    pacman_collide = pygame.sprite.RenderPlain()

    wall_list = setupRoomOne(all_sprites_list)

    gate = setupGate(all_sprites_list)

    p_turn = 0
    p_steps = 0

    b_turn = 0
    b_steps = 0

    i_turn = 0
    i_steps = 0

    c_turn = 0
    c_steps = 0


    # Draw the grid
    for row in range(19):
        for column in range(19):
            if (row == 7 or row == 8) and (column == 8 or column == 9 or column == 10):
                continue
            else:
                block = Block(yellow, 4, 4)

                # Set a random location for the block
                block.rect.x = (30 * column + 6) + 26
                block.rect.y = (30 * row + 6) + 26

                b_collide = pygame.sprite.spritecollide(block, wall_list, False)
                p_collide = pygame.sprite.spritecollide(block, pacman_collide, False)
                if b_collide:
                    continue
                elif p_collide:
                    continue
                else:
                    # Add the block to the list of objects
                    block_list.add(block)
                    all_sprites_list.add(block)

    bll = len(block_list)

    score = 0

    done = False

    i = 0
    Pacman = Player(w, p_h, "images/pacman_l.png")
    all_sprites_list.add(Pacman)
    pacman_collide.add(Pacman)


    Blinky = Ghost(w, b_h, "images/Blinky.png")
    monsta_list.add(Blinky)
    all_sprites_list.add(Blinky)

    Pinky = Ghost(w, m_h, "images/Pinky.png")
    monsta_list.add(Pinky)
    all_sprites_list.add(Pinky)

    Inky = Ghost(i_w, m_h, "images/Inky.png")
    monsta_list.add(Inky)
    all_sprites_list.add(Inky)

    Clyde = Ghost(c_w, m_h, "images/Clyde.png")
    monsta_list.add(Clyde)
    all_sprites_list.add(Clyde)

    while done == False:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    Pacman.changespeed(-30, 0)
                    Pacman.changeIcon("images/pacman_l.png")
                if event.key == pygame.K_RIGHT:
                    Pacman.changespeed(30, 0)
                    Pacman.changeIcon("images/pacman_R.png")
                if event.key == pygame.K_UP:
                    Pacman.changespeed(0, -30)
                    Pacman.changeIcon("images/pacman_u.png")
                if event.key == pygame.K_DOWN:
                    Pacman.changespeed(0, 30)
                    Pacman.changeIcon("images/pacman_d.png")

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT:
                    Pacman.changespeed(30, 0)
                if event.key == pygame.K_RIGHT:
                    Pacman.changespeed(-30, 0)
                if event.key == pygame.K_UP:
                    Pacman.changespeed(0, 30)
                if event.key == pygame.K_DOWN:
                    Pacman.changespeed(0, -30)


        if(  Pacman.rect.left <= 0  and Pacman.rect.top >= 460 and Pacman.rect.top <= 510 ):
            Pacman.rect.left = 590
            Pacman.rect.top = 110

        elif(  Pacman.rect.left >= 600  and Pacman.rect.top >= 100 and Pacman.rect.top <= 150 ):
            Pacman.rect.left = 15
            Pacman.rect.top = 470

        if (Pacman.rect.left <= 0 and Pacman.rect.top >= 100 and Pacman.rect.top <= 150):
            Pacman.rect.left = 590
            Pacman.rect.top = 470

        elif (Pacman.rect.left >= 600 and Pacman.rect.top >= 460 and Pacman.rect.top <= 510):
            Pacman.rect.left = 15
            Pacman.rect.top = 110

        returned = Pinky.changeRandom( False, p_turn, p_steps,Pacman.rect.left, Pacman.rect.top)
        p_turn = returned[0]
        p_steps = returned[1]
        #Pinky.changeRandom( False, p_turn, p_steps, Pacman.rect.left, Pacman.rect.top)
        Pinky.update(wall_list, False)


        returned = Blinky.changeRandom( False, b_turn, b_steps,Pacman.rect.left, Pacman.rect.top)
        b_turn = returned[0]
        b_steps = returned[1]
        #Blinky.changeRandom( False, b_turn, b_steps,Pacman.rect.left, Pacman.rect.top)
        Blinky.update(wall_list, False)

        returned = Inky.changeRandom( False, i_turn, i_steps,Pacman.rect.left, Pacman.rect.top)
        i_turn = returned[0]
        i_steps = returned[1]
        #Inky.changeRandom( False, i_turn, i_steps,Pacman.rect.left, Pacman.rect.top)
        Inky.update(wall_list, False)

        returned = Clyde.changeRandom( "clyde", c_turn, c_steps,Pacman.rect.left, Pacman.rect.top)
        c_turn = returned[0]
        c_steps = returned[1]
        #Clyde.changeRandom( "clyde", c_turn, c_steps,Pacman.rect.left, Pacman.rect.top)
        Clyde.update(wall_list, False)

        # See if the Pacman block has collided with anything.
        blocks_hit_list = pygame.sprite.spritecollide(Pacman, block_list, True)
        if len(blocks_hit_list) > 0:
            score += len(blocks_hit_list)
        Pacman.update(wall_list, gate)

        # ALL CODE TO DRAW SHOULD GO BELOW THIS COMMENT
        screen.fill(black)

        wall_list.draw(screen)
        gate.draw(screen)
        all_sprites_list.draw(screen)
        monsta_list.draw(screen)

        text = font.render("Score: " + str(score) + "/" + str(bll), True, red)
        screen.blit(text, [10, 10])

        if score == bll:
            doNext("Congratulations, you won!", 145, all_sprites_list, block_list, monsta_list, pacman_collide,
                   wall_list, gate)

        monsta_hit_list = pygame.sprite.spritecollide(Pacman, monsta_list, False)

        if monsta_hit_list:
            doNext("Game Over", 235, all_sprites_list, block_list, monsta_list, pacman_collide, wall_list, gate)

        # ALL CODE TO DRAW SHOULD GO ABOVE THIS COMMENT

        pygame.display.flip()

        clock.tick(10)