この文章では、C言語においてチーム制作では欠かすことが出来ないファイル分割について説明する。
プレイヤー、敵、弾などのオブジェクト毎に、敵に関する処理はenemy.cpp、プレイヤーはplayer.cppみたく、ファイルを分割する。
例えば敵の処理を分割したい場合。
//インクルードガード、詳しくはグーグル先生か教科書のインクルードガードの項を
#pragma once
#define ENEMY_MAX 256
#define ENEMY_SIZE 2
struct Enemy {
int x, y;
int hp;
int flag;
}
//変数はexternで共有する
extern Enemy enemies[];
void enemyInit();
void enemyUpdate();
void enemyDraw();
#include "enemy.h"
//変数の実態は一つしか作れないので、cpp側で作る
Enemy enemies[ENEMY_MAX];
void enemyInit() {
for (int i = 0; i < ENEMY_MAX; i++) {
enemies[i].flag = 0;
}
}
void enemyUpdate() {
for (int i = 0; i < ENEMY_MAX; i++) {
//フラグの立ってない敵の処理は行わない(continue)
if (enemies[i].flag == 0) continue;
enemies[i].y++;
}
}
void enemyDraw() {
for (int i = 0; i < ENEMY_MAX; i++) {
if (enemies[i].flag == 0) continue;
LOCATE(enemies[i].x, enemies[i].y);
printf("敵");
}
}
呼び出し側は以下のように、
int main () {
enemyInit();
while (true) {
enemyUpdate();
enemyDraw();
}
}