ゲームを作りたい人のための ソースコード集

私がその日作った短めのソースを簡単な解説とともに載せていきます
ゲーム制作初心者にとって参考になるかもしれないソースが多いです


<< あみだくじ | main | 一日ゲームNo.18「カメとアキレス」 >>



二次元マップのスクロール

マップチップを並べた画面内を移動するアルゴリズムです

キャラクターはマスに捉われない動き方をします

 


csz=32:cszh=csz/2
gmw=640/csz:gmh=480/csz        ;画面に表示されるマス数
mpw=gmw*2:mph=gmh*2        ;マップ全体のマス数
gmwmx=mpw*csz:gmhmx=mph*csz    ;マップ全体の大きさ
dim mpdt,mpw,mph
repeat 600
    mpdt(rnd(mpw-2)+1,rnd(mph-2)+1)=1
loop
;マップチップ
buffer 2,csz*3,csz:celdiv 2,csz,csz,cszh,cszh
boxf:x=0
color 1:boxf x,0,x+csz-1,csz:x+csz
color 255,255,255:boxf x,0,x+csz-1,csz:x+csz
color 255:circle x,0,x+csz-1,csz
gsel 0
gmode 2
plx=cszh:ply=cszh
*main
    color:boxf
    getkey k37,37
    getkey k38,38
    getkey k39,39
    getkey k40,40
    if k37{
        plx-4
    }
    if k38{
        ply-4
    }
    if k39{
        plx+4
    }
    if k40{
        ply+4
    }
    plx=limit(plx,cszh,gmwmx-cszh)
    ply=limit(ply,cszh,gmhmx-cszh)
    ;表示
    gstx=limit(plx-csz*gmw/2,0,csz*mpw-csz*gmw)
    gsty=limit(ply-csz*gmh/2,0,csz*mph-csz*gmh)
    sx=gstx/csz-1:sy=gsty/csz-1
    ix=gstx¥csz:iy=gsty¥csz
    repeat gmh+2:j=cnt
        repeat gmw+2:i=cnt
            tx=sx+i:ty=sy+j
            if 0<=tx&tx<mpw&0<=ty&ty<mph{
                pos (i-1)*csz+cszh-ix,(j-1)*csz+cszh-iy
                celput 2,mpdt(tx,ty)
            }
        loop
    loop
    pos plx-gstx,ply-gsty:celput 2,2
    redraw:await 17:redraw 0
    goto *main

0
    posted by higashijugem 21:37comments(0)|-|


    この記事に対するコメント