canvas教程

HTML5技术之图像处理:一个滑动的拼图游戏(2)

字号+ 作者:H5之家 来源:H5之家 2016-01-19 10:03 我要评论( )

if (solved) { setTimeout(function() {alert("You solved it!");}, 500); } 复制代码 当一个拼图被点击时,我们要知道它的四周是否可以移动。判断的方法是当前位置到空白位置的总距离为1时就可以移动。 简单点说就

  • if (solved) {
  •     setTimeout(function() {alert("You solved
  • it!");}, 500);
  • }
  • 复制代码


    当一个拼图被点击时,我们要知道它的四周是否可以移动。判断的方法是当前位置到空白位置的总距离为1时就可以移动。
    简单点说就是x相同要判断y的距离是否为1,y相同要判断x的距离是否为1。

  • function distance(x1, y1, x2, y2) {
  •     return Math.abs(x1 -
  • x2) + Math.abs(y1 - y2);
  • }
  • 复制代码


    移动拼图的做法是,我们复制被点击拼图的坐标到空位置。然后把点击位置设置成空白坐标。

  • function slideTile(toLoc, fromLoc) {
  •     if (!solved)
  • {
  •         boardParts[toLoc.x][toLoc.y].x =
  • boardParts[fromLoc.x][fromLoc.y].x;
  •         
  • boardParts[toLoc.x][toLoc.y].y =
  • boardParts[fromLoc.x][fromLoc.y].y;
  •         
  • boardParts[fromLoc.x][fromLoc.y].x = tileCount -
  • 1;
  •         
  • boardParts[fromLoc.x][fromLoc.y].y = tileCount -
  • 1;
  •         toLoc.x =
  • fromLoc.x;
  •         toLoc.y =
  • fromLoc.y;
  •         
  • checkSolved();
  •     }
  • }
  • 复制代码


    一旦拼图移动了,我们还要检查一下拼图是否全部在正确的位置。

  • function checkSolved() {
  •     var flag =
  • true;
  •     for (var i = 0; i < tileCount; ++i)
  • {
  •         for (var j = 0; j <
  • tileCount; ++j)
  • {
  •             if
  • (boardParts[i][j].x != i || boardParts[i][j].y != j)
  • {
  •                
  • flag =
  • false;
  •             
  • }
  •         }
  •    
  • }
  •     solved = flag;
  • }
  • 复制代码


    如果有一个拼图不正确函数就会返回false,否则返回true。
    最后,重绘被点击的拼图到新的位置。

  • function drawTiles() {
  •     context.clearRect ( 0 , 0 , boardSize , boardSize );
  •     for (var i = 0; i < tileCount; ++i) {
  •         for (var j = 0; j < tileCount; ++j) {
  •             var x = boardParts[i][j].x;
  •      var y = boardParts[i][j].y;
  •             if(i != emptyLoc.x || j != emptyLoc.y || solved == true) {
  •                 context.drawImage(img, x * tileSize, y * tileSize, tileSize, tileSize,
  •                      i * tileSize, j * tileSize, tileSize, tileSize);
  •             }
  •         }
  •     }
  • }
  • 复制代码


    当画拼图时,这个函数可以防止填充画板时匹配空的位置,因为在游戏中用户可以选择不同的难度。




    转自天地会

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • HTML5 canvas随机画线和小方块基础反弹运动实例

      HTML5 canvas随机画线和小方块基础反弹运动实例

      2017-04-21 16:07

    • HTML5 Canvas绘制圆点虚线实例_html5教程技巧

      HTML5 Canvas绘制圆点虚线实例_html5教程技巧

      2017-04-13 10:01

    • 众创缘 web前端开发,ui设计,seo,网络营销互联网技术学习网站

      众创缘 web前端开发,ui设计,seo,网络营销互联网技术学习网站

      2017-03-29 14:00

    • html5特效 css3特效 html5教程下载 css3教程下载

      html5特效 css3特效 html5教程下载 css3教程下载

      2017-03-22 09:04

    网友点评
    ;