關(guān)于制作地圖時矩陣的使用(適合新手)

字號:

通過制作前面的游戲,我個人認為,利用矩陣來輔助制作游戲地圖是很方便的,也很適合初學(xué)者掌握,因此特意將思想和方法總結(jié)一下,希
    望對大家有所幫助:
    首先,應(yīng)用矩陣的基礎(chǔ)是將屏幕分割,例如應(yīng)用這段程序:
    #include
    #include
    int main()
    {
    int gd=VGA,gm=VGAHI,x,y;
    initgraph(&gd,&gm,'');
    setcolor(2);
    for(x=19;x<600;x=x+40)
    for(y=19;y<440;y=y+40)
    rectangle(x,y,x+40,y+40);
    getch();
    closegraph();
    return(0);
    }
    這樣就將屏幕內(nèi)的(19,19,600,440)內(nèi)分割成了11行、15列的方格,則可以建立如下矩陣:
    map[11][15]=
    { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
    };
    這樣建立好了對應(yīng)的矩陣,矩陣建立好了就要使之與屏幕建立對應(yīng)
    for(my=0;my<11;my++)
     for(mx=0;mx<15;mx++)
        if(map[my][mx]==1) tree(19+40*mx,19+40*my);/*這只是例子,具體畫什么你自己決定*/
    這樣就和前面建立的分割好的屏幕聯(lián)系起來了,要注意,在這里屏幕的縱坐標要放在矩陣前面的括號里,而橫坐標要放在后面的括號里,這樣
    才是真正正確的對應(yīng)關(guān)系。
        至此,矩陣和屏幕地圖對應(yīng)起來了,如果以后要加新的繪圖元素,以后只要在開始修改矩陣的數(shù)字,再在上面的循環(huán)內(nèi)加上
        if(map[my][mx]==N) picture(19+40*mx,19+40*my);
    就可以方便的修改和制作地圖了。
        以上只是個示范,相信在實際制作地圖的時候以上的分割數(shù)量遠達不到精度要求,因而實際要分割到多精細你要自己從新設(shè)計,有一點,  割的越精細則矩陣越大,所以不要過于貪求精細而分割太小,否則到時候成千上萬的矩陣元素定義就有的你忙了。