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