ゲームの処理が遅くなる

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
うめじそ

ゲームの処理が遅くなる

#1

投稿記事 by うめじそ » 16年前

こんばんは。プログラミング初心者です。
僕は現在VC++でタワーディフェンスと呼ばれるような防衛戦略ゲームの作成をしています。
具体的には自発的に攻撃する大砲をプレイヤーが設置し、迫ってくる敵を倒すというものです。

とりあえず大砲が敵を認知して攻撃する部分、敵が歩いてくる部分をそれぞれ作ったのですが
武器を2つ以上設置する(武器の関数を2回以上使う)と、弾が飛んでいる状態での全体の処理が遅くなってしまいます。
弾を飛ばすアルゴリズムは龍神録を参考にして作り、骨格も拝借しているので、そこまで重い処理ではないと思うのですが・・
ちなみにPCの性能も市販のゲームが十分動く程度なので問題はないと思います。
弾が飛んでいるときだけ重くなるので、弾を動かす所で無駄な処理をしているのかと考えたのですが、悪い箇所が分かりません。
是非アドバイスをお願いします。
以下汚いですが、弾を飛ばすアルゴリズムです

(chが大砲の、enが敵の構造体です。)
if(ch[j].tama.flag==0 && rate==0 && ch[j].range*ch[j].range > pow(en.X-ch[j].X,2)+pow(en.Y-ch[j].Y,2)){
	//弾フラグ0,ディレイ後、敵が攻撃範囲内のとき
		ch[j].tama.flag = 1;
		ch[j].tama.x = ch[j].X;
		ch[j].tama.y = ch[j].Y;
		rate = ch[j].delay;   //最低攻撃間隔 ch[j].delay(ms)
		break;
}
	if(rate > 0 && ch[j].range * ch[j].range > pow(en.X - ch[j].X,2)+pow(en.Y - ch[j].Y,2)){//敵が範囲内のとき
	rate--;
	}

	if(ch[j].tama.flag==1)	{//弾フラグが1のとき弾を移動させる
		ch[j].tama.spd = 10;
		DrawGraph((int)ch[j].tama.x-16,(int)ch[j].tama.y-16,img[1],TRUE);
		ch[j].tama.angle = atan2(en.Y-ch[j].tama.y,en.X-ch[j].tama.x);
		ch[j].tama.x += cos(ch[j].tama.angle) * ch[j].tama.spd;
		ch[j].tama.y += sin(ch[j].tama.angle) * ch[j].tama.spd;
	}

“C言語何でも質問掲示板” へ戻る