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

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


<< 重ならないように円を配置 | main | 壁の透過 >>



重ならないように円を配置ver2

円が重なり合わないように描写するプログラムその2です

円の配置チェックを二次元マップのマスで行います
青色の場合はクリックすることで配置可能、赤色の場合はすでに置かれた円と重なっているので配置できません

 


gw=640:gh=480
mcsz=16
cw=gw/mcsz:ch=gh/mcsz
dim mapdt,cw,ch    ;マップデータ

len=5
repeat
    ok1=k1:getkey k1,1:tk1=k1^ok1&k1
    mcx=mousex/mcsz:mcy=mousey/mcsz
    mapsetflg=0
    if tk1{
        if overflg=0{    ;重なっていたら配置できないようにする
            mapsetflg=1
        }                ;if文をコメントアウトで配置可能
    }
    overflg=0
    repeat len*2+1,mcy-len:c1=cnt
        repeat len*2+1,mcx-len
            if 0<=cnt&cnt<cw&0<=c1&c1<ch{
                dis=0+sqrt(powf(mcx-cnt,2)+powf(mcy-c1,2))
                if dis<len{
                    if mapdt(cnt,c1){    ;配置された円と重なっている
                        overflg=1
                    }
                    if mapsetflg{    ;マップに配置
                        mapdt(cnt,c1)=1
                    }
                }
            }
        loop
    loop
    color 255,255,255:boxf
    repeat ch:c1=cnt
        repeat cw
            x=cnt*mcsz:y=c1*mcsz
            if mapdt(cnt,c1){
                color
                boxf x,y,x+mcsz-1,y+mcsz-1
            }
            dis=0+sqrt(powf(mcx-cnt,2)+powf(mcy-c1,2))
            if dis<len{
                if overflg{
                    color 255
                }else{
                    color ,,255
                }
                boxf x,y,x+mcsz-1,y+mcsz-1
            }
        loop
    loop
    redraw:await 17:redraw 0
loop

0
    posted by higashijugem 12:46comments(0)|-|


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