#1
by aolf » 6年前
C言語でシューティングゲームを作ろうとしているのですが、「画面の右端から敵が出てきてX座標700の所で3秒間停止し、その後また画面から消えていく」というプログラムがどうしても作れません。
60fpsでの稼働を目指しているのでSleepは使えず、またゲームの背景や自機の操作は可能な状態にしたいので、どちらにしろSleepが使えません。
Sleepを使わず、3秒間だけ敵のみを停止させるプログラムの作り方を教えて下さりませんでしょうか?
現在作っているプログラムは
------------------------------------------------------------------------------------------------------------------------------------------------------
void Fighter_Script(void)
{
double starttime, endtime;
double totaltime = 0.0, settime = 3.0;
starttime = clock(3000) / CLOCKS_PER_SEC;
for (e = 0; e < EMAX; e++) {
if (ex[e] < 700) { emcnt = 2; }
if (totaltime>settime) { emcnt = 4; }
endtime = clock(3000) / CLOCKS_PER_SEC;
totaltime = endtime - starttime;
if (eflag[e] == 1) {
if (ex[e] ==699) {
ey[e] = rand() % 550 + 50;
ex[e] = 1280;
}
dg_drawbmp3(bb, ex[e], ey[e], 100, 100, enemy_pbmp, 0, 0, RGB(255, 255, 255));
}
else if (eflag[e] == 2) {
dg_drawbmp3(bb, ex[e], ey[e] + 30, 50, 50, effect_pbmp, eanime[e] * 50, 0, RGB(255, 255, 255));
eanime[e]++;
if (eanime[e] == 7) {
eflag[e] = 1;
ex[e] = 1280;
ey[e] = rand() % 550 + 50;
}
}
switch (md[emcnt]) {
case 1:ex[e] -= 10; break;
case 2:ex[e] = ex[e]; break;
case 3:ex[e] += 10; break;
case 4:ex[e] -= 2; break;
case 6:ex[e] += 2; break;
case 7:ex[e] -= 2; ey[e] -= 2; break;
case 8: ey[e] -= 2; break;
case 9:ex[e] += 2; ey[e] -= 2; break;
}
//次のデータへ
emcnt++;
if (md[emcnt] == 997) { emcnt = 0; }
if (md[emcnt] == 998) { emcnt = 2; }
if (md[emcnt] == 999) { emcnt = 4; }
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------
になります。
地味な動きでも良いので、スクリプトとして、右端から敵が出てきて停止し、その後画面から消えていく流れを実現させたいです。
C言語歴は10ヶ月ほどですが、大きめのシューティングゲームを作るのは始めてです。
ご回答宜しくお願い致します。
C言語でシューティングゲームを作ろうとしているのですが、「画面の右端から敵が出てきてX座標700の所で3秒間停止し、その後また画面から消えていく」というプログラムがどうしても作れません。
60fpsでの稼働を目指しているのでSleepは使えず、またゲームの背景や自機の操作は可能な状態にしたいので、どちらにしろSleepが使えません。
Sleepを使わず、3秒間だけ敵のみを停止させるプログラムの作り方を教えて下さりませんでしょうか?
現在作っているプログラムは
------------------------------------------------------------------------------------------------------------------------------------------------------
void Fighter_Script(void)
{
double starttime, endtime;
double totaltime = 0.0, settime = 3.0;
starttime = clock(3000) / CLOCKS_PER_SEC;
for (e = 0; e < EMAX; e++) {
if (ex[e] < 700) { emcnt = 2; }
if (totaltime>settime) { emcnt = 4; }
endtime = clock(3000) / CLOCKS_PER_SEC;
totaltime = endtime - starttime;
if (eflag[e] == 1) {
if (ex[e] ==699) {
ey[e] = rand() % 550 + 50;
ex[e] = 1280;
}
dg_drawbmp3(bb, ex[e], ey[e], 100, 100, enemy_pbmp, 0, 0, RGB(255, 255, 255));
}
else if (eflag[e] == 2) {
dg_drawbmp3(bb, ex[e], ey[e] + 30, 50, 50, effect_pbmp, eanime[e] * 50, 0, RGB(255, 255, 255));
eanime[e]++;
if (eanime[e] == 7) {
eflag[e] = 1;
ex[e] = 1280;
ey[e] = rand() % 550 + 50;
}
}
switch (md[emcnt]) {
case 1:ex[e] -= 10; break;
case 2:ex[e] = ex[e]; break;
case 3:ex[e] += 10; break;
case 4:ex[e] -= 2; break;
case 6:ex[e] += 2; break;
case 7:ex[e] -= 2; ey[e] -= 2; break;
case 8: ey[e] -= 2; break;
case 9:ex[e] += 2; ey[e] -= 2; break;
}
//次のデータへ
emcnt++;
if (md[emcnt] == 997) { emcnt = 0; }
if (md[emcnt] == 998) { emcnt = 2; }
if (md[emcnt] == 999) { emcnt = 4; }
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------
になります。
地味な動きでも良いので、スクリプトとして、右端から敵が出てきて停止し、その後画面から消えていく流れを実現させたいです。
C言語歴は10ヶ月ほどですが、大きめのシューティングゲームを作るのは始めてです。
ご回答宜しくお願い致します。