switch(nChar)
{
case VK_LEFT:
// if(mitu[i-1][j]==0)
// {
center.x-=29;
// i=(center.x-38)/38;
// }
break;
case VK_RIGHT:
// if(mitu[i+1][j]==0)
// {
center.x+=29;
// i=(center.x-38)/38;
// }
break;
case VK_UP:
// if(mitu[i][j-1]==0)
// {
center.y-=26.9;
// j=(center.y-33)/33;
// }
break;
case VK_DOWN:
// if(mitu[i][j+1]==0)
// {
center.y+=27;
// j=(center.y-33)/33;
// }
break;
{
case VK_LEFT:
// if(mitu[i-1][j]==0)
// {
center.x-=29;
// i=(center.x-38)/38;
// }
break;
case VK_RIGHT:
// if(mitu[i+1][j]==0)
// {
center.x+=29;
// i=(center.x-38)/38;
// }
break;
case VK_UP:
// if(mitu[i][j-1]==0)
// {
center.y-=26.9;
// j=(center.y-33)/33;
// }
break;
case VK_DOWN:
// if(mitu[i][j+1]==0)
// {
center.y+=27;
// j=(center.y-33)/33;
// }
break;
地图是个二维数组
值为0代表可以走,
为1代表有障碍物
i=(center.x-38)/38;先算去对应的数组下标
j=(center.y-33)/33;switch(nChar)
{
case VK_LEFT:
if(mitu[i-1][j]==0)
{
center.x-=29;
}
break;
case VK_RIGHT:
if(mitu[i+1][j]==0)
{
center.x+=29;
}
break;
case VK_UP:
if(mitu[i][j-1]==0)
{
center.y-=26.9;
}
break;
case VK_DOWN:
if(mitu[i][j+1]==0)
{
center.y+=27;
}
break;这样试试..
{
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,1,0,0,0,1},
{1,1,0,1,0,0,0,1,1,1},
{1,0,0,1,0,1,0,0,0,1},
{1,1,0,0,0,0,1,0,1,1},
{1,0,0,1,0,0,0,0,1,1},
{1,1,0,1,0,1,1,0,0,1},
{1,1,0,0,0,0,0,0,1,1},
{1,0,0,1,0,0,1,0,0,1},
{1,1,1,1,1,1,1,1,1,1}
};我的数组是这样的,i,j我在view里面初始化的了 但是还是没效果 而且走的方式不对
switch(nChar)
{
case VK_LEFT:
if(mitu[i-1][j]==0)
{
center.x-=38;
}
break;
case VK_RIGHT:
if(mitu[i+1][j]==0)
{
center.x+=38;
}
break;
case VK_UP:
if(mitu[i][j-1]==0)
{
center.y-=33;
}
break;
case VK_DOWN:
if(mitu[i][j+1]==0)
{
center.y+=33;
}
break;
}
i=(center.y-33)/33;由坐标算下标 这个反了.i是数组里面的行,对应坐标应该是Y方向的...
举一个左移的例子
你里面的case VK_LEFT:
if(mitu[i][j-1]==0)//改为这样,,
{
center.x-=38;
}
break每个方向的都改改看..再试试看..