摘 要:本文主要介绍了一个基于碰撞检测技术的台球游戏系统的设计,分析了小球碰撞的物理过程,对小球在台球桌面上的滚动与碰撞过程进行了较为真实地模拟。
关键词:C#;Direct,台球游戏;碰撞检测;线程
1.游戏开发平台与技术
台球游戏主要实现的是台球的运动的物理模拟,如小球间相互碰撞的模拟实现、小球碰壁的模拟处理等,充分利用计算机技术,实现台球游戏的计算机模拟,做出台球游戏。
程序的开发平台为.NET Framework,采用了微软的Visual Studio 2005和Direct和C#语言开发。C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。图形技术的解决方案有OpenGL和DirectX,DirectDraw等,DirectX是一种应用程序接口,包含Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Sound等多个组件,它可让windows为平台的游戏或多媒体程序获得更高的执行效率和更好的图形声音效果。本程序中的图像的显示是通过DirectDraw提供的接口对显存缓冲写入操作实现的。
碰撞检测始终是程序开发的难点,甚至可以用碰撞检测作为衡量游戏引擎是否完善的标准。而碰撞检测是让很多程序员头疼的算法,算法复杂,容易出错。
2.小球碰撞的运动分析
碰撞,一般是指两个或两个以上物体在运动中相互靠近,或发生接触时,在相对较短的时间内发生强烈相互作用的过程。
碰撞过程可分为两个过程。开始碰撞时,两球相互挤压,发生形变,由形变产生的弹性恢复力使两球的速度发生变化,直到两球的速度变得相等为止。这时形变得到最大。这是碰撞的第一阶段,称为压缩阶段。此后,由于形变仍然存在,弹性恢复力继续作用,使两球速度改变而有相互脱离接触的趋势,两球压缩逐渐减小,直到两球脱离接触时为止。这是碰撞的第二阶段,称为恢复阶段。整个碰撞过程到此结束。
3.小球碰撞检测预测算法分析
碰撞检测技术主要做的就是对产生碰撞的物体对象和碰撞所发生的时刻进行判定。当碰撞发生后, 小球的运动速度将发生改变, 因此在设计程序的时候, 必须预先计算出碰撞所发生的时刻, 并在该时刻后将小球的速度上赋予新值。
4.小球的碰撞的时刻的计算
小球的碰撞并非一定发生在一个固定的单位时间间隔的开始或是结束之时, 而可能是发生在这个单位时间间隔内的某个时刻。因此, 为了计算得到小球相对准确的运动轨迹, 运行程序的时候必须准确计算出小球发生碰撞的时刻, 并在随后的事件处理程序中,对小球的运动速度进行准确的处理。
对小球发生碰撞的时刻进行求解的时候,为了方便计算, 定义时间间隔长度为1个时间单位,每个单位的具体时间长度可以在程序中指定。
5. 台球游戏概要设计
台球游戏的开发平台为.net framework,所用为工具Visual Stduio2005和DirectX。在本程序中,主要有图像数据初始化部分、游戏中的图像处理部分、游戏中的数据处理部分、逻辑判断处理部分和结果处理部分组成。程序的主要模块有数据初始模块、图像初始模块、划线模块、球杆绘制处理模块、小球运动绘制模块、小球运动逻辑处理、母球放置判断模块、力度条的处理模块、小球碰壁处理模块、小球打入球带处理模块、小球运动处理模块、小球相互碰撞处理模块、小球犯规处理模块、游戏胜负处理模块等。以下是程序的总体流程图。
参考文献
[1]Daniel Sanchez.游戏核心算法编程内幕,北京希望电子出版社,2004
[2]韩绍兵.小球碰撞检测的算法设计和台球游戏开发,北京工业职业技术学,2004
[3]Michael Morrison.游戏编程入门,人民邮电出版社,2005
[4] 齐立波.C#入门经典,清华大学出版社,2008
[5] 黄海芳,余宇华. 3D游戏中碰撞检测的应用,2006
[6] 帕森斯,伦道夫. Visual Studio 2005高级编程,清华大学出版,2008