sample\elm2d\sample3.hsp » Plain Format
; 2Dシューティングゲーム・サンプル1 ; (プレイヤーはカーソルキーで移動、スペースかctrlでミサイル発射) ; #include "hgimg3.as" #define global _dispx 640 #define global _dispy 480 goto *start ;---------------------------------------------------------------------------- ; ツールで出力したソースを取り込む ; (モジュール空間には置かないでください) ; (スプライン移動(絶対)の例) ; #include "ene01.hsp" #define COL_MY 1 ; プレイヤーのコリジョンID #define COL_SHOT 2 ; プレイヤーミサイルのコリジョンID #define COL_ENEMY 4 ; 敵のコリジョンID #define COL_ENESHOT 8 ; 敵ミサイルのコリジョンID #deffunc myinit ; プレイヤー初期化 ; x1=-288 : y1=-208 ; 移動可能範囲 左上XY x2=288 : y2=208 ; 移動可能範囲 右下XY regobj mychr,pchr(0) msp = 4 ; 移動速度 setpos mychr,0,180,0 ; デフォルト位置 setcoli mychr,COL_MY,COL_ENEMY|COL_ENESHOT myflag=0 : myfire=1 : myfcnt=0 : myftime=0 setborder 740.0f, 540.0f, 200.0f ; クリップ範囲 return #deffunc mymove ; プレイヤー毎フレーム処理 ; ; プレイヤーのミサイル当たり処理 ; findobj 0,COL_SHOT repeat:nextobj i:if i<0 : break getcoli res,i,20.0 if res>=0 { getposi res,x,y,z delobj i ; 自分のミサイルを消す delobj res ; 敵も消す } loop ; if myflag : return ; プレイヤー移動処理 ; getposi mychr,myx,myy,myz if key&1 : myx=limit( myx-msp, x1, x2 ) : setpos mychr,myx,myy,myz if key&4 : myx=limit( myx+msp, x1, x2 ) : setpos mychr,myx,myy,myz if key&2 : myy=limit( myy-msp, y1, y2 ) : setpos mychr,myx,myy,myz if key&8 : myy=limit( myy+msp, y1, y2 ) : setpos mychr,myx,myy,myz if myftime { myftime- if myftime=0 : myfire=1 } if key&80 : goto *myshot ; 発射 myfcnt=0 return *myshot if (myfcnt&15)=0 { regobj i,pchr(myfire),OBJ_MOVE|OBJ_BORDER setpos i,myx,myy,myz setdir i,0,-8,0 setcoli i,COL_SHOT,COL_ENEMY } myfcnt+ return ;---------------------------------------------------------------------------- *start ; HGIMG3初期設定 ; randomize hgini ; ; テクスチャフォント表示の準備 ; setfont 20,22,20,1 ; font Tex select(cx,cy,px,mode) texload "atfont.bmp" ; フォントテクスチャの登録 ; スプライトモデルを登録 ; dim pchr,40 i=0 repeat 16 : x=(cnt&3)*64 : y=(cnt>>2)*64 setuv x,y,x+63,y+63 addspr pchr(i),1 ; キャラ登録 i+:loop ; texload2 "dot.tga" ; テクスチャの登録 ; オブジェクトの登録 ; regobj ufo,pchr(6) setcoli ufo,COL_ENEMY,COL_MY ; ツールで出力したデータの初期化(登録) ; ene01_init ene01_setevent ufo ; プレイヤー初期化 ; myinit fr=0 *gmain stick key,$3ff if key&128 : goto *owari mymove hgdraw fprt "FRAME "+fr,20,16 hgsync 16 fr++ goto *gmain *owari end