здравствуйте, помогите пожалуйста чучуть оптимизировать код, он работает как надо, но мне не нравится что в нем два раза прописана библиотека pygame, как можно избавиться от 'import pygame' и сделать все через 'from pygame import *'?
Python:
from pygame import *
import pygame
import random
import time
import math
win_width = 1650
win_height = 950
display.set_caption('Waiting for sunrise')
window = display.set_mode((win_width, win_height))
background = transform.scale(image.load('background.png'), (win_width, win_height))
class GameSprite(sprite.Sprite):
def __init__(self, img, pos):
super().__init__()
self.image = transform.scale(image.load(img), (60, 60))
self.image.set_colorkey([0, 255, 255])
self.rect = self.image.get_rect()
def reset(self):
window.blit(self.image, (self.rect.x, self.rect.y))
class Player(GameSprite):
def __init__(self, img, pos, speed):
GameSprite.__init__(self, img, pos)
self.image = transform.scale(image.load(img), (60, 60))
self.image.set_colorkey([0, 255, 255])
self.rect = self.image.get_rect()
self.speed = speed
def update(self):
keys = key.get_pressed()
if keys[K_LEFT] and self.rect.x > 20:
self.rect.x -= self.speed
if keys[K_RIGHT] and self.rect.x < 1140:
self.rect.x += self.speed
if keys[K_UP] and self.rect.y > 20:
self.rect.y -= self.speed
if keys[K_DOWN] and self.rect.y < 870:
self.rect.y += self.speed
class Enemy(sprite.Sprite):
def __init__(self, img, pos, speed):
super().__init__()
self.image = transform.scale(image.load(img), (60, 60))
self.image.set_colorkey([0, 255, 255])
self.rect = self.image.get_rect()
self.speed = speed
self.pos = pygame.Vector2(pos[0], pos[1])
def Chassing(self, Player):
deltaVec = pygame.Vector2(Player.rect.center) - self.pos
len = deltaVec.length()
if len > 0:
self.pos += deltaVec/len * min(len, self.speed)
def update(self):
self.rect.center = (int(round(self.pos.x)), int(round(self.pos.y)))
window.blit(self.image, self.rect)
all_sprites_list = pygame.sprite.Group()
player = Player('q.png', [350, 350], 5)
player.rect.x = 960
player.rect.y = 505
all_sprites_list.add(player)
clock = pygame.time.Clock()
enemy_list = []
enemy_rad = 15
enemy_dist = (200, 900)
next_enemy_time = 1000
game = True
while game:
window.blit(background,(0, 0))
player.reset()
player.update()
for i in event.get():
if i.type == QUIT:
game = False
current_time = pygame.time.get_ticks()
if current_time > next_enemy_time:
next_enemy_time = current_time + 2000
on_screen_rect = pygame.Rect(enemy_rad, enemy_rad, win_width-2*enemy_rad, win_height-2*enemy_rad)
enemy_pos = (-1, -1)
while not on_screen_rect.collidepoint(enemy_pos):
dist = random.randint(*enemy_dist)
angle = random.random() * math.pi * 2
p_pos = (player.rect.centerx, player.rect.centery)
enemy_pos = (p_pos[0] + dist * math.sin(angle), p_pos[1] + dist * math.cos(angle))
new_pos = (random.randrange(0, win_width), random.randrange(0, win_height))
new_enemy = Enemy('k.png', enemy_pos, 2.75)
enemy_list.append(new_enemy)
for enemy in enemy_list:
enemy.Chassing(player)
window.blit(player.image,player.rect)
for enemy in enemy_list:
enemy.update()
pygame.display.flip()