importpygameimportsysfrom pygame.sprite importSpritefrom pygame.sprite importGroupclassSettings():def __init__(self):
self.screen_width= 1200self.screen_height= 800self.bg_color= (255,255,255)
self.qianbenying_speed_factor= 1
classQianbenying(Sprite):def __init__(self,settings,screen):
super(Qianbenying,self).__init__()
self.screen=screen
self.settings=settings
self.image= pygame.image.load('qianbenying.bmp')
self.rect=self.image.get_rect()
self.rect.y=self.rect.height
self.rect.x=self.rect.width
self.qianbenying_speed_factor= 1self.x=float(self.rect.x)
self.y=float(self.rect.y)defupdate(self):'''向下移动子弹'''self.y+=self.qianbenying_speed_factor
self.rect.y=self.ydefblitme(self):
self.screen.blit(self.image,self.rect)defget_number_qianbenyings_x(settings, qianbenying_width):
available_space_x=settings.screen_width - qianbenying_width * 2number_qianbenyings_x= int(available_space_x / (2 *qianbenying_width))returnnumber_qianbenyings_xdefget_number_rows(settings, qianbenying_height):
available_space_y= (settings.screen_height -qianbenying_height )
number_rows= int(available_space_y / (2 *qianbenying_height))returnnumber_rowsdefcreate_qianbenying(settings, screen, qianbenyings,
qianbenying_number, row_number):
qianbenying=Qianbenying(settings, screen)
qianbenying_width=qianbenying.rect.width
qianbenying.x= (qianbenying_width + 2 * qianbenying_width *qianbenying_number)
qianbenying.rect.x=qianbenying.x
qianbenying.rect.y= qianbenying.rect.height + (2 *qianbenying.rect.height *row_number)
qianbenyings.add(qianbenying)defcreate_qianbenying_fleet(settings, screen, qianbenyings):
qianbenying=Qianbenying(settings, screen)
number_qianbenyings_x=get_number_qianbenyings_x(settings,qianbenying.rect.width)
number_rows=get_number_rows(settings, qianbenying.rect.height)for row_number inrange(number_rows):for qianbenying_number inrange(number_qianbenyings_x):
create_qianbenying(settings, screen, qianbenyings, qianbenying_number, row_number)defupdate_qianbenyings(settings,qianbenyings):
qianbenyings.update()for qianbenying inqianbenyings.copy():if qianbenying.rect.top >=settings.screen_height:
qianbenyings.remove(qianbenying)defrunq():
pygame.init()
settings=Settings()
screen=pygame.display.set_mode((settings.screen_width,settings.screen_height))#游戏窗口标题
pygame.display.set_caption("千本樱景严")#创建一艘飞船,一个子弹编组和一个外星人编组
qianbenyings=Group()#创建外星人群
create_qianbenying_fleet(settings,screen,qianbenyings)#设置背景色
#开始游戏的主循环
whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:
sys.exit()
screen.fill(settings.bg_color)
qianbenyings.draw(screen)
update_qianbenyings(settings,qianbenyings)
pygame.display.flip()
runq()