<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      HTML5+JS 《五子飛》游戲實現(六)鼠標響應與多重選擇

      上一章我們提到了如果有多條線上的棋子可以被吃掉,那么游戲需要提示用戶,讓用戶選擇吃哪條線上的。另外因為是網頁游戲,所以一定要實現鼠標單擊棋子可以進行操作。

       

      當鼠標移動棋子上面后,切換鼠標指針為手形,移開棋子后再切換回默認的狀態:

      el.mousemove(function (e) {
          var o = el.offset();
          var p = { x: e.clientX - o.left, y: e.clientY - o.top };
          el.css("cursor", "default");
          for (var i = 0; i < t.chesses.length; i++) {
              if (Canvas.inRegion([p.x, p.y], t.chesses[i].bounds.toArrayXY())) {
                  el.css("cursor", "pointer");
                  break;
              }
          }
      });

      同時,還要根據鼠標位置來判斷當前是哪顆棋子,是選中棋子還是移動棋子。

      如果只是選中棋子,只需要在點擊棋子后,在棋子的外面畫一個框用來區別其他棋子,表示是當前棋子:

      var b = this.chesses[this.currentIndex].bounds;
      Canvas.drawRect(this.panel, "rgba(255,0,0,0.4)", 2, b.x - 2, b.y - 2, b.x + b.w + 2, b.y + b.h + 2);

      如果是移動棋子,還要區別只是單純的移動棋子還是移動后可以吃對方的棋子。單純的移動棋子也就只需要更新目標位置為當前棋子就行了。

      if (t.currentPlayer == t.chesses[i].player && t.chesses[i].player != Player.None) {
          t.currentIndex = i;
      }

      要是可以吃掉對方的棋子,就需要把對方的棋子吃掉或有多條路線可以吃棋時提示用戶選擇吃哪條路線的棋子。吃了棋子后還要判斷對方還可不可以繼續走棋,如果不能繼續走棋,那么還需要提示用戶游戲結束,我方贏了。

      if (t.currentPlayer == t.chesses[t.currentIndex].player && t.chesses[i].player == Player.None) {
          if (t.moveChess(i, t.currentIndex)) {
              t.currentIndex = i;
              if (!t.chessarray) {
                  player = t.currentPlayer;
                  t.currentPlayer = t.getAnotherPlayer(player);
                  t.changePlayer();
                  if (t.isGameOver(t.currentPlayer)) { t.winner = player; t.isover = true; }
              }
          }
      }

      判斷游戲是否結束:

      // 游戲結束
      this.isGameOver = function (player) {
          var i, j, k, pos;
          // 檢查是否有可移動的棋子
          for (i = 0; i < this.chesses.length; i++) {
              if (this.chesses[i].player == player) {
                  for (j = 0; j < this.lines.length; j++) {
                      pos = $.inArray(this.chesses[i].point.index, this.lines[j]);
                      if (pos != -1) {
                          for (k = 0; k < pos - 1; k++) {
                              if (this.canMove(k, pos)) return false;
                          }
                          for (k = pos + 1; k < this.lines[j].length; k++) {
                              if (this.canMove(k, pos)) return false;
                          }
                      }
                  }
              }
          }
          return true;
      };

      有多條路線選擇的時候,我們暫時這樣處理:在每條路線的左邊棋子左邊寫上數字1,2,3...,表示路線編號,這樣用戶只需要點擊有編號旁邊的棋子就可以選擇吃哪條路線的棋子:

      // 多重選擇
      if (this.chessarray) {
          // 遮擋層
          Canvas.drawFillRect(this.panel, "#000000", 1, 20, 20, cw - 20, cw - 20, "rgba(0,0,0,0.4)");
          // 多重棋子
          for (i = 0; i < this.chessarray.length; i++) {
              b = this.chessarray[i][0].bounds;
              Canvas.drawRect(this.panel, "rgba(255,255,0,0.4)", 2, b.x - 2, b.y - 2, b.x + b.w + 2, b.y + b.h + 2);
      // 寫上路線編號 Canvas.drawText(
      this.panel, i + 1, b.x + b.w + 4, b.y + b.h + 2, "#FFFFFF"); } }

      最后每次我方下完棋子后,還需要切換給對方下棋:

      player = t.currentPlayer;
      t.currentPlayer = t.getAnotherPlayer(player);
      t.changePlayer();

       

      好了,這一章就里沃特先分析到這里。

       

      HTML5+JS 《五子飛》游戲實現(一)規則

      HTML5+JS 《五子飛》游戲實現(二)路線分析和資源準備

      HTML5+JS 《五子飛》游戲實現(三)頁面和棋盤棋子

      HTML5+JS 《五子飛》游戲實現(四)夾一個和挑一對

      HTML5+JS 《五子飛》游戲實現(五)移動棋子

      HTML5+JS 《五子飛》游戲實現(七)游戲試玩

      posted @ 2015-01-16 07:59  里沃特  閱讀(837)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 泾阳县| 果冻传媒18禁免费视频| 国产亚洲精品成人aa片新蒲金| 成人欧美一区二区三区在线观看| 欧美人与动牲交a免费| 岐山县| 桃花岛亚洲成在人线AV| 黑人av无码一区| 337P日本欧洲亚洲大胆精品555588| 国产一区二区不卡精品视频| 成人免费在线播放av| 性人久久久久| 亚洲综合网国产精品一区| 日韩精品一区二区三区激| 成人免费无遮挡在线播放| 99久久99这里只有免费费精品| 欧美寡妇xxxx黑人猛交| 精品一区二区不卡无码AV| 国产成人8X人网站视频| 久久久久久久久久久久中文字幕| 精品自拍偷拍一区二区三区| 性奴sm虐辱暴力视频网站| 国产亚洲AV电影院之毛片| 国产一级区二级区三级区| 亚洲高清免费在线观看| 国产喷水1区2区3区咪咪爱AV| 97免费公开在线视频| 亚洲人午夜精品射精日韩| 亚洲欧洲日产国码久在线| 97av麻豆蜜桃一区二区| 亚洲精品自产拍在线观看动漫| 亚洲国产日韩欧美一区二区三区| 亚洲天堂一区二区三区三州| 日本阿v片在线播放免费| 一区二区三区不卡国产| 久久精品青青大伊人av| 日韩精品一区二区三区中文无码| 五月天国产成人av免费观看| 缙云县| 精品无码久久久久久尤物| 国产成人精品亚洲日本片|