es_test9.hsp

sample\sprite\es_test9.hsp » Plain Format

#include "hsp3dish.as"

	;
	;	HSP3Dish sprite sample9
	;		スプライトの衝突を検出
	;		カーソルキーの上下左右で移動します
	;------------------------------------------------------------------

	screen 0,640,480			; スクリーン初期化

	es_ini					; スプライトを初期化

	buffer 3
	picload "testchr.png"
	es_size 64,64,100
	es_pat 0, 0,0				; 顔
	es_pat 1, 64,0				; リンゴ

	gsel 0

	es_set 0,320,200,0			; スプライトを配置

	es_set 1,100,100,1			; りんごを配置
	es_setrot 1,rot,200,200			; 2x2倍サイズで表示する

*main
	stick key,15
	if key&$80 : goto *owari

	gosub *keychk

	es_check chk,0

	redraw 0
	rgbcolor $404040
	if chk>=0 : rgbcolor $808080		; 衝突した時に背景色を変える

	boxf					; 背景を消去
	es_draw					; スプライトを描画

	rgbcolor $ffffff:pos 0,0
	mes "Check="+chk
	redraw 1

	await 1000/60				; タスク更新
	goto *main

*owari
	es_bye
	end

*keychk
	;	カーソルキー入力で自分(変数myx,myy)を動かすサブルーチン
	;	(カーソルキーを同時に押すことにより斜めにも移動できます)
	;
	es_getpos 0,myx,myy			; スプライト0の座標を得る
	if key&2 : goto *go_up			; 上を押しているか?
	if key&8 : goto *go_down		; 下を押しているか?
	goto *keychk2				; 左右のチェックにジャンプ
*go_up
	if myy>0 : myy-=8
	goto *keychk2
*go_down
	if myy<420 : myy+=8

*keychk2
	if key&1 : goto *go_left		; 左を押しているか?
	if key&4 : goto *go_right		; 右を押しているか?
	goto *keychk3
*go_left
	if myx>0 : myx-=8
	goto *keychk3
*go_right
	if myx<580 : myx+=8
	goto *keychk3

*keychk3
	es_pos 0,myx,myy			; スプライト0の座標を設定する
	return