国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2ME游戲開發中的地圖設計與繪制

2019-11-18 15:41:47
字體:
來源:轉載
供稿:網友

  在開發很多類型的游戲中,地圖系統都需要良好的設計,直觀的說,我們需要的地圖系統僅僅是一個2D數組,然后用最快的方式將數組影射到屏幕上。
   游戲中的地圖通常不是由程序員用鍵盤輸入到程序里然后再在程序中修改然后再修改的狂亂過程,而是一般先由程序員做一個地圖編輯器,在這個地圖編輯器中用鼠標點點點,再保存的過程,或者是從網絡上下載的一些成熟編輯器比如:mappy這樣的工具生成地圖,再用腳本語言為mappy寫一個應該保存成什么樣格式的程序。通常地圖分為45度角,側視角和俯視角等等,45度角的也有很多種,這種視角相對俯視角和側視叫較復雜,我們主要討論俯視角,其實側視叫和俯視角主要的區別是圖片的表現風格不一樣,比如雷電這樣的空戰就是俯視角,mario這樣的游戲就是側視角,可以用相同的地圖編輯器做出來。綜上,你要知道游戲地圖不是程序員用程序寫出來的,你喜歡寫也可以,修改起來較麻煩,也不能像資源一樣動態治理而是一次性讀入到內存里,比較不爽。

   在這個文章里面,我們假設我們的2D數組是通過,資源讀取出來的,內容如下:

  public static byte[][] B_MAZE_2D_ARRAY = {
   {
   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, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
   , {
   0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
   , {
   0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
   , {
   0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}
   , {
   0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}
   , {
   0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}
   , {
   0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0}
   , {
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0}
   , {
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 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兩種byte數,0代表一種圖塊,1代表一種圖塊,也可以是動畫圖塊,你繪制的時候區別一下就可以了。因為我們程序里面想把這整個圖形繪制出來的話有N多種方案,我給出兩個比較合理的方案,當然第二種是比較優化的.我們假設你的主角一直在屏幕中心,當你主角移動的時候,地圖相應的變化,就是說主角為參照物,地圖動.我們知道地圖的大小要超過屏幕的,我們需要設定一個坐標系統,我的方法是,以左上角為0,0也就是和我們常用的Canvas的坐標系統是相同的,我們的圖塊大小為:ELEMENT_WIDTH, ELEMENT_HEIGHT,所以我們整個地圖的面積(絕對面積)是 ELEMENT_WIDTH * 橫坐標的塊數 * ELEMENT_HEIGHT*縱坐標的塊數。因此,我們把這么大的題圖畫在屏幕上時,需要把需要畫的坐標面積(也就是屏幕面積)從這個地圖中拿出來,其他地方被切除,這就比較的高效了。
  方法一:循環整個2維數組,不需要的地方不繪制只繪需要的部分:

   int kI = 0;// 表示
   int kJ = 0;
  //nEleStartedX, nEleStartedY表示從2D Array哪個位置開始繪制地圖


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长宁区| 达尔| 会泽县| 利辛县| 克什克腾旗| 陵川县| 沛县| 奉新县| 苗栗县| 邹平县| 新泰市| 永康市| 四川省| 济源市| 龙里县| 高密市| 临江市| 错那县| 德化县| 视频| 交城县| 安国市| 吉木乃县| 江安县| 秦安县| 杨浦区| 静海县| 阿尔山市| 阳西县| 内乡县| 郯城县| 洞口县| 德兴市| 瑞金市| 密山市| 陕西省| 尼勒克县| 延津县| 湛江市| 垫江县| 剑阁县|