📄 game.cpp
字号:
{
m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40+1].counter = 40;
m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40+1].way = m_Player[0].way;
}
}
m_Player[0].presswaykey = 0;
}
}
else if (done == CAN_KICK && m_Player[0].kick)
{
m_Player[0].presswaykey++;
if (m_Player[0].presswaykey>20)
{
// 设置踢泡泡标志
if (m_Player[0].x %40 < 10)
{
if (((m_Player[0].y-40)/40 != 0) && ((m_ScreenItem[(m_Player[0].y-80)/40][m_Player[0].x/40].type == 0) || (m_ScreenItem[(m_Player[0].y-80)/40][m_Player[0].x/40].type == 8) || (m_ScreenItem[(m_Player[0].y-80)/40][m_Player[0].x/40].type == 9)))
{
m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40].type = 0;
MOVEBOMB move;
move.mode = 0;
move.way = m_Player[0].way;
move.x = m_Player[0].x/40*40;
move.y = (m_Player[0].y-40)/40*40;
move.counter = m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40].counter;
move.power = m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40].status;
move.who = m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40].who;
m_bombKick.push_back(move);
}
}
else
{
if (((m_Player[0].y-40)/40 != 0) && ((m_ScreenItem[(m_Player[0].y-80)/40][m_Player[0].x/40+1].type == 0) || (m_ScreenItem[(m_Player[0].y-80)/40][m_Player[0].x/40+1].type == 8) || (m_ScreenItem[(m_Player[0].y-80)/40][m_Player[0].x/40+1].type == 9)))
{
m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40+1].type = 0;
MOVEBOMB move;
move.mode = 0;
move.way = m_Player[0].way;
move.x = (m_Player[0].x/40+1)*40;
move.y = (m_Player[0].y-40)/40*40;
move.counter = m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40+1].counter;
move.power = m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40+1].status;
move.who = m_ScreenItem[(m_Player[0].y-40)/40][m_Player[0].x/40+1].who;
m_bombKick.push_back(move);
}
}
m_Player[0].presswaykey = 0;
}
}
return;
}
if (m_pInput->IsKeyDown(DIK_DOWN) && (m_Player[0].status == STATUS_FREE) && (m_Player[0].y != 12*40))
{
done = CAN_MOVE;
m_Player[0].way = WAY_DOWN;
if (m_Player[0].y % 40 == 0) // 判断阻挡
{
done = CAN_BLOCK;
// 正前方为空
if ((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==0 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==8 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==9 ))
{
// 右上方为空 ...OK!
if ((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==0 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==8 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==9 ))
{
done = CAN_MOVE; // 直接往前走
}
else // 右上方有东西
{
if (m_Player[0].x%40 == 0)
{
done = CAN_MOVE; // 直接往前走
}
else if (m_Player[0].x%40 <= 30)
{
m_Player[0].way = WAY_LEFT;
done = CAN_MOVE; // 向左边偏移
}
else if (m_Player[0].x%40 > 30)
{
if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type)
{
// 右上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==7)
{
// 右上方是泡泡,踢
done = CAN_KICK;
}
}
}
}
else // 正前方有东西
{
// 右上方为空 ...OK!
if ((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==0 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==8 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==9 ))
{
if (m_Player[0].x%40 == 0)
{
if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==2 )
{
// 正上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==7 )
{
// 正上方是泡泡,踢
done = CAN_KICK;
}
}
else if (m_Player[0].x%40 >= 10)
{
m_Player[0].way = WAY_RIGHT;
done = CAN_MOVE; // 向右边偏移
}
else if (m_Player[0].x%40 < 10)
{
if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==2 )
{
// 正上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==7 )
{
// 正上方是泡泡,踢
done = CAN_KICK;
}
}
}
else // 右上方有东西
{
// 此处较麻烦分4种情况: 1.左边可以移动,右边可以移动 如果x%40<20则左移,否则右移
// 2.左边可以移动,右边不可移动 如果x%40<=30则左移
// 3.左边不可移动,右边可以移动 如果x%40>=10则右移
// 4.左边不可移动,右边不可移动 不能移动
if (((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==2 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==7 ))
&& ((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==2 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==7 )))
{
if (m_Player[0].x%40 == 0)
{
if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==2 )
{
// 右上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==7 )
{
// 右上方是泡泡,踢
done = CAN_KICK;
}
}
else if (m_Player[0].x%40 < 20)
{
m_Player[0].way = WAY_LEFT;
done = CAN_MOVE; // 向左边偏移
}
else
{
m_Player[0].way = WAY_RIGHT;
done = CAN_MOVE; // 向右边偏移
}
}
if (((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==2 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==7 ))
&& !((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==2 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==7 )))
{
if (m_Player[0].x%40 == 0)
{
if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==2 )
{
// 右上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==7 )
{
// 右上方是泡泡,踢
done = CAN_KICK;
}
}
else if (m_Player[0].x%40 <= 30)
{
m_Player[0].way = WAY_LEFT;
done = CAN_MOVE; // 向左边偏移
}
}
if ( !((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==2 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type ==7 ))
&& ((m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==2 ) || (m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type ==7 )))
{
if (m_Player[0].x%40 >= 10)
{
m_Player[0].way = WAY_RIGHT;
done = CAN_MOVE; // 向右边偏移
}
}
}
}
}
test = done;
if (done == CAN_MOVE)
{
m_Player[0].status = STATUS_MOVE; // 设置移动标志
m_Player[0].counter = m_Player[0].step / m_Player[0].speed; // counter此处表示需要多少桢
if (m_Player[0].step % m_Player[0].speed != 0)
{
m_Player[0].counter++;
}
}
else if (done == CAN_PUSH)
{
m_Player[0].presswaykey++;
if (m_Player[0].presswaykey>40)
{
// 设置推箱子标志
if (m_Player[0].x %40 < 10)
{
if (((m_Player[0].y-40)/40 != 11*40 ) && ((m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40].type == 0) || (m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40].type == 8) || (m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40].type == 9)))
{
m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].counter = 40;
m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].way = m_Player[0].way;
}
}
else
{
if (((m_Player[0].y-40)/40 != 11*40 ) && ((m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40+1].type == 0) || (m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40+1].type == 8) || (m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40+1].type == 9)))
{
m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].counter = 40;
m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].way = m_Player[0].way;
}
}
m_Player[0].presswaykey = 0;
}
}
else if (done == CAN_KICK && m_Player[0].kick)
{
m_Player[0].presswaykey++;
if (m_Player[0].presswaykey>20)
{
// 设置踢泡泡标志
if (m_Player[0].x %40 < 10)
{
if (((m_Player[0].y-40)/40 != 11*40 ) && ((m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40].type == 0) || (m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40].type == 8) || (m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40].type == 9)))
{
m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].type = 0;
MOVEBOMB move;
move.mode = 0;
move.way = m_Player[0].way;
move.x = m_Player[0].x/40*40;
move.y = (m_Player[0].y+40)/40*40;
move.counter = m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].counter;
move.power = m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].status;
move.who = m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40].who;
m_bombKick.push_back(move);
}
}
else
{
if (((m_Player[0].y-40)/40 != 11*40 ) && ((m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40+1].type == 0) || (m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40+1].type == 8) || (m_ScreenItem[(m_Player[0].y+80)/40][m_Player[0].x/40+1].type == 9)))
{
m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].type = 0;
MOVEBOMB move;
move.mode = 0;
move.way = m_Player[0].way;
move.x = (m_Player[0].x/40+1)*40;
move.y = (m_Player[0].y+40)/40*40;
move.counter = m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].counter;
move.power = m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].status;
move.who = m_ScreenItem[(m_Player[0].y+40)/40][m_Player[0].x/40+1].who;
m_bombKick.push_back(move);
}
}
m_Player[0].presswaykey = 0;
}
}
return;
}
if (m_pInput->IsKeyDown(DIK_LEFT) && (m_Player[0].status == STATUS_FREE) && (m_Player[0].x != 0))
{
done = CAN_MOVE;
m_Player[0].way = WAY_LEFT;
if (m_Player[0].x % 40 == 0) // 判断阻挡
{
done = CAN_BLOCK;
// 正前方为空
if ((m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==0 ) || (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==8 ) || (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==9 ))
{
// 右上方为空 ...OK!
if ((m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==0 ) || (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==8 ) || (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==9 ))
{
done = CAN_MOVE; // 直接往前走
}
else // 右上方有东西
{
if (m_Player[0].y%40 == 0)
{
done = CAN_MOVE; // 直接往前走
}
else if (m_Player[0].y%40 <= 30)
{
m_Player[0].way = WAY_UP;
done = CAN_MOVE; // 向左边偏移
}
else if (m_Player[0].y%40 > 30)
{
if (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==2 )
{
// 右上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==7 )
{
// 右上方是泡泡,踢
done = CAN_KICK;
}
}
}
}
else // 正前方有东西
{
// 右上方为空 ...OK!
if ((m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==0 ) || (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==8 ) || (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==9 ))
{
if (m_Player[0].y%40 == 0)
{
if (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==2 )
{
// 右上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==7 )
{
// 右上方是泡泡,踢
done = CAN_KICK;
}
}
else if (m_Player[0].y%40 >= 10)
{
m_Player[0].way = WAY_DOWN;
done = CAN_MOVE; // 向右边偏移
}
else if (m_Player[0].y%40 < 10)
{
if (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==2 )
{
// 右上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==7 )
{
// 右上方是泡泡,踢
done = CAN_KICK;
}
}
}
else // 右上方有东西
{
// 此处较麻烦分4种情况: 1.左边可以移动,右边可以移动 如果x%40<20则左移,否则右移
// 2.左边可以移动,右边不可移动 如果x%40<=30则左移
// 3.左边不可移动,右边可以移动 如果x%40>=10则右移
// 4.左边不可移动,右边不可移动 不能移动
if (((m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==2 ) || (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==7 ))
&& ((m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==2 ) || (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==7 )))
{
if (m_Player[0].y%40 == 0)
{
if (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==2 )
{
// 右上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==7 )
{
// 右上方是泡泡,踢
done = CAN_KICK;
}
}
else if (m_Player[0].y%40 < 20)
{
m_Player[0].way = WAY_UP;
done = CAN_MOVE; // 向左边偏移
}
else
{
m_Player[0].way = WAY_DOWN;
done = CAN_MOVE; // 向右边偏移
}
}
if (((m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==2 ) || (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==7 ))
&& !((m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==2 ) || (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==7 )))
{
if (m_Player[0].y%40 == 0)
{
if (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==2 )
{
// 右上方是箱子,推
done = CAN_PUSH;
}
else if (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==7 )
{
// 右上方是泡泡,踢
done = CAN_KICK;
}
}
else if (m_Player[0].y%40 <= 30)
{
m_Player[0].way = WAY_UP;
done = CAN_MOVE; // 向左边偏移
}
}
if ( !((m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==2 ) || (m_ScreenItem[m_Player[0].y/40][m_Player[0].x/40-1].type ==7 ))
&& ((m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==2 ) || (m_ScreenItem[m_Player[0].y/40+1][m_Player[0].x/40-1].type ==7 )))
{
if (m_Player[0].y%40 >= 10)
{
m_Player[0].way = WAY_DOWN;
done = CAN_MOVE; // 向右边偏移
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -