MFC游戏程序 - 碰撞的小球

windows程序设计做的练习。

高中的时候就是靠物理吃饭的,学了windows编程很期待能用一用。

这个程序就是模拟了许多刚体小球在平面上运动,当两球撞在一起时按照动量守恒定理改变两球的运动速度。地面和小球之间也有摩擦力,所以小球会不断减速,直到静止。

程序运行起来也不错,感觉很真实。为了达到更好的视觉效果我用小球的半径直接作为小球的质量来使用,而不是半径的平方。那样的话可能大球被撞后速度改变不大。

我把源代码传到CSDN下载中心了,【点击这里】进入下载页面。

这里简单谈一下刚学的一个技术:双缓冲。解决屏幕闪烁问题。

刚学MFC,当需要刷新页面的时候常用的方法是调用View窗口的Invalidate()方法,强迫窗口客户区失效,操作系统将发送一条PAINT消息给View窗口,从而使程序调用OnPaint()方法,达到重绘窗口的目的。

你会发现,每次重绘时,无论内容多少,窗口总是会出现闪烁现象。这时由于在调用OnPaint()之前,操作系统会将View窗口用背景色刷一次。这个过程不够快,能够被人眼观察到。这个重绘的思路是“擦除->重绘”两个步骤。特别是做了一个游戏循环的时候,你会看见画面不停地闪……

双缓冲的基本思路就是,当要刷新页面时,先在内存中建立一个位图,将新画面在内存中绘制完成后,再拷贝到屏幕上,而不用擦除屏幕上的画面。这样就消除了“擦除”带来的闪烁感,画面看起来很干净。

具体实现都放在代码中了,注释也比较详细~

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值