test1.hsp

sample\hspdx\test1.hsp » Plain Format

#include "hspdx.as"
#include "hsp3util.as"

	;
	;	HSPDX.DLL sample1
	;		スプライトを表示、カーソルキーで上下左右に移動。
	;		スペースキーで、リンゴを発射。たくさん発射。
	;		左上にベンチマークを表示。
	;		[ESC]キーで終了
	;


	;------------------------------------------------------------------


	es_ini					; system初期化
	onexit *owari
	es_screen 640,480,32,,1,1		; スクリーン初期化
	if stat=1 : goto *dderr1
	if stat=2 : goto *dderr2

	goto *start				; 正常に完了

*dderr1
	dialog "DirectXの初期化に失敗しました。",1
	end
*dderr2
	dialog "スクリーンの初期化に失敗しました。",1
	end
*dderr3
	es_bye
	wait 100
	dialog "VRAMの容量が不足しています。",1
	end

	;------------------------------------------------------------------

*start
	buffer 3,,,1
	bmppalette "testchr.bmp"
	picload "testchr.bmp"

	es_buffer 0,2
	if stat : goto *dderr3

	es_size 64,64,60
	es_pat 0, 64,64			; 顔
	es_pat 1, 0,64			; リンゴ

	gsel 0,1
	es_cls
	es_sync
	wait 100

	myx=100:myy=100
	es_set 0,myx,myy,0		; メインのスプライト

	a=0
	tt=0
	ky=0

*main
	stick ky,$1f				; カーソルキーの情報を取得
	gosub *keychk
	if ky&$10 : gosub *ringo
	if ky&$80 : goto *owari
	es_pos 0,myx,myy

	es_cls 0,0,255				; 青でクリア
	es_draw					; スプライト描画

	pos 0,0:es_mes "T="+tt			; 文字列を描画

	es_sync					; 画面の更新
	tt=stat					; ベンチマークを取得
	await 1					; タスク更新

	goto *main

*ringo
	;	リンゴ発射
	;
	es_new a,2
	es_set a,myx,myy,1
	es_adir a,rnd(64),400
	return

*owari
	es_bye
	end



*keychk
	;	カーソルキー入力で自分(変数myx,myy)を動かすサブルーチン
	;	(カーソルキーを同時に押すことにより斜めにも移動できます)
	;
	if ky&2 : goto *go_up			; 上を押しているか?
	if ky&8 : goto *go_down			; 下を押しているか?
	goto *keychk2				; 左右のチェックにジャンプ
*go_up
	if myy>-32 : myy-=8
	goto *keychk2
*go_down
	if myy<380 : myy+=8
*keychk2
	if ky&1 : goto *go_left			; 左を押しているか?
	if ky&4 : goto *go_right		; 右を押しているか?
	return
*go_left
	if myx>-32 : myx-=8
	return
*go_right
	if myx<580 : myx+=8
	return