iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >微信小程序│ 游戏开发 │连连看游戏
  • 870
分享到

微信小程序│ 游戏开发 │连连看游戏

游戏微信小程序小程序 2023-09-23 21:09:52 870人浏览 泡泡鱼
摘要

“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。“连连看”考验的是各位的眼力,在有限的时间内,只要把所有能连接的相同图案,两个一对地找出来,每找出一对,它们就会自动消失,只要把所

“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。“连连看”考验的是各位的眼力,在有限的时间内,只要把所有能连接的相同图案,两个一对地找出来,每找出一对,它们就会自动消失,只要把所有的图案全部消完即可获得胜利。所谓能够连接,指得是:无论横向或者纵向,从一个图案到另一个图案之间的连线不能超过两个弯,其中,连线不能从尚未消去的图案上经过。 

连连看游戏的规则总结如下:

● 两个选中的方块是相同的。

● 两个选中的方块之间连接线的折点不超过两个。(连接线由x轴和y轴的平行线组成)。

本篇开发连连看游戏,游戏效果如图1所示。

■ 图1  连连看运行界面

本游戏增加智能查找功能,当玩家自己无法找到时,可以右键单击画面,则会出现提示可以消去的两个方块(被加上红色边框线)。

01、程序设计的步骤

1. 设计点类Point

点类Point比较简单,主要存储方块所在棋盘坐标(x,y)。

//定义坐标点类function Point(_x, _y) {  this.x = _x;  this.y = _y;}

2. 设计游戏主逻辑

整个游戏在canvas对象中进行,在页面加载时调用create_map( )实现将图标图案随机放到地图中,地图map中记录的是图案的数字编号。最后调用print_map()按地图map中记录图案信息将图2中图标图案绘制在Canvas对象中,生成游戏开始的界面。同时绑定Canvas对象触屏开始事件,对玩家触屏操作做出反应。

var map = [];var Select_first = false; //是否已经选中第一块var linePointStack = []; //存储连接的折点棋盘坐标var Height = 12;var Width = 10;var p1, p2; //存储选中第一块,第二块方块对象坐标    onLoad: function(options) {    //创建画布上下文    this.init(); //初始化地图, 将地图中所有方块区域位置置为空方块状态    this.create_map() ; //生成随机地图    this.print_map(); //输出map地图    this.ctx = wx.createCanvasContext('myCanvas')    this.ctx.draw();  },init: function() {    //初始化地图, 将地图中所有方块区域位置置为空方块状态    for (var x = 0; x < Width; x++) {      map[x] = new Array();      for (var y = 0; y < Height; y++) {        map[x][y] = " "; //" "表示空的      }    }  },

3. 编写函数代码

print_map( )按地图map中记录图案信息将图2中图标图案显示在Canvas对象中,生成游戏开始的界面。

**   *按地图map中记录图案信息将图标图案显示在Canvas对象中,生成游戏开始的界面。   */  print_map: function() { //输出map地图    let ctx = this.ctx    for (var x = 0; x < Width; x++)      for (var y = 0; y < Height; y++)        if (map[x][y] != ' ') {          var img1 = '/images/' + map[x][y] + ".jpg";          //ctx.drawImage('/images/4.jpg', 50 * i, 50, 50, 50)          ctx.drawImage(img1, 25 * x, 25 * y, 25, 25);        }  },

用户在窗口中上单击时,由屏幕像素坐标(e.touches[0].x, e.touches[0].y)计算被单击方块的地图棋盘位置坐标(x,y)。判断是否是第一次选中方块,是则仅仅对选定方块加上红色示意框线。如果是第二次选中方块,则加上黑色示意框线,同时要判断是否图案相同且连通。假如连通则画选中方块之间连接线。

Canvas对象触屏事件则调用智能查找功能find2Block()。

Canvas对象触屏开始事件代码。

touchStart: function(e) {    var x = Math.floor(e.touches[0].x / 25);    var y = Math.floor(e.touches[0].y / 25);    let ctx = this.ctx;    var pair=false; //是否配对成功    this.print_map(); //输出map地图    console.log("clicked at" + x + "," + y);    if (map[x][y] == " ")      console.log("提示此处无方块");    else {      if (Select_first == false) {        p1 = new Point(x, y);        //画选定(x1,y1)处的框线        ctx.setStrokeStyle("red");        ctx.strokeRect(x * 25, y * 25, 25, 25);        Select_first = true;      } else {        p2 = new Point(x, y);        //判断第二次单击的方块是否已被第一次单击选取,如果是则返回。        if ((p1.x == p2.x) && (p1.y == p2.y))          return;        //画选定(x2,y2)处的框线        console.log('第二次单击的方块' + x + ', ' + y)        ctx.strokeRect(x * 25, y * 25, 25, 25);        if (this.IsSame(p1, p2) && this.IsLink(p1, p2)) { //判断是否连通          console.log('连通' + x + ', ' + y);          Select_first = false;          //画选中方块之间连接线          this.drawLinkLine(p1, p2);          map[p1.x][p1.y] = ' '; //清空记录地图中第1个方块          map[p2.x][p2.y] = ' '; //清空记录地图中第2个方块          pair=true; //配对成功,定时0.5秒后刷新屏幕          linePointStack=[];          if(this.isWin()) { //游戏结束            console.log("游戏结束,你通关了!!");          }        } else {          //不能连通则取消选定的2个方块          Select_first = false;        }      }    }    ctx.draw();    if (pair) { //配对成功      this.print_map(); //重新输出map地图      //定时0.5秒后刷新屏幕      setTimeout(function () {        ctx.draw();      }, 500); //过半秒    }  },

 IsSame(p1,p2)判断p1 ( x1, y1)与p2(x2, y2)处的方块图案是否相同。

IsSame: function(p1, p2) {    if (map[p1.x][p1.y] == map[p2.x][p2.y]) {      console.log("clicked at IsSame");      return true;    }    return false;  },

以下是画方块之间连接线的方法。

drawLinkLine(p1,p2)绘制(p1,p2)所在2个方块之间的连接线。判断linePointStack数组长度,如果为0,则是直接连通。linePointStack数组长度为1,则是一折连通,linePointStack存储是一折连通的折点。linePointStack数组长度为2,则是2折连通,linePointStack存储是2折连通的两个折点。

drawLinkLine: function(p1, p2) { //画连接线    console.log("折点数" + linePointStack.length);    if (linePointStack.length == 0) //直线联通      this.drawLine(p1, p2);    if (linePointStack.length == 1) { //一折连通      var z = linePointStack.pop();      console.log("一折连通点z" + z.x + z.y);      this.drawLine(p1, z);      this.drawLine(p2, z);    }    if (linePointStack.length == 2) { //2折连通      var z1 = linePointStack.pop()      //print("2折连通点z1",z1.x,z1.y)      this.drawLine(p2, z1)      var z2 = linePointStack.pop()      //print("2折连通点z2",z2.x,z2.y)      this.drawLine(z1, z2);      this.drawLine(p1, z2);    }  },

 drawLinkLine(p1,p2)绘制(p1,p2)之间的直线。

drawLine: function(p1, p2) { //绘制(p1, p2)之间的直线    let ctx = this.ctx;    ctx.beginPath();    ctx.moveTo(p1.x * 25 + 12, p1.y * 25 + 12);    ctx.lineTo(p2.x * 25 + 12, p2.y * 25 + 12);    ctx.stroke();  },

 IsWin()检测是否尚有非未被消除的方块,即地图map中元素值非空(" "),如果没有则已经赢得了游戏。

  isWin: function() {    //检测是否尚有非未被消除的方块    //(非BLANK_STATE状态)    for (var y = 0; y < Height; y++)      for (var x = 0; x < Width; x++)        if (map[x][y] != " ")          return false;    return true;  }

  至此完成连连看游戏。    

最后想问问大家,这两天超级火的“羊了各羊”大家第二关过了吗?

来源地址:https://blog.csdn.net/qq_41640218/article/details/126863839

--结束END--

本文标题: 微信小程序│ 游戏开发 │连连看游戏

本文链接: https://www.lsjlt.com/news/416638.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序│ 游戏开发 │连连看游戏
    “连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。“连连看”考验的是各位的眼力,在有限的时间内,只要把所有能连接的相同图案,两个一对地找出来,每找出一对,它们就会自动消失,只要把所...
    99+
    2023-09-23
    游戏 微信小程序 小程序
  • 基于Javascript开发连连看游戏小程序
    目录01、程序设计的步骤1. 设计点类Point2. 设计游戏主逻辑3. 编写函数代码“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程...
    99+
    2023-03-23
    Javascript小程序 Javascript连连看 连连看小程序
  • 基于Javascript怎么开发连连看游戏小程序
    今天小编给大家分享一下基于Javascript怎么开发连连看游戏小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。01、程...
    99+
    2023-07-05
  • 微信小程序游戏开发│石头剪刀布游戏(附源码)
     石头剪刀布游戏功能中一方是电脑,另一方是玩家。游戏时电脑一直快速切换出拳显示,当玩家选择底部的剪子、石头、布后,则电脑出拳停止,并在紫色方块中显示用户的出拳图片。游戏判断出输赢结果,记录玩家赢的次数。对战一局后可以单击“再来!”按钮...
    99+
    2023-09-02
    游戏 小程序 微信小程序
  • 微信跳一跳小程序游戏如何开发
    本篇内容主要讲解“微信跳一跳小程序游戏如何开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信跳一跳小程序游戏如何开发”吧!  小游戏只有以下两个必要文件:  game.js 小游戏主程序入口...
    99+
    2023-06-26
  • 微信小程序游戏怎么开发入门教程
    微信小程序游戏开发是现在比较热门的小程序类型开发项目,对于开发人员而言,怎么开发微信小程序游戏呢?今天小编分享一篇小游戏的入门开发教程,希望对微信小程序制作开发人员提供参考。 注册一个小程序账号 在官方注册一个微信小程序账号(注册申请教程)...
    99+
    2023-08-20
    微信小程序 游戏 小程序
  • 微信小程序开发之实现摇色子游戏
    目录一、项目展示二、核心代码三、效果图一、项目展示 摇色子是一款简易的游戏类小程序 用户可以投出1-9个色子 二、核心代码 dice.wxml <!--pages/dice/...
    99+
    2023-01-28
    微信小程序摇色子游戏 小程序摇色子游戏 小程序游戏
  • 用Java实现连连看小游戏
    很多人写游戏都是从连连看或者五子棋这类的简单小游戏入手的,最近我也尝试着写了一个连连看,想要再梳理一遍其中的思路。 连连看的规则 连连看要求在一定范围内找到两个特征一样并且能够通过空...
    99+
    2024-04-02
  • 微信小程序小游戏开发文档如何写代码
    这篇文章主要讲解了“微信小程序小游戏开发文档如何写代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序小游戏开发文档如何写代码”吧!  小游戏只有以下两个必要文件:  game.js...
    99+
    2023-06-26
  • 【小程序】低代码+小游戏=小游戏可视化开发
    🥳 作者:伯子南 😎 坚信: 好记性不如乱笔头,独乐乐不如众乐乐 💪 个人主页:https://blog.csdn.net/qq_34577234s...
    99+
    2023-10-02
    小程序
  • java实现简易连连看小游戏
    本文实例为大家分享了java实现简易连连看小游戏的具体代码,供大家参考,具体内容如下 新手上路,分享一下 直接上代码 package linkgame; import javax...
    99+
    2024-04-02
  • 微信小程序开发之实现别踩白块游戏
    目录一、项目展示二、无尽模式三、计时模式四、急速模式一、项目展示 别踩白块是一款微信小游戏 分为无尽模式、计时模式、急速模式三种模式 用户需要点击不断移动的黑色方块 若点击到白色方块...
    99+
    2023-02-07
    微信小程序别踩白块游戏 小程序别踩白块游戏 小程序游戏
  • 微信小程序游戏好友排行榜怎么开发
    本文小编为大家详细介绍“微信小程序游戏好友排行榜怎么开发”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序游戏好友排行榜怎么开发”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。保存每个用户的分数保存每个用户...
    99+
    2023-06-26
  • 微信小程序实现拼图游戏
    本文实例为大家分享了微信小程序实现拼图游戏的具体代码,供大家参考,具体内容如下 页面展示 项目链接 微信小程序实现拼图游戏 项目设计 首页面 wxml <!--inde...
    99+
    2024-04-02
  • 微信小程序实现弹球游戏
    本文实例为大家分享了微信小程序实现弹球游戏的具体代码,供大家参考,具体内容如下 实验内容: 小球按照随机的角度直线运动,如果碰到四壁则反弹。你们不需要做游戏计时、设置小球及背景颜色等...
    99+
    2024-04-02
  • js实现连连看游戏
    本文实例为大家分享了js实现连连看游戏的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html>     <head>  ...
    99+
    2024-04-02
  • C++实现连连看游戏
    本文实例为大家分享了C++实现连连看游戏的具体代码,供大家参考,具体内容如下 这个项目还是挺不错的,运行后也比较有意思,可以看看。 #include<iostream> ...
    99+
    2024-04-02
  • 微信小程序实现扫雷游戏
    本文实例为大家分享了微信小程序实现扫雷游戏的具体代码,供大家参考,具体内容如下 实验小提醒,打开微信小程序模板时,一定要看清楚,要选js模板,不要选ts模板,因为ts中对数据类型检查...
    99+
    2024-04-02
  • Android实现连连看游戏
    本文实例为大家分享了Android实现连连看游戏的具体代码,供大家参考,具体内容如下 本人用 android studio 实现的 源码 主活动 类: package package...
    99+
    2024-04-02
  • 微信小程序实现贪吃蛇游戏
    本文实例为大家分享了微信小程序实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 一、项目截图 二、源代码 1.WXML 代码如下(示例): <view class='c...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作