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进行进一步的验证

python下的Box2d物理引擎的配置的更多相关文章
- cocos2d-x中的Box2D物理引擎
在Cocos2d-x中集成了2个物理引擎,一个是Chipmunk,一个是Box2D.前者是用C语言编写的,文档和例子相对较少:Box2D是用C++写的,并且有比较完善的文档和资料.所以在需要使用物理引 ...
- 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检测
在Box2D中碰撞事件通过实现b2ContactListener类函数实现,b2ContactListener是Box2D提供的抽象类,它的抽象函数:virtual void BeginContact ...
- 实例介绍Cocos2d-x中Box2D物理引擎:HelloBox2D
我们通过一个实例介绍一下,在Cocos2d-x 3.x中使用Box2D物理引擎的开发过程,熟悉这些API的使用.这个实例运行后的场景如图所示,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触 ...
- 【极客学院出品】Cocos2d-X系列课程之九-BOX2D物理引擎
Cocos2d-x 是时下最热门的手游引擎,在国内和国外手机游戏开发使用的份额各自是70%和25%,在App Store的top10中,有7个是用它开发的. 本节课程为Cocos2d-x系列课程之九, ...
- libgdx学习记录18——Box2d物理引擎
libgdx封装了Box2D物理引擎,通过这个引擎能够模拟物理现实,使设计出的游戏更具有真实感. libgdx中,Box2d程序的大概过程: 1. 创建物理世界world,并设置重力加速度. 2. 创 ...
- 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检測
在Box2D中碰撞事件通过实现b2ContactListener类函数实现,b2ContactListener是Box2D提供的抽象类,它的抽象函数:virtual void BeginContact ...
- 实例介绍Cocos2d-x中Box2D物理引擎:使用关节
下面我们将使用Box2D物理引擎技术进行重构.使得关节能够掌握如何在Box2D使用关节约束.HelloWorldScene.cpp中与使用关节的相关代码如下: void HelloWorld::add ...
- 瘸腿蛤蟆笔记29-cocos2d-x-3.2 Box2d物理引擎dynamics模块介绍
转载标明出处:http://blog.csdn.net/notbaron/article/details/38611335 上篇回想 本篇名言:奋斗.寻觅.发现,而不屈服.[诗人丁尼生] 上篇中,我们 ...
- [Cocos2D-x For WP8]Box2D物理引擎
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动.旋转和碰撞反映.为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现.然而, ...
随机推荐
- 【转】CSDN离线网页html文件自动跳转
问题: 最近使用OneNote2016剪辑csdn的文章时,发现一些公式/文本框不能被正确识别,所以离线保存网页的html文件. 但是每次打开html文件,都会自动跳转的CSDN主页,即使断网,也会自 ...
- Docker vs Warden
相同点: 都是依赖宿主操作系统内核的轻量级容器: 都采用了linux内核技术实现容器隔离(namespace)和资源限制(cgroup): 都使用了aufs文件系统: 不同点: 用途 warden是C ...
- 用margin实现两列布局中的自适应列
<div id="wrapper"> <div id="col1"> "fixed" </div> &l ...
- Linux入门第一天——环境搭建补充内容(xshell与虚拟机等操作)
一.xShell的安装和使用 前往官网下载一个个人版的 xShell :https://www.netsarang.com/products/xsh_overview.html 要更换免费版的putt ...
- BootStrap 获得轮播中的索引和当前活动的焦点对象
$('#myCarousel').on('slide.bs.carousel', function (event) { var $hoder = $('#myCarousel').find('.ite ...
- C#调整图片亮度和对比度
BitmapSource bitmap = null; ; ; private void SetBrightness(int degree) { degree = degree * / ; Write ...
- 【TJOI2015】线性代数
题面 题解 要求的是 \[ \sum_{i=1}^n\sum_{j=1}^na_ia_jb_{i,j} - \sum_{i=1}^na_ic_i \] 可以看出这是一个最大权闭合子图问题 代码 #in ...
- JUC——线程同步锁(ReentrantReadWriteLock读写锁)
读写锁简介 所谓的读写锁值得是两把锁,在进行数据写入的时候有一个把“写锁”,而在进行数据读取的时候有一把“读锁”. 写锁会实现线程安全同步处理操作,而读锁可以被多个对象读取获取. 读写锁:ReadWr ...
- Python之Django的Model详解
一.创建数据库 创建数据库 进入数据库: mysql -uroot -p 创建数据库: CREATE DATABASE test1 CHARSET=utf8; 连接数据库 虚拟环境中安装数据库模块:p ...
- 基于Vue的简单通用分页组件
分页组件是每一个系统里必不可少的一个组件,分页组件分为两部分.第一部分是模版部分,用于显示当前分页组件的状态,例如正在获取数据.没有数据.没有下一页等等:第二部分是分页数据对象,用于封装一个分页组件的 ...