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

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


<< 視界範囲 | main | ダイクストラ法 >>



ヘックスマップ

Hexマップという六角形のマスで埋め尽くしたボードを表示するプログラムです

 

 

;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

;マス作成
csz=32
cszh=csz/2
buffer 2,csz*2,csz:celdiv 2,csz,csz
boxf
dim a,12
x=cszh
deg=0
repeat 6:i=cnt
    rad=deg2rad(deg)
    a(i*2)=0+cos(rad)*cszh+x,0+sin(rad)*cszh+cszh
    deg+60
loop
Polygon a,6,$000001,$00ff00,1
x+csz
deg=0
repeat 6:i=cnt
    rad=deg2rad(deg)
    a(i*2)=0+cos(rad)*cszh+x,0+sin(rad)*cszh+cszh
    deg+60
loop
Polygon a,6,$000001,$0000ff,1
;描写
screen:gmode 2
mcsz=24
mc=10:mr=10
dim map,mc,mr
map(4,4)=1
repeat mr:j=cnt
    repeat mc:i=cnt
        x=i*mcsz:y=j*mcsz
        if i¥2=1{
            y+=mcsz/2
        }
        pos x,y
        if map(i,j)=0{
            celput 2,0
        }else{
            celput 2,1
        }
    loop
loop

0
    posted by higashijugem 15:35comments(0)|-|


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