第三十七天 一樂在其中—Android的小遊戲打飛機(一)環境搭建,第三十七天android

來源:互聯網
上載者:User

第三十七天 一樂在其中—Android的小遊戲打飛機(一)環境搭建,第三十七天android

           8月3日,晴天。"綠樹陰濃夏日長,樓台倒影入池塘, 水晶簾動微風起,滿架薔薇一院香。"

       cocos2d是一個開源的遊戲開發架構,利用它可以非常容易的開發2D遊戲。目前最主要的分支是iPhone版本的,你可以在iPhone上開發2D遊戲。它提供了物理,精靈(sprites),視差捲軸(parallax scrolling),支援iPhone touch和accelerator等很多功能。現在在App Store上已經有不少用cocos2d開發的遊戲。

      如果你想在Andriod上使用Java語言進行 cocos2d遊戲的開發,可以到這個網址下載相關開發檔案:

  https://github.com/ZhouWeikuan/cocos2d,進入上面的網址後,如果不用git或者svn的朋友就在頁面的右下角點那個“Download ZIP”即可。開發時,只需將下載好的cocos-master中的cocos2d-android中的libs目錄中的的內容拷到自己工程的libs目錄下。

          一、匯入下載檔案,縱觀全貌

         1、下載完成後解壓,裡面有個叫“cocos2d-android”的目錄,因為用Android開發,所以就匯入這個目錄。

           2、匯入後,會出現兩個錯誤。

           修正方法:第一個錯誤是這個項目是一個Library項目,在屬性中取消它的Libray屬性即可。

                第二個錯誤是檔案夾中已經包含了一個jar檔案,和src中的原始碼重複了,只需要刪除/libs/cocos2d-android.jar檔案即可運行。

           3、在模擬器上運行,得到一個具有cocos2d遊戲各項功能使用的DEMO列表,可供大家學習參考使用。

           

           二、運行第一個遊戲-靜態飛機

            1、MainActivity.java

package edu.eurasia.cocos2d_game01;import org.cocos2d.layers.CCScene;import org.cocos2d.nodes.CCDirector;import org.cocos2d.opengl.CCGLSurfaceView;import android.os.Bundle;import android.app.Activity;public class MainActivity extends Activity {// 建立一個view對象,cocos2d引擎會把圖形繪製在該view對象上面private CCGLSurfaceView view = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);view = new CCGLSurfaceView(this);setContentView(view);// 擷取導演對象CCDirector director = CCDirector.sharedDirector();// 設定遊戲引擎畫面的輸出目標Viewdirector.attachInView(view);// 設定遊戲是否顯示FPS值director.setDisplayFPS(true);// 設定遊戲的重新整理率 FPS = frame per seconddirector.setAnimationInterval(1 / 30.0f);// 產生情境對象CCScene scene = CCScene.node();// 產生圖層對象PlaneLayer layer = new PlaneLayer(this);// 將圖層添加至情境當中scene.addChild(layer);// 通知導演,運行情境director.runWithScene(scene);}}
          2、PlaneLayer.java

package edu.eurasia.cocos2d_game01;import org.cocos2d.layers.CCLayer;import org.cocos2d.nodes.CCDirector;import org.cocos2d.nodes.CCSprite;import org.cocos2d.types.CGPoint;import org.cocos2d.types.CGSize;import android.content.Context;public class PlaneLayer extends CCLayer{//聲明一個精靈對象private CCSprite plane;private CCDirector director;private CGSize winSize;    public PlaneLayer(Context context){        director = CCDirector.sharedDirector();winSize = director.winSize();    //初始化精靈對象    plane = CCSprite.sprite("p.png");    //設定精靈對象的位置    plane.setPosition(CGPoint.ccp(winSize.width / 2, 200));    this.addChild(plane);    }}

         需要將一張飛機的圖片p.png放置在assets目錄下。

      3、運行結果

    

       原始碼:http://download.csdn.net/detail/zwszws/7717559

          4、程式碼分析

              Cocos2d的核心結構如


             1、CCDirector:導演類是遊戲當中的召集人和領導者,負責調度遊戲當中的一切對象和資源;

          Director是一個單例,在全部遊戲中只存在一個執行個體。Director類似電影中的“導演”,正如其名,它經管Cocos2d-x中的所有情境的調度:可以切換當前情境(遊戲中只有一個當前情境),暫停情境中的動作—這跟實際中的導演喊“哢”是一樣的—會暫停全部情境中所有的動作或音效等,當然也可以開始一個情境中的動作和音效。總之,Director扮演著一個導演的角色。

         2、CCScene:情境可以簡單的理解為一個關卡,多 個關卡組合在一起就形成了遊戲;

         Scene就像一個舞台會擺放各類的元素,有的是固定的:布景和道具,有的元素是可以移動的:男、女主角等。在遊戲世界裡也如此,在一個遊戲情境中會放置不合的元素來點綴我們的情境。當然在遊戲裡,也未必完全跟實際相同,為了便於對元素的操作,我們將不同的元素放在不同的層。在一個情境中可以放置多個層,可以使用addChild函數來把層加入情境中。 在設計一個情境時,一般會產生情境對象,然後再在裡面添加層。

      在CCScene承擔的是一個容器的功能,遊戲開發時需要渲染的對象在CCScene裡面統一管理,包括建立、銷毀和情境切換等,而且從其類的結構圖可看出,其直接繼承了CCNode類,CCNode是cocos2d-x的渲染鏈,寫遊戲基本上就是和它打交道了,cocos2d-x同時只能渲染一個CCScene,因此CCScene是渲染的根節點。在構建遊戲時,一般是一個Scene中添加一個或者多個CCLayer,一個Layer中又添加多個CCSprite或者CCMenu,CCSprite中還可以添加CCParticleSystem等等。這樣就構建了一個渲染樹,cocos2d-x曆遍這個樹來將映像顯示在螢幕上。

         3、CCLayer:一個情境可以有多個布景層構成;

         這裡說的層的概念和Adobe Photoshop上的概念是一樣的。在每一個遊戲中,情境可以由許多層構成,每一層負責各自不同的任務,例如負責顯示背景、負責顯示道具和負責顯示任務等。而在每一層上面,又可以添加不同的元素,如文本、精靈和菜單等。通過層與層之間的組合關係,就能讓遊戲顯示出各種各樣的介面了。當然為了看得清每一層上的東西,很多層都設定成透明或者半透明,否則只能看到最上層的東西了。

         4、CCSprite:遊戲當中所有可以運動的東西幾乎都 是精靈,一個布景層當中可以包含多個精靈;

         Sprite(精靈)是層中的首要構成元素,精靈CCSprite是整個遊戲開發處理的主要對象,例如天上的飛機、地上的坦克、玩家控制的任務等等都是精靈。CCSprite是一幅2D映像,CCSprite可以通過映像或者映像中的一個矩形子領域建立。實際上,精靈就是一個可以不斷變化的圖片,變化包括位置變化、旋轉、放大、運動等等。

  



通過c語言編寫一個射擊類的打飛機小遊戲,可以通過鍵盤來進行遊戲,操作方法是“a”“d”“w”或者“

幾百行代碼?建立一個2維數組顯示介面,用switch擷取方向控制字元,針對每一個字元編寫相應的處理邏輯並顯示,差不多就這個思路,以前大二的時候寫過
 
一個簡單的小遊戲--打飛機一些方法我會點C++,用Java也行

這個貌似沒什麼難度。。。我自己寫了一個打磚塊的東西。。和這個差不多了。。 發你QQ裡邊,你看看。。呵呵。。。、期待交流! QQ:279794658
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.