sample\sample_yoko\
sample04_yoko.hsp
#include "hsp3dish.as" #include "ezlocal-dish-js.hsp" ezLocalJS #packopt xsize 1040 #packopt ysize 480 ; ; HSP3同梱サンプル掛け合わせ ; sample\hsp3dish\ obaqtest.hsp + mtouch.hsp ; ; 一定時間ごとにオブジェクトを追加 ; タッチでも追加(マルチタッチ情報表示) ; screen 0, 1040, 480 randomize ; 乱数の初期化 title "OBAQ Test" qreset ; OBAQの初期化 frame=0 boxmax=30 boxnum=0 dim boxids, 1 mtcnum=0 : mae_mtcnum=0 key=0 : touch=0 : touchid=0 my=0 : gx=0 : gy=0 : ga=0 data="" : dummy="" pos 1040-150,30 : objsize 80, 30 ; ボタン表示 button goto "終了ボタン", *quit ; アプリの終了 & データ保存 gosub *data_load ; 保存したデータがあれば読み込み *main ; メインループ ; stick key,15 ; キーの取得 if key&128 : goto *quit ; [ESC]キーで終了 & データ保存 redraw 0 ; 画面の更新を開始 gradf ,,,,1,0,128 ; 画面クリア qexec ; OBAQによるオブジェクトの更新 mtlist touchid ; マルチタッチ mtcnum=stat if mae_mtcnum < mtcnum { ; タッチしたらframeのカウントをゼロにしてオブジェクト投下 mtinfo touch, touchid(0) if touch(1) < (1040-130) || touch(2) > 65 : frame = 0 ; ただし終了ボタン周りのタッチはカウントリセットしない } mae_mtcnum = mtcnum ; 一定時間ごとに出現 if boxnum<boxmax { if frame\100=0 { qaddpoly my, 4, 32+96*(boxnum\3),24,0 ,,,0 ; 多角形を追加 if my >= 0 { boxids(boxnum) = my qspeed my,0.1*rnd(10)-0.5,0,0.01 ; ランダムな方向に飛ばす boxnum++ } } }else { ; ボックス最大になったらボッシュート if boxnum == boxmax : qborder -117,-54,117,500 : boxnum++ ; 外壁の底を外す repeat boxmax qgetpos boxids(cnt), gx, gy, ga : if gy < 250 : break ; オブジェクト全て落ち切ってるか確認 loop if gy >= 250 : qreset : boxnum = 0 ; obaqリセット } qdraw ; オブジェクトの描画 gfilter 1 color 255,255,255 pos 60,0:mes "Frame:"+frame ; フレーム数を表示 mes "("+mousex+","+mousey+")" ; マルチタッチ情報を表示 y=16 repeat mtcnum id = touchid(cnt) mtinfo touch,id mes "T:"+id+"("+touch(1)+","+touch(2)+") "+touch(3) y+=10 loop gfilter 0 redraw 1 ; 画面の更新を終了 await 12 ; 一定時間待つ frame++ goto *main // 保存したデータがあれば読み込み *data_load exist "save/frame.txt" if strsize == -1 : return notesel data noteload "save/frame.txt" frame = int(data) ; カウントしているframeを前回の続きからにしている return // (Escキーor終了ボタン)アプリ終了前にdata保存 *quit dirlist dummy,"save",5 : if stat == 0 : mkdir "save" ; ← Windowsアプリとして実行するとき用に data = ""+frame notesel data notesave "save/frame.txt" devcontrol "syncfs" dialog "「ブラウザ上にデータ保存できるようにする」を選択している場合Frameが保存され次回起動時に引き継がれます" end