Exemple #1
0
def main():
    pygame.mixer.music.play(-1)
    clock = pygame.time.Clock()

    running = True
    # 我方飞机
    aircraft = AirCraft(bg_size)

    score = 0
    score_font = pygame.font.Font('font/font.ttf', 36)

    # 暂停游戏
    pause = False
    pause_nor_image = pygame.image.load('images/pause_nor.png').convert_alpha()
    pause_pressed_image = pygame.image.load(
        'images/pause_pressed.png').convert_alpha()
    resume_nor_image = pygame.image.load(
        'images/resume_nor.png').convert_alpha()
    resume_pressed_image = pygame.image.load(
        'images/resume_pressed.png').convert_alpha()
    pause_rect = pause_nor_image.get_rect()
    pause_rect.left, pause_rect.top = width - pause_rect.width - 10, 10
    pause_image = pause_nor_image

    # game over
    game_over_image = pygame.image.load('images/gameover.png').convert_alpha()
    game_again_image = pygame.image.load('images/again.png').convert_alpha()
    game_over_rect = game_over_image.get_rect()
    game_over_rect.left, game_over_rect.top = (
        int(width / 2 - game_over_image.get_rect().width / 2),
        int(height / 2 - game_over_image.get_rect().height / 2))

    game_again_rect = game_again_image.get_rect()
    game_again_rect.left, game_again_rect.top = (
        int(width / 2 - game_again_image.get_rect().width / 2),
        int(height / 2 + game_again_image.get_rect().height))

    # 难度级别
    level = 1

    # 全屏炸弹
    bomb_image = pygame.image.load('images/bomb.png').convert_alpha()
    bomb_rect = bomb_image.get_rect()
    bomb_rect.left, bomb_rect.top = 10, height - bomb_rect.height - 10
    bomb_font = pygame.font.Font('font/font.ttf', 36)
    bomb_num = 3

    # 我方飞机剩余血量
    live_font = pygame.font.Font('font/font.ttf', 24)

    # 生成敌方飞机
    enemies = pygame.sprite.Group()

    small_enemies = pygame.sprite.Group()
    add_small_enemies(small_enemies, enemies, 15)

    moderate_enemies = pygame.sprite.Group()
    add_moderate_enemies(moderate_enemies, enemies, 1)

    large_enemies = pygame.sprite.Group()
    add_large_enemies(large_enemies, enemies, 3)

    # 普通子弹
    bullets = []
    bullet_num = 4
    bullet_index = 0
    for i in range(bullet_num):
        bullets.append(Bullet('images/bullet1.png', aircraft.rect.midtop))

    super_bullets = []
    super_bullet_num = 8
    super_bullet_index = 0
    for i in range(super_bullet_num // 2):
        super_bullets.append(
            Bullet('images/bullet2.png',
                   (aircraft.rect.centerx - 33, aircraft.rect.centery)))
        super_bullets.append(
            Bullet('images/bullet2.png',
                   (aircraft.rect.centerx + 30, aircraft.rect.centery)))

    # 超级子弹定时器 只能使用指定时间
    super_bullet_time = USEREVENT + 1
    use_super_bullet = False

    # 重生无敌计时器
    invincible_time = USEREVENT + 2

    # 中弹图片索引
    e1_destroy_index = 0
    e2_destroy_index = 0
    e3_destroy_index = 0
    aircraft_destroy_index = 0

    # 切换图片延迟参数
    delay = 100

    # provide a supply every 30 seconds
    bomb_supply = BombSupply(bg_size, 'images/bomb_supply.png')
    bullet_supply = BulletSupply(bg_size, 'images/bullet_supply.png')
    supply_time = USEREVENT
    pygame.time.set_timer(supply_time, 20 * 1000)

    while running:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == MOUSEBUTTONDOWN:
                if event.button == 1:
                    if pause_rect.collidepoint(event.pos):
                        pause = not pause
                        if pause:
                            pygame.time.set_timer(supply_time, 0)
                            pygame.mixer.music.pause()
                            pygame.mixer.pause()
                        else:
                            pygame.time.set_timer(supply_time, 20 * 1000)
                            pygame.mixer.music.unpause()
                            pygame.mixer.unpause()
                    elif game_over_rect.collidepoint(event.pos):
                        pygame.quit()
                        sys.exit()
                    elif game_again_rect.collidepoint(event.pos):
                        aircraft.reborn()
                        pygame.mixer.music.unpause()
                        pygame.mixer.unpause()
            elif event.type == KEYDOWN:
                if event.key == K_SPACE:
                    # 全屏炸弹
                    if bomb_num:
                        bomb_num -= 1
                        bomb_sound.play()
                        for each in enemies:
                            if each.rect.bottom > 0:
                                each.alive = False
            elif event.type == MOUSEMOTION:
                if pause_rect.collidepoint(event.pos):
                    if pause:
                        pause_image = resume_pressed_image
                    else:
                        pause_image = pause_pressed_image
                else:
                    if pause:
                        pause_image = resume_nor_image
                    else:
                        pause_image = pause_nor_image
            elif event.type == supply_time:
                # either bomb supply or bullet supply.
                if choice((True, False)):
                    bomb_supply.active = True
                else:
                    bullet_supply.active = True
                supply_sound.play()
            elif event.type == super_bullet_time:
                use_super_bullet = False
                pygame.time.set_timer(super_bullet_time, 0)
            elif event.type == invincible_time:
                aircraft.invincible = False
                pygame.time.set_timer(invincible_time, 0)

        level = upgrade_level(level, score, small_enemies, moderate_enemies,
                              large_enemies, enemies)

        screen.blit(background, (0, 0))

        if aircraft.lives > 0:
            if not pause:
                # 检测用户的键盘操作
                key_pressed = pygame.key.get_pressed()
                if key_pressed[K_w] or key_pressed[K_UP]:
                    aircraft.move_up()
                elif key_pressed[K_s] or key_pressed[K_DOWN]:
                    aircraft.move_down()
                elif key_pressed[K_a] or key_pressed[K_LEFT]:
                    aircraft.move_left()
                elif key_pressed[K_d] or key_pressed[K_RIGHT]:
                    aircraft.move_right()

                # shot
                if not (delay % 10):
                    bullet_sound.play()
                    if use_super_bullet:
                        super_bullets[super_bullet_index].reset(
                            (aircraft.rect.centerx - 33,
                             aircraft.rect.centery))
                        super_bullets[super_bullet_index + 1].reset(
                            (aircraft.rect.centerx + 30,
                             aircraft.rect.centery))
                        super_bullet_index = (super_bullet_index +
                                              2) % super_bullet_num
                    else:
                        bullets[bullet_index].reset(aircraft.rect.midtop)
                        bullet_index = (bullet_index + 1) % bullet_num

                # paint the bullets
                if use_super_bullet:
                    for bullet in super_bullets:
                        if bullet.active:
                            bullet.move()
                            screen.blit(bullet.image, bullet.rect)
                            hit_enemies = pygame.sprite.spritecollide(
                                bullet, enemies, False,
                                pygame.sprite.collide_mask)
                            if hit_enemies:
                                bullet.active = False
                                for enemy in hit_enemies:
                                    enemy.lives -= 1
                                    enemy.hit = True
                                    if enemy.lives == 0:
                                        enemy.alive = False
                else:
                    for bullet in bullets:
                        if bullet.active:
                            bullet.move()
                            screen.blit(bullet.image, bullet.rect)
                            hit_enemies = pygame.sprite.spritecollide(
                                bullet, enemies, False,
                                pygame.sprite.collide_mask)
                            if hit_enemies:
                                bullet.active = False
                                for enemy in hit_enemies:
                                    enemy.lives -= 1
                                    enemy.hit = True
                                    if enemy.lives == 0:
                                        enemy.alive = False

                # paint large enemies
                for each in large_enemies:
                    if each.alive:
                        each.move()
                        if each.hit:
                            screen.blit(each.hit_image, each.rect)
                            each.hit = False
                        else:
                            if not delay % 5:
                                screen.blit(each.image, each.rect)
                            else:
                                screen.blit(each.other_image, each.rect)

                        paint_health_line(each, LargeEnemy.lives)

                        if -10 <= each.rect.bottom <= height:
                            enemy3_fly_sound.play(-1)
                        else:
                            enemy3_fly_sound.stop()
                    else:
                        # 毁灭
                        if not (delay % 3):
                            if e3_destroy_index == 0:
                                enemy3_down_sound.play()
                            screen.blit(each.destroy_images[e3_destroy_index],
                                        each.rect)
                            e3_destroy_index = (e3_destroy_index + 1) % len(
                                each.destroy_images)
                            if e3_destroy_index == 0:
                                score += 10000
                                enemy3_fly_sound.stop()
                                each.reset()

                # paint moderate enemies
                for each in moderate_enemies:
                    if each.alive:
                        each.move()
                        if each.hit:
                            screen.blit(each.hit_image, each.rect)
                            each.hit = False
                        else:
                            screen.blit(each.image, each.rect)
                        # 绘制血槽
                        paint_health_line(each, ModerateEnemy.lives)
                    else:
                        if not (delay % 3):
                            if e2_destroy_index == 0:
                                enemy2_down_sound.play()
                            screen.blit(each.destroy_images[e2_destroy_index],
                                        each.rect)
                            e2_destroy_index = (e2_destroy_index + 1) % len(
                                each.destroy_images)
                            if e2_destroy_index == 0:
                                score += 6000
                                each.reset()

                # paint small enemies
                for each in small_enemies:
                    if each.alive:
                        each.move()
                        screen.blit(each.image, each.rect)
                    else:
                        if not (delay % 3):
                            if e1_destroy_index == 0:
                                enemy1_down_sound.play()
                            screen.blit(each.destroy_images[e1_destroy_index],
                                        each.rect)
                            e1_destroy_index = (e1_destroy_index + 1) % len(
                                each.destroy_images)
                            if e1_destroy_index == 0:
                                score += 1000
                                each.reset()

                # check if the aircraft was collided by any enemy
                enemies_down = pygame.sprite.spritecollide(
                    aircraft, enemies, False, pygame.sprite.collide_mask)
                if enemies_down and not aircraft.invincible:
                    aircraft.alive = False
                    for enemy in enemies_down:
                        enemy.alive = False

                # 绘制我方飞机
                if aircraft.alive:
                    if not (delay % 5):
                        screen.blit(aircraft.image1, aircraft.rect)
                    else:
                        screen.blit(aircraft.image2, aircraft.rect)
                else:
                    if not (delay % 5):
                        if aircraft_destroy_index == 0:
                            me_down_sound.play()
                        screen.blit(
                            aircraft.destroy_images[aircraft_destroy_index],
                            aircraft.rect)
                        aircraft_destroy_index = (aircraft_destroy_index +
                                                  1) % len(
                                                      aircraft.destroy_images)
                        if aircraft_destroy_index == 0:
                            aircraft.lives -= 1
                            aircraft.reset()
                            # 重生后给我方飞机3秒钟的无敌
                            pygame.time.set_timer(invincible_time, 3 * 1000)

                # 绘制补给
                if bomb_supply.active:
                    bomb_supply.move()
                    screen.blit(bomb_supply.image, bomb_supply.rect)
                    if pygame.sprite.collide_mask(bomb_supply, aircraft):
                        get_bomb_sound.play()
                        if bomb_num < 3:
                            bomb_num += 1
                        bomb_supply.reset()

                if bullet_supply.active:
                    bullet_supply.move()
                    screen.blit(bullet_supply.image, bullet_supply.rect)
                    if pygame.sprite.collide_mask(bullet_supply, aircraft):
                        get_bullet_sound.play()
                        use_super_bullet = True
                        pygame.time.set_timer(super_bullet_time, 5 * 1000)
                        bullet_supply.reset()

                # 绘制全屏炸弹
                screen.blit(bomb_image, bomb_rect)
                bomb_text = bomb_font.render('×%d' % bomb_num, True, WHITE)
                screen.blit(bomb_text,
                            (10 + bomb_rect.right, bomb_rect.top + 5))

                # 绘制我方飞机生命
                if aircraft.lives:
                    screen.blit(
                        aircraft.life_image,
                        (width - aircraft.life_image.get_rect().width - 30,
                         height - 10 - aircraft.life_image.get_rect().height))
                    live_text = live_font.render('×%d' % aircraft.lives, True,
                                                 WHITE)
                    screen.blit(live_text,
                                (width - 30, height -
                                 aircraft.life_image.get_rect().height))

                # 每次递减1,到0回到100
                delay -= 1
                if not delay:
                    delay = 100
            # 绘制暂停键
            screen.blit(pause_image, pause_rect)
        else:
            # game over
            screen.blit(game_over_image, game_over_rect)

            screen.blit(game_again_image, game_again_rect)

            pygame.mixer.music.pause()
            pygame.mixer.pause()

        # 绘制得分
        score_text = score_font.render('Score : %s' % str(score), True, WHITE)
        screen.blit(score_text, (10, 5))

        pygame.display.flip()
        # 限定最大帧率60帧
        clock.tick(60)
Exemple #2
0
def game_screen(screen):
    
    g = 1
    
    contador = 0
    
    clock = pygame.time.Clock()
    # Carrega o fundo do jogo
    background = pygame.image.load(path.join('Fundo4.jpg')).convert()
    x = 0 
    vx = 0
    
    #Cria pontuação
    score = 0
    
    chakra = 150
    #assets = load_assets(img_dir, snd_dir, fnt_dir)
    #score_font = assets["score_font"]
    
    dir = path.dirname(__file__)
    with open(path.join(dir, HS_FILE), 'w') as f:
        try:
            highscore = int(f.read())
        except:
            highscore = 0
    
    # Carrega os sons do jogo
    pygame.mixer.music.load(path.join(snd_dir, 'naruto.mp3'))
    pygame.mixer.music.set_volume(0.4)
    boom_sound = pygame.mixer.Sound(path.join(snd_dir, 'expl3.wav'))
    destroy_sound = pygame.mixer.Sound(path.join(snd_dir, 'expl6.wav'))
    pew_sound = pygame.mixer.Sound(path.join(snd_dir, 'pew.wav'))
    
    player = Player()
    # Cria um grupo só do inimigo
    monsters = pygame.sprite.Group()
    
    
    # Cria um grupo de todos os sprites e adiciona a nave.
    all_sprites = pygame.sprite.Group()
    all_sprites.add(player)
    power = pygame.sprite.Group()
    bullets = pygame.sprite.Group()
    pygame.mixer.music.play(loops=-1)
    PLAYING = 0
    state = PLAYING
    DONE = 2
    running=True
    
## Primeiro while
    while state != DONE and score < 500 and running:
        # Ajusta a velocidade do jogo.
        clock.tick(FPS)
        if random.randrange(1,75) == 1:
            mob1 = Mob2()
            all_sprites.add(mob1)
            monsters.add(mob1)    
        
        
        for event in pygame.event.get():
            
            if event.type == pygame.QUIT:
                running = False
            
            if event.type == pygame.KEYDOWN:
                
                if event.key == pygame.K_LEFT:
                    player.speedx = -4
                    player.imgs = []
                    n=6
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Left{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.step = 5
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    
                if event.key == pygame.K_RIGHT:
                    player.speedx = 4
                    player.imgs = []
                    n=6
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Run{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.step = 5
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    
                if event.key == pygame.K_UP and player.rect.y == HEIGHT/2 - 45.5:#pulo
                    player.speedy = -20
                    
                if event.key == pygame.K_SPACE and chakra >= 10:
                    chakra -= 10
                    player.imgs = []
                    n=5
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Punch{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.step=5
                    player.image = pygame.transform.scale(player.image, (1,1))
                    bullet = Bullet(player.rect.centerx, player.rect.top)
                    all_sprites.add(bullet)
                    bullets.add(bullet)
                    pew_sound.play()
                    
                if event.key == pygame.K_m and chakra >= 50:
                    chakra -= 50
                    player.imgs = []
                    n=6
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "R{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.step=5
                    player.image = pygame.transform.scale(player.image, (1,1))
                    ras = Rasengan(player.rect.centerx, player.rect.top)
                    all_sprites.add(ras)
                    bullets.add(ras)
                    pew_sound.play()

                                
            #################################        
            # Verifica se soltou alguma tecla.
            if event.type == pygame.KEYUP:
                # Dependendo da tecla, altera a velocidade.
                if event.key == pygame.K_LEFT:
                    player.speedx = 0
                    player.imgs = []
                    n=6
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Run{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                    
                if event.key == pygame.K_RIGHT:
                    player.speedx = 0
                    player.imgs = []
                    n=6
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Run{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                    
                if event.key == pygame.K_SPACE:
                    player.imgs = []
                    n=6
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Run{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                    player.step=5
                    
                if event.key == pygame.K_m:
                    player.imgs = []
                    player.steps = 5
                    n=6
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Run{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.steps = 5
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                    
        if player.rect.y < HEIGHT/2 - 45.5:#gravidade
            player.speedy += g
                    
        # Verifica se houve colisão entre tiro e inimigo
        hits = pygame.sprite.groupcollide(monsters, bullets, True, True)
        for hit in hits: # Pode haver mais de um
            # O meteoro e destruido e precisa ser recriado
            destroy_sound.play()
            contador += 1
            score += 50
            #m = Mob() 
            #all_sprites.add(m)
            #monsters.add(m)
        
        # Verifica se houve colisão entre personagem e inimigo
        hits = pygame.sprite.spritecollide(player, monsters, False, pygame.sprite.collide_circle)
        for hit in hits:
            # Toca o som da colisão
            boom_sound.play()
            hit.kill()
            player.morrer()

        running = player.vidas >= 0
            
        chakra += 0.5
        if chakra > 149.5:
            chakra =150
        elif chakra < 0.5:
            chakra = 0
        vx = -8 - (score/1000)  
        print (vx)
        x += vx
        # Depois de processar os eventos.
        # Atualiza a acao de cada sprite.
        all_sprites.update()
    
        # A cada loop, redesenha o fundo e os sprites
        screen.fill(BLACK)
        rel_x = x % background.get_rect().width
        
        screen.blit(background, (rel_x -background.get_rect().width , 0))
        
        if  rel_x  < WIDTH:
            screen.blit(background, (rel_x, 0))
        all_sprites.draw(screen)
        
        #pontuação
        draw_text(screen, str(score), 35, WIDTH/2, 0)
        draw_text(screen, "Score", 40, WIDTH/2-150, 0)
        #chakra
        draw_text(screen, str(chakra), 35, WIDTH/2+400, 0)
        draw_text(screen, "Chakra", 40, WIDTH/2+200, 0)
        #Vida
        draw_text(screen, str(player.vidas), 35, WIDTH/2-350, 0)
        draw_text(screen, "Vida", 40, WIDTH/2-450, 0)
        
        # Depois de desenhar tudo, inverte o display.
        pygame.display.flip()
        
##Segundo while
    while state != DONE and score >= 500  and running:
        
        # Ajusta a velocidade do jogo.
        
        clock.tick(FPS)
        if score >= 500:
            if random.randrange(1,300) == 1:
                deid = Deidara()
                all_sprites.add(deid)
                monsters.add(deid)
                bird = Bird()
                all_sprites.add(bird)
                monsters.add(bird)
               
        if score >= 1000:
            if random.randrange(1,300) == 1:
                mob4 = Mob4()
                am = Amaterasu()
                all_sprites.add(am)
                all_sprites.add(mob4)
                monsters.add(am)
                monsters.add(mob4)
                
        if score >= 500:
            if random.randrange(1,200) == 1:
                tobi = Mob3()
                all_sprites.add(tobi)
                monsters.add(tobi)
                
            if random.randrange(1,500) == 1:
                madara = Golpetras()
                all_sprites.add(madara)
                monsters.add(madara)
                
        if score >= 1300:
            if random.randrange(1,400) == 1:
                sas = Sasori()
                all_sprites.add(sas)
                monsters.add(sas)
                
        if score >= 2000:   
            if random.randrange(1,500) == 1:
                ki = Kisame()
                all_sprites.add(ki)
                monsters.add(ki)
                wa = Water()
                all_sprites.add(wa)
                monsters.add(wa)
        
        
        
        for event in pygame.event.get():
            
            if event.type == pygame.QUIT:
                running = False
            
            if event.type == pygame.KEYDOWN:
                
                if event.key == pygame.K_LEFT:
                    player.speedx = -4
                    player.imgs = []
                    n=2
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Dash{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.step = 5
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    
                if event.key == pygame.K_RIGHT:
                    player.speedx = 4
                    player.imgs = []
                    n=2
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Dash{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.step = 3
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    
                if event.key == pygame.K_UP and player.rect.y == HEIGHT/2 - 45.5:#pulo
                    player.speedy = -20
                    g = 1
                    player.imgs = []
                    n=8
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Jump{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.step = 8
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    
                if event.key == pygame.K_SPACE and chakra>=20:
                    chakra-=20
                    n=10
                    bullet = Nrpower(player.rect.centerx, player.rect.top)
                    all_sprites.add(bullet)
                    bullets.add(bullet)
                    pew_sound.play()
                    
                if event.key == pygame.K_m and chakra >= 25:
                    chakra -= 300
                    player.imgs = []
                    n=5
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "NrP{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.step = 5
                    player.image = pygame.transform.scale(player.image, (1,1))
                    powe = Nrm(player.rect.centerx, player.rect.top)
                    all_sprites.add(powe)
                    power.add(powe)
                    pew_sound.play()
                
                if event.key == pygame.K_n and chakra >= 25:
                    chakra -= 25
                    player.imgs = []
                    n=5
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "NrP{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.step = 5
                    player.image = pygame.transform.scale(player.image, (1,1))
                    clone = Clone(player.rect.centerx, player.rect.top)
                    all_sprites.add(clone)
                    bullets.add(clone)
                    pew_sound.play()

            if event.type == pygame.KEYUP:
                
                if event.key == pygame.K_LEFT:
                    vx = 0
                    player.imgs = []
                    n=8
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Nr{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                    
                if event.key == pygame.K_RIGHT:
                    vx = 0
                    player.imgs = []
                    n=8
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Nr{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                
                if event.key == pygame.K_SPACE:
                    player.imgs = []
                    chakra -= 25
                    n=8
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Nr{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                    player.step=5
                    
                if event.key == pygame.K_m:
                    player.imgs = []
                    player.steps = 5
                    chakra -= 25
                    n=8
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Nr{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.steps = 5
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                
                if event.key == pygame.K_n:
                    player.imgs = []
                    player.steps = 5
                    chakra -= 25
                    n=8
                    for i in range(n):
                        player.imgs.append(pygame.image.load(path.join(img_dir, "Nr{0}.png".format(i+1))).convert())
                    player.frame = 0
                    player.steps = 5
                    player.image = player.imgs[player.frame]
                    player.image = pygame.transform.scale(player.image, (1,1))
                    player.speedx = 0
                    
        if player.rect.y < HEIGHT/2 - 45.5:
            player.speedy +=g 
                    
        hits = pygame.sprite.groupcollide(monsters, bullets, True, True)
        for hit in hits:
            destroy_sound.play()
            contador += 1
            score += 100
            
        hits = pygame.sprite.groupcollide(monsters, power, True, False)
        for hit in hits:
            destroy_sound.play()
            contador += 1
            score += 100
            
        hits = pygame.sprite.spritecollide(player, monsters, False, pygame.sprite.collide_circle)
        for hit in hits:
            boom_sound.play()
            hit.kill()
            player.morrer()
        running = player.vidas >= 0
        
        chakra += 1
        if chakra > 399.5:
            chakra =400
        elif chakra < 0.5:
            chakra = 0
        vx = -8 - (score/1000)
        x += vx
        # Depois de processar os eventos.
        # Atualiza a acao de cada sprite.
        all_sprites.update()
        
        
        # A cada loop, redesenha o fundo e os sprites
        screen.fill(BLACK)
        rel_x = x % background.get_rect().width
        screen.blit(background, (rel_x -background.get_rect().width , 0))
        
        if  rel_x  < WIDTH:
            screen.blit(background, (rel_x, 0))
        all_sprites.draw(screen)
        
        # Desenha o score
        vidas = player.vidas
        
        #pontuação
        draw_text(screen, str(score), 35, WIDTH/2, 0)
        draw_text(screen, "Score", 40, WIDTH/2-150, 0)
        #chakra
        draw_text(screen, str(chakra), 35, WIDTH/2+400, 0)
        draw_text(screen, "Chakra", 40, WIDTH/2+200, 0)
        #Vida
        draw_text(screen, str(vidas), 35, WIDTH/2-350, 0)
        draw_text(screen, "Vida", 40, WIDTH/2-450, 0)
                            
        # Depois de desenhar tudo, inverte o display.
        pygame.display.flip()
    
    if score > highscore:
        highscore=score
    return (OVER, score, highscore)
                
Exemple #3
0
    def __init__(self, parent=None):
        QGraphicsScene.__init__(self, parent)

        # hold the set of keys we're pressing
        self.keys_pressed = set()

        # use a timer to get 60Hz refresh (hopefully)  1000 / 16 == 62.5
        self.timer = QBasicTimer()
        self.timer.start(FRAME_TIME_MS, self)

        # bg = QGraphicsRectItem()
        # bg.setRect(-1,-1,SCREEN_WIDTH+2,SCREEN_HEIGHT+2)
        # bg.setBrush(QBrush(Qt.black))

        # BackGround
        self.bg = BackGround()
        self.addItem(self.bg)

        # Stage
        self.stage = Stage()
        self.addItem(self.stage)

        # Player
        self.player = Player()
        self.player.setPos((SCREEN_WIDTH - self.player.pixmap().width()) / 2,
                           (SCREEN_HEIGHT - self.player.pixmap().height()) / 2)
        self.addItem(self.player)

        # Player Life
        self.playerIcon = PlayerIcon()
        self.xIcon = XIcon()
        self.life = Life()
        self.playerIcon.setPos(20, 20)
        self.xIcon.setPos(60, 25)
        self.life.setPos(83, 24)
        self.addItem(self.playerIcon)
        self.addItem(self.xIcon)
        self.addItem(self.life)

        # Bullets
        self.bullets = [
            Bullet(PLAYER_BULLET_X_OFFSETS[0], PLAYER_BULLET_Y),
            Bullet(PLAYER_BULLET_X_OFFSETS[1], PLAYER_BULLET_Y - 30),
            Bullet(PLAYER_BULLET_X_OFFSETS[2], PLAYER_BULLET_Y)
        ]
        for b in self.bullets:
            b.setPos(SCREEN_WIDTH, SCREEN_HEIGHT)
            self.addItem(b)

        # Enemies
        self.enemies = [Enemy()]
        self.enemies[0].setPos(SCREEN_WIDTH, 0)
        self.addItem(self.enemies[0])
        self.idx = [0]

        # Execution Point
        self.EXP = EXP()
        self.EXP.score = 8
        self.EXP.setPos(SCREEN_WIDTH - 40, 20)
        self.addItem(self.EXP)

        self.EXP1 = EXP()
        self.EXP1.score = 1
        self.EXP1.setPos(SCREEN_WIDTH - 60, 20)
        self.addItem(self.EXP1)

        self.view = QGraphicsView(self)
        self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.view.show()
        self.view.setFixedSize(SCREEN_WIDTH, SCREEN_HEIGHT)
        self.setSceneRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)

        self.ask = AskClose(self)
Exemple #4
0
 def generate_bullet(self):
     self.test_bullet = Bullet("images/bullet.png", 1.0, 600, 70, -20)
     self.bullet_list.append(self.test_bullet)
     self.all_sprite_list.append(self.test_bullet)
Exemple #5
0

def spawn_enemies():
    for i in range(10):
        enemies.append(Enemy(100 + i * 100, 100))
    for i in range(10):
        enemies.append(Enemy(100 + i * 100, 300))


def spawn_boss():
    enemies.append(Enemy(600, 200))


# entities initialization
player = Player()
bullet = Bullet(player.x, player.y)
enemies = []
spawn_enemies()

# the main game loop
while running:
    screen.fill((255, 255, 255))
    screen.blit(background, (0, 0))
    clock.tick(60)
    player.set_cooldown()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_TAB:
Exemple #6
0
 def fire(self):
     self.bullet_list.append(Bullet(self.screen, self.x, self.y))
Exemple #7
0
player_img = pygame.image.load('spaceship.png')
playerX = 500  # x position
playerY = 500  # y position
player1 = Npc(playerImg=player_img)
player_valx = 0
player_valy = 0

enemy_img = pygame.image.load('ufo.png')
enemy = Npc(playerImg=enemy_img)
enemyX = 500
enemyY = 50
enemy_valx = 0.3
enemy_valy = 30

bullet_img = pygame.image.load('bullet.png')
bullet = Bullet(Img=bullet_img)
# bullet2  = Bullet(Img= bullet_img)
bulletX = 500
bulletY = 500
bullet_valx = 0
bullet_valy = 0.2


def isCollision(enemyX, enemyY, bulletX, bulletY):
    distance = math.sqrt((math.pow(enemyX - bulletX, 2)) +
                         (math.pow(enemyY - bulletY, 2)))
    if distance < 27:
        return True
    else:
        return False
Exemple #8
0
 def fire(self):
     self.bullets.append(Bullet(self.screen, self))
     print(self.bullets)
Exemple #9
0
def main():

    # 设置偏移方向
    offset_x = offset_y = 0
    #英雄移动的速度
    # HERO_SPEED = 6
    ticks = 0

    hero = Hero(hero_surface, hero_position)

    #声明一个精灵组 用来存放子弹
    bullet_group = pygame.sprite.Group()
    #声明一个精灵组 用来存放敌机
    enemy_group = pygame.sprite.Group()
    #声明一个精灵组 用来存放销毁的敌机
    enemy_down_group = pygame.sprite.Group()

    #分数初始化
    score = 0

    #一般的游戏逻辑里都会有while True
    while True:

        # 绘制背景
        screen.blit(surface_img, [0, 0])

        # 绘制我方 考虑到切换状态 把频率降低
        if ticks % 40 < 20:
            # 实例化英雄
            hero = Hero(hero_surface, hero.rect)
        else:
            hero = Hero(hero_surface1, hero.rect)
        screen.blit(hero.image, hero.rect)
        ticks += 1

        # 绘制子弹
        if ticks % 15 == 0:
            bullet = Bullet(bullet_surface, [hero.rect.x+hero.rect.width//2,hero.rect.y])
            bullet_group.add(bullet)

        bullet_group.update()
        bullet_group.draw(screen)

        #绘制敌机
        if ticks % 70 == 0:
            enemy_position = [randint(0,SCREEN_WIDTH - enemy_rect.width),-enemy_rect.height]
            enemy = Enemy(enemy_surface, enemy_position)
            enemy_group.add(enemy)

        enemy_group.update()
        enemy_group.draw(screen)

        # #子弹和敌机碰撞检测
        # enemy_down_group.add(pygame.sprite.groupcollide(enemy_group,bullet_group,True,True))
        # #如果考虑敌机爆炸的效果
        # for enemy_down in enemy_down_group:
        #     pass
        #     #动态切换图片 动态改变图片的索引 用计数器来让效果慢下来


        enemy_down_res = pygame.sprite.groupcollide(enemy_group,bullet_group,True,True)
        #如果有碰撞 分值加1
        if len(enemy_down_res) > 0:
            score += 1

        #我方和敌机碰撞检测
        hero_down_res = pygame.sprite.spritecollide(hero,enemy_group,True)
        if len(hero_down_res) > 0:
            #游戏结束
            break

        # print(enemy_down_group)

        #记录分数
        score_font = pygame.font.SysFont(None,40)
        score_surface = score_font.render('Score:'+str(score),1,(128,128,128))
        screen.blit(score_surface, [10,10])

        #获取pygame触发的事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()

            #获取键盘事件
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a or event.key == pygame.K_LEFT:
                    offset_x = -1
                if event.key == pygame.K_d  or event.key == pygame.K_RIGHT:
                    offset_x = 1
                if event.key == pygame.K_w  or event.key == pygame.K_UP:
                    offset_y = -1
                if event.key == pygame.K_s or event.key == pygame.K_DOWN:
                    offset_y = 1
            if event.type == pygame.KEYUP:
                    offset_x = offset_y = 0


        hero.move(offset_x,offset_y)
        pygame.display.update()

    # 如果代码能走到这一步 表示gameover
    screen.blit(gameover_surface, [0, 0])

    # 重新开始
    screen.blit(game_over_surface, [SCREEN_WIDTH / 2 - game_over_surface.get_width() / 2,
                                    SCREEN_HEIGHT / 2 - game_over_surface.get_height() / 2 + 50])
    pygame.display.update()
def fire_bullet(ai_settings, screen, ship, bullets):
    if len(bullets) < ai_settings.bullet_allowed:
        new_bullet = Bullet(ai_settings, screen, ship)
        bullets.add(new_bullet)
Exemple #11
0
    def launch_bullet(self, target):
        bullets_count = 3
        bullets_speed = 5
        if self.power == 1:
            bullets_speed = 6
            bullets_count = 6
        elif self.power == 2:
            bullets_speed = 7
            bullets_count = 9
        elif self.power > 2:
            bullets_speed = 8
            bullets_count = 12
        if self.power == 4:
            bullets_count = 18
        elif self.power == 5:
            bullets_speed = 7
            bullets_count = 24
        elif self.power > 5:
            bullets_speed = 8
            bullets_count = 34

        b_count = len(gl.bullet_group.sprites())
        if b_count < bullets_count:
            target.szd1.stop()
            target.szd1.play(0, 0, 0)
            bullet = Bullet((gl.all_group, gl.bullet_group), target, self)
            bullet.rect.x = self.rect.x + 20
            bullet.rect.y = self.rect.y
            bullet.speed[1] = -bullets_speed
        if b_count < bullets_count:
            target.szd2.stop()
            target.szd2.play(0, 0, 0)
            bullet1 = Bullet((gl.all_group, gl.bullet_group), target, self)
            bullet1.rect.x = self.rect.x + 35
            bullet1.rect.y = self.rect.y
            bullet1.speed[1] = -bullets_speed
        if b_count < bullets_count:
            target.szd3.stop()
            target.szd3.play(0, 0, 0)
            bullet2 = Bullet((gl.all_group, gl.bullet_group), target, self)
            bullet2.rect.x = self.rect.x + 5
            bullet2.rect.y = self.rect.y
            bullet2.speed[1] = -bullets_speed
        if self.power > 2:
            if b_count < bullets_count:
                target.szd1.stop()
                target.szd1.play(0, 0, 0)
                bullet3 = Bullet((gl.all_group, gl.bullet_group), target, self)
                bullet3.rect.x = self.rect.x + 50
                bullet3.rect.y = self.rect.y
                bullet3.speed[1] = -bullets_speed
            if b_count < bullets_count:
                target.szd1.stop()
                target.szd1.play(0, 0, 0)
                bullet4 = Bullet((gl.all_group, gl.bullet_group), target, self)
                bullet4.rect.x = self.rect.x - 10
                bullet4.rect.y = self.rect.y
                bullet4.speed[1] = -bullets_speed
        if self.power > 5:
            if b_count < bullets_count:
                target.szd1.stop()
                target.szd1.play(0, 0, 0)
                bullet5 = Bullet((gl.all_group, gl.bullet_group), target, self)
                bullet5.rect.x = self.rect.x + 65
                bullet5.rect.y = self.rect.y
                bullet5.speed[1] = -bullets_speed
            if b_count < bullets_count:
                target.szd1.stop()
                target.szd1.play(0, 0, 0)
                bullet6 = Bullet((gl.all_group, gl.bullet_group), target, self)
                bullet6.rect.x = self.rect.x - 25
                bullet6.rect.y = self.rect.y
                bullet6.speed[1] = -bullets_speed
Exemple #12
0
 def fire_bullet(self):
     if len(self.bullets) < self.setting.bullets_allowed:
         new = Bullet(self)
         self.bullets.add(new)
Exemple #13
0
 def shoot(self, all_group):
     bullet = Bullet(self.rect.x, self.rect.y, self.direction)
     self.bullet_list.append(bullet)
     all_group.add(bullet)
     return all_group
 def fire(self):
     # TBF: start from tip of RocketBody
     return Bullet('bullet', self.x, self.y, self.rotTheta)
 def __shoot(self):
     self.__is_shooting = True
     self.__shootEffect.play(self.__gunOffset + self._position)
     self.__bulletList.append(
         Bullet.Bullet(self.__shootEffect._position + self.__bulletOffset))
     self.__changeAnimation(self.__shoot_anim)
Exemple #16
0
def deserializeBullet(bullet):
    retbullet = Bullet(bullet['location'], bullet['bounds'], bullet['direction'], bullet['velocity'])
    retbullet.id = bullet['id']
    return retbullet
Exemple #17
0
 def shoot(self, command=""):
     return [Bullet(self.rect.center, self.facing, 10)]
     self.bullet += 1
Exemple #18
0
 def shot(self):  #화살생성함수
     bullet = Bullet(self.screen, self.top + 50, self.left + 75,
                     20)  #speed가 30인 화살 생성
     self.bullets.append(bullet)  #list에 arrow객체 추가
Exemple #19
0
 def keyDown(self):
     if key == 'f' or key == 'F':
         SpriteManager.spawn(
             Bullet(self.x, self.y, PVector(0, -10), self.team))
Exemple #20
0
from Magnet import Magnet
from Speedup import Speedup
from os import system
from time import sleep
import termios
import sys
import select
import tty


sc = Gamescreen()
bg = Background()

u = User()
c = Coin()
bl = Bullet()

while sc.get_trip() < 2:

    b = []
    m = None
    sp = None

    sc.init_field()
    sc.init_trash()

    sc.set_nxt(0)
    sc.set_timer(0)
    sc.set_no(0)
    sc.set_m_no(0)
    sc.set_s_no(0)
                if event.key == pygame.K_DOWN:
                    player.speedy = 10

                if event.key == pygame.K_SPACE:
                    player.imgs = []
                    n = 5
                    for i in range(n):
                        player.imgs.append(
                            pygame.image.load(
                                path.join("Punch{0}.png".format(i +
                                                                1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.step = 5
                    player.image = pygame.transform.scale(player.image, (1, 1))
                    bullet = Bullet(player.rect.centerx, player.rect.top)
                    all_sprites.add(bullet)
                    bullets.add(bullet)
                    pew_sound.play()
                if event.key == pygame.K_m:
                    player.imgs = []
                    n = 6
                    for i in range(n):
                        player.imgs.append(
                            pygame.image.load(
                                path.join("R{0}.png".format(i + 1))).convert())
                    player.frame = 0
                    player.image = player.imgs[player.frame]
                    player.step = 5
                    player.image = pygame.transform.scale(player.image, (1, 1))
                    ras = Rasengan(player.rect.centerx, player.rect.top)
Exemple #22
0
 def shoot(self):
     bullet = Bullet(self.win, self.rect.centerx, self.rect.top,
                     self.bullet_image, self.shoot_sound)
     self.bullets.add(bullet)
Exemple #23
0
 def fire(self, vector):
     if millis() - self.mark > self.wait:
         SpriteManager.spawn(Bullet(self.x, self.y, vector, self.team))
         self.mark = millis()
Exemple #24
0
 def create_bullet(self):
     bullet = Bullet(self.get_pos_x(), self.get_pos_y())
     bullet.set_pos_x(self.get_pos_x() + bullet.get_size() // 2 - 7.5)
     bullet.set_pos_y(self.get_pos_y() - 30)
     self.get_bullets().append(bullet)
Exemple #25
0
 def Fire(self, x, y, width):
     if self.isAlive:
         self.Shoot = True
         self.sprites_plane  = LoadSprites('Plane/Shoot')
         self.bullets.append(Bullet(x + (self.plane.get_size()[0] - 55), y + (self.plane.get_size()[1] - 55), width, self.screen))
Exemple #26
0
def main_function():
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
                Globals.game_cycle = False
            if event.type == pygame.MOUSEBUTTONDOWN and not Globals.pause:
                if event.button == 1 and len(Globals.player_bullets) < 6:
                    Bullet(bow.rect.center, bow.angle, 'player_bullet.png')

        if Globals.object_appearance:
            certain.transparency -= 5
            if certain.transparency <= 0:
                Globals.pause = False
                Globals.object_appearance = False
                certain.transparency = 0
            certain.image.set_alpha(certain.transparency)
            Globals.all_sprites.draw(screen)
            Globals.certain.draw(screen)

        if pygame.key.get_pressed():
            keys = pygame.key.get_pressed()
            if keys[pygame.K_ESCAPE] and not Globals.object_appearance:
                Menu('Продолжить игру')
            if keys[pygame.K_a]:
                player.speed_x = -player.max_speed_x
            elif keys[pygame.K_d]:
                player.speed_x = player.max_speed_x
            if keys[pygame.
                    K_SPACE] and not player.jumping and not player.falling:
                player.jumping = True

        if not Globals.pause:
            player.update()
            Globals.enemies.update(player)
            bow.update(player.rect.center)

            Globals.player_bullets.update()
            Globals.enemy_bullets.update()

            Globals.health_bars.update(player)

            bullet_physics(player)

            player.speed_x = 0
        screen.fill((0, 0, 0))
        clock.tick(Globals.FPS)
        Globals.all_sprites.draw(screen)
        Globals.health_bars.draw(screen)
        Globals.player_group.draw(screen)
        Globals.certain.draw(screen)
        pygame.display.flip()

        if pygame.sprite.spritecollideany(player, Globals.level_door) and \
                not Globals.enemies_hit_boxes and not Globals.pause:
            Globals.level_crossing = True
            Globals.pause = True
            Globals.level_count += 1
            if Globals.level_count == 5:
                Globals.level_count = 0
                Globals.stage_count += 1
                print(Globals.stage_count)
                if player.health < 100:
                    player.health = 300
                    Globals.health_bars.update(player)
                else:
                    choice = randrange(0, 5)
                    if not choice:
                        player.sphere_defence += 1
                    else:
                        player.damage += randrange(7, 17)

        if Globals.level_crossing:
            certain.transparency += 5
            certain.image.set_alpha(certain.transparency)
            if certain.transparency == 255:
                for sprite in Globals.all_sprites:
                    if sprite == player:
                        player.rect.x, player.rect.y = 50, 540
                    elif sprite == bow:
                        bow.update(player.rect.center)
                    elif sprite == certain:
                        pass
                    else:
                        Globals.all_sprites.remove(sprite)
                Globals.tiles = pygame.sprite.Group()
                Globals.level_door = pygame.sprite.Group()
                Globals.player_bullets = pygame.sprite.Group()
                Globals.enemy_bullets = pygame.sprite.Group()
                running = False
                Globals.level_crossing = False
                Globals.object_appearance = True
Exemple #27
0
def fire_bullets(event, ai_settings, screen, ship, bullets):
    #Limit the number of bullets
    if len(bullets) < ai_settings.bullets_allowed:
            #Create a new bullet and add it to the bullets group
        new_bullet = Bullet(ai_settings, screen, ship)
        bullets.add(new_bullet)
Exemple #28
0
def fire_bullet(ai_settings, screen, ship, bullets):
    """如果还没有达到限制,就发射一颗子弹"""
    if len(bullets) < ai_settings.bullet_allowed:
        #创建一颗子弹,并将其加入到编组bullets中
        new_bullet = Bullet(ai_settings, screen, ship)
        bullets.add(new_bullet)
    def run(self):
        while self.running:
            self.screen.fill((255, 255, 255))
            self.screen.blit(self.background, (0, 0))
            """
            This if block checks:
            -If the user clicks Start at the intro,it will create the stone objects
            -If the user clicks Quit,it will quit the game basicly.
            """
            if (self.intro_checker == 0):
                self.start = self.game_intro()
                if self.start == 1:
                    self.intro_checker = 1
                    # No of enemies
                    self.game_level = 0
                    self.numberOfEnemies = self.game_level_checker()
                elif self.start == 0:
                    self.intro_checker = 0
                    self.running = False
                else:
                    continue
            # If you clicked Start already,then it means we can get to our gameplay.
            if self.start == 1 and self.intro_checker == 1:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        running = False
                    if event.type == pygame.KEYDOWN:
                        if event.key == pygame.K_q:
                            self.running = False
                        if event.key == pygame.K_UP:
                            self.player.playerY_change = -5
                        if event.key == pygame.K_DOWN:
                            self.player.playerY_change = 5
                        if event.key == pygame.K_SPACE:
                            # To make sure we don't shoot multiple bullets too fast(one by one)
                            if len(self.noOfBullets) != 0:
                                if self.noOfBullets[-1].bulletX - self.player.playerX < 90:
                                    break
                            self.bullet = Bullet(self.bullet.bulletX, self.bullet.bulletY, self.bullet.bullet_state, self.bullet.bulletX_change)
                            self.noOfBullets.append(self.bullet)
                            self.noOfBullets[-1].bulletX = self.player.playerX
                            self.noOfBullets[-1].bulletY = self.player.playerY
                            self.bullet.bulletX_change = 5
                            self.noOfBullets[-1].fire_bullet(self.noOfBullets[-1].bulletX, self.noOfBullets[-1].bulletY,
                                                        self.noOfBullets[-1].bullet_state, self.screen)

                    if event.type == pygame.KEYUP:
                        if event.key == pygame.K_DOWN or event.key == pygame.K_UP:
                            self.player.playerY_change = 0
                # Player Moves
                self.player.playerY += self.player.playerY_change
                # Checking Boundries to make sure we do not jump out of range
                if self.player.playerY <= 32:
                    self.player.playerY = 32
                elif self.player.playerY >= 536:
                    self.player.playerY = 536
                # Bullet Moves
                self.bullet.bullet_moves(self.noOfBullets, self.screen)
                # Enemy Moves
                self.enemy.enemy_moves(self.numberOfEnemies)
                # Collision between the bullet and the enemy
                self.bulletCollisionWithEnemy()
                # Level Designs
                self.levelDesign()
                # Main Collision between rocks and player
                self.playerCollisionWithEnemy()
                # Display of our stone objects.
                e_c3 = 0
                while e_c3 < len(self.numberOfEnemies):
                    self.numberOfEnemies[e_c3].draw_player(self.numberOfEnemies[e_c3].enemyX, self.numberOfEnemies[e_c3].enemyY,
                                                      self.numberOfEnemies[e_c3].enemyImg, self.screen)
                    e_c3 += 1
                # Display of our ingame objects.
                self.player.draw_player(self.player.playerX, self.player.playerY, self.player.playerImg, self.screen)
                self.draw_score()
                self.level()
                pygame.display.update()
Exemple #30
0
# enemys = []
count = 1000
bg = pygame.transform.scale(bg, (500, 800))
hx = 100
hy = 100
Bgroup = pygame.sprite.Group()
Egroup = pygame.sprite.Group()
hero = Hero(hx, hy, 10)
while True:
    ticks = pygame.time.get_ticks()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            # bullets.append(Bullet(hx - 2,hy - 64,(0,-5)))
            Bgroup.add(Bullet(hx - 2, hy - 64))
    hx, hy = pygame.mouse.get_pos()
    screen.blit(bg, (0, 0))

    for i in Bgroup:
        hitSpriteList = pygame.sprite.spritecollide(i, Egroup, False,
                                                    pygame.sprite.collide_mask)
        if len(hitSpriteList) > 0:
            Bgroup.remove(i)
            try:
                for each in hitSpriteList:
                    each.crash()
            except ValueError:
                pass

    Bgroup.update(ticks)