c++ 编写游戏,希望在游戏中角色可以斜着走,比如按住up和left可以往左上方前进

来源:百度知道 编辑:UC知道 时间:2024/05/25 07:01:37
我正在用c++ 编写游戏,我希望在游戏中角色可以斜着走,比如按住up和left可以往左上方前进。
这是我写的部分移动代码,他们只能在正方向上走,希望哪位大虾可以帮助小弟渡过此截,问分感激
void HandleKeys()
{
if (!g_bGameOver && !g_bDemo) //判断游戏是否处于over 或者是 演示模式
{
// Move the car based upon left/right key presses

if (GetAsyncKeyState(VK_LEFT) < 0)
{
MoveCarLeft();
}
else if (GetAsyncKeyState(VK_RIGHT) < 0)
{
MoveCarRight();
}
else if (GetAsyncKeyState(VK_UP)<0)
{
MoveCarUp();
}
else if(GetAsyncKeyState(VK_DOWN)<0)
{
MoveCarDown();
}
}
}

//此为直接改变汽车位置的移动方法
void MoveCarLeft() //汽车向左移动
{
g_pCarSprite->OffsetPosition(-6,0);

}
void MoveCarRight() //汽车向右移动
{
g_pCarSprite->OffsetPosition(6,0);
}
void MoveCarDown() //汽车向上移动
{
g_pCarSprite->OffsetPosition(0,6);
}
void MoveCar

void HandleKeys()
{
if (!g_bGameOver && !g_bDemo) //判断游戏是否处于over 或者是 演示模式
{
int flag =0;
if (GetAsyncKeyState(VK_LEFT) < 0)
{
flag |= 0x01;
}
if (GetAsyncKeyState(VK_RIGHT) < 0)
{
flag |= 0x02;
}
if (GetAsyncKeyState(VK_UP)<0)
{
flag |= 0x04;
}
if (GetAsyncKeyState(VK_DOWN)<0)
{
flag |= 0x08;MoveCarDown();
}
switch(flag)
{
case 0x01:MoveCarLeft();break;
case 0x02:MoveCarRight();break;
case 0x04:MoveCarUp();break;
case 0x08:MoveCarDown();break;
// to do
case 0x05:MoveCarLeftUp();break;
case 0x09:MoveCarLeftDown();break;
case 0x06:MoveCarRightUp();break;
case 0x0a:MoveCarRightDown();break;
}
}
}

好无聊的东西...我还做了一个贪吃蛇呢 外加 一个弹射球体 在里面做不规则碰撞蛇体..后来才发现这些都是浮云

那也要有斜着走的按键啊,比如Q是斜向左上,那就
g_pCarSprite->OffsetPosition(-6,-6);