Ich lerne Python und auch Pygame, und ich möchte wissen, warum die Kugeln nicht angezeigt wird, ich hart, dass möglicherweise die screen.update_screen()
stören kann, aber nein, das ist nicht der Fall Ich brauche Hilfe, um zu verstehen, wie Bullets in Python funktionieren, weil meine Methode offensichtlich nicht funktioniert, ich habe viele Methoden in anderen Posts gesehen, und sie benutzen eine begrenzte Menge von Kugeln um zu schießen (weiß nicht warum, in meinem Fall Ich möchte hinzufügen, dass die Kugeln, ich weiß, dass ich einen Entferner für die Suche nach einer "Bewegung" in der Anzeige hinzufügen muss, aber ich weiß nicht, wie, jede Hilfe wird geschätzt.Understanding & Making unendliche Kugeln in Pygame zu schießen
# -*- coding: utf-8 -*-
import pygame
class Screen(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
pygame.display.set_caption("Space Game")
self.screen_width = 800
self.screen_heigh = 600
self.picture = pygame.image.load("screen.png")
self.screen = pygame.display.set_mode((self.screen_width, self.screen_heigh))
def update_screen(self):
self.screen.blit(self.picture, (0, 0))
def update_obj(self, object):
self.screen.blit(object.picture, object.rect)
def update_shoot(self, object):
for y in range(object.rect.centery, 600, 10):
self.screen.blit(object.picture, (object.rect.centerx, object.rect.centery + y))
class Ship(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.picture = pygame.image.load("ship.png")
self.rect = self.picture.get_rect()
self.rect.centerx = 400
self.rect.centery = 500
class Bullet(pygame.sprite.Sprite):
def __init__(self, object):
pygame.sprite.Sprite.__init__(self)
self.picture = pygame.image.load("shoot.png")
self.rect = self.picture.get_rect()
self.rect.centerx = object.rect.centerx
self.rect.centery = (object.rect.centery + 25)
def main():
pygame.init()
done = False
clock = pygame.time.Clock()
screen = Screen()
ship = Ship()
bullet = Bullet(ship)
while not done:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ship.rect.centerx -= 5
if keys[pygame.K_RIGHT]:
ship.rect.centerx += 5
if keys[pygame.K_UP]:
ship.rect.centery -= 5
if keys[pygame.K_DOWN]:
ship.rect.centery += 5
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
done = True
if event.key == pygame.K_SPACE:
print ("shoot")
#for some weird reason the bullet doesn't display
screen.update_shoot(bullet)
screen.update_screen()
screen.update_obj(ship)
pygame.display.update()
clock.tick(10)
pygame.quit()
if __name__ == "__main__":
main()
dude ein lebensretter –
Mein Vergnügen! Sie müssen immer noch Code hinzufügen, um die Kugeln zu entfernen, wenn sie den Bildschirm verlassen, sonst wird Ihnen der Speicher ausgehen ... schließlich. ;) Prüfe einfach, ob ihre 'rect.y <0 'ist und rufe' self.kill() 'auf, um das Sprite zu beenden. – skrx