Помогите с библиотекой Pygame!

Ivan_developer

Новичок
Пользователь
Мар 30, 2022
1
0
1
Здравствуйте, помогите, пожалуйста начинающему разработчику с библиотекой pygame:

При создании кода необходимо сделать несколько несколько спрайтов одного типа, смотрел уроки, но не помогло.
Прикрепляю свой код:

Python:
import pygame
import random

#генерация
from random import randint

generation_x = randint(0,600)
generation_y = randint(0,600)

print(generation_x)
print(generation_y)
 
FPS=60
FLOOR=(184,134,11)
FLOOR_2=(205,133,63)
BLACK=(0,0,0)
WIDTH=600
HEIGHT=600
RED = (255, 0, 0)
GRAY=(128,128,128)

pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode((WIDTH , HEIGHT))
pygame.display.set_caption("SECRET")
clock = pygame.time.Clock()


class player (pygame.sprite.Sprite):
    def __init__(self):
        
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.Surface((50,50))
        self.image.fill(FLOOR_2)
        self.rect=self.image.get_rect()
        self.rect.center=(WIDTH/2,HEIGHT/2)
    

        
        

class wall_1(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.Surface((20,200))
        self.image.fill(GRAY)
        self.rect=self.image.get_rect()
        self.rect.center=(generation_x,generation_y)
    def update(self):
        self.speedx = 0
        self.speedy = 0
        a=0

        
            
        keystate = pygame.key.get_pressed()

        if keystate[pygame.K_z]:
            a=2

        
        if keystate[pygame.K_LEFT]:
            self.speedx = +(2+a)
        if keystate[pygame.K_RIGHT]:
            self.speedx = -(2+a)

        if keystate[pygame.K_UP]:
            self.speedy = +(2+a)
        if keystate[pygame.K_DOWN]:
            self.speedy = -(2+a)

        self.rect.x += self.speedx               
        self.rect.y += self.speedy
        
            #столкновение с верхом игрока
        if self.rect.top < 90:
            
            if self.rect.bottom > 275 and self.rect.right > 277 and self.rect.left < 323   :
                self.rect.bottom = (player.rect.top)
        
        
            #столкновение с низом игрока
        if self.rect.bottom > 500:
            
            
            if self.rect.top < 325 and self.rect.right > 277 and self.rect.left < 323   :
                self.rect.top = (player.rect.bottom)
        

            #столкновение с левой гранью игрока
        if self.rect.left < 275:
            
            if self.rect.right > 275 and self.rect.top < 325 and self.rect.bottom > 275 :
                self.rect.right = (player.rect.left)

            #столкновение с правой гранью игрока
      
        if self.rect.right > 335:
            
            if self.rect.left < 345 and self.rect.top < 325 and self.rect.bottom > 275 :
                self.rect.left = (player.rect.right)
            







wall_sprites = pygame.sprite.Group()
all_sprites = pygame.sprite.Group()
walls = pygame.sprite.Group()

player = player()
all_sprites.add(player)


for i in range(8):
    w = wall_1()
    wall_sprites.add(w)
    walls.add(w)


    

    

running=True
while running:
    clock.tick(FPS)
    wall_sprites.update()
    
    for event in pygame.event.get():


        
      

        
        if event.type == pygame.QUIT:
            running = False



    screen.fill(FLOOR)
    all_sprites.draw(screen)
    wall_sprites.draw(screen)
    pygame.display.flip()
    
pygame.quit()

мне нужен вывод нескольких спрайтов класса wall_1 на экран, помогите, ко знает!
Заранее спасибо!
 
Последнее редактирование:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
Вставь пожалуйста код как код
1647162378032-png.1702
 

Форум IT Специалистов