チップ2枚横に並べてチップ1枚分の高さになる坂のサンプル
#enum CTYPE_ZERO = 0 //判定無し
#enum CTYPE_WALL //壁地面
#enum CTYPE_U_SLOPE_L //右上がり下段
#enum CTYPE_U_SLOPE_U //右上がり上段
#enum CTYPE_D_SLOPE_U //右下がり上段
#enum CTYPE_D_SLOPE_L //右下がり下段
dim map,20,4
//チップナンバーにタイプを設定
// 0, 1, 2 3, 4, 5, 6, 7, 8
ct=CTYPE_ZERO, CTYPE_WALL, CTYPE_ZERO, CTYPE_U_SLOPE_L, CTYPE_U_SLOPE_U, CTYPE_WALL, CTYPE_WALL, CTYPE_D_SLOPE_U, CTYPE_D_SLOPE_L
//0=通常背景 1=地面 2=地中 3=右上がり下段 4=右上がり上段 5=右上がり右端 6=右下がり左端 7=右下がり上段 8=右下がり下段
map(0,0)=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,1)=0,0,0,0,3,4,5,1,1,6,7,8,0,0,0,0,0,0,0,0
map(0,2)=0,0,3,4,5,2,2,2,2,2,2,6,7,8,0,3,4,7,8,0
map(0,3)=1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,1,1
//チップ画像を作る
bgscr 1,32*9,32,0,100,100
celdiv 1,32,32
color 50,100,100
gradf 32,0,32,32
color 50,70,40
gradf 32*2,0,32,32
repeat 32*3
color 100-100*(cnt>32),80,150-100*(cnt>32)
line 32*3+cnt,32,32*3+64+limit(cnt,0,31),0
loop
repeat 32*3
color 100-100*(cnt>32),80,150-100*(cnt>32)
line 32*6+31-limit(cnt,0,32),0,32*6+31+64-cnt,32
loop
color 128,128,128
repeat 9
line 32*cnt+31,0,32*cnt+31,32
pos 1+32*cnt,1
mes cnt
loop
line 0,31,32*14,31
//メインウィンドウ
screen 0,32*20,32*4,0,ginfo_wx1,ginfo_wy2
px=64
py=64
repeat
redraw 0
repeat 4
y=cnt
pos 0,y*32
repeat 20
celput 1,map(cnt,y)
loop
loop
stick stk,$ff
if stk&1{px-2}
if stk&4{px+2}
px=limit(px,0,639)
//マップデータインデックス
mix=px/32
miy=py/32
//px,pyをインデックスにして縦に3チップをタイプ判定されるまでループ
repeat 3
chip_no=map(mix,miy) //マップチップナンバーを取得
chip_type=ct(chip_no) //ナンバーに設定されてるタイプを取得
if chip_type {//CTYPE_ZERO以外のタイプが設定されてる
if chip_type=CTYPE_WALL {py=miy*32-32 :break}//インデックス*チップサイズでウィンドウ座標にしキャラの座標として調整
if chip_type=CTYPE_U_SLOPE_L {py=miy*32+(mix*32-px)/2 :break}//背景チップのX座標からキャラのX座標を引いてY座標に加算(チップ横2枚でチップ1枚分の高さになるので2で割る)
if chip_type=CTYPE_U_SLOPE_U {py=miy*32-16+(mix*32-px)/2 :break}//坂上段なのでチップサイズの半分ずらす
if chip_type=CTYPE_D_SLOPE_U {py=miy*32-32-(mix*32-px)/2 :break}
if chip_type=CTYPE_D_SLOPE_L {py=miy*32-32+16-(mix*32-px)/2 :break}
}
miy++
loop
color 255
gradf px-16/2,py,16,32
title "chip_no="+chip_no+" chip_type="+chip_type
redraw 1
await 16
loop
ジャンプ付けると坂のチップに重なってても
坂の部分に重なってるかの判定も必要になる