微信小程序|使用小程序制作一个足球拼图小游戏

news2025/1/15 13:05:06

世界杯的意义永远不止是冠军,它是每个精彩的瞬间,是呐喊,是青春。此文用小程序制作一个足球的拼图小游戏,一起为世界杯疯狂吧!

    • 开发步骤
      • 一、工具安装
      • 二、功能实现
        • 1 . 提示图展示
        • 2 . 绘制画布内容
        • 3 . 打乱方块顺序
        • 4 . 移动被点击的方块
        • 5 . 重新开始游戏

开发步骤

一、工具安装

  1. 访问微信公众平台,点击账号注册。

在这里插入图片描述

  1. 选择小程序,并在表单填写所需的各项信息进行注册。

在这里插入图片描述
在这里插入图片描述

  1. 在开发管理选择开发设置,将AppID及AppSecret复制出来进行存储。

在这里插入图片描述

  1. 下载安装微信web开发者工具并创建一个新的项目,填入上图所复制的AppId。

在这里插入图片描述
在这里插入图片描述

二、功能实现

1 . 提示图展示

  1. 准备一个足球图片素材,在页面将其进行展示,用于充当提示图,同时在index这个page当中实现一个canvas标签用于充当游戏画布。

在这里插入图片描述

在这里插入图片描述

 <!-- 提示图区域 -->
    <view class="title">提示图</view>
    <image src="{{url}}"></image>
    <canvas canvas-id="myCanvas" bindtouchstart="touchBox"></canvas>

2 . 绘制画布内容

  1. 增加一个自定义函数用于绘制画布内容,初始化的时候先将其清空并定义宽高。

在这里插入图片描述

// 清空画布
      ctx.clearRect(0, 0, 300, 300)
  1. 使用双重for循环语句绘制3*3的拼图。

在这里插入图片描述

 for (var i = 0; i < 3; i++) {
        for (var j = 0; j < 3; j++) {
          if (num[i][j] != '22') {
            // 获取行和列
            var row = parseInt(num[i][j] / 10)
            var col = num[i][j] % 10
            // 绘制方块
            ctx.drawImage(url, col * w, row * w, w, w, j * w, i * w, w, w)
          }
        }
      }

3 . 打乱方块顺序

  1. 先定义一个数组,格式类似于3*3,配置canvas方块数并让它回归初始位置。

在这里插入图片描述

   num = [
        ['00', '01', '02'],
        ['10', '11', '12'],
        ['20', '21', '22']
      ]
  1. 定义两个变量用于记录当前空白方块的行和列。

在这里插入图片描述

var row = 2
var col = 2
  1. 随机打乱方块的顺序,这里次数可以随便定义。

在这里插入图片描述

for (var i = 0; i < 100; i++) {
  // 随机生成一个方向:上0,下1,左2,右3
  var direction = Math.round(Math.random() * 3)
}
  1. 定义空白方块出现的位置,在上下左右四个维度进行判断处理。

在这里插入图片描述

        // 上:0
        if (direction == 0) {
          // 空白方块不能在最上面一行
          if (row != 0) {
            // 交换位置
            num[row][col] = num[row - 1][col]
            num[row - 1][col] = '22'
            // 更新空白方块的行
            row -= 1
          }
        }
  1. 在onLoad事件中调用上述所定义的函数,canvas中方块的顺序就被打乱了。

在这里插入图片描述

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
      // 打乱方块顺序
      this.shuffle()
    },

4 . 移动被点击的方块

  1. 增加一个自定义函数,当点击方块时进行响应,需要处理四种情况。
    在这里插入图片描述

情况1:如果被点击的方块不在最上方,检查可否上移。

在这里插入图片描述

      if (i > 0) {
        // 如果方块的上方是空白
        if (num[i - 1][j] == '22') {
          // 交换当前被点击的方块和空白的位置
          num[i - 1][j] = num[i][j]
          num[i][j] = '22'
          return
        }
      }
  1. 情况2:如果被点击的方块不在最下方,检查可否下移

在这里插入图片描述

  if (i < 2) {
        // 如果方块的下方是空白
        if (num[i + 1][j] == '22') {
          // 交换当前被点击的方块和空白的位置
          num[i + 1][j] = num[i][j]
          num[i][j] = '22'
          return
        }
      }
  1. 情况3:如果被点击的方块不在最左侧,检查可否左移

在这里插入图片描述

     if (j > 0) {
        // 如果方块的左侧是空白
        if (num[i][j - 1] == '22') {
          // 交换当前被点击的方块和空白的位置
          num[i][j - 1] = num[i][j]
          num[i][j] = '22'
          return
        }
      }

情况4:如果被点击的方块不在最右侧,检查可否右移

在这里插入图片描述

 if (j < 2) {
        // 如果方块的右侧是空白
        if (num[i][j + 1] == '22') {
          // 交换当前被点击的方块和空白的位置
          num[i][j + 1] = num[i][j]
          num[i][j] = '22'
          return
        }
      }

5 . 重新开始游戏

  1. 如果游戏完成了,或者对当前排列不满意,可以增加一个重新开始游戏的功能。

在这里插入图片描述

  1. 这一步只需要依次调用上述所定义的函数,更新游戏状态,再打乱方块顺序绘制画布内容即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模型和视图框架(概念)

MVC&#xff08;Model-View-Controller&#xff09;是一种设计模式。 Model(模型)是应用对象&#xff0c;用来显示模型View (视图)是用户界面&#xff0c;用来显示数据Controller(控制)定义用户界面对用户输出的反映方式模型/视图类可以分为上述三组&#xff1a;模型、视图和委…

CPU100%,怎么快速定位?

一台机器&#xff0c;CPU100%&#xff0c;如何找到相关服务&#xff0c;如何定位问题代码&#xff0c;今天简单分享下思路。假设&#xff0c;服务器上部署了若干Java站点服务&#xff0c;以及若干Java微服务&#xff0c;突然收到运维的CPU异常告警。如何定位是哪个服务进程导致…

是时候给钉钉和腾讯会议算算账了

杨净 萧箫 发自 凹非寺量子位 | 公众号 QbitAI这几天&#xff0c;工作和上课等事情开始有回归线下的迹象&#xff0c;腾讯会议、钉钉似乎也可以松口气了。毕竟云会议的这两大APP&#xff0c;前段时间一直在被网友找平替。一来&#xff0c;它们要收费了&#xff1b;二来&#xf…

【有营养的算法笔记】整数二分和浮点二分的全面分析

&#x1f451;作者主页&#xff1a;进击的安度因 &#x1f3e0;学习社区&#xff1a;进击的安度因&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;有营养的算法笔记 文章目录一、铺垫二、整数二分模板分析三、模板应用 —— 数的范围四、浮点二分模板分析…

简单引入JQuery

简单引入JQuery前言环境配置下载官网的JQuery到本机引入JQuery到Html文件中前言 作为一个兢兢业业的后端程序猿&#xff0c;这里为了方便自己搭建的项目更加合理&#xff0c;使自己写的接口对前端也更加友好。所以我决定&#xff0c;从头开始学习下前端知识。 环境配置 下载…

[附源码]JAVA毕业设计翔隆生鲜超市进货管理系统(系统+LW)

[附源码]JAVA毕业设计翔隆生鲜超市进货管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

聚宽量化入门量化策略是什么?

聚宽量化入门量化策略JoinQuant聚宽API文档&#xff1a;MetaTradeAPI (metatradeapi) - Gitee.com 获取要操作的股票或指数成分股 1、# 导入函数库&#xff1b; 2、import jqdata&#xff1b; 3、# 初始化函数&#xff0c;设定基准 def initialize(context)&#xff1a; …

每日一题 —— LC. 1687 从仓库到码头运输箱子(难度很大,但值得好好消化的一道题)

1687. 从仓库到码头运输箱子 你有一辆货运卡车&#xff0c;你需要用这一辆车把一些箱子从仓库运送到码头。这辆卡车每次运输有 箱子数目的限制 和 总重量的限制 。 给你一个箱子数组 boxes和三个整数 portsCount, maxBoxes 和 maxWeight &#xff0c;其中 boxes[i][portsi,we…

web前端期末大作业:基于HTML+CSS+JavaScript制作鲜花礼品在线购物网站设计(19页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

代码随想录刷题Day59 | 503. 下一个更大元素 II | 42. 接雨水

代码随想录刷题Day59 | 503. 下一个更大元素 II | 42. 接雨水 503. 下一个更大元素 II 题目&#xff1a; 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的…

云与开源,共植数字世界的根

摘要&#xff1a;本文整理自阿里巴巴集团副总裁、阿里巴巴开源技术委员会负责人贾扬清&#xff0c;在 Flink Forward Asia 2022 主会场的开场致辞。Tips&#xff1a;点击「阅读原文」获取演讲 ppt&#xff5e;云和开源&#xff0c;共生、共长、共植数字世界的根。从在云上使用开…

SAP PS 第17节 项目产成品产出

SAP PS 第17节 项目产成品产出及差异处理1 模拟场景说明1.1 拖拽负库存1.2 发料原材料及报工1.3 执行副产品入库migo发预留1.4 CNS0交货1.5 后面开票产生收入按照项目结算即可项目上有一类比较另类的玩法&#xff0c;就是舍弃PP&#xff0c;依靠网络活动的负库存&#xff0c;实…

Web前端大作业—个人网页(html+css+javascript)我的家乡新密 (15页)含课程设计

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

2030年销售额突破200亿美元!瑞萨电子揭秘智能汽车版图

汽车正在成为继手机之后的下一个智能终端&#xff0c;并且已经成为全球各大芯片头部厂商的必争之地。 过去&#xff0c;汽车芯片市场主要由恩智浦、瑞萨电子、TI等传统汽车芯片巨头垄断&#xff0c;外来者鲜有机会可以入局。但近几年&#xff0c;包括高通、英特尔等全球各大芯…

【无人机】基于Fast行军树(FMT)求解无人机故障路径规划问题附matlab代码和论文

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

ElementPlus弹窗之后让外部区域可编辑

原始的el-dialog弹出以后外部区域是不可编辑的。 为最外层的父元素添加样式 同时给dialog本身添加样式

【工作日推算】JS计算当前时间前N个工作日(去除周末及节假日,文尾附源码下载)

【写在前面】前些日子忙了几天有关指标对比分析的功能&#xff0c;因为系统是对接券商类的业务&#xff0c;所以他们比较关注的是工作日的数据波动&#xff0c;因此前端指标对比数据需要拿工作日的&#xff0c;不然他们停市的数据比较也没用&#xff0c;故而今天针对之前实现的…

如何快速搞懂一家公司?

如果没有快速作为前提&#xff0c;你的搞懂&#xff0c;价值会大打折扣。 一.研究一家公司需要的宏观视野 1.把握长期明确趋势 看清宏观大背景能为你搞懂公司做出铺垫&#xff0c;同时看清这个公司和宏观的密切程度是怎样的&#xff0c;也决定了需要多大程度关注宏观变化。 …

【基于Pycharm的Django3教程】Part1:初识Django

文章目录1 初识Django1.1 django的安装1.2 创建django项目1.3 两种创建方式的对比1.4 默认文件介绍1.5 APP的创建和说明1.6 启动运行django1.7 模板和静态文件1.8 模板语法1.9 请求和响应1.10 orm数据库操作1.11 ORM 数据库案例&#xff1a;用户管理1 初识Django 1.1 django的…

22 条 API 设计的最佳实践

在这个微服务的世界里&#xff0c;后端API的一致性设计是必不可少的。 今天&#xff0c;我们将讨论一些可遵循的最佳实践。我们将保持简短和甜蜜——所以系好安全带&#xff0c;出发咯&#xff01; 首先介绍一些术语 任何API设计都遵循一种叫做“面向资源设计”的原则&#…