|
|
7#

樓主 |
發(fā)表于 2006-7-18 12:48:57
|
只看該作者
我們在控制方塊移動的時候,只需要知道他的下一個位置是否有小小方塊,如果有則不能移動
我門定義的方塊為4X4結(jié)構(gòu)
//算法---左移
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);
// 我們知道 方塊的位置就是游戲區(qū)域的索引
// 所以
if(gs.iExist[posX-1][posY] == 1)
return false;
}
return true;
上面的算法,看是正確,但是有危險,posX-1很有可能小于0,而數(shù)組的索引不能小于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;
}
// |
|