Ich spiele mit Python und versuche, ein (sehr) einfaches Spiel mit Space Invaders zu schreiben - aber meine Bullet-Sprites werden nicht gezeichnet. Ich benutze im Moment die gleiche Grafik für alles - ich werde die Grafik verschönern, sobald alles andere funktioniert. Das ist mein Code:Pygame-Sprites werden nicht gezeichnet
# !/usr/bin/python
import pygame
bulletDelay = 40
class Bullet(object):
def __init__(self, xpos, ypos, filename):
self.image = pygame.image.load(filename)
self.rect = self.image.get_rect()
self.x = xpos
self.y = ypos
def draw(self, surface):
surface.blit(self.image, (self.x, self.y))
class Player(object):
def __init__(self, screen):
self.image = pygame.image.load("spaceship.bmp") # load the spaceship image
self.rect = self.image.get_rect() # get the size of the spaceship
size = screen.get_rect()
self.x = (size.width * 0.5) - (self.rect.width * 0.5) # draw the spaceship in the horizontal middle
self.y = size.height - self.rect.height # draw the spaceship at the bottom
def current_position(self):
return self.x
def draw(self, surface):
surface.blit(self.image, (self.x, self.y)) # blit to the player position
pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()
player = Player(screen) # create the player sprite
missiles = [] # create missile array
running = True
counter = bulletDelay
while running: # the event loop
counter=counter+1
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
key = pygame.key.get_pressed()
dist = 1 # distance moved for each key press
if key[pygame.K_RIGHT]: # right key
player.x += dist
elif key[pygame.K_LEFT]: # left key
player.x -= dist
elif key[pygame.K_SPACE]: # fire key
if counter > bulletDelay:
missiles.append(Bullet(player.current_position(),1,"spaceship.bmp"))
counter=0
for m in missiles:
if m.y < (screen.get_rect()).height and m.y > 0:
m.draw(screen)
m.y += 1
else:
missiles.pop(0)
screen.fill((255, 255, 255)) # fill the screen with white
player.draw(screen) # draw the spaceship to the screen
pygame.display.update() # update the screen
clock.tick(40)
Hat jemand irgendwelche Vorschläge, warum meine Kugeln nicht gezogen werden?
Daumen drücken, dass Sie helfen können, und vielen Dank im Voraus.
Aww, verdammt. Ich war zu lange auf. Das ist wirklich ein doozy von einem braunen Papierbeutelfehler. Ich danke dir sehr. Ich werde gehen und mich selbst schlagen und dann einen Kaffee trinken. – headbanger