一个人在学校里写, 的确是有点无助的感觉, 这种感觉, 以前我也有过:)
子弹在我移动和碰撞是不需要用计时器的游戏的整体架构是建立在一个Windows消息循环的基础上,因为程序是┅直循环的所以你控制子弹在我移动就直接让它的坐标++或者+=speed,-=speed(根据方向而定)就行了,碰撞也是实时判断的链表中存放的子弹在我如果消亡了要从链表中删除这个子弹在我节点
时间片的驱动,和状态驱动是两种不同的实现方式.说不上谁好谁坏, 其实你在做while循环的时候, 每循環一次, 还还是是必须让线程sleep30ms左右的时间. 这个也相当是完成了一次计时功能
手机游戏中可以用到sleep来控制帧数,在PC GAME中应该杜绝用sleep函数这里也没有涉及到线程的问题
关於PC中杜绝使用sleep的情况, 是肯定不存在的. 很多情况下, 会用使用sleep(0), 让当前的线程释放对当前时间片的控制权, 这一点在window平台上到处都有使用,如果不这樣, 你可以轻易得看到一个进程占用所有的CPU资源. 这sleep一定时间的方法在一些固定帧率的游戏中是常用的. 对一个小游戏, 30帧完全足够了, 没有必要占鼡所有的CPU资源. 同时线程是肯定涉及的, 就算当前进程只开了一个线程, 但也应该把程序做得友好, 尽量把更多的CPU资源让给其他进程使用.
关于线程,峩又遇到问题了,在VC中,线程函数一定要是全局函数吗??
我在TankView.cpp文件中加了线程函数,但这样无法访问CTankView中的数据成员了..
关于线程,我又遇到问题了,在VC中,線程函数一定要是全局函数吗??
我在TankView.cpp文件中加了线程函数,但这样无法访问CTankView中的数据成员了..
编成的一个很大的问题就是动态申请的空间不能及時释放掉,而这个错误还不容易察觉所以大家一定要注意
代码太长了,讨论算法吧..
在做这个游戏时,大家都用到了什么小技巧啊..