敵にコインを当てて倒すゲームを作ろうとしているのですが、敵がちらついてしまいます。
プログラムは次のものです。
#include "obaq.as"
randomize
title "コイン投げゲーム"
celload "coin.bmp":texcoin=stat
celload "enemy.png",2
celdiv 2,65,65,32,32
gmode 2
score=0 ; GOALした数
throw=0 ; 発射した数
//敵の情報
dim enemy,20
dim enemy_x,20
dim enemy_y,20
dim enemy_hp,20
*start
qreset ; OBAQの初期化
qborder -80,-60,80,90 ; 画面の端を設定
qmat mat_spr, texgoal ; 画像を設定する
qtype type_bind ; 動かない(固定)オブジェクトにする
mr=M_PI ; 発射角度
mx=600:my=300+rnd(100) ; 発射位置
*main
; メインループ
;
stick key,15
if key&128 : end
if key&1 : if mr<4.5 : mr+=0.02
if key&4 : if mr>M_PI : mr-=0.02
if key&16 {
qaddpoly coin, 12, mx/4,my/4,0,5,5 ; コインを追加
qmat coin, mat_spr, texcoin ; 画像を設定する
qspeed coin, sin(mr), cos(mr)
throw++
}
//敵出現ルーチン
time++
if (time \ 200) = 0 {
repeat 20
if enemy(cnt) = 0 {
enemy(cnt) = 1
enemy_y(cnt) = rnd(361)
enemy_x(cnt) = -40
enemy_hp(cnt) = 10
break
}
loop
}
//敵の処理
repeat 20
if enemy_y(cnt) > 400 : enemy(cnt) = 0
if enemy(cnt) = 1{
enemy_x(cnt)++
pos enemy_x(cnt),enemy_y(cnt)
gcopy 2,0,0,65,65
}
loop
redraw 0 ; 画面の更新を開始
gradf ,,,,1,0,128 ; 画面クリア
qexec ; OBAQによるオブジェクトの更新
qdraw 1 ; オブジェクトの描画
color 0,255,0
pos mx,my:line mx+sin(mr)*100,my+cos(mr)*100
color 255,255,255
pos 0,0:mes "SCORE:"+score+"/"+throw
redraw 1 ; 画面の更新を終了
await 12 ; 一定時間待つ
goto *main
それと「celload "coin.bmp":texcoin=stat」の意味がわかりません。
私の知っているcelload命令は
celload "enemy.png",2
celdiv 2,65,65,32,32
このような感じで celload "ファイル名",ウィンドウID
celdiv ウィンドウID,横幅,縦幅,x中心座標,y中心座標
と分割するceldivとセットで使うものです。
「celload "coin.bmp":texcoin=stat」はどうやって使うのでしょうか?
よろしくお願いします。