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

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


<< 色判定プログラム | main | 文字列の数値判定 >>



六角形を隙間なく並べる

六角形を均等に積み重ねて配置するプログラムです

 

 

;Win32 APIを用いて六角形を作成
#define global NULL_BRUSH    $00000005
#define global DC_BRUSH        $00000012
#define global DC_PEN        $00000013
#uselib "gdi32"
# func global _Polygon          "Polygon" sptr,sptr,sptr
# func global SetDCPenColor     "SetDCPenColor" sptr,sptr
# func global SetDCBrushColor   "SetDCBrushColor" sptr,sptr
#cfunc global SelectObject      "SelectObject" sptr,sptr
# func global CreateSolidBrush  "CreateSolidBrush" sptr
# func global DeleteObject      "DeleteObject" sptr
#cfunc global GetStockObject    "GetStockObject" sptr
#uselib "user32"
# func global InvalidateRect    "InvalidateRect" sptr,sptr,sptr
#module
#deffunc SetDraw int flg,int col,int col2
    SetDCPenColor hdc,col
    SetDCBrushColor hdc,col2
    hPen=SelectObject(hDC,GetStockObject(DC_PEN))
    if flg=0{
        hBrush=SelectObject(hDC,GetStockObject(NULL_BRUSH))
    }else{
        hBrush=SelectObject(hDC,GetStockObject(DC_BRUSH))
    }
    return
#deffunc Polygon array nleft,int ntop,int col,int col2,int flg
    SetDraw flg,col,col2
    _Polygon hdc,varptr(nleft),ntop
    dim rect,2
    rp.0=varptr(nleft),ntop
    InvalidateRect hwnd,varptr(rp),0
    return
#global
randomize
;マス作成
mcsz=48
m2csz=mcsz+2    ;少し大きめにしないと境目が目立ってしまう
m2cszh=m2csz/2
buffer 2,m2csz*3,m2csz:celdiv 2,m2csz,m2csz
boxf
dim a,12
x=m2cszh
col=$ff
repeat 3
    deg=0
    repeat 6:i=cnt
        rad=deg2rad(deg)
        a(i*2)=0+cos(rad)*m2cszh+x,0+sin(rad)*m2cszh+m2cszh
        deg+60
    loop
    Polygon a,6,$000001,col,1
    col<<8
    x+m2csz
loop
redraw
;描写
screen:gmode 2
mc=10:mr=10
hexw=mcsz/4*3
hexh=sqrt(3)*mcsz/2    ;六角形の幅
x=0:y=0
repeat mr:j=cnt
    repeat mc:i=cnt
        tx=x:ty=y
        if i¥2=1{
            ty+=hexh/2
        }
        pos tx,ty
        celput 2,rnd(3)
        x+=hexw
    loop
    x=0
    y+=hexh
loop

0
    posted by higashijugem 23:48comments(0)|-|


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