前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python小游戏--外星人大战(一)

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

作者头像
石璞东
修改2020-04-22 20:00:49
9410
修改2020-04-22 20:00:49
举报
文章被收录于专栏:石璞东 | haha石璞东 | haha

前言

王者荣耀好玩吧,吃鸡是不是更刺激呢?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进行查看。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 hahaCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 声明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档