【游戏开发】祖玛游戏(三十三)让红色方块自己掉下来

现在为止,一直都是通过键盘向下键往下移动方块的。实际游戏当中方块自己会往下掉。这又是怎么做的呢。

像这样自动的行为,从开发的角度来说,就是定时运行一段代码。

那我们就是需要在一定的时间间隔运行让方块下落的代码。

 

一定的时间间隔是怎么做的呢?首先我们要告诉系统我需要一个定时。这个函数是SetTimer。每次游戏开始的时候,也就是点了开始按钮的时候,我告诉系统说我需要一个定时器。

void Panel::start()

{

this->SetTimer(ID_TIMER,100,NULL);

...

}

 

SetTimer第一个参数是给定一个Timer的ID号。我把这个ID好DEFINE了一下。

#define ID_TIMER 1000

 第二个参数是Timer的时间间隔,以毫秒计,100也就是代表的0.1秒。

最后一个参数是每个0.1秒后系统会自动调用的函数。NULL是指不指定额外的函数,让当前Wnd的标准定时函数(处理WM_TIMER消息的函数)来处理。

如何增加当前Wnd(也就是Panel的)标准定时处理函数呢。这和处理所有其他系统消息都是一样的。我们来回忆一下前几节我们是如何处理WM_PAINT消息的:

在类视图中选中Panel,打开属性窗口,选中消息,找到WM_PAINT消息,增加处理函数。

对WM_TIMER的处理方式也是一样的。

在类视图中选中Panel,打开属性窗口,选中消息,找到WM_TIMER消息,增加处理函数。


 
【游戏开发】祖玛游戏(三十三)让红色方块自己掉下来

 

在产生的OnTimer函数中,我们调用moveDown函数。

void Panel::OnTimer(UINT_PTR nIDEvent)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

if (element!=NULL) element->moveDown();

Invalidate(false);

CWnd::OnTimer(nIDEvent);

}

 

大功告成,运行试一下吧

以上是 【游戏开发】祖玛游戏(三十三)让红色方块自己掉下来 的全部内容, 来源链接: utcz.com/a/70330.html

回到顶部