密室逃脱小游戏

news2024/10/9 22:16:22

欢迎来到程序小院

密室逃脱

玩法:
判断可生存的空间,鼠标点击屏幕进行人物左右移动,躲避闸道进行生存,每进行一次关卡都会有分数统计,赶紧去闯关吧^^。

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

html

<canvas id="jsGameScreen"></canvas>

css

.bandiv{
  float:left; 
  width:100%; 
  background-color:#DBD1BB;
}
.bandiv div{
  padding:10px; 
  text-align:left;
}
#play68box{
    width: 190px;
    font-size: 12px;
    line-height: 15px;
    right: -172px;
    top: 35%;
    position: fixed;
    z-index: 100;
}

#tab{
    float: left;
    list-style: none outside none;
    padding: 0;
    position: relative;
    z-index: 99;
    margin-top: 10px;
    margin-right: 0;
    margin-bottom: 0;
    margin-left: 0;
}

#tab li span{
    display: block;
    padding: 0 5px;
    position: relative;
}

#links{
    width: 100px;
    padding: 1px;
    float: left;
    background-color: #f6bb42;
    border-radius: 8px;
}

js

e.showClue = function() {
  window.scrollTo(0, -5);
  e.ctx.fillStyle = "#ffffff";
  e.ctx.fillRect(0, 0, window.innerWidth, window.innerHeight);
  t.canvas.drawImage("h", (window.innerWidth - 153) / 2, (window.innerHeight - 122) / 2)
};
var u = {
  x: (t.canvas.screen.getWidth() - 126) / 2,
  y: 180,
  w: 126,
  h: 35,
  isPressed: !1,
  draw: n
},
a = {
  x: (t.canvas.screen.getWidth() - 126) / 2,
  y: 260,
  w: 126,
  h: 35,
  isPressed: !1,
  draw: n
},
f = {
  x: (t.canvas.screen.getWidth() - 126) / 2,
  y: 660,
  w: 126,
  h: 35,
  isPressed: !1,
  draw: n
},
l = {
  x: (t.canvas.screen.getWidth() - 126) / 2,
  y: 740,
  w: 126,
  h: 35,
  isPressed: !1,
  draw: n
},
c = {
  x: (t.canvas.screen.getWidth() - 126) / 2,
  y: 660,
  w: 126,
  h: 35,
  isPressed: !1,
  draw: n
},
h = {
  x: (t.canvas.screen.getWidth() - 126) / 2,
  y: 740,
  w: 126,
  h: 35,
  isPressed: !1,
  draw: n
},
p = {
  jianRenStateType: {
    normal: 0,
    died: 1,
    stop: 2
  },
  jianRenDirection: {
    center: 0,
    left: 1,
    right: 2
  }
},
v = {
  baseY: 0,
  mission: 0,
  wall: {
    width: 30,
    topWallY: -150,
    bottomWallY: 0,
    timeout: 1e3,
    gapTimeout: 1e3,
    dropped: !1,
    tiles: {
      top: [],
      bottom: []
    }
  },
  jianren: {
    index: 0,
    y: 0,
    width: 30,
    height: 38,
    state: p.jianRenStateType.normal,
    direction: p.jianRenDirection.center,
    showAction: !1
  }
},
m,
g,
y,
b,
w,
E,
S = [20, 35, 50, 25],
x,
T = function(e) {
  if (0 < e) {
    switch (e) {
    case 10:
      y = 3;
      v.wall.timeout = 500;
      break;
    case 20:
      y = 2;
      v.wall.timeout = 350;
      break;
    case 30:
      y = 1;
      v.wall.timeout = 225;
      break;
    case 40:
      v.wall.timeout = 100;
      break;
    case 50:
      v.wall.timeout = 50
    }
    for (b = []; b.length < y;) if (w = t.commandFuns.getRandom(0, 
    parseInt(t.canvas.screen.getWidth() / 2 / v.wall.width) - 1), 0 == b.length) b.push(w);
    else {
      E = !0;
      for (e = 0; e < b.length; e++) w == b[e] && (E = !1);
      E && b.push(w)
    }
    var n;
    v.wall.tiles.top = [];
    v.wall.tiles.bottom = [];
    for (e = 0; e < parseInt(t.canvas.screen.getWidth() / 2 / v.wall.width);
    e++) n = t.commandFuns.getRandom(220, 280),
    v.wall.tiles.top.push({
      height: n
    }),
    v.wall.tiles.bottom.push({
      height: t.canvas.screen.getHeight() - n
    });
    for (e = 0; e < b.length; e++) v.wall.tiles.top[b[e]].height -= 
    S[t.commandFuns.getRandom(0, S.length - 1)]
  } else v.wall.tiles = {
    top: [{
      height: 250
    },
    {
      height: 250
    },
    {
      height: 250
    },
    {
      height: 250
    },
    {
      height: 215
    },
    {
      height: 250
    },
    {
      height: 250
    },
    {
      height: 250
    }],
    bottom: [{
      height: 70
    },
    {
      height: 70
    },
    {
      height: 70
    },
    {
      height: 70
    },
    {
      height: 70
    },
    {
      height: 70
    },
    {
      height: 70
    },
    {
      height: 70
    }]
  };
  m = [];
  for (e = 0; e < v.wall.tiles.top.length; e++) m.push({
    sx: e * v.wall.width,
    sy: v.baseY + v.wall.tiles.top[e].height,
    ex: (e + 1) * v.wall.width,
    ey: v.baseY + v.wall.tiles.top[e].height
  });
  g = [];
  for (e = 0; e < v.wall.tiles.bottom.length; e++) g.push({
    sx: e * v.wall.width,
    sy: v.baseY + t.canvas.screen.getHeight() - v.wall.tiles.bottom[e].height,
    ex: (e + 1) * v.wall.width,
    ey: v.baseY + t.canvas.screen.getHeight() - v.wall.tiles.bottom[e].height
  });
  v.wall.topWallY = -150;
  v.wall.bottomWallY = 0;
  v.wall.timeout = 1e3;
  v.wall.gapTimeout = 800;
  v.wall.dropped = !1;
  v.jianren.index = 4;
  v.jianren.y = 150;
  v.jianren.state = p.jianRenStateType.normal;
  v.jianren.showAction = !1;
  x = t.commandFuns.getRandom(0, 1)
},
N = 0,
C,
k,
L = 5,
A = 0,
O = 1,
M = 2,
_ = 3,
D = 0,
P = "",
H = 0,
P = "CHS",
D = null == P ? L: A,
H = t.localStorage.getItem("highScore2");
null == H && (H = 0);
updateShareScore(H);
var B = function() {
  N = 0;
  v.mission = 1;
  y = 3;
  v.jianren.direction = p.jianRenDirection.center;
  C = 0;
  k = 105;
  T(v.mission)
},
j = function() {
  t.canvas.drawImage("bl1", 0, 0, t.getImage("bl1").width, 
  t.getImage("bl1").height, 0, 0, t.canvas.screen.getWidth(), t.canvas.screen.getHeight())
},
F = [],
I = 0,
q = [],
R,
U = 0,
z = [{
  sx: 0,
  sy: 0
},
{
  sx: 30,
  sy: 0
}],
W = 0,
X = [{
  sx: 60,
  sy: 0
},
{
  sx: 60,
  sy: 0
},
{
  sx: 90,
  sy: 0
},
{
  sx: 90,
  sy: 0
},
{
  sx: 120,
  sy: 0
},
{
  sx: 120,
  sy: 0
},
{
  sx: 150,
  sy: 0
},
{
  sx: 150,
  sy: 0
},
{
  sx: 180,
  sy: 0
},
{
  sx: 180,
  sy: 0
}],
V,
$ = [0, 1],
J = [2, 3],
K = 0,
Q = [{
  sx: 0,
  sy: 0
},
{
  sx: 30,
  sy: 0
},
{
  sx: 60,
  sy: 0
},
{
  sx: 90,
  sy: 0
},
{
  sx: 120,
  sy: 0
}],
G = 0,
Y = function(e, n) {
  6 > G ? (t.canvas.drawImage("han1", 20 * parseInt(G), 0, 20, 17, 2 
  * (e + 15), 2 * n, 40, 34), G += .5) : 12 > G && 
  (t.canvas.drawImage("han2", 20 * parseInt(G - 6), 0, 20, 17, 2 * (e - 5), 2 * n, 40, 34),
  G += .5, G %= 12)
},
Z = [],
et = [],
tt,
nt = function(e, n, r) {
  t.canvas.beginPath();
  t.canvas.lineWidth(2 * (n + 2)).strokeStyle("#000000");
  for (var i = 0; i < e.length; i++) 0 == i ? t.canvas.moveTo(2 * e[i].sx, 
  2 * (r + e[i].sy)) : t.canvas.lineTo(2 * e[i].sx, 2 * (r + e[i].sy)),
  t.canvas.lineTo(2 * e[i].ex, 2 * (r + e[i].ey));
  t.canvas.stroke();
  t.canvas.lineWidth(2 * n).strokeStyle("#00FF00");
  for (i = 0; i < e.length; i++) 0 == i ? t.canvas.moveTo(2 * e[i].sx,
  2 * (r + e[i].sy)) : t.canvas.lineTo(2 * e[i].sx, 2 * (r + e[i].sy)),
  t.canvas.lineTo(2 * e[i].ex, 2 * (r + e[i].ey));
  t.canvas.stroke().closePath().lineWidth(2)
},
rt = 0,
it = {
  x: 0,
  y: 0
};
t.events.touchStart(function(e) {
  it = {
    x: e.touches[0].clientX,
    y: e.touches[0].clientY
  };
  i(it)
}).touchMove(function(e) {
  it = {
    x: e.touches[0].clientX,
    y: e.touches[0].clientY
  };
  s(it)
}).touchEnd(function(e) {
  o(it)
}).mouseMove(function(t) {
  it = {
    x: t.clientX - e.left,
    y: t.clientY - e.top
  };
  s(it)
}).mouseDown(function(t) {
  it = {
    x: t.clientX - e.left,
    y: t.clientY - e.top
  };
  i(it)
}).mouseUp(function(t) {
  it = {
    x: t.clientX - e.left,
    y: t.clientY - e.top
  };
  o(it)
});
},

源码icon-default.png?t=N7T8https://www.ormcc.com/

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

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

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

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

相关文章

L1 项目概述与Hadoop部署

1.技术栈&#xff1a;HadoopHiveSqoopFlumeAzkaban Flume采集Nginx web服务器上的日志&#xff0c;采集完成后存储到Hadoop的平台&#xff0c;最终存储到HDFS上&#xff0c;处理和分析采用Hive的方式&#xff0c;处理完之后利用Sqoop导出到Mysql中&#xff0c;最终利用一个Java…

开源电商项目 Mall:构建高效电商系统的终极选择

文章目录 Mall 项目概览前台商城系统后台管理系统系统架构图业务架构图 模块介绍后台管理系统 mall-admin商品管理&#xff1a;功能结构图-商品订单管理&#xff1a;功能结构图-订单促销管理&#xff1a;功能结构图-促销内容管理&#xff1a;功能结构图-内容用户管理&#xff1…

日常中出现msvcp140.dll丢失的5个解决方法与msvcp140.dll详细解析

前几天&#xff0c;我在使用电脑时遇到了一个奇怪的问题&#xff1a;打开某些程序时&#xff0c;系统提示找不到msvcp140.dll文件。这让我非常困惑&#xff0c;因为我之前从未遇到过这样的问题。为了解决这个问题&#xff0c;我在网上查找了许多关于解决msvcp140.dll丢失的信息…

IDEA插件Mybatis Log Plugin的安装及其使用教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 插件概述 Mybatis Log Plugin插件用于查看Mybatis所执行的完整SQL语句。在此教程中详细介绍IDEA插件Mybatis Log Plugin的安装及其使用。 安装过程 请搜索并安装Mybatis …

kafka学习-基本概念与简单实战

目录 1、核心概念 消息和批次 Topic和Partition Replicas Offset broker和集群 生产者和消费者 2、开发实战 2.1、消息发送 介绍 代码实现 2.2、消息消费 介绍 代码实现 2.3、SpringBoot Kafka pom application.yaml KafkaConfig producer consumer 1、核心…

C++项目实战——基于多设计模式下的同步异步日志系统-③-前置知识补充-设计模式

文章目录 专栏导读六大原则单例模式饿汉模式懒汉模式 工厂模式简单工厂模式工厂方法模式抽象工厂模式 建造者模式代理模式 专栏导读 &#x1f338;作者简介&#xff1a;花想云 &#xff0c;在读本科生一枚&#xff0c;C/C领域新星创作者&#xff0c;新星计划导师&#xff0c;阿…

LP(六十九)智能文档助手升级

本文在笔者之前研发的大模型智能文档问答项目中&#xff0c;开发更进一步&#xff0c;支持多种类型文档和URL链接&#xff0c;支持多种大模型接入&#xff0c;且使用更方便、高效。 项目介绍 在文章NLP&#xff08;六十一&#xff09;使用Baichuan-13B-Chat模型构建智能文档中…

CodeJock Active-X / COM v22.1.0 Crack

CodeJock Active-X / COM v22.1.0--这个支持 Unicode 啦&#xff0c; Unicode Unicode 创建专业应用程序&#xff0c;其中包含一整套高度可定制的用户界面组件&#xff0c;包括 Visual Studio 风格的对接窗格和 Office 风格的功能区、工具栏和菜单&#xff0c;为您的应用程序…

电商邮件营销攻略:教你如何有效运营邮件营销策略!

作为一种领先的营销渠道&#xff0c;电子邮件营销已被电子商务公司作为推动客户参与度、促进销售和提高ROI的不可或缺的方式。在这篇文章中&#xff0c;我们将深入探讨电子商务公司为什么要做EDM邮件营销&#xff1f;以及电商公司怎么做邮件营销&#xff1f; 一、电子商务公司…

系统架构设计师(第二版)学习笔记----多媒体技术

【原文链接】系统架构设计师&#xff08;第二版&#xff09;学习笔记----多媒体技术 文章目录 一、多媒体概述1.1 媒体的分类1.2 多媒体的特征1.3 多媒体系统的基本组成 二、多媒体系统的关键技术2.1 多媒体系统的关键技术2.2 视频技术的内容2.3 音频技术的内容2.4 数据压缩算法…

时序分解 | MATLAB实现基于SSA奇异谱分析的信号分解分量可视化

时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 奇异谱分解奇异谱分析SSA 可直接替换txt数据运行 Matlab 1.包含3D分解效果图 频谱图等…

多路转接之PollEpoll

文章目录 Pollpoll函数接口poll的优缺点poll示例Util.hpp(所用到的函数方法)Server.hppServer.cclog.hpp(日志) Epollepoll的相关系统调用epoll_createepoll_ctlepoll_wait epoll工作原理epoll的优点epoll工作方式对比LT和ETepoll服务器(LT模式)示例Util.hpp(需要调用的函数)Se…

DeepinV20/Ubuntu安装postgresql方法

首先&#xff0c;建议看一下官方的安装文档PostgreSQL: Linux downloads (Ubuntu) PostgreSQL Apt Repository 简单的说&#xff0c;就是Ubuntu下的Apt仓库&#xff0c;可以用来安装任何支持版本的PgSQL。 If the version included in your version of Ubuntu is not the one…

一笑的大型连续剧之第二集

开场白 各位小伙伴们大家晚上好&#xff0c;今天来和大家一起更新一下我的开发之旅的第二集。上周时间也已经匆匆过去了。今天也是周六晚上了&#xff0c;这个周末很充实但是又很空虚。 本周小结 本周完成了我开发旅途中的第一个模块&#xff0c;关于绩效面谈的一个模块的一…

树莓派入门

目录 前言系统烧录使用官方烧录工具选择操作系统选择存储卡配置 Win32DiskImager 有屏幕树莓派开机树莓派关机无屏幕树莓派开机获取树莓派IP地址通过路由器获取共享网络方式获取给树莓派配置静态IP地址查找默认网关分盘给树莓派的IP地址修改树莓派DHCP配置文件 ssh登录 让树莓派…

排序(408)

一、插入排序&#xff08;直接、折半、希尔&#xff09; 【2009统考】若数据元素序列{11,12,13,7,8,9,23,4,5}是采用下列排序方法之一得到的第二趟排序后的结果&#xff0c;则该排序算法只能是&#xff08;B&#xff09; A、冒泡排序 B、插入排序 C、选择排序 …

freemarker模板引擎详解以及使用方法

哈喽&#xff01;大家好&#xff0c;我是旷世奇才李先生 文章持续更新&#xff0c;可以微信搜索【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】更有我为大家准备的福利哟&#xff0c;回复【项目】获取我为大家准备的项目 文章目录 一、freemarker 介绍1、简介 二、free…

Java 基于 SpringBoot 的酒店管理系统,附源码和数据库

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 一、前言介绍二、系统结构三、系统详细实现3.1用户信息管理3.2会员信息管理3.3客房信息管理3.4收藏…

浅析linux异步io框架 io_uring

前言 Linux内核5.1支持了新的异步IO框架iouring&#xff0c;由Block IO大神也即Fio作者Jens Axboe开发&#xff0c;意在提供一套公用的网络和磁盘异步IO&#xff0c;不过io_uring目前在磁盘方面要比网络方面更加成熟。 目录 背景简介 io_uring 系统API liburing 高级特性…

SpringBoot实例类-@Data

1.配置pom.xml 说明&#xff1a;添加lombok依赖 <!-- lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency> 2.刷新maven 说明&#xff1a;一般修改xml文件就需要刷…