这是「进击的Coder」的第 768 篇技术分享

作者:朱卫军

来源:Python 大数据分析

阅读本文大概需要 5 分钟。

知乎上有个热门问题:Python 能写游戏吗?有没有什么开源项目?

Python可以开发游戏,但不是好的选择

Python作为脚本语言,一般很少用来开发游戏,但也有不少大型游戏有Python的身影,比如:

  • 坦克世界大战(作为用户端脚本)

  • 文明IV(作为地图编辑器脚本)

  • 战场2(作为游戏玩法脚本)

  • 模拟市民(作为mod脚本)

  • 新战前夜(作为服务器和客户端语言)

  • 迪士尼-卡通城(提供 Panda3D 引擎图形) ...

虽然这些游戏支持python,但python扮演的角色大多作为脚本和插件,并非游戏开发的主语言。

目前市场上多数游戏都是基于C++、Java等语言进行开发,主要它们都是静态语言,比较稳定且速度快,能够满足游戏高性能的需求。

比如《绝地求生》、《巫师3》、《黑暗之魂》等都是用C++开发的,《碟中谍III》、《Minecraft》、《FIFA 11》等都是用Java开发的。

Python因为注重编码效率而非计算性能,在速度和稳定性上无法与其他语言媲美,几乎很少有商业游戏是纯Python开发的。

但Python可以通过脚本和第三方引擎为大型游戏提供组件,比如上述提到的几款游戏。

而且Python可以快速创建游戏原型,帮助开发者进行试验和debug,作为辅助工具还是不错的。

可以尝试一些Python开源小游戏

Github上有一些基于Python开发的开源小游戏,有兴趣可以试试看。比如说基于Python Pygame库开发植物大战僵尸。

原项目:marblexu/PythonPlantsVsZombies

该游戏仓库主要包含三部分:游戏代码、游戏素材、数据库

游戏代码就是Pygame库提供框架,然后python搭建游戏规则,全部代码将近3000行。

游戏素材主要包括僵尸、植物、背景等图片,图片会导入进游戏界面,然后写动态事件过程来实现游戏画面。

数据库是用json来存储游戏过程数据,这里包括了位置、时间、关卡等。

我专门录了个视频讲解下如何去下载,并在本地电脑执行。

还有很多小游戏可以用Python实现,我觉得是非常有趣的过程,初学者可以玩玩。

比如这个github仓库提供了很多免费小游戏的代码和demo:

grantjenks/free-python-games

Python游戏开发的主要框架

Python有很多游戏开发框架,比如说

PyGame:PyGame在优秀的SDL库之上添加了更多功能。允许使用python语言创建功能齐全的游戏和多媒体程序。具有高度的可移植性,几乎可以在所有平台和操作系统上运行

PySoy:Python 3的高级3D游戏引擎,紧密结合了渲染,物理,动画和网络

Pyglet:用于opengl的跨平台窗口和Python的多媒体库,可在mods / bfheores / python文件夹中找到

Python-Ogre:用于OGRE 3D引擎的完整python包装器,以及用于GUI,物理,特效,声音等的15个其他图形和游戏相关库

Panda3d:专门用于python的全功能开源3d引擎,但用c ++编写。功能:性能,多平台支持,场景图,导出/导入,3D音频,碰撞检测,物理,浏览器插件,动画等

Blender3D:GNU GPL许可下的开源游戏引擎器,动画师和3D渲染器。使用Python作为脚本语言

Python游戏可以帮助你学习语法

对于Python初学者来说,虽然不为了做游戏,但通过写游戏来学习语法是很好的方法,唯有多动手才能掌握编程的真谛。

End
崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,‍同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!
内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍扫码购买点个在看你最好看

为什么 Python 不适合写游戏?相关推荐

  1. 为什么Python不适合写游戏?

    知乎上有个热门问题:Python 能写游戏吗?有没有什么开源项目? Python可以开发游戏,但不是好的选择 Python作为脚本语言,一般很少用来开发游戏,但也有不少大型游戏有Python的身影,比 ...

  2. 《Python和Pygame游戏开发指南》——2.16 pygame.display.update()函数

    本节书摘来自异步社区<Python和Pygame游戏开发指南>一书中的第2章,第2.16节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区" ...

  3. 《Python和Pygame游戏开发指南》——1.12 图书中的文本折行

    本节书摘来自异步社区<Python和Pygame游戏开发指南>一书中的第1章,第1.12节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区" ...

  4. python猜数字游戏简单-python猜数字游戏快速求解解决方案

    python猜数字游戏快速求解解决方案.使用方法: 1. 保存代码为guessall.py 2. 执行python guessall.py > result.txt 3. 打开result.tx ...

  5. python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  6. python编程小游戏-python编程游戏有哪些

    python编程游戏有哪些?下面给大家介绍几款由Python开发的游戏: 1.Github上面有个项目Free Python Games,里面集合了不少的Python开发的小游戏,能玩,也适合新手用来 ...

  7. python能做游戏吗-没有Python不能做的游戏,这些游戏都可以做

    简介:Python编程语言的强大,几乎是众所周知的!那么,下面我给大家介绍一下几个用Python实现的各种游戏吧.不仅能用来做web.爬虫.数据分析等,没想到还能用做这么多的游戏,实在令人惊讶不已.注 ...

  8. python小游戏代码大全-python贪吃蛇游戏代码

    本文实例为大家分享了python贪吃蛇游戏的具体代码,供大家参考,具体内容如下 贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下 ...

  9. python能做游戏吗-python能做游戏吗

    能,但不适合. 用锤子能造汽车吗? 谁也没法说不能吧?地球上也有很多汽车,是用锤子造出来的..但一般来说,还是用工业机器人更合适对吗? 比较大型的,使用Python的游戏有两个,一个是<EVE& ...

最新文章

  1. AI版「盗梦空间」?谷歌大脑「世界模型」可实现在其梦境中对智能体进行训练
  2. Tomacat服务器的安装和配置
  3. nagios mysql 监控_nagios监控mysql
  4. Asp.Net Core基于JWT认证的数据接口网关Demo
  5. ie下的firebug
  6. 进程的创建fork vs vfork
  7. 服务器固态硬盘接口类型,固态硬盘接口都有哪些类型
  8. java一天一只顽猴想去从山脚_异乡苦境救顽猴
  9. pause 和 title
  10. Pytorch 学习笔记--to(device)的用法
  11. 巨量引擎信息流广告投放攻略
  12. 西部数据移动硬盘设置密码教程
  13. 在HTML中 怎么一张图片上在放一张图片,css sprites把很多小图集成在一张图片上...
  14. 中国汽车内饰皮革行业运行现状及经营战略建议报告2022年版
  15. LoadRunner 自动登录163邮箱
  16. spark数据处理-RDD
  17. 项目管理5阶段|一位高级项目经理的4年项目经验分享
  18. sudo,su, -的区别
  19. python第二版课后习题答案_《python核心编程第二版》课后习题6-12答案
  20. Suomi NPP VIIRS夜间灯光遥感数据简介与下载(一)——数据介绍,FTP下载与hdf5读取

热门文章

  1. OpenGL渲染管线解析
  2. java在linux调用sqlldr,oracle在linux如何安装sqlldr
  3. 计算机网络基础5--TCP/IP协议栈
  4. 简析程序化广告中的第三方监测
  5. 常见人体铰链关节点数据集中的关节点顺序(SMPL,NTU,MPII,Human3.6M)
  6. HDU-1848 Fibonacci again and again(组合游戏)
  7. Redis 慢查询 命令 slowlog
  8. JAVASCRIPT---css定位布局(建议收藏)
  9. 床头笔记之Android开发学习(三)
  10. HarmonyOS:利用PopupDialog实现多选效果