飞机大战无法运行,不知道错误在哪?
这是主程序
import sys
import pygame
from rocket import Rocket
from zidan import Zidan
class Game:
def __init__(self):
pygame.init()
#设置游戏窗口大小
self.screen = pygame.display.set_mode((1200,800))
#设置游戏窗口名称
self.screen_name = pygame.display.set_caption("开始游戏")
#设置游戏窗口背景
self.bj_color = (255,255,255)
#设置Rocket实例
self.rocket=Rocket(self)
#创建用于存储子弹的编组
self.zidans=pygame.sprite.Group()
#self.zidan=Zidan(self)
#游戏主循环
def run_game(self):
while True:
self._update_key_event()
#self.rocket.hua()
self.zidans.move_zidan()
self._update_screen()
self.rocket.move()
def _update_key_event(self):
#更新按键状态
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
self._check_keydown_event(event)
elif event.type == pygame.KEYUP:
self._check_keyup_event(event)
def _check_keydown_event(self, event):
#按键按下
if event.key == pygame.K_q:
sys.exit()
elif event.key == pygame.K_SPACE:
new_zidan = Zidan(self)
self.zidans.add(new_zidan)
elif event.key == pygame.K_LEFT:
self.rocket.move_left = True
elif event.key == pygame.K_RIGHT:
self.rocket.move_right = True
def _check_keyup_event(self,event):
# 按键抬起
if event.key == pygame.K_LEFT:
self.rocket.move_left = False
if event.key == pygame.K_RIGHT:
self.rocket.move_right = False
def _update_screen(self):
#更新屏幕状态
self.screen.fill(self.bj_color)
self.zidans.move_zidan()
for zhidan in self.zidans.sprites():
zhidan.hua_zidan()
print(len(self.zidans))
pygame.display.flip()
if __name__ == "__main__":
a=Game()
a.run_game()
import pygame
class Rocket:
def __init__(self,shili):
self.screen=shili.screen
self.screen_rect=shili.screen.get_rect()
self.image=pygame.image.load("images/arm1.bmp")
self.image_rect=self.image.get_rect()
self.image_rect.midbottom=self.screen_rect.midbottom
self.move_right=False
self.move_left=False
def hua(self):
self.screen.blit(self.image,self.image_rect)
def move(self):
if self.move_right and self.image_rect.right<=self.screen_rect.right:
self.image_rect.x+=1
if self.move_left and self.image_rect.left>=0:
self.image_rect.x-=1
```python
import pygame
from pygame.sprite import Sprite
class Zidan(Sprite):
def __init__(self,shili):
super().__init__()
self.zd_color=(255,0,0)
self.zd_height=15
self.zd_width=3
self.screen = shili.screen
self.zidan_rect=pygame.Rect(0,0,self.zd_width,self.zd_height)
self.zidan_rect.midtop=shili.rocket.image_rect.midtop
self.y = float(self.zidan_rect.y)
def move_zidan(self):
self.y-=1
self.zidan_rect.y=self.y
def hua_zidan(self):
pygame.draw.rect(self.screen,self.zd_color,self.zidan_rect)
不是空行的问题呀,出现的是这个错误
pygame 2.1.2 (SDL 2.0.18, Python 3.8.10)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "C:\Users\xcz000\PycharmProjects\pythonProject\game.py", line 73, in <module>
a.run_game()
File "C:\Users\xcz000\PycharmProjects\pythonProject\game.py", line 27, in run_game
self.zidans.move_zidan()
AttributeError: 'Group' object has no attribute 'move_zidan'