После создания групп для классов перестали отображаться пули. Pygame
Основной файл:
import random
from enemy import orange
from enemy import red
pygame.init()
width = 352
height = 380
win = pygame.display.set_mode((width, height))
pygame.display.set_caption("Testing...")
user = ""
bckg = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/background/Space.png")
plr = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/player/player_4px.png")
bul_pl = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/bullets/bul_pl.png")
org_shp_img = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/orange/org_3hp.png")
red_shp_img = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/red/red_2hp.png")
sht_on_org = 0
sht_on_red = 0
x_org3 = 120+76
y_org3 = 10
x_org2 = 120
y_org2 = 10
x_org = 16
y_org = 10
x_red = 92
y_red = 10
x = 0
y = 302
spd = 4
red_sh1 = red(x_red, y_red, sht_on_red, 22)
bullets_plr = []
org_ships = pygame.sprite.Group()
org_ships.add(orange(x_org, y_org, sht_on_org, 60))
#org_ships.add(orange(x_org2, y_org2, sht_on_org, 60), orange(x_org3, y_org3, sht_on_org, 60))
def str_gm():
global x, y, spd, x_org, y_org, x_bull, y_bull, end_for_org, end_for_red, org_shp_img, org_shp_0hp, org_shp_1hp, org_shp_2hp, org_shp_3hp, sht_on_org, red_shp_img, red_shp_0hp, red_shp_1hp, red_shp_2hp, sht_on_red, x_red, y_red, rdy_org, rdy_red, org_ships, sht, org_sh1, org_sh2, width, org_sh1, end_for_org_1, end_for_org_2, end_for_org_3
clock = pygame.time.Clock()
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
pressed_keys = pygame.key.get_pressed()
if pressed_keys[pygame.K_RIGHT]:
x+=spd
if pressed_keys[pygame.K_LEFT]:
x-=spd
if pressed_keys[pygame.K_SPACE]:
bullets_plr.append([x+16, 292])
bullts_pl()
if x >= 308:
x=308
if x <= 0:
x=0
win.blit(bckg, (0, 0))
for bullet in bullets_plr:
win.blit(bul_pl, pygame.Rect(bullet[0], bullet[1], 0, 0))
win.blit(plr, (x, y))
org_ships.update()
org_ships.draw(win)
#red_sh1.update()
#red_sh1.draw(win)
pygame.display.update()
def bullts_pl():
global x, y, spd, x_org, y_org, x_bull, y_bull, sht_on_org, spd_bull, x_red, y_red, sht_on_red, sht, go_to_two, bullets_plr
num = len(bullets_plr)
for a in range(len(bullets_plr)):
bullets_plr[a][1] -= 7
for bullet in bullets_plr[:]:
if bullet[1] < 0:
bullets_plr.remove(bullet)
# if bullet[0] >= org_sh1.rect[0]-5 and bullet[0] <= org_sh1.rect[0]+76 and bullet[1] <= 55:
# org_sh1.shot+=1
# if num > 0 and bullet in bullets_plr:
# bullets_plr.remove(bullet)
# if org_sh1.shot == 3:
# org_sh1.rect[0] = random.randint(16, 180)
# org_sh1.shot = 0
if num >= 2:
bullets_plr.remove(bullet)
str_gm()
Файл с классами:
import pygame
import random
user = ""
speed = 2
end_for_org = False
bullets_org = []
bullets_red = []
image_bull = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/bullets/bul_enm.png")
end_fr_org = False
class orange(pygame.sprite.Sprite):
def __init__(self, x, y, shot, y_bull):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/orange/org_3hp.png")
self.rect = self.image.get_rect(center=(x+38, y+38))
self.speed = speed
self.shot = shot
self.y_bull = y_bull
def update(self):
num = len(bullets_org)
for b in range(len(bullets_org)):
bullets_org[b][1] += 7
for bullet_org in bullets_org[:]:
if bullet_org[1] > 360:
bullets_org.remove(bullet_org)
bullets_org.append([self.rect.x, 22])
if self.shot == 3:
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/orange/org_0hp.png")
if self.shot == 2:
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/orange/org_1hp.png")
if self.shot == 1:
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/orange/org_2hp.png")
if self.shot == 0:
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/orange/org_3hp.png")
def draw(self, surf):
self.surf = surf
for bullet_org in bullets_org:
self.surf.blit(image_bull, pygame.Rect(bullet_org[0], bullet_org[1], 0, 0))
self.surf.blit(self.image, self.rect)
class red(pygame.sprite.Sprite):
def __init__(self, x, y, shot, y_bull):
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/red/red_2hp.png")
self.rect = self.image.get_rect(center=(x+38, y+38))
self.speed = speed
self.shot = shot
self.y_bull = y_bull
def update(self):
x_bull = self.rect.x
num = len(bullets_red)
for b in range(len(bullets_red)):
bullets_red[b][1] += 7
for bullet_red in bullets_red[:]:
if bullet_red[1] > 360:
bullets_red.remove(bullet_red)
bullets_red.append([x_bull+24, self.y_bull])
if num >= 2:
bullets_red.remove(bullet_red)
if self.shot == 2:
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/red/red_0hp.png")
if self.shot == 1:
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/red/red_1hp.png")
if self.shot == 0:
self.image = pygame.image.load("C:/Users/" + user + "/Desktop/game/assets/enemy/red/red_2hp.png")
def draw(self, surf):
self.surf = surf
for bullet_red in bullets_red:
self.surf.blit(image_bull, pygame.Rect(bullet_red[0], bullet_red[1], 0, 0))
self.surf.blit(self.image, self.rect)