void SightedBomb( float x, float y, // 메인 캐릭터의 좌표 float sx, float sy, // 조준의 좌표 float bvx, float bvy, // 폭탄의 속도 bool button // 버튼의 상태(눌렸으면 true) ) { // 폭탄의 상태 static bool bombing=false; // 폭격중인지 아닌지를 나타내는 플래그 static float bx, by; // 폭탄의 좌표 static float tx, ty; // 착탄점의 좌표 // 폭격중이 아닐 때: // 버튼이 눌렸다면 폭격을 수행함. // 폭탄의 초기좌표와 착탄점의 좌표를 설정함. if (!bombing) { if (button) { bombing=true; bx=x; by=y; tx=sx; ty=sy; } } // 폭격중 일 때: // 폭탄을 이동시킴. // 폭탄이 착탄점에 도달하였다면 폭발시킴. // 폭발의 구체적인 처리는 Explode 함수에서 수행하도록 함. else { bx+=bvx; by+=bvy; if (bx==tx && by==ty) { Explode(); bombing=false; } } // 메인 캐릭터와 조준을 그리기: // 구체적인 처리는 DrawMyShip関数とDrawScope 함수에서 수행하기로 함. // 조준과 지상물과의 접촉 판정 처리를 수행하면, // 조준의 가장자리를 점멸하는 것도 가능. DrawMyShip(x, y); DrawScope(sx, sy); // 폭격중인 경우에는 착탄점과 폭탄을 그림: // 구체적인 처리는 DrawTarget 함수와 DrawBomb 함수에서 수행하기로 함. if (bombing) { DrawTarget(tx, ty); DrawBomb(bx, by); } }
void StageDraw() { DrawMap(map, 0); DrawEnemy(map); DrawItem(map); DrawBomb(map); DrawEffect(map); DrawPlayer(map); #if !MAP_EDIT_MODE DrawTextureObject(res.player_right, 0, 0); FontPrintf(32, 16, "x %d", life); DrawTextureObject(res.font_stage, 128, 16); FontPrintf(128 + 16 * 5, 16, "%d", stageNum + 1); DrawTextureObject(res.font_score, 128 + 16 * 5 + 32, 16); FontPrintf(128 + 16 * 5 + 32 + 16 * 5 + 16 , 16, "%d", score); PrintWindow("fps: %d", engineFps); #endif }