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

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


<< 一日ゲームNo.13「七並べ」 | main | 歯車 >>



指定座標に寄せるランダム配置

最初の位置から移動しながらマスを配置する場合、

普通のランダムではポジションがあちこちに飛んでってしまい、歪な形になってしまいます

このプログラムでは中心から離れれば離れるほど

中心に近づく方向にポジションが移動するようにしました

言葉では分かりにくいという人は、実際に実行してみるとよいでしょう

「比較用コード」をコメントアウトから復帰させると違いが分かります

 


;中心に近づくランダム配置
#include"hspda.as"
rndf_ini 0

mc=25:mr=25:csz=16
dim map,mc,mr

startx=mc/2:starty=mr/2
map(startx,starty)=1
px=startx:py=starty
repul=1        ;中心に引っ張る力(1が最大)
part=1.0/(4*(repul))*(repul-1)
s=1.0/((startx+starty+(mc-startx-1)+(mr-starty-1))*repul)

ddim dir,4
repeat 200
    dir(0)=s*px+part    ;上下左右に移動する確率を
    dir(1)=s*py+part    ;その都度指定
    dir(2)=s*(mc-px-1)+part
    dir(3)=s*(mr-py-1)+part
    rndf_get set
    
    r=0:chkr=0.0
    repeat 4
        chkr+=dir(cnt)
        if set<=chkr{
            r=cnt:break
        }
    loop
    
    ;rndf_get set:r=0+set*4    ;比較用コード
    
    if r=0{        ;移動
        if 0<px{
            px--
        }
    }else:if r=1{
        if 0<py{
            py--
        }
    }else:if r=2{
        if px<mc-1{
            px++
        }
    }else{
        if py<mr-1{
            py++
        }
    }
    map(px,py)=1
loop
;描写
repeat mr:c1=cnt
    repeat mc
        pos cnt*csz,c1*csz
        if map(cnt,c1)=0{
            mes"."
        }else:if map(cnt,c1)=1{
            mes"*"
        }
    loop
loop

0
    posted by higashijugem 11:01comments(0)|-|


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