• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            飯中淹的避難所~~~~~

            偶爾來避難的地方~

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              94 隨筆 :: 0 文章 :: 257 評論 :: 0 Trackbacks

            1- 分析



            通過對照觀察,我們會發(fā)現(xiàn),在這個自動拼接元素上,小元素可以分為以下幾種:

               A-   向內(nèi)轉(zhuǎn)角(也就是0,1,6,7,以及12, 17, 42, 47,這里只取一組即可 )(FIXED:這里選擇12,17,42,47這組,因?yàn)椴糠痔厥庠剡@四個才是真實(shí)的向內(nèi)轉(zhuǎn)角)
               B-   向外轉(zhuǎn)角(4,5,10,11)
               C-   上下連接(24,29,30,35)
               D-   左右連接(14,15,44,45)
               E-   填充物(26,27,32,33)

            通過觀察組合圖塊,我們會發(fā)現(xiàn)下面的幾條規(guī)律


               A- 斜方向的同類塊對目標(biāo)塊的影響當(dāng)且僅當(dāng)斜方向相鄰的兩個垂直方向上都有同類塊的時(shí)候才會出現(xiàn)。也就是將目標(biāo)塊的對應(yīng)小圖塊變成填充物。

               B- 當(dāng)兩個相鄰的垂直方向上都有同類塊,且他們之間的斜方向上沒有同類塊的時(shí)候,目標(biāo)快對應(yīng)的小圖塊變成向外轉(zhuǎn)角

               C- 當(dāng)某個垂直方向上有同類塊,且相鄰的一個垂直方向上沒有同類塊,無論相鄰的斜方向上有沒有同類塊,目標(biāo)塊對應(yīng)的小圖塊變成連接(向上下或者向左右連接)

               D- 當(dāng)某個垂直方向上沒有同類塊,且相鄰的垂直方向上也沒有同類塊,無論相鄰的斜方向上有沒有同類塊,目標(biāo)塊對應(yīng)的小圖塊變成向內(nèi)轉(zhuǎn)角



            2- 生成算法(C#代碼)


              1             //  填充物    26 27 32 33
              2             //  向外轉(zhuǎn)角  4 5 10 11
              3             //  上下連接  24 29 30 35
              4             //  左右連接   14 15 44 45
              5             //  向內(nèi)轉(zhuǎn)角    12 17 42 47
              6 
              7             //  各方向比特   1 2 4 8 16 32 64 128
              8 
              9             //  4 個小圖塊對應(yīng)的索引
             10             //  0 1         小圖塊在大圖塊里
             11             //  2 3         按照這種順序排列
             12             byte[] mTile = new byte[4];
             13             //  調(diào)色板數(shù)組,每個元素是一個包含4個索引的DWORD
             14             UInt32[] mAutoTilePal = new UInt32[256];
             15 
             16             for (uint nIndex = 0; nIndex < 256; nIndex++)
             17             {
             18                 //  初始化成向內(nèi)轉(zhuǎn)角
             19                 mTile[0= 12;
             20                 mTile[1= 17;
             21                 mTile[2= 42;
             22                 mTile[3= 47;
             23                 //  如果上方有同類塊
             24                 if ((nIndex & 2> 0)
             25                 {
             26                     //  如果左方有同類塊
             27                     if ((nIndex & 128> 0)
             28                     {
             29                         //  如果左上方有同類塊
             30                         if ((nIndex & 1> 0)
             31                         {
             32                             //  目標(biāo)塊左上為填充物
             33                             mTile[0= 26;
             34                         }
             35                         else
             36                         {
             37                             //  目標(biāo)塊左上為向外轉(zhuǎn)角
             38                             mTile[0= 4;
             39                         }
             40                     }
             41                     else
             42                     {
             43                         //  目標(biāo)塊左上為向上連接
             44                         mTile[0= 24;
             45                     }
             46 
             47                     //  如果右方有同類塊
             48                     if ((nIndex & 8> 0)
             49                     {
             50                         //  如果右上方有同類塊
             51                         if ((nIndex & 4> 0)
             52                         {
             53                             //  目標(biāo)塊右上為填充物
             54                             mTile[1= 27;
             55                         }
             56                         else
             57                         {
             58                             //  目標(biāo)塊右上為向外轉(zhuǎn)角
             59                             mTile[1= 5;
             60                         }
             61                     }
             62                     else
             63                     {
             64                         //  目標(biāo)塊右上為向上連接
             65                         mTile[1= 29;
             66                     }
             67                 }
             68                 else
             69                 {
             70                     //  如果左方有同類塊
             71                     if ((nIndex & 128> 0)
             72                     {
             73                         //  目標(biāo)左上為向左連接
             74                         mTile[0= 14;
             75                     }
             76                     //  如果右方有同類塊
             77                     if ((nIndex & 8> 0)
             78                     {
             79                         //  目標(biāo)右上為向右連接
             80                         mTile[1= 15;
             81                     }
             82                 }
             83 
             84                 //  如果下方有同類塊
             85                 if ((nIndex & 32> 0)
             86                 {
             87                     //  如果左方有同類塊
             88                     if ((nIndex & 128> 0)
             89                     {
             90                         //  如果左下方有同類塊
             91                         if ((nIndex & 64> 0)
             92                         {
             93                             //  目標(biāo)塊左下為填充物
             94                             mTile[2= 32;
             95                         }
             96                         else
             97                         {
             98                             //  目標(biāo)塊左下為向外轉(zhuǎn)角
             99                             mTile[2= 10;
            100                         }
            101                     }
            102                     else
            103                     {
            104                         //  目標(biāo)塊左下為向下連接
            105                         mTile[2= 30;
            106                     }
            107 
            108                     //  如果右方有同類塊
            109                     if ((nIndex & 8> 0)
            110                     {
            111                         //  如果右下方有同類塊
            112                         if ((nIndex & 16> 0)
            113                         {
            114                             //  目標(biāo)塊右下為填充物
            115                             mTile[3= 33;
            116                         }
            117                         else
            118                         {
            119                             //  目標(biāo)塊右下為向外轉(zhuǎn)角
            120                             mTile[3= 11;
            121                         }
            122                     }
            123                     else
            124                     {
            125                         //  目標(biāo)塊右下為向下連接
            126                         mTile[3= 35;
            127                     }
            128                 }
            129                 else
            130                 {
            131                     //  如果左方有同類塊
            132                     if ((nIndex & 128> 0)
            133                     {
            134                         //  目標(biāo)塊左下為向左連接
            135                         mTile[2= 44;
            136                     }
            137                     //  如果右方有同類塊
            138                     if ((nIndex & 8> 0)
            139                     {
            140                         //  目標(biāo)塊右下為向右連接
            141                         mTile[3= 45;
            142                     }
            143                 }
            144 
            145                 mAutoTilePal[nIndex] = (UInt32)mTile[0];
            146                 mAutoTilePal[nIndex] |= ((UInt32)mTile[1]) << 8;
            147                 mAutoTilePal[nIndex] |= ((UInt32)mTile[2]) << 16;
            148                 mAutoTilePal[nIndex] |= ((UInt32)mTile[3]) << 24;
            149             }






            posted on 2008-06-20 19:44 飯中淹 閱讀(1881) 評論(2)  編輯 收藏 引用

            評論

            # re: 磚塊地圖自動拼接數(shù)據(jù)分析和調(diào)色板自動生成。 2008-06-22 23:02 影視劇
            有些人工智能的意思  回復(fù)  更多評論
              

            # re: 磚塊地圖自動拼接數(shù)據(jù)分析和調(diào)色板自動生成。[未登錄] 2010-11-17 02:39 VK
            很感謝,我改了個斜45度的。  回復(fù)  更多評論
              


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产欧美一区二区久久| 久久黄视频| 久久精品国产网红主播| 久久精品国产99国产电影网| 日本精品久久久久中文字幕8| 久久影院亚洲一区| 久久综合久久自在自线精品自| 久久91精品国产91久久小草| 内射无码专区久久亚洲| 人妻精品久久无码区| 国产综合成人久久大片91| 国产成人精品久久| 国产69精品久久久久9999| 伊人久久大香线蕉av一区| 久久国产精品二国产精品| 色婷婷综合久久久久中文一区二区| 久久国产精品99精品国产987| 日韩欧美亚洲综合久久影院Ds| 99国产欧美久久久精品蜜芽| 久久无码一区二区三区少妇| 国产精品9999久久久久| 伊人久久大香线蕉AV色婷婷色| 久久久不卡国产精品一区二区| 国产产无码乱码精品久久鸭 | 久久99精品国产麻豆宅宅| 亚洲国产精品无码久久九九| 久久无码av三级| 91精品国产综合久久久久久| 亚洲AV无码久久精品狠狠爱浪潮| 久久久久无码精品国产app| 26uuu久久五月天| 久久99中文字幕久久| 久久久精品2019免费观看| 亚洲综合精品香蕉久久网| 中文字幕日本人妻久久久免费| 久久久久国色AV免费观看| 国产精品日韩欧美久久综合| 久久青青草原综合伊人| 久久最近最新中文字幕大全| 久久久国产精品福利免费| 久久免费小视频|