教你用Python实现经典游戏《小蜜蜂》
估计很多老玩家在小时候都玩过Galaxian(小蜜蜂)吧。这款射击游戏的鼻祖叫《太空侵略者》,上手简单,但可玩性很强。
《太空侵略者》大火之后,新推出的Galaxian(小蜜蜂)于1979年成为其最大竞争对手。由Namco发行的Galaxian为外星敌人提供了新的色彩和不可预测的动作,后者不但会发射炮弹,还会自杀式俯冲攻击。
《Galaxian》在街机游戏中大受欢迎,以至于Namco在两年后又发布了续作《Galaga》——这款游戏使攻击模式更加复杂。
很难说《Galaxian》究竟有多少移植和克隆的版本,因为几乎每个家用游戏机上都有类似版本。
玩家在《Galaxian》中的角色与《太空侵略者》类似,驾驶一艘飞船与一支外星舰队战斗。
与《太空侵略者》不同的是,在《Galaxian》中,外星人总会打破队形向玩家的飞船发起俯冲轰炸。
玩家需要摧毁所有敌人,然后进入下一关。随着玩家的推进,一波又一波的敌人将让过关变得更加困难。
我们这里将着眼于外星人的俯冲机制,用Pygame Zero开发《Galaxian》游戏的核心功能。
首先,《Galaxian》拥有一个纵向显示画面,所以我们将游戏区域的宽度和高度分别设置为600和800。
接下来,我们可以用位图创建一个滚动的星空背景。将位图逐渐往屏幕下方移动,用第二颗恒星来填充第一颗恒星向下滚动时留下的空间,我们还可以在后面添加另一个静态背景图像,这将提供一些视野深度。
然后,我们将玩家的飞船设置为Actor。并在update()函数中捕获左右箭头键,以便在屏幕上左右移动飞船。我们也可以用空格键发射子弹,子弹会沿屏幕向上移动,直到击中外星人或离开屏幕顶部。
和原版《Galaxian》一样,你一次只能发射一颗炮弹,所以我们只需要一个Actor。
外星人排成一行,一起在屏幕上左右移动。在这个例子中,我们只画一种类型的外星人,共画两行。你可以添加额外的类型和任意多行。当我们创建alien Actors时,我们还可以添加一个状态标志,我们需要确定当它们打破队形时,它们在行的哪一边,两边朝相反的方向飞行。在这种情况下,每行左边有4个外星人,右边有4个。
一旦它们在列表中建立起来,我们就可以在每次更新时遍历列表,并向前或向后移动它们。
当我们在移动外星人时,我们也可以查看它们是否与炮弹或玩家飞船相撞。
如果与炮弹碰撞,那么外星人将使用状态标志连续播放爆炸的那几帧,当状态达到5时,它们将不再被绘制到界面上。
如果碰撞发生在玩家的飞船身上,那么玩家会死亡,游戏也就结束了。
我们也可以检查一个随机数,看看外星人是否开始轰炸。如果是,我们将状态设置为1,这将开始调用flyAlien()函数。这个函数会检查外星人的位置,并根据侧边的不同改变外星人的角度,然后根据角度更改x和y坐标。为了方便大家看明白,我们这里处理的比较简单,你也可以使用一些乘数变量将其折叠到x坐标和角度上,将其收窄。
相关代码:
Python_game/source-code-galaxian at master · IoToutpost/Python_game · GitHub
要运行调试请先安装Pygame Zero。
该框架是一个基于Pygame的游戏编程框架。它可以更容易地编辑游戏,无需模板、不用编写事件循环,也无需学习复杂的Pygame API,而且支持树莓派。
安装:
pip install pgzero
PS:若要全面系统学习Pygame Zero可以参考《趣学Python游戏编程》一书,该书通过十个经典游戏案例,深入浅出地介绍了游戏编程的基本原理,以及Pygame Zero的具体使用方法。相信学完这本书后你也能开发出如此精彩的小游戏。
教你用Python实现经典游戏《小蜜蜂》相关推荐
- 教你用Python实现经典游戏《泡泡龙》
<泡泡龙>于1986年发布,看起来与当时街机上的任何其他游戏都不一样.这是一款合作游戏,由大藤光二(Fukio Mitsuji)设计,由两名玩家控制一对龙Bub和Bob,并吹泡泡诱捕敌人, ...
- 教你用Python实现经典游戏《弹珠台》
弹球游戏如此之多,以至于它本身已经成为一种类型.弹球起源于一种模拟街机,一个金属球将被发射到一个倾斜的游戏区域,并在障碍物之间弹跳.玩家通过按下机器两侧的按钮来操作一对脚蹼,从而将球击回比赛区域,击中 ...
- 12岁的少年教你用Python做小游戏
首页 资讯 文章 频道 资源 小组 相亲 登录 注册 首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 -首页最新文章经典回顾开发- Web前端- Py ...
- 一分钟教你学会python_十分钟教你学会python编写小游戏
原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...
- python 儿童 游戏_少儿编程分享:手把手教你用Python编写战斗机游戏(完)
原标题:少儿编程分享:手把手教你用Python编写战斗机游戏(完) 加入图像 现在我们已经能够玩游戏了,但这个游戏丑确实有点丑 .接下来,我们要把单调的白色矩形换成好看的图片. 在前面的代码中,我们用 ...
- 怎么用python做战斗机_少儿编程分享:手把手教你用Python编写战斗机游戏(四)
游戏分享:手把手教你用Python编写 战斗机游戏(四) 2018.1.25 飞机大战就到这里啦 你的飞机大战做出来了吗 加入图像 现在我们已经能够玩游戏了,但这个游戏丑确实有点丑.接下来,我们要把单 ...
- python编写小游戏17_十分钟教你学会python编写小游戏
原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...
- Python制作经典游戏案例-水果忍者(附源码等文件)
目录 前言 代码展示 总结 前言 大家好,我是辣条哥,今天给大家分享一款我以前特爱玩的游戏,水果大战,今天我就教大家使用python把这款游戏制作出来.我们先来看效果 点击跳转文末 相关的一些音乐文件 ...
- 教你用Python做小游戏
第一步:你好,兔子 运行IDLE,打开一个新的文本编辑窗口.输入以下的代码: # 1 - Import library import pygame from pygame.locals import ...
- python制作小游戏教程_12岁的少年教你用Python做小游戏
你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻. 为了写这个游戏的代码,你将 ...
最新文章
- 最小二乘法、迭代优化、坐标轴下降法(Coordinate Descent, CD)、坐标下降和梯度下降对比、梯度下降法/最速下降法
- Linux中内存buffer和cache的区别
- linux shell 获取当前正在执行脚本的绝对路径
- vb6 判断打印机是否有效_智能收银机的热敏打印机打不出字怎么办?
- java扫描包内所有类_第20天|Java入门有野,修饰符
- 8086的两种工作模式_Buck变换器工作原理
- JAVA中的Hashset类
- RedisUtils工具类
- ansible常用ad hoc操作
- 医疗卫生行业涉及的信息数据元属性与值域代码(数据集)
- UEFI模式下安装ubuntu以及重装ubuntu教程
- 最新的ESD(ElectroStatic Discharge)静电介绍及其标准下载(见文尾)
- 五一济南酒店数据出炉,做一个酒店管理APP多少钱?
- php实现跑马灯闪亮,JavaScript_基于jquery实现的文字向上跑动类似跑马灯的效果,想实现一个类似跑马灯的效果, - phpStudy...
- 网络爬虫 测试代理IP
- [转载]摩托车 各车型 坐姿 疲劳逻辑详解
- 数字电路基础(五)算术运算电路
- 小米 红米版note 4x刷机成功
- SpringBoot练手小案例-社区管理系统
- 2022.11.17排序题讲解