コード例 #1
0
ファイル: game.py プロジェクト: Kir-mus/game
    def update(self):
        self.cur_frame = (self.cur_frame + 1) % len(self.frames)
        self.image = self.frames[self.cur_frame]
        pygame.draw.rect(screen, (75, 3, 1), (5, 5, 100 * 4, 30))
        pygame.draw.rect(screen, (200, 23, 1), (5, 5, 100 * 4, 30), 3)
        if self.heath <= 0:
            pygame.draw.rect(screen, (5, 0, 0), (5, 5, 100 * 4, 30))
            pygame.draw.rect(screen, (20, 3, 1), (5, 5, 100 * 4, 30), 3)
        pygame.draw.rect(screen, (110, 110, 23), (5, 40, 100 * 4, 30), 3)
        if self.heath > 100:
            self.heath = 100
        if self.stamin > 100:
            self.stamin = 100
        if self.stamin < 0:
            self.stamin = 0
        if self.heath >= 0:
            pygame.draw.rect(screen, (144, 23, 1), (5, 7, self.heath * 4, 30 - 4))
        else:
            pygame.draw.rect(screen, (144, 144, 23), (5, 40, 0, 30))
        print_text('HP', 5, 5)
        if self.stamin >= 0:
            pygame.draw.rect(screen, (20, 20, 3), (5, 40, 100 * 4, 30))
            pygame.draw.rect(screen, (144, 144, 23), (5, 42, self.stamin * 4, 30 - 4))
        else:
            pygame.draw.rect(screen, (20, 20, 3), (5, 40, 100 * 4, 30))
            pygame.draw.rect(screen, (144, 144, 23), (5, 40, 0, 30))

        print_text('STAMIN', 5, 40)
コード例 #2
0
ファイル: game.py プロジェクト: Kir-mus/game
def pays():
    global paused
    bottn = Button(350, 100)
    while paused:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                terminate()
        bottn.draw(120, 200, 'RETURN', set_p)
        print_text('PAUSED', 210, 200, (75, 1, 1), 100)
        pygame.display.flip()
        clock.tick(15)
コード例 #3
0
ファイル: game.py プロジェクト: Kir-mus/game
 def draw(self, x, y, mes, f=None, font_saze=30):
     mouse = pygame.mouse.get_pos()
     click = pygame.mouse.get_pressed()
     if x < mouse[0] < x + self.width and y < mouse[1] < y + self.height:
         pygame.draw.rect(screen, self.active_color, (x, y, self.width, self.height))
         if click[0] == 1:
             pygame.draw.rect(screen, self.click_color, (x, y, self.width, self.height))
             if f is not None:
                 f()
     else:
         pygame.draw.rect(screen, self.invitev_color, (x, y, self.width, self.height))
     print_text(mes, x, y, (0, 0, 0), font_saze)
コード例 #4
0
ファイル: game.py プロジェクト: Kir-mus/game
def start_screen():
    fon = pygame.transform.scale(load_image('fon.png')[0], (WIDTH, HEIGHT))
    screen.blit(fon, (0, 0))
    text = 'DARKCASTLE'
    for i in range(len(text)):
        print_text(text[i], 10, 70 * i, (75, 12 - i, 12 - i), 70)
    while True:
        botton = Button(100, 50)
        botton_quit = Button(100, 50)
        botton.draw(50, 20, 'GAME', lvl_up, 50)
        botton_quit.draw(50, 71, 'EXIT', terminate, 50)
        pygame.event.get()
        pygame.display.flip()
コード例 #5
0
ファイル: game.py プロジェクト: Kir-mus/game
def lvl_up():
    fon = pygame.transform.scale(load_image('fon.png')[0], (WIDTH, HEIGHT))
    screen.blit(fon, (0, 0))
    text = 'DARKCASTLE'
    botton_lvl1 = Button(100, 50)
    botton_lvl2 = Button(100, 50)
    botton_quit = Button(100, 50)
    for i in range(len(text)):
        print_text(text[i], 10, 70 * i, (75, 12 - i, 12 - i), 70)
    while True:
        botton_lvl1.draw(50, 110, 'lvl_1', lvl_1, 50)
        botton_lvl2.draw(50, 171, 'lvl_2', lvl_2, 50)
        botton_quit.draw(50, 271, 'quit', terminate, 50)
        pygame.event.get()
        pygame.display.flip()
コード例 #6
0
    def draw_panel(self):
        x = display_width // 4 + 50
        y = display_height - 100
        side = 80
        step = 100

        for cell in self.inventory_panel:
            pygame.draw.rect(screen, (200, 215, 227), (x, y, side, side), 2)
            if cell is not None:
                screen.blit(cell.image, (x + 15, y + 15))
                print_text(str(cell.amount),
                           x + 50,
                           y + 50,
                           font_size=20,
                           font_color=(143, 123, 121))
            x += step
コード例 #7
0
 def draw_whole(self):
     x = 40
     y = 150
     side = 80
     step = 100
     pygame.draw.rect(screen, (182, 195, 206), (x - 20, y - 20, 420, 220),
                      2)
     for cell in self.whole_inventoty:
         pygame.draw.rect(screen, (200, 215, 227), (x, y, side, side), 2)
         if cell is not None:
             screen.blit(cell.image, (x + 15, y + 15))
             print_text(str(cell.amount),
                        x + 50,
                        y + 50,
                        font_size=20,
                        font_color=(143, 123, 121))
         x += step
         if x == 440:
             x = 40
             y += step
コード例 #8
0
ファイル: game.py プロジェクト: Kir-mus/game
 def update(self):
     if self.live:
         if self.zel.rect.x + 280 > self.rect.x and\
                     self.zel.rect.x - 280 < self.rect.x and\
                     self.zel.rect.y + 280 > self.rect.y and self.zel.rect.y - 280 < self.rect.y:
             self.sledovat = True
         else:
             self.sledovat = False
         if self.sledovat:
             if self.f:
                 if self.zel.rect.x - 80 < self.rect.x:
                     self.speed_x = -2
                 if self.zel.rect.x - 80 > self.rect.x:
                     self.speed_x = 2
                 if self.zel.rect.y > self.rect.y:
                     self.setSprite(load_image('hero_lic.png', -1)[0], 3, 1)
                     self.speed_y = 2
                 if self.zel.rect.y < self.rect.y:
                     self.setSprite(load_image('hero_beak.png', -1)[0], 3, 1)
                     self.speed_y = -2
                 if self.zel.rect.x - 80 == self.rect.x + 1 or self.zel.rect.x - 80 == self.rect.x - 1:
                     self.setSprite(load_image('hero_proz.png', -1)[0], 2, 1)
                 self.move_to(self.speed_x, self.speed_y)
                 self.f = False
             else:
                 self.move_to(-self.speed_x, -self.speed_y)
         else:
             self.setSprite(load_image('hero_proz.png', -1)[0], 2, 1)
     else:
         print_text('dead', self.rect.x - 10, self.rect.y - 35, (255, 0, 0))
     self.cur_frame = (self.cur_frame + 1) % len(self.frames)
     self.image = self.frames[self.cur_frame]
     if self.heath > 0:
         pygame.draw.rect(screen, (144, 23, 1), (self.rect.x - 10, self.rect.y - 5, self.heath // 2, 5))
     pygame.draw.rect(screen, (144, 23, 1), (self.rect.x - 10, self.rect.y - 5, 50, 5), 1)
     if self.heath <= 0:
         self.setSprite(load_image('kill.png', -1)[0], 1, 1)
         self.live = False
コード例 #9
0
ファイル: game.py プロジェクト: Kir-mus/game
def game():
    global cooldown, sp_mob, lvl, paused, timer, sound
    player, level_x, level_y = generate_level(lvl)
    weapon = Weapon(load_image('bow.png'), 1, 1, player)
    weapon_sp = []
    live_sp = []
    for mobs in sp_mob:
        weapon_sp.append(Weapon(load_image('bow.png'), 1, 1, mobs))
        live_sp.append(False)
    s = 3
    if level_x + level_y > 25:
        s = s + 1
    if level_x + level_y > 45:
        s = s + 2
    camera = Camera((level_x, level_y))
    # изменяем ракурс камеры
    mod = 'S'
    # обновляем положение всех спрайтов
    run = True
    isjampcaunt = 5
    jamp = False
    went_r = load_image('hero_r.png', -1)[0]
    stend = load_image('hero_proz.png', -1)[0]
    went_l = load_image('hero_l.png', -1)[0]
    went_beak = load_image('hero_beak.png', -1)[0]
    went_lic = load_image('hero_lic.png', -1)[0]
    hold_left = True
    inventory.increase('sword')
    inventory.increase('weapon_1')
    inventory.increase('bow')
    inventory.increase('shell')
    button = Button(100, 30)
    all_btn_bulets = []
    live = len(live_sp)
    CorrentTime = time.time()
    pygame.mixer.music.load('data/muzlome_tartalo_musi.ogg')
    pygame.mixer.music.play(-1)
    pygame.mixer.music.set_volume(0.2)
    while run:
        timers = time.time() - CorrentTime
        if player.heath <= 0:
            pygame.mixer.music.stop()
            dead()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                terminate()
            key = pygame.key.get_pressed()
            if key[pygame.K_DOWN]:
                player.setSprite(went_lic, 3, 1)
                mod = 'D'
            if key[pygame.K_UP]:
                player.setSprite(went_beak, 3, 1)
                weapon.left = True
                weapon.trans = True
                mod = 'U'
            if key[pygame.K_RIGHT]:
                player.setSprite(went_r, 3, 1)
                mod = 'R'
            if key[pygame.K_LEFT]:
                player.setSprite(went_l, 3, 1)
                weapon.left = True
                weapon.trans = True
                mod = 'L'
            if key[pygame.K_ESCAPE]:
                mod = 'S'
                paused = True
                weapon.left = False
                player.setSprite(stend, 2, 1)
                pays()
            if event.type == pygame.KEYUP:
                if event.key == 274 or event.key == 275 or event.key == 276 or event.key == 273:
                    mod = 'S'
                if event.key == 274:    # down
                    player.setSprite(stend, 2, 1)
                if event.key == 275:    # raeth
                    player.setSprite(stend, 2, 1)
                if event.key == 276:    # left
                    weapon.trans = True
                    weapon.left = False
                    player.setSprite(stend, 2, 1)
                if event.key == 273:    # up
                    weapon.trans = True
                    weapon.left = False
                    player.setSprite(stend, 2, 1)
        keys = pygame.key.get_pressed()
        mouse = pygame.mouse.get_pos()
        click = pygame.mouse.get_pressed()
        if click[2] and not hold_left:
            inventory.set_start_cell(mouse[0], mouse[1])
            hold_left = True
        if hold_left and not click[2]:
            inventory.set_end_cell(mouse[0], mouse[1])
            hold_left = False
        if not jamp:
            if keys[pygame.K_SPACE]:
                weapon.trans = False
                jamp = True
        else:
            weapon.trans = False
            if isjampcaunt >= -5:
                if isjampcaunt < 0:
                    player.rect.top += (isjampcaunt ** 2) // 2
                else:
                    player.rect.top -= (isjampcaunt ** 2) // 2
                isjampcaunt -= 1
            else:
                jamp = False
                isjampcaunt = 5
        if player.heath <= 0:
            dead()
        if mod == 'S':
            pass
        if mod == 'L':
            player.rect.left -= s
            if pygame.sprite.spritecollideany(player, box_group):
                player.rect.left += s
        if mod == 'R':
            player.rect.left += s
            if pygame.sprite.spritecollideany(player, box_group):
                player.rect.left -= s
        if mod == 'D':
            player.rect.top += s
            if pygame.sprite.spritecollideany(player, box_group):
                player.rect.top -= s
        if mod == 'U':
            player.rect.top -= s
            if pygame.sprite.spritecollideany(player, box_group):
                player.rect.top += s
        for i in range(len(sp_mob)):
            if sp_mob[i].heath > 0:
                if pygame.sprite.spritecollideany(sp_mob[i], bullet_group):
                    sp_mob[i].heath -= 25
                if pygame.sprite.spritecollideany(sp_mob[i], box_group):
                    sp_mob[i].f = False
                if pygame.sprite.spritecollideany(sp_mob[i], player_group):
                    sp_mob[i].f = False
                if not pygame.sprite.spritecollideany(sp_mob[i], box_group):
                    sp_mob[i].f = True
                if pygame.sprite.spritecollideany(player, bullet_group_mob) and not player.block:
                    player.heath -= 10
                sp_mob[i].shoot(weapon_sp[i], player)
                for bullet in bullet_group_mob:
                    if pygame.sprite.spritecollideany(bullet, player_group) or \
                            pygame.sprite.spritecollideany(bullet, box_group) or not bullet.f:
                        bullet_group_mob.remove(bullet)
            elif sp_mob[i].heath <= 0 and not live_sp[i]:
                live_sp[i] = True
                if live_sp[i]:
                    live -= 1
                    if live == 0:
                        win()
        click = pygame.mouse.get_pressed()
        mouse = pygame.mouse.get_pos()
        if not cooldown:
            if click[0]:
                player.shoot(weapon, mouse[0], mouse[1])
                cooldown = 30
        else:
            cooldown -= 1
            print_text('cooldown - ' + str(cooldown // 10), 150, 150 - 50, (50, 50, 1))
        camera.update(player)
        for sprite in all_sprites:
            camera.apply(sprite)
        screen.fill(pygame.Color('white'))
        tiles_group.draw(screen)
        hellca_group.draw(screen)
        player_group.draw(screen)
        weapon_group.draw(screen)
        box_group.draw(screen)
        mob_group.draw(screen)
        bullet_group.draw(screen)
        bullet_group_mob.draw(screen)
        inventory.draw_panel()
        if keys[pygame.K_LSHIFT]:
            player.stamin -= 1
            if player.stamin > 0:
                s = 10
            else:
                s = 5
        else:
            s = 5
            player.stamin += 0.4
        if keys[pygame.K_TAB]:
            inventory.draw_whole()
        if keys[pygame.K_1]:
            try:
                weapon.setSprite(load_image(inventory.inventory_panel[0].name + '.png'), 1, 1)
            except AttributeError:
                pass
        if keys[pygame.K_2]:
            try:
                weapon.setSprite(load_image(inventory.inventory_panel[1].name + '.png'), 1, 1)
            except AttributeError:
                pass
        if keys[pygame.K_3]:
            try:
                weapon.setSprite(load_image(inventory.inventory_panel[2].name + '.png'), 1, 1)
            except AttributeError:
                pass
        if keys[pygame.K_4]:
            try:
                weapon.setSprite(load_image(inventory.inventory_panel[3].name + '.png'), 1, 1)
            except AttributeError:
                pass
        if keys[pygame.K_5]:
            try:
                weapon.setSprite(load_image(inventory.inventory_panel[4].name + '.png'), 1, 1)
            except AttributeError:
                pass
        for hellca in hellca_group:
            if pygame.sprite.spritecollideany(hellca, player_group):
                player.heath += 10
                hellca_group.remove(hellca)
        for bullet in all_btn_bulets:
            if not bullet.move():
                all_btn_bulets.remove(bullet)
        for bullet in bullet_group:
            if pygame.sprite.spritecollideany(bullet, mob_group) or\
                    pygame.sprite.spritecollideany(bullet, box_group) or not bullet.f:
                bullet_group.remove(bullet)
        button.draw(5, 110, 'quit', start_screen)
        tm_sp = str(timers).split('.')
        print_text('Time  ' + tm_sp[0] + ' :' + tm_sp[1][:2], 1007, 0, (200, 200, 50), 45)
        all_sprites.update()
        pygame.display.flip()
        clock.tick(80)
    pygame.quit()