实验4:拼图游戏

一、实验目标

  1. 综合应用所学知识创建完整的拼图游戏项目;
  2. 熟练掌握<canvas>组件。

二、实验步骤

  1. 根据实验手册上的网址,下载项目需要用到的文件。然后进入微信开发者工具,创建一个新项目jigsawGame。

    微信截图_20230829094454
  2. 本项目有两个页面文件,需要在pages目录下创建index(首页页面)和game(游戏页面)。在根目录下的app.json中定义,如下图所示:

    微信截图_20230829161841
  3. 公共样式设计在app.wxss中编写代码,如下图所示:

  4. index页面设计包含两部分内容:

    • 顶端标题:<view>容器
    • 关卡列表:<view>容器,内部使用数组循环

    pages/game/game.wxmlpages/game/game.wxss中代码分别如下:

    微信截图_20230829164333微信截图_20230829164408

  5. game页面设计包含两部分内容:

    • 整体容器和顶端标题:<view>
    • 提示图:<image>
    • 游戏画布:<canvas>
    • 重新开始按钮:<button>

    pages/game/game.wxmlpages/game/game.wxss中代码分别如下:

    微信截图_20230829164931微信截图_20230829164946

    由于暂时没有做点击跳转的逻辑设计,所以可以在开发工具顶端选择“普通编译”下的“添加编译模式”,并携带临时测试参数level=pic01.jpg,如下图所示:

    微信截图_20230829103051

    这样编译后只显示game页面:

    微信截图_20230829103702
  6. pages/index/index.js中进行首页的逻辑实现。

    • Page中的data后设置页面的初始数据,在pages/index/index.js中使用for循换遍历列表。
    • 自定义函数chooseLevel实现游戏选择关卡功能,在pages/index/index.js中使用bindtap进行函数绑定。

    编译运行后index页面如下图所示:

    微信截图_20230829110258
  7. pages/game/game.js中进行游戏页面的逻辑实现。首先在game.js开头记录一些游戏初始数据信息,包括方块的初始位置、方块的宽度、图片的初始地址。

    微信截图_20230829171850
  8. 初始化拼图画面。考虑从空白方块的所在位置入手,每次随机让它和周围的邻近方块交换位置,这样可以通过方块反向移动回到最初始状态,确保本局有解,并且交换足够多的次数后,可以实现随机打乱的效果。在game.js中添加shuffle函数,随机打乱方块顺序。然后继续添加drawCanvas函数,用于将打乱后的图片方块绘制到画布上。最后在onLoad函数中调用自定义函数shuffledrawCanvas。实现效果如下:

    微信截图_20230829153846
  9. 移动被点击的方块。在game.js文件添加自定义函数 touchBox,用于实现图片方块的移动。修改game.wxml页面中的画布组件<canvas>,使用bindtouchstart为其绑定触摸事件touchBox

    微信截图_20230829174057
  10. 判断游戏成功。在game.js中的data里添加初始数据isWin,用于标记游戏成功与否。添加函数isWin用于判断游戏是否已经成功。然后修改touchBox函数,在被触发时追加对游戏是否成功的判断,如果游戏成功,不做任何操作。

微信截图_20230829174321
  1. 重新开始游戏。在game.js中添加restartGame函数,用于重新开始游戏。修改game.wxml代码,为“重新开始”按钮<button>使用bindtap绑定点击事件restartGame

    微信截图_20230829174804

    选择“普通编译”进行编译即可。

三、程序运行结果

选择第二关,拼图顺序打乱。

微信截图_20230829161347

拼图完成后,显示“游戏成功”。

四、问题总结与体会

  1. 通过这次实验,熟悉了画布canvas的用法。
  2. 拼图小游戏的逻辑实现还是比较复杂的,需要理解后才能把代码写出来。
posted @   catting123  阅读(178)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示