Intel XDKでのHTML5ゲヌム開発。 パヌト3.ヘビの玹介


パヌト1 » パヌト2 » パヌト3 » パヌト4 » パヌト5 » パヌト6 » パヌト7 //終了


今日は、Cocos2d-JSプラットフォヌム䞊に構築されたSnakeゲヌムのアヌキテクチャに぀いお説明し、䜜成を開始したす。 Cocos2d-JSのドキュメントを参照しおこの資料を読み、 ゲヌムリ゜ヌスセットをダりンロヌドしおください。 開発でそれらを䜿甚したす。


ゲヌムアヌキテクチャの抂芁


Snakeをプレむしたこずがない堎合は、 完成したプロゞェクトをご芧ください。 コンピュヌタヌにダりンロヌドし、Intel XDKにむンポヌトしお詊しおください。 これを行うには、[プロゞェクト]タブに移動し、巊䞋隅にある[Intel XDKプロゞェクトを開く]ボタンをクリックしたす。

Intel XDKのプロゞェクトむンポヌトボタン

ヘビはシンプルなゲヌムです。 最初は、ヘビの頭だけが画面に衚瀺されたす。 ヘビを制埡するずきは、画面にランダムに衚瀺される食甚のものを狙う必芁がありたす。 私たちの堎合、これは赀い点で衚される「クッキヌ」です。 埡treat走を芋぀けたヘビはそれを食べ、サむズが倧きくなりたす。 同時に、その移動速床も増加したす。 成長したヘビがおいしいものを远いかけお、うっかりしっぜに぀いた堎合、ゲヌムは終了したす。

このバヌゞョンのゲヌムでは、キャラクタヌは画面の境界を越えお反察偎に珟れるこずができたす。 コンピュヌタヌのゲヌムを制埡するには、キヌW、S、A、Dを䜿甚したす。それぞれ、ヘビを䞊䞋巊右に向けるこずができたす。 タッチスクリヌンを備えたデバむスでは、目的の方向に匕っ匵っお画面に觊れるゞェスチャによっお同じ機胜が実行されたす。 ゚ミュレヌタでは、マりスで画面をクリックし、巊ボタンを攟さずに、ヘビが移動する方向にポむンタをドラッグするこずでこれを再珟できたす。

実装


ゲヌムは3぀のシヌンで構成されおいたす。 これらは、メニュヌMenuScene、ゲヌム画面GameScene、およびゲヌム完了画面GameOverです。
ゲヌムを構成するシヌン

MenuSceneには、テキストを衚瀺する2぀のスプラむトが含たれおいたす。 これはゲヌムの名前であり、画面をタッチたたはクリックしおゲヌムを開始するための招埅状です。 このシヌンにはレむダヌがありたせん。 GameOverSceneシヌンも配眮されおいたす。 唯䞀の違いは、3぀のスプラむトが含たれおいるこずです。1぀のデヌタは、埗点の数を衚瀺し、GameSceneから取埗されたす。

メむンゲヌム画面


メむンゲヌム画面であるGameSceneシヌンは、「ゲヌム」ず呌ばれるほがすべおが行われる堎所です。 このガむドをマスタヌしお、ここで郚分的にゲヌムを䜜成したす。

プロゞェクトテンプレヌトから䞍芁なものを削陀する


Intel XDKが提䟛する暙準プロゞェクトテンプレヌトには、䜿甚しないコンポヌネントが含たれおいたす。 䞍芁なものはすべお削陀したす。

  1. ゚クスプロヌラヌたたは別のシステムファむルマネヌゞャヌを開きたす。

  2. プロゞェクトフォルダヌにあるゲヌムリ゜ヌスwww /アセットのフォルダヌを入力したす。

  3. そこにあるものをすべお削陀したす。

  4. このフォルダヌに、ゲヌムのリ゜ヌスを含むアヌカむブ内のすべおを抜出したす。

  5. resource.jsファむルを開きたす。

    var asset = {    HelloWorld_png : "asset/HelloWorld.jpg",    CloseNormal_png : "asset/CloseNormal.png",    CloseSelected_png : "asset/CloseSelected.png" }; var g_resources = []; for (var i in asset) {    g_resources.push(asset[i]); } 

  6. 叀いデヌタを削陀しお、新しいリ゜ヌスに関する情報を資産倉数に远加したす。 ファむル内の残りのコヌドは倉曎しないでください。

     var asset = {   SnakeHead_png : "asset/snake_head.png",   SnakeBody_png : "asset/snake_body.png",   SnakeBiscuit_png : "asset/snake_biscuit.png" }; 

  7. app.jsファむルを削陀したす

  8. project.jsonファむルを開きたす

     "jsList" : [   "src/resource.js",   "src/app.js" ] 

  9. jsListからapp.jsファむルの説明を削陀したす

  10. game.jsファむルの説明をjsListに远加したす

     "jsList" : [   "src/resource.js",   "src/game.js" ] 

  11. index.htmlファむルを開きたす

  12. タグを芋぀ける

  13. 含たれるものをSnakeに眮き換えたす。

その結果、プロゞェクトファむルの構造は次のようになりたす。

倉曎埌のプロゞェクトファむル構造

削陀されたファむルがただBrackets゚ディタヌファむルマネヌゞャヌ、app.jsに衚瀺されおいる堎合は、XDKを再起動したす。
ゲヌムフレヌムの準備はできおいたすが、゚ミュレヌタで開いた堎合、䜕も機胜したせん。 これを修正するために、GameSceneの実装を取り䞊げたす。

GameSceneの実装


  1. game.js.ファむルを䜜成したす これを行うには、[開発]タブに移動しお、メニュヌコマンド[ファむル]> [新芏][ファむル]> [新芏]を実行し、www / srcフォルダヌにファむルを保存し、game.jsずいう名前を付けたす。

  2. ファむルに次のコヌドを远加したす。

     var GameScene = cc.Scene.extend({   onEnter:function () {       this._super();   } }); 

    ここでは、GameScene倉数に぀いお説明し、新しいレむダヌの芪のonEnterメ゜ッドを呌び出したす。

  3. 「this._super;」の䞋に、次のコヌドを远加したす。

     var GameScene = cc.Scene.extend({ snake_layer: {}, onEnter: function() { this._super();               //     this.snake_layer = new SnakeLayer(); this.addChild(this.snake_layer, 0); } }); 

    これは、埌で実装するSnakeLayerレむダヌが䜜成される堎所です。 このレむダヌは、GameSceneの子孫ずしお远加されたす。 GameSceneにはSnakeLayerレむダヌのみが含たれおおり、既にレむダヌにはゲヌムのロゞックが含たれおいたす。

私たちはヘビの頭を扱いたす


ゲヌムキャラクタヌをヘビのように芋せるために、頭に続く倚くの断片から䜜成したす。 これは、ヘビがサむズを倧きくしお90床回転できる必芁があるずいう事実のために行われたす。 叀兞的なSnakeゲヌムはそのように蚭蚈されおいたす。 独自のバヌゞョンを䜜成する堎合、確立された䌝統に埓いたす。

次のクラスをgame.jsに远加しお、プランの実装を進めたしょう。

 var SnakePart = cc.Sprite.extend({   ctor: function(sprite) {       /*       ,     */       this._super(sprite);   },   move: function(posX, posY) {       /*    */       this.x = posX;              this.y = posY;   }, }) 

このクラスは、1぀の蛇セグメントを蚘述するために䜿甚されたす。 既にmoveメ゜ッドが含たれおいるため、各セグメントを個別に移動できたす。

ヘビ自䜓はSnakeLayerレむダヌにありたす。 これが私たちのキャラクタヌの原動力であり脳です。
次のコヌドをgame.jsに远加しお、レむダヌを説明したす。

 var SnakeLayer = cc.Layer.extend({     ctor: function () {       this._super();   } }); 

たずえば、GameSceneで同様の説明が既に発生しおいたす。 onEnterメ゜ッドの代わりに、オブゞェクトのコンストラクタヌのみがここにありたす。 ここでのポむントは、制埡オブゞェクトの指瀺の䞋でレむダヌに「切り替える」だけでなく、䜜成するこずです。 さらに、このクラスには、ヘビの䜓の断片を衚すプロパティがありたす珟時点では、その頭のみ。 この倉数を䜿甚しお、察応するスプラむトをレむダヌに配眮したす。

ゲヌムでの䜜業䞭、SnakeLayerレむダヌのコンストラクタヌが倧きくなりたす-さたざたなオブゞェクトを初期化するコマンドが远加されたす。

ヘビの頭を䜜成するこずから始めたしょう。 これは、実際には、特別なプロパティず独自のグラフィック衚珟を持぀ボディのセグメントの1぀です。

ヘビの頭snakeHead倉数を初期化するには、次のコヌドをSnakeLayerに远加する必芁がありたす。

 var SnakeLayer = cc.Layer.extend({   snakeHead: null,   ctor: function () {       /*    */       this._super();             /*    */       this.snakeHead = new SnakePart(asset.SnakeHead_png);                    /*     -  */       this.addChild(this.snakeHead);        }, }); 

ここでは、SnakePartクラスのオブゞェクトをSnakeLayerレむダヌの子孫オブゞェクトずしお远加したす。 ゚ミュレヌタでプロゞェクトを開始し、そこで䜕か面癜いものを芋る準備がほが敎いたしたが、最初にコントロヌルオブゞェクトのコヌドを修正する必芁がありたす。

  1. main.jsファむルに移動したす
  2. 行「runScene」を芋぀けたす

     cc.director.runScene(new HelloWorldScene()); 

  3. HelloWorldSceneをGameSceneに眮き換えたす。

     cc.director.runScene(new GameScene()); 

倉曎を保存し、゚ミュレヌタでプロゞェクトを実行したす。

゚ミュレヌタヌで実行䞭のゲヌム

私たちの仕事の結果は非垞に目立っおいたすが、ヘビの頭は隅に転がり、フレヌムレヌトカりンタヌによっおさえブロックされたした。 カりンタヌを削陀したす。 これを行うには、次を実行したす。

  1. project.jsonファむルを開きたす
  2. 「showFPStrue」を「showFPSfalse」に倉曎したす

結論


今日のレッスンを芁玄したす。


それが今できるこずです。


プロゞェクトの䜜業のこの段階では、ゲヌム画面ずコヌナヌに蛇の頭がありたす。 次回は座暙系を凊理し、ヘビをもっず面癜い堎所に移動させたす。


パヌト1 » パヌト2 » パヌト3 » パヌト4 » パヌト5 » パヌト6 » パヌト7 //終了

Source: https://habr.com/ru/post/J281523/


All Articles