|
7#
楼主 |
发表于 2006-7-18 12:48:57
|
只看该作者
我们在控制方块移动的时候,只需要知道他的下一个位置是否有小小方块,如果有则不能移动
我门定义的方块为4X4结构
//算法---左移
int posX,posY;
for(int x = 0; x<5;x++)
for(int y = 0;yx<5;y++)
{
if(iExist[x][y] == 0)
continue;
GetPos(posX,posY,x,y);
// 我们知道 方块的位置就是游戏区域的索引
// 所以
if(gs.iExist[posX-1][posY] == 1)
return false;
}
return true;
上面的算法,看是正确,但是有危险,posX-1很有可能小于0,而数组的索引不能小于0,也不可能大于等于定义值
所以在上面的算法中我们还要加格判断,否则程序在运行的时候会出错。
这样我们就可以知道 如何判断左移,下移,以及 变形的合法控制了
这些做完后我们就可以 完善游戏了
首先给程序添加个时间事件---------再XXXXView.h/.cpp中添加
再时间中我们写
if(tempBlock.Move(MM_DOWN) == false)
{
Swap();
tempBlock.Create();
}
//上面的只能是控制自动向下运动
//我们还要自己控制他
//给程序添加keyDown/up事件
添加如下代码
switch(nChar)
{
case VK_LFET:
return;
case VK_RIGHT:
tempBlocl.Move(MM_RIGHT);
return;
case VK_DOWN:
tempBlocl.Move(MM_DOWN)
return;
case VK_UP:
tempBlocl.Move(MM_CHG);//变形
return;
}
// |
|