青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

攀升·Uranus


Something Different,Something New
數(shù)據(jù)加載中……

模式應用(二) 俄羅斯方塊設計的思考:用OO的思想

         大學的時候看同學用C寫的俄羅斯方塊,今天心血來潮,突然想設計下用OO的思想來設計下。俄羅斯方塊是一以前俄羅斯的計算機科學家自己開發(fā)娛樂的小游戲,沒想到后來這么流行。

        像俄羅斯(Tetris)方塊,迷宮,推箱子這種小游戲,其實建模都差不多,這里我選擇一個2維數(shù)組10×20的來代表整個游戲區(qū)域的顯示點,0代表該位置空,1代表有方塊。 每一個數(shù)組值(a[2][4])代表屏幕上的一個像素,數(shù)組類似于:
        a[20][10] = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                              {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                              {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                              {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                              {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                              {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                              {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                              .........................................
                           }      
         這里有幾個簡單的判斷:
         1. 判斷是不是方塊撞到墻上,就是看a[i-1]中i-1是不是<0或i+1是不是>10;
         2. 判斷一層能不能clear, 就是每行是不是數(shù)組值都是1
            int k = 0; 
            for(int i=0; i<20; i++){
                for(int j = 0; j<10; j++){
                     if(a[i][j] == 1)
                            k++;
               }
               if(k==10)
                   ClearRow(i);   //把數(shù)組第i行全置0
           }
           3......其它的判斷類似

            好,具體的設計思想?yún)⒖紙D1-1
             

                                                                                       圖1-1      

         
         在游戲操作中,有六個鍵, 上下左右+左右旋轉(zhuǎn), 該圖中Form是邊界類與UI和用戶控制打交道,Handler業(yè)務控制類, ManageArray操作singleton數(shù)組和控制一些比較復雜算法的類。

         首先該設計把整個業(yè)務算法等等從界面分離開,不管你用什么Iphone的UI的SDK還是android的, 都沒問題。 他們只與我們的UIForm打交道。
         再次這邊的Singleton模式把數(shù)組暴露給想要他的程序。
         最后用策略模式把旋轉(zhuǎn)的算法分開,每個算法只關心自己怎么變化,想擴展就加一個類,如果一個算法要修改,那么只修改某一個方法。開閉原則。
           
         望各位博友指點
   
      

posted on 2008-12-28 23:36 攀升 閱讀(4311) 評論(16)  編輯 收藏 引用 所屬分類: Design patternOO&UML

評論

# re: 俄羅斯方塊設計的思考  回復  更多評論   

UML圖挺好
2008-12-29 08:35 | LOGOS

# re: 俄羅斯方塊設計的思考  回復  更多評論   

我覺得設計中加上觀察者模式是最合理的,UI觀察Array的變化,Array被Handle更新后,通知UI刷新,這樣就更靈活了。
2008-12-29 08:58 | jfish

# re: 俄羅斯方塊設計的思考  回復  更多評論   

厲害餓
2008-12-29 09:38 | 沈臻豪(foxtail)

# re: 俄羅斯方塊設計的思考  回復  更多評論   

@jfish
謝謝提醒,其實我這有個觀察者模式,在UIForm里面,但沒有表達清楚。
2008-12-29 09:39 | 攀升

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

有沒有代碼? 共享一下? ^_^
2008-12-29 12:31 | li_young

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

思路很好,受教了。。
2008-12-29 17:50 | bneliao

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

恩。好。
ps:UML 圖是用啥畫的呢?
2008-12-29 21:00 | 代李

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

@代李
open source的starUML




2008-12-29 22:19 | 攀升

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

不同的Whirl的區(qū)別是形狀而不是行為,因此這里使用多態(tài)是錯誤的。

應當使用builder,可以考慮從文件讀取形狀,這樣能夠需要的時候外部添加Whirl。
2008-12-30 03:00 | 陳梓瀚(vczh)

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

@陳梓瀚(vczh)
呵呵,我可能沒表達清楚

這邊的iwhirlstrategy及其繼承類其實是指當用戶點擊旋轉(zhuǎn)按鈕后,每一個不同形狀的要怎樣去變化的算法集。

在這里我并沒有創(chuàng)建每一個形狀。

2008-12-30 09:45 | 攀升

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

@代李
是用windows自帶的畫板畫的啊,花了1個多小時才畫好。
2008-12-30 17:40 | 山寨攀升·Uranus

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

恩。好。
ps:UML 圖是用啥畫的呢?
~~~~~~~~~~~~~~~~~

是用windows自帶的畫板畫的啊,花了1個多小時才畫好
2008-12-30 17:41 | 山寨攀升·Uranus

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

@山寨攀升&#183;Uranus

看來有人在這惡搞呀
2008-12-30 17:46 | 攀升

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

@攀升

難道他們旋轉(zhuǎn)的行為不是一樣的么,給定一個bool矩陣,立刻就定義出來了。不存在行為上的區(qū)別。

當然我的意思是說,每一個物體的旋轉(zhuǎn)是可以自動完成的,需要一個一個自己來的話是非常麻煩的。既然可以自動完成,那么就一致了,然后多態(tài)的好處立刻就不見了。
2008-12-30 22:42 | 陳梓瀚(vczh)

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

@陳梓瀚(vczh)
哦,我明白你的意思了
不過這邊每個物體的旋轉(zhuǎn)是要根據(jù)他所在的位置來算的,能不能轉(zhuǎn),轉(zhuǎn)后是怎樣的等等。需要一個一個算得
2008-12-30 23:30 | 攀升

# re: 俄羅斯方塊設計的思考:用OO的思想  回復  更多評論   

@陳梓瀚(vczh)

呵呵,你的腳本寫的俄羅斯就是從文件載入然后旋轉(zhuǎn)也是通過相同的變換矩陣實現(xiàn)的。可是人家用自己的能實現(xiàn)也沒什么不好哈
2008-12-31 22:12 | 沈臻豪(foxtail)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            美女主播视频一区| 欧美国产视频日韩| 国产亚洲欧美一区二区三区| 欧美午夜免费影院| 欧美日韩一区二区在线观看视频| 欧美日韩岛国| 欧美视频一二三区| 国产精品你懂的在线| 国产日韩精品久久| 亚洲国产专区| 亚洲香蕉伊综合在人在线视看| 欧美一二区视频| 麻豆国产精品va在线观看不卡| 欧美风情在线观看| 一本久久a久久精品亚洲| 亚洲欧美久久| 欧美激情精品久久久久| 国产精品免费福利| 亚洲电影免费在线 | 欧美在线视频一区二区三区| 久久久夜精品| 亚洲精品美女| 亚洲一区999| 欧美成人a视频| 国产精品资源在线观看| 亚洲黄色影院| 欧美一区二区三区免费视频| 亚洲第一精品在线| 亚洲女人天堂成人av在线| 麻豆精品在线视频| 国产视频亚洲精品| 一区二区三区日韩在线观看| 蜜桃av综合| 欧美亚洲一区三区| 国产精品成人国产乱一区| 亚洲激情av| 免费看亚洲片| 久久国产一区| 国产精品一区=区| 国产精品99久久久久久久久| 欧美成人69av| 久久国产精品99国产| 国产精品久久久久影院亚瑟| 一区二区欧美日韩视频| 欧美大色视频| 老妇喷水一区二区三区| 狠狠88综合久久久久综合网| 校园春色综合网| 亚洲精品免费网站| 久久婷婷人人澡人人喊人人爽| 亚洲制服欧美中文字幕中文字幕| 欧美理论在线| 一区二区精品国产| 最新日韩在线视频| 美女日韩在线中文字幕| 一区二区三区在线看| 久久久久久久久蜜桃| 午夜精品福利在线| 国产欧美1区2区3区| 欧美在线免费观看视频| 亚洲一区不卡| 国产日产欧产精品推荐色| 欧美一级在线视频| 亚洲免费中文字幕| 国产一区二区电影在线观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲欧美国产高清| 国产日韩亚洲欧美| 久久资源av| 欧美成人午夜影院| 一本大道久久a久久精品综合| 亚洲伦理一区| 国产精品久久二区二区| 欧美一区二区| 美日韩在线观看| 夜夜精品视频| 亚洲天堂av电影| 国内精品99| 亚洲精品永久免费精品| 国产精品一区二区三区乱码| 久久久噜噜噜久久| 欧美不卡一卡二卡免费版| 国产精品99久久不卡二区| 亚洲欧美另类在线观看| 亚洲大黄网站| 亚洲无线视频| 黄色亚洲网站| 亚洲精品九九| 国产视频久久久久| 亚洲人线精品午夜| 国产亚洲精品美女| 亚洲青涩在线| 国模私拍一区二区三区| 亚洲精品免费观看| 国产日韩在线一区| 亚洲国产成人不卡| 国产三区精品| 99re6热只有精品免费观看| 国产一区二区激情| 日韩视频免费| 亚洲第一搞黄网站| 亚洲视频一区二区| 91久久精品网| 欧美一区二区三区在线免费观看| 99亚洲一区二区| 久久精品视频导航| 亚洲欧美一区二区视频| 欧美黄色aaaa| 美女主播精品视频一二三四| 国产精品九九| 亚洲精品孕妇| 亚洲精品乱码| 91久久久一线二线三线品牌| 国产三区二区一区久久| 亚洲精品一区二区三| 精品福利电影| 欧美一区二区三区另类| 亚洲影视在线播放| 欧美精品一区二区高清在线观看| 另类人畜视频在线| 国产日韩视频一区二区三区| 亚洲视频狠狠| 亚洲欧美日本另类| 欧美日韩美女一区二区| 亚洲欧洲精品天堂一级| 在线观看欧美日韩国产| 久久国产精品毛片| 久久9热精品视频| 国产伦精品一区二区三区| 一区二区欧美视频| 亚洲一区二区久久| 欧美日韩三级电影在线| 亚洲美女区一区| 一区二区日韩精品| 欧美日韩国产欧| 99这里有精品| 亚洲欧美日韩爽爽影院| 国产精品福利影院| 亚洲已满18点击进入久久| 香蕉精品999视频一区二区| 国产精品毛片在线| 亚洲欧美日韩网| 久久久噜噜噜久久久| 精品动漫3d一区二区三区免费| 久久精品国产亚洲aⅴ| 你懂的国产精品| 亚洲精品一二三| 欧美日韩免费| 午夜久久影院| 蜜桃久久精品一区二区| 亚洲国产精品高清久久久| 欧美成人嫩草网站| av成人免费| 欧美在线三级| 在线观看成人av| 欧美喷潮久久久xxxxx| 亚洲视频欧美视频| 久久中文欧美| 亚洲午夜精品国产| 国内揄拍国内精品少妇国语| 女人天堂亚洲aⅴ在线观看| 99pao成人国产永久免费视频| 欧美一级在线视频| 亚洲激情精品| 国产精品亚洲精品| 美日韩丰满少妇在线观看| 一区二区免费在线观看| 久久免费国产| 亚洲视频在线一区| 红桃视频亚洲| 欧美日韩亚洲一区二区三区在线| 欧美一二三区精品| 91久久亚洲| 久久精品在这里| 在线亚洲+欧美+日本专区| 国产视频一区在线| 欧美美女操人视频| 久久久国产成人精品| 99精品视频免费观看视频| 久久蜜臀精品av| 亚洲摸下面视频| 亚洲人被黑人高潮完整版| 国产女优一区| 欧美视频一区二区在线观看| 久久女同精品一区二区| 久久精品99无色码中文字幕| 亚洲精品国产系列| 国产综合香蕉五月婷在线| 欧美日韩精品一区二区三区| 久久久久网站| 欧美亚洲免费在线| 一本大道av伊人久久综合| 麻豆成人av| 欧美一区二区视频免费观看| 夜夜嗨av一区二区三区免费区| 亚洲第一偷拍| 国产在线一区二区三区四区| 国产精品久久久对白| 欧美黑人一区二区三区| 欧美亚洲在线观看|