敵クラスを生成するときに
「オペランドと一致する演算子”=”はありません」とエラーが
出てしまいます
分かる方がいましたら
教えていただきたいです。
下記サイトを見ながら制作しています
http://bituse.info/game/shot/11
[enemy.h]
class ENEMY {
private:
//座標とグラフィックハンドル
double x, y;
int gh[3];
//画像サイズ
int width, height;
//出現、停止、帰還、発射タイミング
int in_time, stop_time, out_time, shot_time;
//敵の種類
int type;
//弾の種類
int stype;
//移動パターン
int m_pattern;
//ショットパターン
int s_pattern;
//HP
int hp;
//アイテム
int item;
//敵が出現してからのカウント
int count;
//敵消滅フラグ
bool deadflag;
//敵クラス消滅フラグ
bool endflag;
//弾構造体
E_SHOT shot[ENEMY_SNUM];
//ショットが撃てるようになったかのフラグ
bool sflag;
//ショットが打てるようになってからのカウント
int scount;
public:
bool All();
void Move();
void Shot();
void Draw();
ENEMY(int type, int stype, int m_pattern, int s_pattern, int in_time, int stop_time, int shot_time, int out_time,
int x, int y, int speed, int hp, int item);
};
[enemy.cpp]
#include"enemy.h"
ENEMY::ENEMY(int type, int stype,int m_pattern,int s_pattern,int in_time,int stop_time, int shot_time, int out_time,
int x, int y, int speed, int hp, int item)
{
//サイズ
width = 27;
height = 25;
//敵の種類
this->type = type;
this->stype = stype;
//移動パターンとショットパターン
this->m_pattern = m_pattern;
this->s_pattern = s_pattern;
//座標セット
this->x = x;
this->y = y;
//出現、停止、発射、帰還時間セット
this->in_time = in_time;
this->stop_time = stop_time;
this->shot_time = shot_time;
this->out_time = out_time;
//HPとアイテム代入
this->hp = hp;
this->item = item;
//敵画像読み込み
if (type == 0)
{
LoadDivGraph("DATA/BG/enemy.png", 3, 1, 3, 27, 25, gh);
}
int temp;
//弾画像読み込み
if (stype == 0)
{
temp = LoadGraph("DATA/BG/enemyshot1.png");
}
int w, h;
GetGraphSize(temp, &w, &h);
//弾の初期化
for (int i = 0; i < ENEMY_SNUM; ++i)
{
shot[i].flag = false;
shot[i].gh = temp;
shot[i].width = w;
shot[i].height = h;
shot[i].pattern = s_pattern;
shot[i].speed = speed;
shot[i].x = x;
shot[i].y = y;
}
count = 0;
scount = 0;
deadflag = false;
endflag = false;
sflag = false;
}
void ENEMY::Move()
{
//出てきてから止まる時間までの間なら下に移動
if (in_time < g_count && g_count < stop_time)
{
y += 2;
//帰還時間を過ぎたら戻る。
}
else if (g_count > out_time)
{
y -= 2;
if (y < -40)
{
endflag = true;
}
}
}
void ENEMY::Shot()
{
//発射タイミングになったら、フラグを立てる
if (shot_time == g_count)
{
sflag = true;
}
//フラグ立ってるときだけ
if (sflag) {
switch (s_pattern) {
case 0:
//10回に一回発射。40までなので5発発射。
if (scount % 10 == 0 && scount <= 40)
{
for (int i = 0; i < ENEMY_SNUM; ++i)
{
//フラグが立ってない弾を探して、座標等をセット
if (shot[i].flag == false)
{
shot[i].flag = true;
shot[i].x = x;
shot[i].y = y;
break;
}
}
}
break;
}
//フラグが立ってる弾の数
int s = 0;
//フラグ立ってる弾だけ、弾の移動を行う
for (int i = 0; i < ENEMY_SNUM; ++i)
{
if (shot[i].flag)
{
shot[i].y += shot[i].speed;
//弾が画面をはみ出たらフラグを戻す。
if (shot[i].x < -20 || shot[i].x>420 || shot[i].y < -20 || shot[i].y>500)
{
shot[i].flag = false;
continue;
}
++s;
}
}
//sがゼロということは発射中の弾がない。
//かつdeadflagがTRUEということはこの敵のクラスは消滅させてもよい
if (s == 0 && deadflag)
{
//敵クラス消滅フラグをTRUEにする
endflag = true;
}
++scount;
}
}
void ENEMY::Draw()
{
int temp;
//弾から最初に描画
for (int i = 0; i < ENEMY_SNUM; ++i)
{
if (shot[i].flag)
{
DrawGraph(shot[i].x, shot[i].y, shot[i].gh, true);
}
}
if (!endflag)
{
temp = count % 40 / 10;
if (temp == 3)
temp = 1;
DrawGraph(x, y, gh[temp], TRUE);
}
}
bool ENEMY::All()
{
Move();
Shot();
Draw();
++count;
return endflag;
}
[control.h]
#include"enemy.h"
class CONTROL{
private:
//エネミークラス
ENEMY *enemy;
public:
CONTROL();
~CONTROL();
void All();
};
[control.cpp]
#include "control.h"
CONTROL::CONTROL()
{
FILE *fp;
ENEMY_DATA data[ENEMY_NUM];
char buf[100];
int c;
int col = 1;
int row = 0;
memset(buf, 0, sizeof(buf));
fp = fopen("enemydata.csv", "r");
//ヘッダ読み飛ばし
while (fgetc(fp) != '\n');
while (1) {
while (1) {
c = fgetc(fp);
//末尾ならループを抜ける。
if (c == EOF)
goto out;
//カンマか改行でなければ、文字としてつなげる
if (c != ',' && c != '\n')
strcat(buf, (const char*)&c);
//カンマか改行ならループ抜ける。
else
break;
}
//ここに来たということは、1セル分の文字列が出来上がったということ
switch (col) {
//1列目は敵種類を表す。atoi関数で数値として代入。
case 1: data[row].type = atoi(buf); break;
//2列目は弾種類。以降省略。
case 2: data[row].stype = atoi(buf); break;
case 3: data[row].m_pattern = atoi(buf); break;
case 4: data[row].s_pattern = atoi(buf); break;
case 5: data[row].in_time = atoi(buf); break;
case 6: data[row].stop_time = atoi(buf); break;
case 7: data[row].shot_time = atoi(buf); break;
case 8: data[row].out_time = atoi(buf); break;
case 9: data[row].x = atoi(buf); break;
case 10: data[row].y = atoi(buf); break;
case 11: data[row].speed = atoi(buf); break;
case 12: data[row].hp = atoi(buf); break;
case 13: data[row].item = atoi(buf); break;
}
//バッファを初期化
memset(buf, 0, sizeof(buf));
//列数を足す
++col;
//もし読み込んだ文字が改行だったら列数を初期化して行数を増やす
if (c == '\n') {
col = 1;
++row;
}
}
out:
//敵クラス生成
for (int i = 0; i<ENEMY_NUM; ++i)
{
[color=#FF0000]//ここのenemy[i]=の所でエラーが出ます[/color]
enemy[i] = new ENEMY(data[i].type, data[i].stype, data[i].m_pattern, data[i].s_pattern, data[i].in_time, data[i].stop_time, data[i].shot_time,
data[i].out_time, data[i].x, data[i].y, data[i].speed, data[i].hp, data[i].item);
}
}
void CONTROL::All()
{
//描画領域を指定
SetDrawArea(MARGIN, MARGIN, MARGIN + 380, MARGIN + 460);
for (int i = 0; i<ENEMY_NUM; ++i) {
[color=#FF0000]//ここのenemy[i]!=の所でエラーが出ます[/color]
if (enemy[i] != NULL) {
if (enemy[i]->All()) {
delete enemy[i];
enemy[i] = NULL;
}
}
}
++g_count;
}
CONTROL::~CONTROL()
{
for (int i = 0; i<ENEMY_NUM; ++i) {
[color=#FF0000]//ここのenemy[i]!=の所でエラーが出ます[/color]
if (enemy[i] != NULL) {
delete enemy[i];
}
}
}