Python从入门到实践自己写的小程序中,按空格键无法显示子弹,y值也不动,但不会报错
实在找不到原因,恳请大佬帮忙
import sys
import pygame
from pygame.sprite import Sprite
from pygame.sprite import Group
class Me():
def __init__(self,screen):
self.screen = screen
self.image = pygame.image.load('images/86.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
self.rect.centerx = self.screen_rect.centerx
self.rect.centery = self.screen_rect.centery
def blitme(self):
self.screen.blit(self.image,self.rect)
class Bullet(Sprite):
def init(self,screen):
super().__init__()
self.screen = screen
w = 3
h = 15
self.rect = pygame.Rect(0,0,w,h)
self.rect.x = 50
self.rect.y = 20
self.color = (170,60,60)
self.y = float(self.rect.y)
def update(self):
self.y += 0.0005
self.rect.y = self.y
def draw_bullet(self):
pygame.draw.rect(self.screen,self.color,self.rect)
print(self.rect.y)
def keydown_event(event,screen,me,bullets):
#方法写错地方了,方法里套方法不行
if event.key == pygame.K_RIGHT:
me.rect.centerx += 5
elif event.key == pygame.K_LEFT:
me.rect.centerx -= 5
elif event.key == pygame.K_DOWN:
me.rect.centery += 5
elif event.key == pygame.K_UP:
me.rect.centery -= 5
elif event.key == pygame.K_SPACE:
new_bullet = Bullet(screen)
bullets.add(new_bullet)
for bullet in bullets.sprites():
bullet.draw_bullet()
def check_events(screen,me,bullets):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
keydown_event(event,screen,me,bullets)
def run_game():
pygame.init()
screen = pygame.display.set_mode((1200,600))
pygame.display.set_caption('me')
me = Me(screen)
bg_color = (255,255,255)
bullets = Group()
while True:
check_events(screen,me,bullets)
bullets.update()
screen.fill(bg_color)
me.blitme()
pygame.display.flip()
run_game()