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

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


<< Split改良版 | main | ウィンドウの移動を検知 >>



吹き出し

キャラクターの吹き出しを描写するプログラムです

端に近い位置のキャラの吹き出しは、見切れないよう描写位置を調整しています


randomize
;キャラクター
chcsz=64
buffer 2,chcsz,chcsz:celdiv 2,chcsz,chcsz,chcsz/2,chcsz/2
color:boxf:color 255
circle chcsz/4,0,chcsz-chcsz/4,chcsz/2
xzh=chcsz/2,chcsz/2,chcsz,0
yzh=chcsz/4,chcsz/4,chcsz,chcsz
gsquare -1,xzh,yzh
;初期設定
charamax=8
dim charadt,4,charamax
gsel
gmode 2
repeat charamax
    cenx=rnd(560)+40
    ceny=rnd(400)+40
    charadt(0,cnt)=cenx-chcsz/2,ceny-chcsz/2,cenx+chcsz/2,ceny+chcsz/2
loop
repeat charamax
    pos charadt(0,cnt)+chcsz/2,charadt(1,cnt)+chcsz/2
    celput 2,0
loop
;背景
buffer 3,640,480
pos 0,0:gcopy 0,,,640,480
gsel 0
;処理開始
oncmd gosub *mousemove, $200
stop
*mousemove
    pos 0,0:gcopy 3,,,640,480
    mux=mousex:muy=mousey
    putid=-1
    repeat charamax
        ltx=charadt(0,cnt)
        lty=charadt(1,cnt)
        rbx=charadt(2,cnt)
        rby=charadt(3,cnt)
        if ltx<=mux&mux<=rbx&lty<=muy&muy<=rby{
            putid=cnt
            break
        }
        await
    loop
    title""+putid
    if putid>=0{
        gosub *fukidasi
    }
    return
*fukidasi
    x=ltx-80:y=lty-50
    xdir=0:ydir=0
    if ltx<=120{x=rbx:xdir=1}
    if lty<=120{y=rby:ydir=1}
    color ,,255
    boxf x,y,x+80,y+50
    if xdir{
        xzh=rbx,rbx-20,rbx-20,rbx
    }else{
        xzh=ltx,ltx+20,ltx+20,ltx
    }
    if ydir{
        yzh=rby+20,rby-10,rby-10,rby
    }else{
        yzh=lty-20,lty+10,lty+10,lty
    }
    gsquare -1,xzh,yzh
    return

0
    posted by higashijugem 22:59comments(0)|-|


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