专栏首页石璞东 | hahaPython小游戏--外星人大战(一)

Python小游戏--外星人大战(一)

前言

王者荣耀好玩吧,吃鸡是不是更刺激呢?haha,可惜我们今天的主题跟这两个游戏一毛钱关系都没有,在接下来的几篇文章中,我会把去年我用Python做的一个小游戏整理下,然后以推文的形式发布出来,希望给小伙伴们一 nei nei灵感吧~

这个游戏我给它起了个骚气无敌的名字小粉丝大战最帅的我,是一款类似于4399小游戏中外星人大战类的射击游戏,唯五的几个区别是:我的游戏没有市场调研、没有市场分析、没有测试、没有运营推广,更没有主流人群,所以这是一款不用充值,玩一次就想吐的游戏,不过这不重要,我们是爱学习的人,我们更看重代码,是吧,况且这款游戏也不是一无是处呀,最起码还有小ha满满的爱呀,是吧

项目概述

小伙伴们想象中4399里的飞机射击游戏可能是这种:

不过,我的游戏跟它不一样,我的游戏坚持了我一贯的作风,实力不行,但是眼光很高?

下面对这款游戏的细节做下简单的概述:

你要了解的:

本游戏使用的是Pygame模块,对于某些API(比如名称设置--"pygame.display.set_caption('我是游戏名')")的调用不会进行分享,请直接移步相关网站或公众号后台留言进行学习。除此之外,你必须对于类、继承、封装、模块化思想有一定的了解。

网址:

https://www.kancloud.cn/digest/python-notes/163847

从小白到大牛:

第一次写游戏总会有些激动,一方面是憧憬着游戏写好之后的开心,另一方面是因为不知道该从哪里开始写起。

对于本文中的简单例子来说,其就是类似于外星人大战的阉割版。在写游戏之前应该做好规划(包括类的封装、类属性和方法、库的使用、模块的划分甚至是名称的设置),往往游戏之前良好的规划会占用整个项目的绝大部分时间,而真正写代码的时间很少。

对于该游戏:(只对主要部分进行分析)

游戏的主人翁:飞船、子弹、外星人

最基本的三个类:ship、bullet、alien(考虑各个类的属性和方法,对类进行合适的封装)还有一个必不可少的类:alien_invasion(控制游戏的运行)

玩法:玩家按下键盘上的左右按钮控制飞船的左右移动,通过按下空格发射子弹,击杀外星人,随着玩家分数和等级的提高,外星人和飞船的速度会越来越快,若飞船移动到了屏幕底端或和飞船相撞,则玩家损失一次机会,玩家总共有三次机会,在这三次机会全部用完时,玩家的所有数据会被清空,玩家必须重新闯关.

游戏模块拆解:

alien_invasion.py:整个游戏的核心模块,控制游戏的运行

alien.py:对于alien(飞船)的设置(包括alien图像的加载、alien图像的绘制、alien边缘的检测)

bullet.py:对于bullet(子弹)的设置(包括bullet大小、速度、绘制的设置)

button.py:对于button(控制按钮)的设置(包括大小、位置、文本内容、绘制、和游戏状态的设置)

game_functions.py:功能的主要实现模块(键盘事件的检测<左移、右移、开火、开始游戏等>、外星人移动方向的控制)

game_status.py:游戏状态的设置(比如得分等初始化信息的设置,还有游戏速度上限等游戏运行期间可能发生变化的量的控制)

scoreboard.py:用来显示玩家得分、等级

settings.py:各类(外星人、子弹、子弹移动方向)等的基本属性的设置

ship.py:飞船移动、重绘等的设置

游戏思路分析:

现在的需求很简单:玩家按下左右键控制飞船在屏幕限定范围水平内移动,按下空格键发射子弹击杀外星人。

要求:(游戏开始后)

  • 点击Play按钮开始游戏,按下键盘上的Q键退出游戏
  • 外星人按照S形从屏幕上方开始向底部运动,且随着用户得分和等级的提高运动速度越来越快
  • 飞船一次发射的子弹控制在10个以内,且只能在屏幕范围内进行移动
  • 游戏画面左上方有玩家得分、等级的显示,右上方有玩家剩余机会次数的显示
  • 游戏音效的添加

问题解决:

  • 对于游戏中飞船和外星人的处理为什么都以矩形处理呢?

答:像处理矩形一样处理游戏元素之所以高效,是因为矩形是简单的集合形状,这种做法的效果通常很好,游戏玩家几乎注意不到我们处理的不是游戏元素的实际形状。

  • 游戏的画面为什么要做到不停的刷新呢?

答:电影视频中有"帧"的概念,同样的游戏中也有,大家在打游戏的时候想必都见过FPS吧,它的全称是(Frame Per Second),也就是每秒的的刷帧次数,根据人眼"视觉停留"特点,如果每秒刷帧的频率太低的话,就会造成视频的卡顿,那么对于游戏来说,FPS的要求就得更高点了。

声明

更多内容请移步我的公众号平台hahaCoder或者个人网站http://www.shipudong.com进行查看。

本文分享自微信公众号 - hahaCoder(hahaCoder),作者:石璞东

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 毕业设计之「神经网络与深度学习概述」(二)

    首先,来说一下卷积的概念,从数学角度来看,可以简单的认为卷积是一种数学运算,在通信领域,卷积也被应用在滤波上,因此通常将卷积和滤波同等看待,卷积核也经常被称为滤...

    石璞东
  • 微信拍一拍效果的原理分析及代码实现

    微信拍一拍功能上线之后,其用户评价褒贬不一,这里我们不去凑热闹讨论这个功能的应用场景是否真的如部分网友说的毫无卵用,毕竟这是产品经理们应该考虑的事,但我相信作为...

    石璞东
  • 数据结构与算法 -3 :复原IP地址

    首先IP从基本大类分共有五种(分别是A、B、C、D、E类网址),观察这五种网址发现有一个共同点:任何一种IP可以分为四段,每段的十进制数值均小于255,所有数字...

    石璞东
  • 腾讯云游戏解决方案沙龙会议

    8月12号,腾讯云游戏解决方案大神分享游戏运营经验。报名参会还有代金券免费代金券领取

    halsey
  • 这个变态级难度的小游戏,只为证明:人类的聪明没那么简单

    先别说话。 给自己几分钟的时间,玩一下这个游戏,看看是否能顺利通关。几分钟就好,别为难自己。因为普通人通关平均需要20分钟。 游戏地址:https://high...

    量子位
  • 自制街机游戏(2):再次实现

    在本节中,我不演示如何逐步设计和实现游戏,而在源代码中包含大量的注释和文档字符串。你可通过研究源代码来了解其工作原理,但这里还是简单地说说其中的要点(以及不那么...

    不可言诉的深渊
  • 游戏分析法(三):核心产品决策

    如果要分析一款游戏的基本设定,一般来说,最基本的元素就是“题材”和“玩法”两个部分。这两个方面对于游戏来说互为表里的一体。任何一种玩法,都需要题材的包装,因为大...

    韩伟
  • BTA | 张宏亮:区块链游戏必经的四大发展阶段

    区块链大本营
  • 什么是游戏性

    由于最近忙于写各种文档,所以很长一段时间没有更新了。不过作为一个产品、技术内外双修的神人,还是有一些存活的。今天发送的和单纯的技术关系不大,而是一份对于游戏这个...

    韩伟
  • 2019年unity3d从入门到精通必看

    要想开发一款好游戏,必须要有良好的用户体验。所以小编建议,你在开发一款软件之前一定要做好用户调查,看看他们有什么需求,确定软件要实现什么主功能和辅功能等等。当然...

    py3study

扫码关注云+社区

领取腾讯云代金券