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