成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

手摸手帶你實現(xiàn) 小游戲<別踩白塊兒 -- 內(nèi)有游戲鏈接>

zhoutk / 2068人閱讀

摘要:別踩白塊兒使用白鷺引擎編寫的游戲游戲地址準備工作了解白鷺引擎并安裝編寫工具安裝游戲引擎安裝創(chuàng)建項目創(chuàng)建項目可以選擇不同版本的引擎,創(chuàng)建成功之后還可以查看,對發(fā)布進行設(shè)置。

別踩白塊兒 使用(白鷺引擎)Egret編寫的游戲

游戲地址
準備工作

了解白鷺引擎 并安裝編寫工具

安裝游戲引擎

安裝Egret Wing3

創(chuàng)建項目

創(chuàng)建項目可以選擇不同版本的引擎,創(chuàng)建成功之后還可以查看API,對發(fā)布進行設(shè)置。
目錄結(jié)構(gòu)如下


代碼主要存放在src文件下(白鷺引擎支持代碼為typescript)

代碼編寫
先說一下整體的思路: 就是將整個游戲細分一下,一個小格子為一個模塊,然后每一列為一個大的模塊,游戲整體作為一個大的模塊,定時器作為一個模塊,開始游戲和結(jié)束游戲分別作為一個模塊。如圖:

廢話少說 開擼開擼

egret提供server服務(wù)egret startserver -a -a 表示對文件進行監(jiān)控自動更新

BoxGraphics
  // 負責初始化小格子
  private init() {
      this.touchEnabled = true;
      this.width = GameData.getBoxWidth();
      this.height = GameData.getBoxHeight();
      this.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.click, this);
  }
  /**
   * drawBox
   * 繪制內(nèi)容
   */
  public drawBox(canTouch:boolean=false) {
      this._canTouch = canTouch;
      this.graphics.clear();
      if(canTouch) {
          this.graphics.beginFill(0);
      } else {
          this.graphics.beginFill(0xffffff);
      }
      this.graphics.lineStyle(1, 0);
      this.graphics.drawRect(0,0,GameData.getBoxWidth(),GameData.getBoxHeight());
      this.graphics.endFill();
  }
  /**
   * click
   * 當前方塊被點擊后的響應(yīng)事件
   */
  private click(evt:egret.TouchEvent):void {
      this.graphics.clear();
      if(this._canTouch) {
          this.graphics.beginFill(0xcccccc);
      } else {
          this.graphics.beginFill(0xff0000);
      }
      this.graphics.lineStyle(1, 0);
      this.graphics.drawRect(0,0,GameData.getBoxWidth(),GameData.getBoxHeight());
      this.graphics.endFill();

      var event:GameEvent;

      //不能點擊,拋出錯誤事件
      if(!this._canTouch) {
          event = new GameEvent(GameEvent.GAME_OVER);
      } else {
          event = new GameEvent(GameEvent.GAME_HIT);
      }
      this.dispatchEvent(event);
  }
GroupRect

一行格子

  private init():void {
      this._boxs = [];
      // 生成一行中的每一個格子 并給每個格子添加對應(yīng)事件
      for(var i:number=0;i
GameView

游戲主界面

  private init():void {
      this._boxGroups = [];
      var len:number = GameData.row+1;

      // 循環(huán)生成每一列格子
      for(var i:number=0;i

點擊游戲移動函數(shù)

    public move() {
        var len:number = GameData.row+1;
        for(var i:number=0;i=GameData.getStageHeight()){
                // 如果格子沒有被點擊 游戲結(jié)束
                if(!this._boxGroups[i].isHit) {
                    this.gameOver();
                    return;
                }

                // 設(shè)置對應(yīng)格子的位置
                if(i==0) {
                    this._boxGroups[i].y = this._boxGroups[4].y - GameData.getBoxHeight();
                } else {
                    this._boxGroups[i].y = this._boxGroups[i-1].y - GameData.getBoxHeight();
                }
                this._boxGroups[i].create();
            }
        }
    }
Main

入口文件

    /**
     * 初始化游戲函數(shù)
     * 初始化gameview
     * 初始化定時器
     * 初始化開始|結(jié)束 畫布
     * 添加事件監(jiān)聽
     */
    private init():void {
        this.gameview = new GameView();
        this.addChild(this.gameview);
        this.gameview.addEventListener(GameEvent.GAME_OVER, this.gameover,this);
        this.timer = new egret.Timer(20,0);
        this.timer.addEventListener(egret.TimerEvent.TIMER, this.timers, this);

        this.gameoverPanel = new GameOverPanel();
        this.gameoverPanel.addEventListener(GameEvent.GAME_START,this.startgame,this);

        this.startgamePanel = new StartGamePanel();
        this.startgamePanel.addEventListener(GameEvent.GAME_START, this.startgame, this);
        this.addChild(this.startgamePanel);
    }

    //定義事件
    /**
     * 游戲結(jié)束
     */
    private gameover(evt:GameEvent):void {
        this.timer.stop();
        this.gameoverPanel.update();
        this.addChild(this.gameoverPanel);
    }

    /**
     * 開始游戲
     * 重新設(shè)置游戲速度 分數(shù)
     * 去除游戲開始|結(jié)束畫布
     */
    private startgame(evt:GameEvent):void {
        GameData.speed = 10;
        GameData.setScore(0);
        this.gameview.startgame();
        if(this.startgamePanel.parent) {
            this.removeChild(this.startgamePanel);
        }
        if(this.gameoverPanel.parent) {
            this.removeChild(this.gameoverPanel);
        }
        this.timer.start();
    }
發(fā)布

egret publish

官方文檔

over

git地址

到這里,關(guān)于游戲的相關(guān)介紹就基本上已經(jīng)結(jié)束了,如果有錯誤或者不嚴謹?shù)牡胤剑垊?wù)必給予指正,十分感謝。如果喜歡或者有所啟發(fā),歡迎 star,對作者也是一種鼓勵。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/53157.html

相關(guān)文章

  • 網(wǎng)頁版踩白游戲

    摘要:別踩白塊白塊黑塊游戲初始化根據(jù)前面的部分我們可以知道,每個就代表一個白塊,就代表一個黑塊,每點擊一個黑塊消失其實是刪除了一個,然后從上面添加一個新的。所以我們首先要通過來控制的創(chuàng)造和生成記得刪除在編寫靜態(tài)頁面時候指定生成的個。 自己最近一直想做個小項目,但是自己代碼水平太爛了,做不了大系統(tǒng),索性利用畢生所學(xué)寫個小游戲,哈哈哈別踩白塊這個游戲相信很多人都在手機上玩過,今天我們就來做一個網(wǎng)...

    fobnn 評論0 收藏0
  • 網(wǎng)頁版踩白游戲

    摘要:別踩白塊白塊黑塊游戲初始化根據(jù)前面的部分我們可以知道,每個就代表一個白塊,就代表一個黑塊,每點擊一個黑塊消失其實是刪除了一個,然后從上面添加一個新的。所以我們首先要通過來控制的創(chuàng)造和生成記得刪除在編寫靜態(tài)頁面時候指定生成的個。 自己最近一直想做個小項目,但是自己代碼水平太爛了,做不了大系統(tǒng),索性利用畢生所學(xué)寫個小游戲,哈哈哈別踩白塊這個游戲相信很多人都在手機上玩過,今天我們就來做一個網(wǎng)...

    0x584a 評論0 收藏0
  • 網(wǎng)頁版踩白游戲

    摘要:別踩白塊白塊黑塊游戲初始化根據(jù)前面的部分我們可以知道,每個就代表一個白塊,就代表一個黑塊,每點擊一個黑塊消失其實是刪除了一個,然后從上面添加一個新的。所以我們首先要通過來控制的創(chuàng)造和生成記得刪除在編寫靜態(tài)頁面時候指定生成的個。 自己最近一直想做個小項目,但是自己代碼水平太爛了,做不了大系統(tǒng),索性利用畢生所學(xué)寫個小游戲,哈哈哈別踩白塊這個游戲相信很多人都在手機上玩過,今天我們就來做一個網(wǎng)...

    focusj 評論0 收藏0
  • 摸手,帶你封裝一個vue component

    摘要:靈活性和針對性。所以我覺得大部分組件還是自己封裝來的更為方便和靈活一些。動手開干接下來我們一起手摸手教改造包裝一個插件,只要幾分鐘就可以封裝一個專屬于你的。 項目地址:vue-countTo配套完整后臺demo地址:vue-element-admin系類文章一:手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇)系類文章二:手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇)系類文章三:手摸手,帶...

    pkhope 評論0 收藏0
  • 摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇)

    摘要:我們將登錄按鈕上綁上事件,點擊登錄之后向服務(wù)端提交賬號和密碼進行驗證。所以前端和后端權(quán)限的劃分是不太一致。側(cè)邊欄最后一個涉及到權(quán)限的地方就是側(cè)邊欄,不過在前 完整項目地址:vue-element-admin 系列文章: 手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇) 手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇) 手摸手,帶你用vue擼后臺 系列三 (實戰(zhàn)篇) 手摸手,帶你用vu...

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

zhoutk

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<