#include "HSPDXFIX.AS"
#const 周の精度 3600
sw=640:sh=480:cw=16:ch=18:spd=150
es_ini 256,256,周の精度:onexit *quit
es_screen sw,sh,32,0,1,0:if stat:goto *quit
buffer 2,sw,sh:cls 4
es_buffer 2:pos 0,0:es_mes "●",2 ;・スプライト定義
es_size cw,ch,100,0:es_expat 0,2,0,0,0
es_area 0,0,sw-cw,sh-ch ;・移動範囲設定
gosub *rst:gsel 0
repeat ;---
title strf("cnt:%09d",cnt)+strf(" ang:%d",ang)+strf(" spd:%d",spd):wait 0
stick s,15:es_get f,0,0
if ((f=0)|(s=16)) :gosub *rst ;■画面外かスペースで再配置
if (s=128):break ;■ESCで終了
if (s&15) { d=(s=1)-(s=4) ;■カーソル左右で旋回
v=(s=2)-(s=8) ;■カーソル上下で加減速
spd += v*10: ang=(d*18+ang) \ 周の精度
es_adir 0,ang,spd } ;・es_adirを実行。
es_boxf 0,0,sw,sh:es_draw:es_sync -16
loop ;---
*quit:es_bye:end ;・終了
*rst: es_set 0,(sw-cw)/2,(sh-ch)/2,0,0 ;・画面中央に配置
es_adir 0,ang,spd:return
// 読めばわかると思うが、カーソルを押しっぱなしにすれば
// 何回でもes_adirが実行され、上書きされることになる。
// es_setも配置時に使用するだけ。
// es_adir直前にes_set〜する必要なし。