大家好,综合小编来为大家讲解下微信飞机,如何自己制作微信打飞机游戏PC版这个很多人还不知道,现在让我们一起来看看吧!
第一步是显示背景。
我们先来展示一下飞机大战游戏的背景。
1#-*-编码:utf-8-*-23从pygame.locals导入pygame4从sys导入*5导入exit67SCREEN_WIDTH=4808SCREEN_HEIGHT=800910#初始化游戏11pygame.init()12SCREEN=pygame.display.set_mode((SCREEN_WIDTH,Screen_height))13pygame。展示。set_caption('飞机大战')1415#加载背景图16background=pygame.image.Load('resources/image/background.png')。1718whileTrue:19#绘制背景20screen.fill(0)21screen.blit(background,(0,0))2223#更新屏幕24pygame.display.update()2526#处理pygame.event.get()中事件的游戏出口27:28if事件。type==pygame.quit:29pygame.quit()30exit()我们来分析一下这段代码:
导入Pygame库和所需库;
根据设定的尺寸初始化游戏并生成游戏窗口;
加载背景图片;
进入游戏主循环。在主循环中,我们做了以下工作:
清空屏幕
绘制背景
更新屏幕
处理游戏退出事件
运行后,效果如下:
第二步,展示飞机。
我们打开资源/图片/发现所有的飞机都在shoot.png的图片里。我们在背景中显示的元素(包括飞机、子弹等。)都是Pygame里的一个面。这时候我们可以使用pygame提供的subface方法,先加载一个大图,然后调用subface方法选择其中的一小部分,生成一个新的面。而这个小图在大图中的位置是在image文件夹的shoot.pack文件中。
我们需要做的是将上述代码加载到背景图像后,加载平面图片,然后生成平面的surbsurface,初始化平面的起始位置:
1#加载飞机图片2plane_img=pygame.image.Load('resources/image/shoot.png')34#选择飞机在大图中的位置,生成子集,然后初始化飞机的起始位置5player_rect=pygame。Rect(0,99,102,126)6player=plane_img.subsurface(player_rect)7player_pos=[200,600]然后在主循环中画完背景后插入画平面的代码:
1#画飞机2screen.blit(player,player_pos)运行后将能看到玩家操作的战斗机:
第三步,让飞机动起来。
让飞机移动意味着让游戏在主循环中响应键盘事件。在上面的代码中,我们知道screen.blit(player,player_pos)绘制平面,这个player_pos就是在每个循环中绘制的平面的位置。在响应键盘事件时,我们只能通过改变这个位置来移动平面。将响应键盘事件的代码添加到主循环中:
1#监视器键盘事件2key_pressed=pygame.key.get_pressed()3ifkey_pressed[k_up]:4player_pos[1]-=35ifkey_pressed[k_down]:6player_pos[1]。=37ifkey_pressed[k_left]:8player_pos[0]-=39ifkey_pressed[k_right]:10player_pos[0]=3每按一次方向键,我们只需要改变一个飞机位置的坐标,就可以让飞机动起来~
这样我们就知道了制作一个2D游戏的基本原理:游戏进入主循环后,每个循环在响应的位置画一幅图,改变位置或图片就可以出现动画效果;然后通过判断两幅图片的矩形区域是否相交来检测碰撞。简单吧?
接下来的步骤包括显示子弹,随机生成敌机,检测碰撞,判断游戏结束,得分等等。我要介绍的这些,大家应该都能自己完成下一个任务了吧?
当然,玩家、子弹、敌机都可以写成一个类,继承pygame的鬼怪;雪碧类,实现一些动画效果,以及检测碰撞,这样使用起来更简单。给大家看一下我写的类代码:
1#子弹类2类子弹(py游戏。雪碧。sprite):3def__init__(self,bullet_img,init_pos):4py游戏。雪碧。雪碧。__init__(self)5self。image=Bullet_img6self。rect=self。形象。get_rect()7self。直肠。midbottom=init_pos8自我。速度=10910def移动(自身):11自身。直肠。top-=自我。速度1213#玩家类14类玩家(py游戏。雪碧。sprite):15def__init__(self,plane_img,player_rect,init_pos):16py游戏。雪碧。雪碧。__init__(self)17self。image=[]#用来存储玩家对象精灵图片的列表18为Iinrange(len(player_rect)):19self。形象。追加(plane_img。subsurface(player_rect[I]).convert_alpha())20self。rect=player_rect[0]#初始化图片所在的矩形21self.rect.topleft=init_pos#初始化矩形的左上角坐标22self.speed=8#初始化玩家速度,这里是一个确定的值23自我。子弹=py游戏。雪碧。group()#玩家飞机所发射的子弹的集合24self.img_index=0#玩家精灵图片索引25self.is_hit=False#玩家是否被击中2627defshoot(self,Bullet_img):28Bullet=Bullet(Bullet_img,self。直肠。midtop)29自我。子弹。加(bullet)3031def上移(self):32ifself。直肠。top=0:33自我。直肠。top=034else:35self。直肠。top-=自我。速度3637def下移(自身):38如果自身。直肠。top=屏幕_高度-自身。直肠。top=屏幕_高度-自身。直肠。身高40别人:41自己敌人类56级敌人(py游戏。雪碧。sprite):57def__init__(self,enemy_img,enemy_down_imgs,init_pos):58pygame。雪碧。雪碧。__init__(self)59self。image=敌人_img60自己。rect=self。形象。get_rect()61self。直肠。左上=init_pos62self。down_imgs=enemy_down_imgs63self。速度=264自我。down_index=06566defmove(自身):67自身。直肠。top=自我。速度目前我基本实现了玩家移动并发射子弹、随机生成小飞机、击中小飞机并爆炸、玩家被击毁、背景音乐及音效、游戏结束并显示分数这几项功能,已经是一个简单可玩的游戏,我把代码分享到了开源代码库上。感兴趣的同学可以去下载下来继续完成生成中飞机、大飞机,改变飞机速度,双排子弹和炸弹等功能GitHub.链接:PythonShootGame。
本文到此分享完毕,希望对大家有所帮助。