Ich habe ein Spiel mit Python und Pygame gemacht. Mein Schiff bewegt sich, aber ich habe Probleme damit, Kugeln zu schießen. Ich habe eine Funktion namens shootBullets()
definiert, aber es funktioniert nicht. Und jetzt, wenn ich die Leertaste drücke, bewegt sich mein Schiff. Es soll sich nur bewegen, wenn ich die linke oder rechte Pfeiltaste drücke. Ich möchte, dass mein Schiff Kugeln nach unten schießt, wenn ich die Leertaste drücke. Hier ist mein Code:Warum schießt mein Schiff keine Kugeln?
import pygame,sys
from pygame.locals import *
pygame.init()
black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
bright_blue = (0, 135, 255)
yellow = (255,242,0)
ship_body = (33, 117, 243)
screen = pygame.display.set_mode((500,500))
pygame.display.set_caption("Battleship")
gameExit = False
background = pygame.image.load("Sky Background.png")
bulletImg = pygame.image.load("Bullet.png")
bulletY = 80
def shootBullets():
for event in pygame.event.get():
if event.type == KEYDOWN and event.key == K_SPACE:
bulletY += 5
screen.blit(bulletImg,(247,bulletY))
pygame.key.set_repeat(50,50)
ship_points = [ [100, 50], [180, 95], [320, 95], [400, 50], [250, 35] ]
x = 0
y = 0
while not gameExit:
for event in pygame.event.get():
if event.type == QUIT:
gameExit = True
if event.type == KEYDOWN:
if event.key == pygame.K_LEFT: x = -5
if event.key == pygame.K_RIGHT: x = 5
for point in ship_points:
point[0] += x
for point in ship_points:
if point[0] <= 0 or point[0] >= 500:
gameExit = True
shootBullets()
screen.fill(black)
screen.blit(background, (0,0))
ship = [
pygame.draw.polygon(screen, ship_body, ship_points),
pygame.draw.polygon(screen, black, ship_points, 1)]
pygame.display.update()
pygame.quit()
quit()
Du bist gerade nicht, ob Raum gedrückt wird oder nicht. Warum sollte der Weltraum dann Kugeln schießen? – syntonym
Ihre Zeile 'Punkt [0] + = x' wird ausgeführt, wenn _eine_ Taste gedrückt wird. "x" kann von vorherigen Schleifeniterationen übernommen werden. – khelwood