python快速编程入门第13章-python编程从入门到实践第13章 - 外星人

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值