介绍
使用python制作一个飞机大战游戏?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
具体内容如下
import gc import 随机 import pygame #,玩家飞机精灵类 import 常量 class HeroPlane (pygame.sprite.Sprite): ,def __init__(自我,屏幕): #,才能调用父类初始化方法 #,才能pygame.sprite.Sprite.__init__(自我) 超级才能(). __init__ () #才能,窗口 时间=self.screen 才能;屏幕上 #才能,一个玩家飞机图片 self.image 才能=,pygame.image.load (& # 39;。/feiji feiji.png& # 39;) #,才能飞机矩形区域对象 时间=self.rect 才能;self.image.get_rect () #才能,左上角坐标 self.rect.topleft 才能=,(512,,2,安康;116年,/,2,600] #,才能飞机的速度 self.speed 才能=15 #才能,一个精灵组,存放所有的子弹精灵 时间=self.bullets 才能;pygame.sprite.Group () #才能,血量,初始100年 self.blood_value 才能=100 #,才能标记玩家飞机是否了 self.is_remove 才能=False #,才能显示爆炸图片的,索引,从0开始 self.mIndex 才能=0 #,才能存放爆炸图片,的列的表 时间=self.bomb_mImages 才能;[] for 才能;v 拷贝范围(1,15): ,,#,把所有图片,存到列表里,每个图片,存2次 ,,self.bomb_mImages.append (pygame.image.load (& # 39;。/feiji/image & # 39;, +, str (v), +, & # 39; . png # 39;)) ,,self.bomb_mImages.append (pygame.image.load (& # 39;。/feiji/image & # 39;, +, str (v), +, & # 39; . png # 39;)) ,def kill_blood(自我,,kill_value=https://www.yisu.com/zixun/10): ””“血量减少”“” 自我。blood_value -=kill_value 打印(“被打中了血,量还剩% s的% self.blood_value) 如果自我。blood_value <=0: #避免血量负值 自我。blood_value=0 #血量<=0设置is_remove为真实的 自我。is_remove=True def key_control(自我): ”“按键监听操作飞机上下左右和发子弹“”“ #监听键盘事件 key_pressed=pygame.key.get_pressed() #注意这种方式是能够检测到一直按下不松开的键盘 如果key_pressed pygame。K_w]或key_pressed [pygame.K_UP]: #最值如果小于0就到了最顶部不要再移动了 如果self.rect。顶部> 3: self.rect。最高-=self.speed 如果key_pressed pygame。K_s]或key_pressed [pygame.K_DOWN]: 如果self.rect。底<=768: self.rect。底+=self.speed 如果key_pressed pygame。K_a]或key_pressed [pygame.K_LEFT]: 如果self.rect。左> 0: self.rect。左-=self.speed 如果key_pressed pygame。K_d]或key_pressed [pygame.K_RIGHT]: 如果self.rect。对<520: self.rect。正确的+=self.speed 如果key_pressed (pygame.K_SPACE): #打印(“空间”) #创建三个子弹 bullet1=子弹(自我。屏幕,self.rect。离开了,self.rect。,1) bullet2=子弹(自我。屏幕,self.rect。离开了,self.rect。,2) bullet3=子弹(自我。屏幕,self.rect。离开了,self.rect。,3) #添加到精灵组 self.bullets。添加(bullet1 bullet2 bullet3) def炸弹(自我): 打印('玩家飞机爆炸中”) ”““显示爆炸图片”“ self.screen.blit (self.bomb_mImages[自我。mIndex], self.rect) 自我。mIndex +=1 打印(mIndex, self.mIndex) 如果自我。mIndex>=len (self.bomb_mImages): #播放到了最后爆炸结束返回现实 还真 def(自我更新): 如果self.is_remove: 打印('玩家飞机挂掉的) #如果玩家飞机挂掉 如果self.bomb (): #爆炸结束 打印(“爆炸结束”) self.rect。topleft=(-200、-200) #开启倒计时 pygame.time.set_timer(常量。game_over_id, 1000) #把玩家飞机指向没有停止更新 经理。英雄=没有 其他: self.key_control () self.display () def显示(自我): #如果自我。blood_value <=0: # #如果血量小于0移出窗口 # self.rect。topleft=(-200、-200) #把飞机显示到窗口上飞机116 * 100 self.screen.blit(自我。形象,self.rect) #更新精灵组里的子弹位置 self.bullets.update () #精灵组所有子弹显示到窗口 self.bullets.draw (self.screen) 类子弹(pygame.sprite.Sprite): # path_num表示散弹中子弹是哪一个 def __init__(自我、屏幕在内,planey path_num): #调用父类初始化方法 # pygame.sprite.Sprite.__init__(自我) super () . __init__ () #窗口 自我。屏幕=屏幕 #一个子弹图片 自我。形象=pygame.image.load (“。/feiji/bullet_12.png”) #子弹矩形区域对象 自我。矩形=self.image.get_rect () #子弹左上角坐标 self.rect。topleft=[在内+ 48,planey - 20) #子弹的速度 自我。速度=15 # path_num表示散弹中子弹是哪一个 自我。path_num=path_num def(自我更新): ””“修改子弹坐标”“ self.rect。最高-=self.speed 如果self.rect。底使用python制作一个飞机大战游戏