pygame 游戏开发 基础物理建模 重力系统模拟
来源:互联网 发布:小猪cms源码下载 编辑:程序博客网 时间:2024/04/30 15:32
游戏嘛,肯定有很多地方都与物理相关,所以需要物理建模来模拟相关的物理定律。于是乎,我就找到了一篇c++的重力系统模拟的文章(http://blog.csdn.net/poem_qianmo/article/details/7538725),然后在里面提取出了我想要的物理建模来应用到我的pygame中。
重力模拟实现起来其实非常简单,我们都知道,重力的表现形式其实就是一个大小约等于9.8米每二次方秒,方向垂直地面指向地心的加速度。且由于X轴方向的速度不受重力影响,所以我们只要将物体的速度进行正交分解,处理竖直向下的Y轴方向即可。
下面用本节的实例中的实现重力模拟的代码来具体说明,这一节着重讨论重力,所以演示时暂时先忽略下坠时的空气阻力与触地时的摩擦力。这是一个平抛运动,小球将具有水平方向的初速度,且受到向下的重力,即小球具有向下的加速度,若碰到地面就会进行反弹,速度反向。
首先我们定义下坠物体的初始坐标与初始速度,初始横坐标x=10,初始纵坐标y=10,初始水平方向速度vx=3,初始竖直方向速度vy=0,重力加速度gy=3(这里为了方便演示,我们设置为3)
def main(): x = 10 # 初始位置横坐标 y = 10 # 初始位置纵坐标 vx = 3 # 初始水平坐标速度 vy = 0 # 初始竖直坐标速度 gy = 3 # 重力加速度
然后对于重力环境的模拟代码,当触及地面之后,翻弹,速度相反
x += vx # 计算横轴坐标,每次刷新界面,横坐标x都加上一个vx的当前值
vy = vy+gy # 计算Y轴方向速度分量,每次刷新界面,vy就加上一个gy(重力加速度) y += vy # 计算纵轴坐标,每次刷新界面,纵坐标y都加上一个vy的当前值 if y > 500: y = 500 vy = -vy # 当触及地面之后,纵轴速度反向
整个代码如下:
import pygamedef main(): x = 10 y = 10 vx = 1 vy = 0 gy = 3 pygame.init() clock = pygame.time.Clock() area = [500,500] screen = pygame.display.set_mode(area) pygame.display.set_caption("PHY") time = 10 while True: screen.fill(0) event = pygame.event.poll() if event.type == pygame.QUIT: pygame.quit() exit(0) if event.type == pygame.KEYDOWN: if event.key == pygame.K_n: pygame.quit() exit(0) clock.tick(30) x += vx vy = vy+gy y += vy if y > 500: y = 500 vy = -vy pygame.draw.circle(screen,[255,0,0],[x,y],10) pygame.display.update() time += 1if __name__=="__main__": main()
好吧,python写的代码果然比c++简单明了的多,估计代码量比c++少了五分之四。感谢poem浅墨
嘿嘿,python至上!!!
- pygame 游戏开发 基础物理建模 重力系统模拟
- pygame 游戏开发 基础物理建模 摩擦力系统模拟
- pygame游戏开发 基础物理建模 粒子系统模拟
- 【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟
- 【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟
- 【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟
- 【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟
- 【Visual C++】游戏开发笔记二十一 游戏基础物理建模(三) 摩擦力系统模拟
- 【Visual C++】游戏开发笔记二十一 游戏基础物理建模(三) 摩擦力系统模拟
- 【Visual C++】游戏开发笔记二十二 游戏基础物理建模(四) 粒子系统模拟(一)
- 【Visual C++】游戏开发笔记二十二 游戏基础物理建模(四) 粒子系统模拟(一) .
- 【Visual C++】游戏开发笔记二十三 游戏基础物理建模(五) 粒子系统模拟(二)
- 【Visual C++】游戏开发笔记二十二 游戏基础物理建模(四) 粒子系统模拟(一)
- 【Visual C++】游戏开发笔记二十一 游戏基础物理建模(三) 摩擦力系统模拟
- 【Visual C++】游戏开发笔记二十二 游戏基础物理建模(四) 粒子系统模拟(一)
- 【Visual C++】游戏开发笔记二十三 游戏基础物理建模(五) 粒子系统模拟(二)
- 【Visual C++】游戏开发笔记二十一 游戏基础物理建模(三) 摩擦力系统模拟
- 【Visual C++】游戏开发笔记二十二 游戏基础物理建模(四) 粒子系统模拟(一)
- Js版游戏打砖块源代码详细
- mac pro eclipse plugin development
- Just the Facts
- 批量关闭生产订单COHV
- Mac下Chrome的插件安装目录在哪?
- pygame 游戏开发 基础物理建模 重力系统模拟
- Uniform Generator
- linux 文件名命名规则(部分)
- poj 3488 Arne Saknussemm 模拟题
- Android网络升级功能在局域网内的测试方法
- 九宫格
- Pseudo-Random Numbers
- secureCRT连不上虚拟机上的ubuntu
- LMAX架构