“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

73.HSPでゲーム&ウォッチのファイアを作ろう その3

次はスマホでも動くように、タッチパネルで操作したときの移動処理を追加することにした。

タッチした情報を取得するには、まず、mtlist命令を使う。
二本指や三本指でタッチした場合、それぞれの情報を一度に取得する。
取得された情報は、配列として格納される。
今回は、マルチタッチは不要なので、常に0番目(一本目のタッチ)の情報があればいい。

mtlist命令で得られるのはタッチの情報が入ったIDだけ。
そのIDをもとに、mtinfo命令で、さらにタッチしたときの情報を取得する。タッチがオンオフか、タッチしたX、Y座標が指定した配列に格納される。
あとは、BASIC!で作ってた座標の判定処理を移植すれば、終わり。と思っていたが、キー操作とは違って、やっぱりタッチしたままだと、連続判定されてしまう。

幸い、指が完全に離れていれば、mtlist命令を実行したときに、stat=0が返ってくるので、これを利用してフラグを作った。後は、BASIC!の時と同じようにフラグで判定処理を加えた。

タッチパネルなしのWindowsで動かすと、マウスの左クリックで反応する。キーボード操作の判定処理もそのまま残したので、どちらでも操作可能になった。

*playermove
	;キーボード操作の判定
	stick key
	if key&1 : px=px-1;カーソル左
	if key&4 : px=px+1;カーソル右

	;タッチパネル操作の判定
	mtlist touchid
	num=stat
	if num>0 & touched=0 { ;一本以上指がタッチしていて、かつタッチした直後なら
		id = touchid(0);一本目のタッチは0番目
		mtinfo touch,id
		if touch(0)=1 {;タッチがオンならば
			tx=touch(1):ty=touch(2):touched=1;タッチされた座標を変数に代入、タッチしたフラグを付ける
			if ty>=250 & ty<=320 {
				if tx>=35 & tx<=105 {
					px=px-1
				} else : if tx>=497 & tx<=567 {
					px=px+1
				}
			}
		}
	} else : if num=0 : touched=0


	;プレイヤー位置の調整
	if px<0 : px=0
	if px>2 : px=2

	;プレイヤーを表示する
	pos ppos(px),207
	gmode 2:celput 2;透過PNGを表示するモードに変えて

	return

HSP3Dish Helperで、apkファイルをビルドして、Googleドライブ経由でスマホにインストール。
無事にタッチ操作で、救助隊を左右に動かせるようになった♪