滑木块H5小游戏

2024-01-27 11:04
文章标签 h5 小游戏 木块

本文主要是介绍滑木块H5小游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎来到程序小院

滑木块

玩法:点击木块横着的只能左右移动,竖着的只能上下移动,
移动到箭头的位置即过关,不同关卡不同的木块摆放,快去滑木块吧^^。

开始游戏icon-default.png?t=N7T8https://www.ormcc.com/play/gameStart/260

html

<canvas id="c2canvas" width="384" height="600"></canvas>

css

* {padding: 0;margin: 0;
}
body {background: #fff;color: #fff;overflow: hidden;-ms-touch-action: none;
}
canvas {touch-action-delay: none;touch-action: none;-ms-touch-action: none;
}

js

var sg_texts = {'en' : {'MORE GAMES' : '','SLIDE GREEN BLOCK TO START': 'SLIDE GREEN BLOCK TO START','MOVE:': 'MOVE:','LEVEL:' : 'LEVEL:','BEST:' : 'BEST:','TIME:' : 'TIME:'},'es' : {'MORE GAMES' : 'MAS JUEGOS','SLIDE GREEN BLOCK TO START' : 'DESLIZA EL BLOQUE VERDE PARA EMPEZAR','MOVE:': 'MOVER:','LEVEL:' : 'NIVEL:','BEST:' : 'MEJOR:','TIME:' : 'TIEMPO:'}
};
var cr = {};
cr.plugins_ = {};
cr.behaviors = {};
// SG.detectPortalUrl();if (typeof Object.getPrototypeOf !== "function")
{if (typeof "test".__proto__ === "object"){Object.getPrototypeOf = function(object) {return object.__proto__;};}else{Object.getPrototypeOf = function(object) {return object.constructor.prototype;};}
}
(function(){cr.logexport = function (msg){if (window.console && window.console.log)window.console.log(msg);};cr.seal = function(x){return x;};cr.freeze = function(x){return x;};cr.is_undefined = function (x){return typeof x === "undefined";};cr.is_number = function (x){return typeof x === "number";};cr.is_string = function (x){return typeof x === "string";};cr.isPOT = function (x){return x > 0 && ((x - 1) & x) === 0;};cr.nextHighestPowerOfTwo = function(x) {--x;for (var i = 1; i < 32; i <<= 1) {x = x | x >> i;}return x + 1;}cr.abs = function (x){return (x < 0 ? -x : x);};cr.max = function (a, b){return (a > b ? a : b);};cr.min = function (a, b){return (a < b ? a : b);};cr.PI = Math.PI;cr.round = function (x){return (x + 0.5) | 0;};cr.floor = function (x){if (x >= 0)return x | 0;elsereturn (x | 0) - 1;  // correctly round down when negative};cr.ceil = function (x){var f = x | 0;return (f === x ? f : f + 1);};function Vector2(x, y){this.x = x;this.y = y;cr.seal(this);};Vector2.prototype.offset = function (px, py){this.x += px;this.y += py;return this;};Vector2.prototype.mul = function (px, py){this.x *= px;this.y *= py;return this;};cr.vector2 = Vector2;cr.segments_intersect = function(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y){var max_ax, min_ax, max_ay, min_ay, max_bx, min_bx, max_by, min_by;if (a1x < a2x){min_ax = a1x;max_ax = a2x;}else{min_ax = a2x;max_ax = a1x;}if (b1x < b2x){min_bx = b1x;max_bx = b2x;}else{min_bx = b2x;max_bx = b1x;}if (max_ax < min_bx || min_ax > max_bx)return false;if (a1y < a2y){min_ay = a1y;max_ay = a2y;}else{min_ay = a2y;max_ay = a1y;}if (b1y < b2y){min_by = b1y;max_by = b2y;}else{min_by = b2y;max_by = b1y;}if (max_ay < min_by || min_ay > max_by)return false;var dpx = b1x - a1x + b2x - a2x;var dpy = b1y - a1y + b2y - a2y;var qax = a2x - a1x;var qay = a2y - a1y;var qbx = b2x - b1x;var qby = b2y - b1y;var d = cr.abs(qay * qbx - qby * qax);var la = qbx * dpy - qby * dpx;if (cr.abs(la) > d)return false;var lb = qax * dpy - qay * dpx;return cr.abs(lb) <= d;};function Rect(left, top, right, bottom){this.set(left, top, right, bottom);cr.seal(this);};Rect.prototype.set = function (left, top, right, bottom){this.left = left;this.top = top;this.right = right;this.bottom = bottom;};Rect.prototype.copy = function (r){this.left = r.left;this.top = r.top;this.right = r.right;this.bottom = r.bottom;};Rect.prototype.width = function (){return this.right - this.left;};Rect.prototype.height = function (){return this.bottom - this.top;};Rect.prototype.offset = function (px, py){this.left += px;this.top += py;this.right += px;this.bottom += py;return this;};Rect.prototype.normalize = function (){var temp = 0;if (this.left > this.right){temp = this.left;this.left = this.right;this.right = temp;}if (this.top > this.bottom){temp = this.top;this.top = this.bottom;this.bottom = temp;}};Rect.prototype.intersects_rect = function (rc){return !(rc.right < this.left || rc.bottom < this.top || rc.left > this.right || rc.top > this.bottom);};Rect.prototype.intersects_rect_off = function (rc, ox, oy){return !(rc.right + ox < this.left || rc.bottom + oy < this.top || rc.left + ox > this.right || rc.top + oy > this.bottom);};Rect.prototype.contains_pt = function (x, y){return (x >= this.left && x <= this.right) && (y >= this.top && y <= this.bottom);};Rect.prototype.equals = function (r){return this.left === r.left && this.top === r.top && this.right === r.right && this.bottom === r.bottom;};cr.rect = Rect;function Quad(){this.tlx = 0;this.tly = 0;this.trx = 0;this.try_ = 0; // is a keyword otherwise!this.brx = 0;this.bry = 0;this.blx = 0;this.bly = 0;cr.seal(this);};Quad.prototype.set_from_rect = function (rc){this.tlx = rc.left;this.tly = rc.top;this.trx = rc.right;this.try_ = rc.top;this.brx = rc.right;this.bry = rc.bottom;this.blx = rc.left;this.bly = rc.bottom;};Quad.prototype.set_from_rotated_rect = function (rc, a){if (a === 0){this.set_from_rect(rc);}else{var sin_a = Math.sin(a);var cos_a = Math.cos(a);var left_sin_a = rc.left * sin_a;var top_sin_a = rc.top * sin_a;var right_sin_a = rc.right * sin_a;var bottom_sin_a = rc.bottom * sin_a;var left_cos_a = rc.left * cos_a;var top_cos_a = rc.top * cos_a;var right_cos_a = rc.right * cos_a;var bottom_cos_a = rc.bottom * cos_a;this.tlx = left_cos_a - top_sin_a;this.tly = top_cos_a + left_sin_a;this.trx = right_cos_a - top_sin_a;this.try_ = top_cos_a + right_sin_a;this.brx = right_cos_a - bottom_sin_a;this.bry = bottom_cos_a + right_sin_a;this.blx = left_cos_a - bottom_sin_a;this.bly = bottom_cos_a + left_sin_a;}};Quad.prototype.offset = function (px, py){this.tlx += px;this.tly += py;this.trx += px;this.try_ += py;this.brx += px;this.bry += py;this.blx += px;this.bly += py;return this;};var minresult = 0;var maxresult = 0;function minmax4(a, b, c, d){if (a < b){if (c < d){if (a < c)minresult = a;elseminresult = c;if (b > d)maxresult = b;elsemaxresult = d;}else{if (a < d)minresult = a;elseminresult = d;if (b > c)maxresult = b;elsemaxresult = c;}}else{if (c < d){if (b < c)minresult = b;elseminresult = c;if (a > d)maxresult = a;elsemaxresult = d;}else{if (b < d)minresult = b;elseminresult = d;if (a > c)maxresult = a;elsemaxresult = c;}}};Quad.prototype.bounding_box = function (rc){minmax4(this.tlx, this.trx, this.brx, this.blx);rc.left = minresult;rc.right = maxresult;minmax4(this.tly, this.try_, this.bry, this.bly);rc.top = minresult;rc.bottom = maxresult;};Quad.prototype.contains_pt = function (x, y){var v0x = this.trx - this.tlx;var v0y = this.try_ - this.tly;var v1x = this.brx - this.tlx;var v1y = this.bry - this.tly;var v2x = x - this.tlx;var v2y = y - this.tly;var dot00 = v0x * v0x + v0y * v0yvar dot01 = v0x * v1x + v0y * v1yvar dot02 = v0x * v2x + v0y * v2yvar dot11 = v1x * v1x + v1y * v1yvar dot12 = v1x * v2x + v1y * v2yvar invDenom = 1.0 / (dot00 * dot11 - dot01 * dot01);var u = (dot11 * dot02 - dot01 * dot12) * invDenom;var v = (dot00 * dot12 - dot01 * dot02) * invDenom;if ((u >= 0.0) && (v > 0.0) && (u + v < 1))return true;v0x = this.blx - this.tlx;v0y = this.bly - this.tly;var dot00 = v0x * v0x + v0y * v0yvar dot01 = v0x * v1x + v0y * v1yvar dot02 = v0x * v2x + v0y * v2yinvDenom = 1.0 / (dot00 * dot11 - dot01 * dot01);u = (dot11 * dot02 - dot01 * dot12) * invDenom;v = (dot00 * dot12 - dot01 * dot02) * invDenom;return (u >= 0.0) && (v > 0.0) && (u + v < 1);};Quad.prototype.at = function (i, xory){if (xory){switch (i){case 0: return this.tlx;case 1: return this.trx;case 2: return this.brx;case 3: return this.blx;case 4: return this.tlx;default: return this.tlx;}}else{switch (i){case 0: return this.tly;case 1: return this.try_;case 2: return this.bry;case 3: return this.bly;case 4: return this.tly;default: return this.tly;}}};Quad.prototype.midX = function (){return (this.tlx + this.trx  + this.brx + this.blx) / 4;};Quad.prototype.midY = function (){return (this.tly + this.try_ + this.bry + this.bly) / 4;};Quad.prototype.intersects_segment = function (x1, y1, x2, y2){if (this.contains_pt(x1, y1) || this.contains_pt(x2, y2))return true;var a1x, a1y, a2x, a2y;var i;for (i = 0; i < 4; i++){a1x = this.at(i, true);a1y = this.at(i, false);a2x = this.at(i + 1, true);a2y = this.at(i + 1, false);if (cr.segments_intersect(x1, y1, x2, y2, a1x, a1y, a2x, a2y))return true;}return false;};Quad.prototype.intersects_quad = function (rhs){var midx = rhs.midX();var midy = rhs.midY();if (this.contains_pt(midx, midy))return true;midx = this.midX();midy = this.midY();if (rhs.contains_pt(midx, midy))return true;var a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y;var i, j;for (i = 0; i < 4; i++){for (j = 0; j < 4; j++){a1x = this.at(i, true);a1y = this.at(i, false);a2x = this.at(i + 1, true);a2y = this.at(i + 1, false);b1x = rhs.at(j, true);b1y = rhs.at(j, false);b2x = rhs.at(j + 1, true);b2y = rhs.at(j + 1, false);if (cr.segments_intersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y))return true;}}return false;};

源码

需要源码请关注添加好友哦^ ^

转载:欢迎来到本站,转载请注明文章出处https://ormcc.com/

这篇关于滑木块H5小游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/650040

相关文章

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

H5漂流瓶社交系统源码

一个非常有创意的H5漂流瓶社交系统源码,带完整前端h5和后台管理系统。 环境:Nginx 1.20.1-MySQL 5.6.50-PHP-7.3 代码下载

ios免签H5

1、windows下载mobileconfig文件制作工具,可在csdn搜索iPhone_Mobileconfig_Tool下载安装;IOS 从APP Store 下载Apple Configurator 2 2、用申请的域名SSL证书给mobieconfig文件签名,最好下载Apache证书,里面包含 AE86211.crt 服务器端用于签名的证书 AE86211.key 服务器端用于签

android 的webView加载h5,和h5的交互(java和JavaScript的交互)

Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。(通俗点说就是,点击那个Web页面的按钮啥的,可以传到原生app;或者原生app调用Web页面的js方法) 如何实现 实现Java和js交互十分便捷。通常只需要以下几步。 WebView

webview之加载H5界面无法调用手机本地图库

webview加载H5页面,如果H5界面需要调用手机的本地图库 首先在此祝各位大佬远离BUG 比如我们在开发中会遇到这样的场景,需要加载一个H5界面,这个界面里面可能有用户上传头像这个功能,但是当你怎么点击上传图片的时候它都无响应。但是你把这个H5用手机浏览器打开,会发现他可以正常调用手机本地的图库,对于此类问题,我分两种情况讲Acvtivity里面用webview去加载 H5界面。fragm

恋爱相亲交友系统源码原生源码可二次开发APP 小程序 H5,web全适配

直播互动:平台设有专门的直播间,允许房间主人与其他异性用户通过视频连线的方式进行一对一互动。语音视频交流:异性用户可以发起语音或视频通话,以增进了解和交流。群组聊天:用户能够创建群聊,邀请自己关注的异性朋友加入,以便进行多人在线交流。虚拟礼品赠送:平台提供多样化的虚拟礼物,不同礼物有不同的价值,用户可以用来表达好感或支持。私人消息:异性用户之间可以互相发送私人信息,不过平台为了维护用户体验,对

2024霸王餐小程序cps,h5公众号小程序开源版系统搭建开发,外卖霸王餐小程序系统源码

目录 前言: 一、霸王餐小程序的操作是怎么样的? 二、霸王餐系统后台 三、怎么搭建部署? 前言: 霸王餐项目基于美团和饿了么平台开发的小程序。 一、霸王餐小程序的操作是怎么样的? 1、进入小程序后选择自己要下单的店铺,点击去抢单,点击立即抢单。 2、输入平台外卖绑定的手机号,点击确认报名。按照步骤操作即可。 3、等待外卖送达后,完成评价即可。 二、霸王餐系统后台

uniapp+vue3实现双通道透明MP4播放支持小程序和h5

双通道透明MP4视频播放的截图 以下是合成后结果,二个合并在一起进行播放 下载资源,打开运行直接使用看到效果 https://download.csdn.net/download/qq_40039641/89715780

微信公众号h5网页-调用录音评测

一、全局引入jweixin-1.6.0.js微信能力插件; 二、初始化微信配置,开启音频相关能力; initWxConfig() {let url = window.location.href.split('#')[0]let data = { url: url }this.$http.get(this.$api.getTicket, { params: data }).then((res)

多用户B2B2C商城源码+短视频直播+APP+小程序+H5

店铺管理 店铺列表,新店铺审核,地址管理,服务管理,运费模版,品牌管理 订单监管 视频订单,拼团订单,评论管理,退款管理 装修商城 模版管理,页面管理,全局样式,链接管理,图标管理 客服服务 投诉管理,意见反顾 财务管理 资金账单,用户提现 阶梯拼团 拼团管理,商品管理 种草短视频 社交评论,直播回放,视频点播 内容管理 文章列表,分类管理 WX管理 菜单管理,资