pygame只能编写游戏_使用pygame开发的游戏发布+小总结
概述
大约两年前接触了python,然后就爱上了这个语言。
然后就想用它写游戏,很快就找到了pygame这个库,但是pygame貌似十分冷门,网上教程也比较少,好在还有个文档来参考。
于是胡乱搞了很久,前后搞了弹幕射击类(模拟东方project系列)、ARPG和这次的AVG(文字冒险)。这次的文字冒险游戏由于有前几次的经验积累,耗时5天成功开发了出来。于是准备在这里总结下用pygame开发游戏的经验,大致讲一下这个游戏是怎么开发出来的,代码比较长就不贴在这里了。但是会附上作品和源码,以供有兴趣的同学参考学习和玩耍。
这里主要是讲思想。
游戏制作
环境
python2.7+制作游戏需要安装的pygame
操作系统是在windows下,而且由于是py2exe发布的,所以只能在windows下运行
(但是源码也许能在其他OS上跑,好像没有依赖windows的库)
游戏资源
游戏资源就是游戏要使用的音乐、图片、文字等,本游戏使用一下几类:
pics/ 图片信息
diags/ 游戏中的对话
fonts/ 字体
item/ 游戏中的道具信息
music/ 音乐信息
sound/ 音效
类的设计
类的设计大部分依赖于游戏的资源,主要有这些类:
Music
Sound
Txt
Button
Lh
Moji
Item
Rule
Sysb
Story
其中Music,Sound,Lh,Moji,Item分别是读取文件中的音乐、音效、立绘图片、对话内容和道具的信息并组织管理起来。其中Moji类还要管理游戏中的对话部分,显示哪一条语句、画哪些立绘等。
Txt是游戏中需要在哪些位置显示一些文字时需要,例如左上角显示位置,按钮上的提示信息等。
Button是一个矩形按钮,可以为其配置位置、大小、图片、快捷键、功能等。在很多时候,我们都需要一个按钮。
Sysb为本游戏的证物系统,管理证物的显示,指证等。
Rule为游戏规则,每个游戏都有它的规则,小到先画背景,再画人物,再画对话框;具体到比如弹幕射击类的自机是否与地方弹幕碰撞?是则发生miss等。
Stroy为游戏剧本,由一个关键变量event值控制故事走向,也包括flag的控制功能。本来我是将剧本都写入这个类里面,但是这样若故事长的话会导致代码长度剧增,而且也不美观。所以就把它改成了个解释器,用来读外部一个文件内的“指令”,并解释执行从而控制游戏走向。这样的话,剧本就可以写在外部文件,而且主程序导出exe后,不会编程的人也可以尝试利用这些指令写出新的故事让游戏程序去运行。关于这个游戏的解释指令问题,有兴趣的可以去下载游戏,里面有文档说明。(可能算是个超劣质版的橙光?)
主程序
有了这些大类,已经可以想出游戏的框架了,看看主程序的循环就知道了:
while True:
keyp=pygame.key.get_pressed()
moup=pygame.mouse.get_pressed()
mou_pos=pygame.mouse.get_pos()
timep = clock.tick(60)
for event in pygame.event.get():
if event.type == QUIT:
exit()
rule.run()
story.run()
首先获取键盘的按键状态、鼠标的按键状态和鼠标位置,用来进行交互;
然后控制一下帧率,帧率在实时类游戏中很重要,用来掌控时间,在本游戏中用处很小。设置好关闭;
最后让规则和故事“run”就可以了。
几乎所有的类都有个“run”方法,只要它存在在游戏中,它每帧都会run一次,实现它该有的作用。例如Button类每次run都会检测鼠标是不是在自己的范围内,是的话绘制第二个图像,再进一步判断鼠标是否点击,是的话运行自己的“功能”。
游戏
这里介绍一下这次开发的游戏,类型是文字冒险游戏:
是类似逆转裁判的游戏方式,在自由行动时,q为调查,w为移动,e为交谈;
r为看已获取的证物,按方向键或a、d切换,并可以在对话中按z指证;
运行时是这个样子的:
游戏有两个结局。
游戏、代码地址(顺便附带了第一次制作的半成品弹幕射击游戏):
网盘
游戏素材来源于逆转裁判、仙剑和网上。
其他
做游戏真是比较开心,但是这大概是第一次算是完整的做出了个游戏吗?(还是因为暑假没回家才有的干活动力)
这大概是最后一次使用pygame去开发游戏?pygame毕竟是比较老了,很久没更新了,感觉很多功能不是特别爽。下面可能会去研究研究pyglet。
pygame只能编写游戏_使用pygame开发的游戏发布+小总结相关推荐
- pygame只能编写游戏_游戏框架搭建
游戏框架搭建 目标 -- 使用 面相对象 设计 飞机大战游戏类 目标 明确主程序职责 实现主程序类 准备游戏精灵组 01. 明确主程序职责 回顾 快速入门案例,一个游戏主程序的 职责 可以分为两个部分 ...
- python3.7魔塔游戏_基于pygame的开发:魔塔小游戏开发
前言 第一次写博客,如果写的不好欢迎评论指正. 前端时间跟着廖雪峰大神的教程学习了python,本着"实践是检验真理的唯一标准",我尝试着使用pygame库来开发经典的策略RPG& ...
- python自己制作节奏大师游戏_使用pygame制作一个简单的游戏
翻译自Will McGugan的<Beginning Game Development with Python and Pygame –From Novice to Professional&g ...
- python经典教程游戏_使用pygame制作经典小游戏:五子棋
准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...
- cmd小游戏_使用pygame制作Flappy bird小游戏
原文链接: [Python]使用Pygame做一个Flappy bird小游戏(一)mp.weixin.qq.com 最近看到很多大佬用强化学习玩Flappy bird.所以打算也上手玩一玩,但是苦 ...
- python pygame模块按键延迟_用pygame做游戏时,用pygame.KEYDOWN来实现的按键控制“不灵敏”能怎么解决?...
这样写就十分灵活了 就是每个按键添加了一个k变量来检测按键是否被按着. 每一对儿方向相对的按键加了一个f变量来记录两个按键谁最后按下的. speed=[x,y] for event in pygame ...
- unity课设小游戏_【Unity3D开发小游戏】《跑酷小游戏》Unity开发教程
一.前言 最近跑酷游戏比较流行,开发教程也很多,但是大部分都是不太详细,这篇文章就带着大家一步一步开发出来一个跑酷类的游戏,教程比较基础,适合大部分Unity开发的初学者. 还有就是,此专栏已经开通收 ...
- python抽奖简单小程序游戏_用Python做个年会抽奖小程序吧
又到了每年一度的年会,最期盼的可能就是抽奖环节了.如果大家都吐槽抽奖不公,那不如用程序来抽吧. 实现思路 在屏幕上不断滚动名字,然后点击停止后停止滚动.名单是保存在excel中,所以需要从excel解 ...
- 国外游戏开发商吐槽:开发VR游戏付账单的钱都赚不到
知名游戏开发商Rocketwerkz表示,VR目前赚不了钱,大家还是想办法自求活路吧. 镁客网此前出过一篇文章,分析了VR游戏开发者该如何去赚钱?结论是做VR游戏早期还是不要想着赚钱了.最近,国外游戏 ...
最新文章
- 从复现人类智能到挑战AI大工程,智能计算正经历什么考验?
- 新网站优化基本流程不可忽视!
- 基于时间片轮转程序分析进程调度
- java中立方根方法_java基础:4、java中Math类的常用方法?
- 堆排序python代码实现_python实现堆排序
- 【零基础学Java】—自定义异常(四十八)
- 数据结构上机实践第10周项目1 - 二叉树算法验证
- 给CentOS 6.7 配置IP地址
- 微信小程序实现商品数量加减案例
- 火狐 ajax提交失败,Firefox下AJAX0x80040111错误的解决方法
- PHP生成二维码与识别二维码,jq生成二维码
- usb调试助手_【小白教程】如何使用米卓同屏助手?
- Highcharts构建加权平均值图表
- 基于ESP8266 HX711 克级单位称重式压力传感器(接入阿里云物联网平台)—— 看到有点意思,所以我也照着做了一个
- Acquiring a token for Kubernetes dashboard
- 手机qlv转mp4工具
- html怎么设置毛笔字体,三种实用的毛笔书法字体设计制作教程
- 报表开发工程师面试准备
- dg怎么了(最近dg怎么了)
- C++的get()函数与getline()函数使用详解
热门文章
- 独家揭秘阿里自研飞天操作系统洛神平台如何支撑起 2684 亿全球大促!| 问底中国 IT 技术演进...
- GET和POST最详细的总结
- 2.Python 基础知识
- 网易学院 C#视频收藏
- 轮式超声检测爬壁机器人机械结构设计及运动仿真设计
- NLP学习(三)-词典
- Quantum LeaPs(QP)介绍
- 计算机在线试卷及答案,计算机应用基础试卷及答案.pdf
- JAVA设计模式--适配器模式
- HTML5期末大作业:仿商城网站设计—— 绿色特产商城购物Html+Css+javascript的网页制作