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

攀升·Uranus


Something Different,Something New
數據加載中……

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

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

        像俄羅斯(Tetris)方塊,迷宮,推箱子這種小游戲,其實建模都差不多,這里我選擇一個2維數組10×20的來代表整個游戲區域的顯示點,0代表該位置空,1代表有方塊。 每一個數組值(a[2][4])代表屏幕上的一個像素,數組類似于:
        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, 就是每行是不是數組值都是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);   //把數組第i行全置0
           }
           3......其它的判斷類似

            好,具體的設計思想參考圖1-1
             

                                                                                       圖1-1      

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

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

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的區別是形狀而不是行為,因此這里使用多態是錯誤的。

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

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

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

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

在這里我并沒有創建每一個形狀。

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的思想  回復  更多評論   

@攀升

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

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

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

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

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

@陳梓瀚(vczh)

呵呵,你的腳本寫的俄羅斯就是從文件載入然后旋轉也是通過相同的變換矩陣實現的。可是人家用自己的能實現也沒什么不好哈
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>
            亚洲精选国产| 欧美大片在线观看一区二区| 久久爱另类一区二区小说| 亚洲欧美日韩国产| 一区二区三区精品久久久| 99re6这里只有精品| 亚洲午夜视频在线| 校园激情久久| 久久久久亚洲综合| 欧美1区免费| 亚洲经典三级| 亚洲美女毛片| 在线视频精品一| 亚洲一区二区精品在线| 久久丁香综合五月国产三级网站| 久久久久久久网| 农村妇女精品| 国产精品萝li| 亚洲大片在线| 亚洲永久免费| 蜜桃av久久久亚洲精品| 欧美激情一区二区在线 | 午夜亚洲激情| 久久视频国产精品免费视频在线| 美乳少妇欧美精品| 国产精品欧美风情| 亚洲欧洲一区二区三区| 欧美一区二区三区四区在线| 欧美激情四色| 欧美中在线观看| 欧美乱人伦中文字幕在线| 国产美女搞久久| 99视频国产精品免费观看| 久久精品最新地址| 一区二区欧美激情| 欧美高清一区| 国产一区二区三区在线播放免费观看| 亚洲中字在线| 一区二区激情小说| 香蕉成人啪国产精品视频综合网| 欧美资源在线观看| 亚洲乱亚洲高清| 久久久蜜桃一区二区人| 国产精品美女久久| 一区二区三区|亚洲午夜| 久久综合五月| 欧美一区二区三区免费在线看 | 亚洲图片你懂的| 欧美精品国产| 亚洲人成亚洲人成在线观看图片 | 久久久精品久久久久| 99伊人成综合| 欧美日韩成人网| 亚洲美女av电影| 欧美成人午夜激情| 久久久在线视频| 伊人夜夜躁av伊人久久| 久久精品中文字幕一区| 亚洲欧美电影在线观看| 国产精品视频内| 亚洲欧美精品一区| 中国亚洲黄色| 国产精品视频久久久| 午夜视频在线观看一区二区| 亚洲影院色在线观看免费| 国产精品女主播一区二区三区| 亚洲在线免费| 亚洲欧美激情一区| 国产日韩欧美成人| 久久久噜噜噜久久中文字幕色伊伊| 亚洲欧美精品伊人久久| 国产亚洲欧洲| 欧美黄污视频| 欧美日韩不卡视频| 亚洲一区区二区| 亚洲欧美日韩一区二区三区在线| 国产乱码精品一区二区三区忘忧草 | 欧美国产精品专区| 日韩视频一区二区三区在线播放| 亚洲激情校园春色| 欧美日韩视频专区在线播放 | 午夜精品久久久久久久99热浪潮 | 一区二区三区视频在线观看| 欧美激情精品久久久久久变态| 欧美二区在线观看| 亚洲午夜在线观看视频在线| 午夜欧美电影在线观看| 91久久线看在观草草青青| 亚洲欧洲日本国产| 国产精品日韩欧美一区| 蜜臀99久久精品久久久久久软件 | 狠狠久久婷婷| 亚洲欧洲一区二区在线观看 | 国产欧美精品一区| 蜜臀av一级做a爰片久久| 欧美久色视频| 久久精品日产第一区二区| 欧美va亚洲va国产综合| 欧美亚洲综合在线| 欧美精品高清视频| 久久影院午夜片一区| 欧美日韩欧美一区二区| 欧美在线视频播放| 欧美激情第三页| 久久久久一区二区| 欧美视频在线观看一区| 欧美成人a∨高清免费观看| 欧美午夜精品久久久久久孕妇 | 午夜精品一区二区三区在线视| 久久亚洲私人国产精品va| 亚洲欧美一区二区三区久久 | 亚洲第一区在线| 国产一区二区三区视频在线观看 | 亚洲精品免费一区二区三区| 欧美一区二区三区在线免费观看 | 久久精品成人一区二区三区蜜臀| 一区二区三区回区在观看免费视频| 久久国产综合精品| 欧美一区二区三区视频在线| 欧美日本韩国在线| 亚洲电影免费在线 | 久久资源av| 久久精品观看| 国产精品美女主播在线观看纯欲| 亚洲高清毛片| 亚洲国产福利在线| 欧美一区二区| 欧美中文字幕第一页| 国产精品久久久久高潮| 亚洲美女91| 一二三区精品福利视频| 欧美激情无毛| 亚洲电影免费观看高清完整版在线 | 亚洲福利视频三区| 欧美一进一出视频| 久久精品国产v日韩v亚洲| 国产精品永久免费| 亚洲综合色丁香婷婷六月图片| 亚洲欧美激情一区二区| 欧美视频第二页| 一区二区欧美国产| 欧美亚洲一级片| 国产欧美日韩精品a在线观看| 亚洲一区二区三区久久| 午夜精品久久久久| 国产欧美日韩亚洲| 欧美一区二区三区日韩视频| 久久嫩草精品久久久精品| 今天的高清视频免费播放成人| 欧美与黑人午夜性猛交久久久| 久久久久国产精品一区三寸 | 欧美日韩精品免费看| 99在线热播精品免费99热| 亚洲欧美在线免费| 国产夜色精品一区二区av| 久久久91精品| 亚洲电影在线播放| 中文在线资源观看网站视频免费不卡| 国产精品igao视频网网址不卡日韩| 亚洲欧美日本国产有色| 玖玖玖国产精品| 日韩香蕉视频| 国产精品入口日韩视频大尺度| 亚洲欧美综合| 欧美激情第三页| 亚洲欧美国产日韩天堂区| 国产亚洲综合精品| 欧美国产视频一区二区| 一区二区三区四区五区精品| 久久久久久久久久久久久女国产乱| 亚洲国产精品一区二区第一页| 欧美午夜久久| 麻豆9191精品国产| 国产精品99久久久久久久女警 | av72成人在线| 国产午夜精品美女毛片视频| 欧美成人小视频| 亚洲欧美视频在线观看视频| 欧美二区在线观看| 欧美亚洲色图校园春色| 亚洲日本成人女熟在线观看| 国产美女精品视频| 欧美精品久久99| 久久国产精品黑丝| 一本色道久久综合狠狠躁篇的优点| 久热综合在线亚洲精品| 亚洲欧美日韩区| 亚洲国产视频直播| 国产日韩成人精品| 欧美日韩在线观看视频| 男同欧美伦乱| 久久精品免费看| 亚洲欧美国产另类| 99在线热播精品免费| 午夜精品福利一区二区三区av| 欧美一级一区| 亚洲国产一区二区在线| 国产欧美日本一区二区三区| 欧美视频久久| 欧美成人国产|