インベーダーモドキ(ingameのソースとヘッダー)

/*************************************************
*ingame.h
**************************************************/
//インクルードガード。
#ifndef INGAME_H
//インクルードガード用定数。
#define INGAME_H
#define DEFENSE_LINE 26
//インゲーム間の処理。
void IngameProcess();
#endif //
/*************************************************
*ingame.cpp
**************************************************/

#include "Console_game_lib.h"//ingame.cpp
#include "global.h"
#include "bullet.h"
#include "player.h"
#include "enemy.h"
#include "result.h"
//デファイン。
#define UFO_SPAWN_LATE 100

void IngameProcess() {
for (int i = 0; i < CHARACTER_MAX; i++) {
//キャラによって処理を分けて動かす。
switch (characters[i].character_id) {
case CHARACTER_ID_NONE:
continue;
case CHARACTER_ID_PLAYER:
MovePlayer(i);
break;
case CHARACTER_ID_ENEMY:
MoveEnemy(i);
break;
case CHARACTER_ID_BULLET:
MoveBullet(i);
break;
case CHARACTER_ID_UFO:
MoveUfo(i);
break;
}
}
//当たり判定のチェック。
for (int i = 0; i < CHARACTER_MAX; i++) {
// キャラによって処理を分ける。
switch (characters[i].character_id) {
case CHARACTER_ID_NONE:
continue;
case CHARACTER_ID_BULLET:
HitCheckBullet(i);
break;
}
}
//プレイヤーの番号を取得。
int player_num = FindPlayerNumber();
//スコアの更新および全キャラクターの描画。
for (int i = 0; i < CHARACTER_MAX; i++) {
// キャラによって処理を分ける。
switch (characters[i].character_id) {
case CHARACTER_ID_NONE:
continue;
case CHARACTER_ID_ENEMY_KILLCOUNT:
characters[i].score.killboard[characters[i].character_id]
= characters[player_num].score.killboard[CHARACTER_ID_ENEMY];
break;
case CHARACTER_ID_UFO_KILLCOUNT:
characters[i].score.killboard[characters[i].character_id]
= characters[player_num].score.killboard[CHARACTER_ID_UFO];
break;
case CHARACTER_ID_SCORE:
characters[i].score.killboard[characters[i].character_id]
= characters[player_num].score.killboard[CHARACTER_ID_SCORE];
break;
case CHARACTER_ID_BULLET_KILLCOUNT:
characters[i].score.killboard[characters[i].character_id]
= characters[player_num].score.killboard[CHARACTER_ID_BULLET];
break;
}
//キャラを表示。
Draw(characters[i].x, characters[i].y, characters[i].image, characters[i].score.killboard[characters[i].character_id]);
}
//敵部隊の最終位置が決定したので、次回の移動量を決めて置く。
SetSquadVector();
//本当はシナリオデータ的な奴を作ったほうがいいと思うけど、横着しちゃう。ゆるして。
if (game_handle.ingame_flame % UFO_SPAWN_LATE == UFO_SPAWN_LATE * 0.75) {
int ufo_num = InitCharacter(CHARACTER_ID_UFO);
characters[ufo_num].x = 1;
characters[ufo_num].y = 0;

} //全部のキャラクターを動かし終わったので、終了条件を満たしているかチェック。 if (CheckSquadProgressPosition()) { game_handle.game_state = GAME_STATE_GAMEOVER; //ゲームステートが変わるので、後始末しておく。 ClearCharacterBuffer(); } else if (!GetEnemyCounter()) { game_handle.game_state = GAME_STATE_RESULT; SetResultScore(characters[player_num].score); ClearCharacterBuffer(); return; } //このゲームモードで経過する時間を進める。 game_handle.ingame_flame++;

}

この記事が気に入ったらサポートをしてみませんか?