Ich wurschtel mich so durch und vieles in Python verstehe ich halt noch nicht, von Klassen habe ich bislang Abstand gehalten aber muss halt sein.
Hier verstehe ich nicht ganz wie ich praktisch dasselbe Sprite bzw. Group mehrfach auf dem Bildschirm ausgeben kann ohne immer neue Zuweisungen anzulegen.
Code: Alles auswählen
import pygame
import random
from pygame.locals import *
# GLOBAL VARIABLES
COLOR = (255, 100, 98)
SURFACE_COLOR = (50, 50, 50)
WIDTH = 500
HEIGHT = 500
# Object class
class Sprite(pygame.sprite.Sprite):
def __init__(self, color, height, width):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(SURFACE_COLOR)
self.image.set_colorkey(COLOR)
pygame.draw.rect(self.image,color,pygame.Rect(0, 0, width, height))
self.rect = self.image.get_rect()
pygame.init()
RED = (255, 0, 0)
x_move = 0
size = (WIDTH, HEIGHT)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Creating Sprite")
all_sprites_list = pygame.sprite.Group()
object_ = Sprite(RED, 20, 30)
object_.rect.x = 200
object_.rect.y = 300
all_sprites_list.add(object_)
exit = True
clock = pygame.time.Clock()
while exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit = False
if event.type == pygame.KEYDOWN:
if event.key == ord('q'):
pygame.quit()
if event.key == pygame.K_LEFT or event.key == ord('d'):
object_.rect.x += 4
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == ord('d'):
object_.rect.x += 0
all_sprites_list.update()
screen.fill(SURFACE_COLOR)
all_sprites_list.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Code: Alles auswählen
all_sprites_list2 = pygame.sprite.Group()
object_2 = Sprite(RED, 20, 30)
object_2.rect.x = 250
object_2.rect.y = 350
all_sprites_list.add2(object_2)