void PowerShotReleased( bool button, // 버튼 상태 (눌렸으면 true) int min_power, // 에너지 샷이 발사될 최소한의 파워 int max_power // 최대 파워 ) { // 모은 에너지 static int power=0; // 버튼을 누르고 있지 않을 때: // 에너지를 모음 if (!button && power<max_power) power++; // 버튼을 누르고 있을 때: // 모은 에너지가 0보다 크다면 샷을 발사하고 에너지를 0으로 되돌림. if (button && power>0) { // 최대 파워일 때: // 특별한 샷을 발사. // 구체적인 처리는 MaxShot 함수에서 수행하기로 함. if (power==max_power) MaxShot(); else // 최소 파워 이상, 최대 파워 미만일 경우: // 모아둔 에너지에 해당하는 공격력의 에너지 샷을 발사함. // 구체적인 처리는 BigShot 함수에서 수행하기로 함. if (min_power<=power) BigShot(power); // 에너지를 0으로 되돌림. power=0; } }
//============================================================== // 세미 오토 연사 void CMover::SemiAutoShot( bool button, // 버튼 상태 (눌렸으면 true) int min_power, // 에너지의 최소치 int max_power, // 에너지의 최대치 int max_gauge, // 연사 게이지의 최대치 int& power, // 모은 에너지 int& gauge // 연사 게이지 ) { // 버튼을 누르고 있을 때: if (button) { // 에너지가 부족할 경우: // 보통 샷을 발사. if (power<min_power) Shot(); // 파워를 늘리고, 연사 게이지를 최대로 함. if (power<max_power) power++; gauge=max_gauge; } // 버튼을 떼고 있을 때: else { // 에너지가 충분할 경우: // 에너지 샷을 발사: // 모아둔 에너지가 최대치에 도달했을 때는 특별한 샷을 발사. if (min_power<=power) { if (power==max_power) MaxShot(); else BigShot(power); gauge=0; } // 연사 게이지가 0보다 클 경우: // 보통 샷을 발사하고, 연사 게이지를 1 감소시킴. if (gauge>0) { Shot(); gauge--; } // 에너지를 0으로 함. power=0; } }