开始
首先是游戏循环,在一个死循环里运行游戏的逻辑是游戏常用的架构(通常来说这个循环时从游戏开始运行到游戏结束的)。好处是可以很好的处理暂停,而且便于将各个不同部分的游戏逻辑整合在一起。如果每个逻辑使用一个独立的线程来运行,一是需要对线程进行调度,比较复杂;二是多线程需要的资源更多,不利于游戏的性能。
之后我们可以划分游戏的逻辑,比如渲染。
渲染的意思就是将内存中的画面展现到屏幕中来,我们可以给每个游戏元素(包括玩家,敌人,障碍物,甚至是地板装饰等)创建一个对象来保存其位置等参数,渲染时就会根据其参数来渲染,我们只需把重心放在游戏性的逻辑上,即如何改变对象的参数即可。
然后就是游戏性逻辑部分,这个部分是游戏的核心,游戏如何调度就是依靠的这个部分。
例如角色的移动,我们可以创建一个对象,来保存角色的移动状态,其中包括 u,d,l,f 四个布尔变量,表示角色的移动。需要注意判断在两个相对的方向上(左右和上下)同时按下时,相当于两者都没按下。
判断完移动方向后,再根据速度不断的改变角色的位置参数即可(这个地方有个细节就是如果是朝着斜方向走,xy轴上的分速度应该是根号2,如果没有学过物理中矢量的合并和分解的话,可以去看看)
游戏的循环的模板(Java)
boolean gameover = false;
boolean paused = false;
while(){
if(gameover) break;
if(!paused){
logic();//根据状态更改各个参数,碰撞检测
render();//根据参数渲染画面到界面
}
//休眠,防止跑满CPU,因为大可不必
try{Thread.sleep(10)}catch(Exception e){/*一个必要的异常处理,但是一般不会写什么内容*/}
}
网友评论