#include "hspdx.as" #include "hsp3util.as" #include "hsp261cmp.as" ; ; HSPDX.DLL sample1 ; スプライトを表示、カーソルキーで上下左右に移動。 ; スペースキーで、リンゴを発射。たくさん発射。 ; 左上にベンチマークを表示。 ; [ESC]キーで終了 ; ;------------------------------------------------------------------ es_ini ; system初期化 es_screen 640,480,8 ; スクリーン初期化 if stat=1 : goto *dderr1 if stat=2 : goto *dderr2 goto *start ; 正常に完了 *dderr1 dialog "DirectXの初期化に失敗しました。",1 end *dderr2 dialog "スクリーンの初期化に失敗しました。",1 end *dderr3 es_bye wait 100 dialog "VRAMの容量が不足しています。",1 end ;------------------------------------------------------------------ *start buffer 3,,,1 bmppalette "testchr.bmp" picload "testchr.bmp" es_buffer 0,2 if stat : goto *dderr3 es_size 64,64,60 es_pat 0, 64,64 ; 顔 es_pat 1, 0,64 ; リンゴ gsel 0,1 es_cls es_sync wait 100 myx=100:myy=100 es_set 0,myx,myy,0 ; メインのスプライト a=0 tt=0 ky=0 *main stick ky,$1f ; カーソルキーの情報を取得 gosub *keychk if ky&$10 : gosub *ringo if ky&$80 : goto *owari es_pos 0,myx,myy es_cls 0,0,255 ; 青でクリア es_draw ; スプライト描画 pos 0,0:es_mes "T="+tt ; 文字列を描画 es_sync ; 画面の更新 tt=stat ; ベンチマークを取得 await 1 ; タスク更新 goto *main *ringo ; リンゴ発射 ; es_new a,2 es_set a,myx,myy,1 rnd b,64 es_adir a,b,400 return *owari es_bye end *keychk ; カーソルキー入力で自分(変数myx,myy)を動かすサブルーチン ; (カーソルキーを同時に押すことにより斜めにも移動できます) ; if ky&2 : goto *go_up ; 上を押しているか? if ky&8 : goto *go_down ; 下を押しているか? goto *keychk2 ; 左右のチェックにジャンプ *go_up if myy>-32 : myy-=8 goto *keychk2 *go_down if myy<380 : myy+=8 *keychk2 if ky&1 : goto *go_left ; 左を押しているか? if ky&4 : goto *go_right ; 右を押しているか? return *go_left if myx>-32 : myx-=8 return *go_right if myx<580 : myx+=8 return