maptest4.hsp

sample\sprite\maptest4.hsp » Plain Format

#include "hsp3dish.as"

	;
	;	HSP3Dish sprite sample
	;		BGマップ機能のテスト
	;		8×8サイズのマップ内をキーで移動します
	;		(下方向の重力がある中を左右移動、スペースキーでジャンプ)
	;		(動く足場の上に乗ることができます)
	;		(画面外に移動するとスプライトが消去されます)
	;		[ESC]キーで終了
	;
	;------------------------------------------------------------------

	randomize
	wx=640:wy=480
	screen 0,wx,wy				; スクリーン初期化
	es_ini					; スプライト初期化

	celload "sozai4.jpg",4			; 背景の読み込み

	;	セルの画像素材を読み込みます
	;	("parts.png"ファイルはhsptvフォルダにあります)
	celload "parts.png",3
	es_size 40,40,100			; キャラクターのサイズ指定
	es_pat 0, 200, 0, 0, 3			; キャラクターの登録(0)
	es_pat 1, 200, 40, 0, 3			; キャラクターの登録(1)

	mapsx=8:mapsy=8				; マップサイズ
	dim map,mapsx*mapsy			; マップデータ変数
	celdiv 3,40,40				; マップのセル設定

	es_bgmap 0,map,mapsx,mapsy,mapsx,mapsy,3 	; マップ登録
	es_bgattr 0, 6,8, ESMAP_ATTR_HOLD	; アトリビュート値を設定
	es_bgattr 0, 9,11, ESMAP_ATTR_WALL	; アトリビュート値を設定
	es_bglink 0, ESSPMAPHIT_BGHIT		; スプライトのBG当たり判定を有効にする
	es_gravity -1, 0, 256

	map(40)=10:map(47)=10			; マップデータを設定(壁を作る)
	repeat 8:map(56+cnt)=9:loop

	es_set 0, 64, 0, 0			; スプライトを登録(プレイヤー)
	es_apos 0, 0, 0				; スプライト移動を有効にする
	es_setp 0, ESI_MAPHIT, ESSPMAPHIT_STICKSP, 1	; 足場に乗る設定
	jump=-16				; ジャンプ力

	es_set 1, 120, 200, 1			; スプライトを登録(足場)
	es_setp 1, ESI_MAPHIT, ESSPMAPHIT_BGHIT|ESSPMAPHIT_BGOBJ	; 足場として設定
	es_pos 1, 0,0, ESSPSET_FALL		; 重力を0にする
	es_apos 1, -1, 0			; 移動方向を設定
	es_bound 1,256,3			; 障害物に当たった時に反転する設定

*main
	stick ky,15				; カーソルキーの情報を取得
	if ky&$80 : goto *owari

	;	キーで移動します
	es_get myres,0,ESI_MOVERES
	px=0:py=0:speed=2
	if ky&1 : px=-speed			; 左移動
	if ky&4 : px=speed			; 右移動
	es_setp 0,ESI_SPDX,px<<16		; X移動値のみを設定
	if ky&16 {				; ジャンプ処理
		if myres&ESSPRES_GROUND {	; 着地しているかチェック
			es_setp 0,ESI_SPDY,jump<<16	; Y移動値のみを設定
		}
	}

	redraw 0
	pos 0,0:celput 4
	es_putbg 0				; マップを描画
	es_draw					; スプライト描画
	redraw 1
	await 1000/60				; タスク更新
	goto *main

*owari
	es_bye
	end