python下的Box2d物理引擎的配置

/*******************************

I come back!

由于已经大四了,正在找工作

导致了至今以来第二长的时间内没有更新博客。向大家表示道歉

*******************************/

前言

Box2d物理引擎

Box2d是一款开源的2d物理引擎,存在很多的版本,C++,Java,html5和python等等

著名的愤怒的小鸟就是使用了这款物理引擎进行开发的

目前也有很多的2d游戏引擎内置了对Box2d物理引擎的支持,比如cocos2d,HTML5的2D游戏引擎FLAG

Box2d物理引擎内部模拟了一个世界,你可以设置这个世界里的重力,然后往这个世界里添加各种物体,以及他们的一些物理特性,比如质量,摩擦,阻尼等等

在设置完这个世界的更新频率后,box2d会为你计算每次更新后的每一个物体的所在的位置和旋转角度。

由于Box2d本身是不负责渲染,我们在使用box2d物理引擎的时候,实际上是将我们在项目中需要绘制出的精灵进行坐标变换后,变成box2d内部世界中的一个物体,由

box2d物理引擎计算这个物体每次更新后位置及选择角度,然后我们在获得这个位置和角度并进行坐标变换,变成我们需要绘制的精灵的位置,并将其绘制出来

这个是我以前在windows phone做的一款游戏 image bird (http://www.dwz.cn/nD94d

里面用的就是box2d物理引擎,感兴趣的可以下下来,玩一玩。

一、配置环境

windows7

python2.7

二、配置方法

1、下载python版的box2d物理引擎,大家解压缩之后可以发现里面有一个setup.py的文件。

http://code.google.com/p/pybox2d/wiki/BuildingfromSource 这里讲解了windows,linux,os X下的配置

不过是英文的,大家可以自己阅读尝试配置一下)

2、下载MinGW并安装,并将它的路径下的bin文件添加到环境变量中(我这里是C:\MinGW\bin)

(MinGW(Minimalist GNU for Windows),又称mingw32,是将gcc编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。)

3、下载MSYS并安装

(MSYS是一个小型的GNU环境,包括基本的bash,make等等)

4、下载安装SWIG并安装,将它的路径添加到环境变量中(我这里是“D:\swigwin-3.0.2\swigwin-3.0.2”)

(SWIG是一种简化脚本语言与C/C++接口的开发工具。简而言之,SWIG是一个通过包装和编译 C 语言程序来达到与脚本语言通讯目的的工具)

5、下载python2.7并安装,将它的路径添加到环境变量中(我这里是“D:\Python27”)

(这里有一个让环境变量立刻生效的方式就是打开cmd ,

注意这是我们键入echo %PATH% 显示出的结果是没有刚刚我们添加的环境变量的,

我们输入set PATH=C,然后关闭cmd,再次打开的时候,

键入echo %PATH% 就可以发现刚刚添加的环境变量已经显示了出来)

6、打开python路径下的\Lib\distutils\,新建一个distutils.cfg的文件(我这里是“D:\Python27\Lib\distutils”)

内容为:

[build]
compiler=mingw32
[build_ext]
compiler=mingw32

7、为了运行box2d下的test_打头的例子,我们还需要下载安装pygame

(pygame是跨平台的python模块,专为电子游戏设计,包含图像,声音功能)

安装成功后,我们打开python的IDLE,输入

>>>import pygame

>>>print pygame.ver

会显示出我们安装的pygame版本

8、打开msys下的msys.bat,cd到之前下载的box2d的路径下,到达和setup.py的同一路径

然后键入

setup.py build

成功后再键入

setup.py install –force

成功后会显示下面的东西。

9、至此pybox2d已经安装完毕,我们可以打开example下的hello.py运行进行验证

以及以test_打头的任意一个例子,比如test_car进行进一步的验证

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ImportSource

NoSQL-Quorums-仲裁

作者简介: ? 当你权衡“一致性”或“持久性”的时候,不是一个非此即彼,非黑即白的过程。一个请求中涉及的节点越多,那么我们越有可能避免不一致。这自然就引发了一个...

3615
来自专栏程序猿DD

Spring Cloud构建微服务架构:分布式服务跟踪(抽样收集)【Dalston版】

通过 TraceID和 SpanID已经实现了对分布式系统中的请求跟踪,而这些记录的跟踪信息最终会被分析系统收集起来,并用来实现对分布式系统的监控和分析功能,比...

3466
来自专栏祝威廉

Spark 1.6 内存管理模型( Unified Memory Management)分析

新的内存模型是在这个Jira提出的,JIRA-10000,对应的设计文档在这:unified-memory-management。

1273
来自专栏沃趣科技

容器化RDS|调度策略

导 语 前文数据库容器化|未来已来我们介绍了基于Kubernetes实现的下一代私有 RDS。其中,调度策略是具体实现时至关重要的一环,它关系到RDS 集群的服...

50210
来自专栏PPV课数据科学社区

数据挖掘系列(5)使用mahout做海量数据关联规则挖掘

上一篇介绍了用开源数据挖掘软件weka做关联规则挖掘,weka方便实用,但不能处理大数据集,因为内存放不下,给它再多的时间也是无用,因此需要进行分布式计算,ma...

3074
来自专栏施炯的IoT开发专栏

Endnote for Windows Mobile

  想必园子里有好多朋友都写过paper吧,在阅读文献的时候,是不是觉得管理文献这个事情很麻烦。我正处于刚刚起步的阶段,英语写译老师Greatlion给我们推荐...

2036
来自专栏CSDN技术头条

详解 NoSQL 数据库的分布式算法

系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性。这么讲使得NoSQL听起来像是一个大筐,什么都能塞进...

2359
来自专栏iOSDevLog

Google Colab免费GPU教程

现在,你可以开发深度学习与应用谷歌Colaboratory -on的免费特斯拉K80 GPU -使用Keras,Tensorflow和PyTorch。

4905
来自专栏IT派

Django | CoolBlog开发笔记第1课:项目分析

CoolBlog开发笔记第1课:项目分析 首先说一下CoolBlog开发笔记是我制作的《Django实战项目》系列教程基础篇的内容,使用Django来开发一个...

3984
来自专栏玉树芝兰

如何用 Python 脚本批量下载 Google 图像?

(由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的“阅读原文”按钮,访问可以正常显示外链的版本。)

1512

扫码关注云+社区

领取腾讯云代金券