pygame.init()
screen=pygame.display.set_mode((452,798),0,32)
pygame.display.set_caption('Hello, World!')
background=pygame.image.load('back.png').convert()
plane=Plane()
bullets=[] #创建子弹的list
for i in range(5):
bullets.append(Bullet())
count_b=len(bullets) #子弹总数
index_b=0 #即将激活的子弹序号
interval_b=0 #发射子弹的间隔
enemise=[] #创建5个Enemy的对象,把它们添加到一个叫做enemies的list中
for i in range(5):
enemise.append(Enemy())
gameover=False
score=0 #分数
font=pygame.font.Font(None,32) #创建一个font对象,None表示使用默认字体,32是字号
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
exit()
if gameover and event.type==pygame.MOUSEBUTTONUP:#重置游戏
plane.restart()
for e in enemise:
e.restart()
for b in bullets:
b.active=False
score=0
gameover=False
screen.blit(background,(0,0))
if not gameover: #当gameover为False的时候,游戏逻辑才正常运行
interval_b-=1 #发射间隔递减
if interval_b<0:
bullets[index_b].restart()
interval_b=200 #重置间隔时间
index_b=(index_b+1)%count_b#子弹序号周期性递增
for b in bullets:
if b.active:
for e in enemise:
if checkHit(e,b):
score+=100
b.move()
screen.blit(b.image,(b.x,b.y))
for e in enemise:
if checkCrash(e,plane): #如果撞上敌机,设gameover为True
gameover=True
e.move()
screen.blit(e.image,(e.x,e.y))
plane.move() #检测本体的运动
screen.blit(plane.image,(plane.x,plane.y))
text=font.render("Score: %d" % score,1,(0,0,0))
screen.blit(text,(0,0)) #(0,0)是屏幕左上角的位置
else:
text=font.render("Score: %d" % score,1,(0,0,0))
screen.blit(text,(180,383)) #屏幕中央显示分数
pass
pygame.display.update() #刷新一下画面 作者: crossin先生 时间: 2018-5-2 23:30
这种情况一般问题在 checkHit
把相关数值输出来检查,或者如果能画个方块出来就更直观了作者: leopotter6 时间: 2018-5-4 10:08