マップチップで判定、キャラクタ同士で判定、vram版pgetで判定
それぞれメリット、デメリットがあるので併用してもいいかと思います。
dim map,10,10
map(0,0)=1,1,1,1,1,1,1,1,1,1
map(0,1)=1,0,0,0,0,0,0,0,0,1
map(0,2)=1,0,0,0,0,0,0,0,0,1
map(0,3)=1,1,0,0,0,1,0,0,0,1
map(0,4)=1,0,0,0,0,1,1,0,0,1
map(0,5)=1,0,0,0,0,0,0,0,0,1
map(0,6)=1,0,0,0,0,0,0,1,0,1
map(0,7)=1,1,0,0,0,0,1,0,1,1
map(0,8)=1,0,1,0,0,1,0,0,0,1
map(0,9)=1,1,1,1,1,1,1,1,1,1
color 0,0,0
boxf
x=100:y=100:mysize=30:boxsize=40:
repeat
ax=0
stick sk,5
if sk&4 : ax=4
if sk&1 : ax=-4
if sk&16 : if skf=0 : ay=-14 : skf=1
ay++
y+=ay
gosub *hantei
if aa>0 {
if ay>=0 { y=bby*boxsize-mysize-1:ay=0:skf=0}
else {y=aay*boxsize+boxsize:ay=0}
}
x+=ax
gosub *hantei
if aa>0 {
if ax>=0 { x=bbx*boxsize-mysize-1}
else {x=aax*boxsize+boxsize}
}
redraw 0
color 0,0,0
boxf
color 255,255,255
repeat 10
yy=cnt
repeat 10
xx=cnt
if map(xx,yy)=1 : boxf xx*boxsize,yy*boxsize,xx*boxsize+boxsize-2,yy*boxsize+boxsize-2
loop
loop
color 255,0,0
boxf x,y,x+mysize,y+mysize
redraw 1
await 17
loop
*hantei
aax=x/boxsize
bbx=(x+mysize)/boxsize
aay=y/boxsize
bby=(y+mysize)/boxsize
aa=map(aax,aay)+map(bbx,aay)+map(aax,bby)+map(bbx,bby)
return