海盗传说^^

news2024/9/23 15:23:42

欢迎来到程序小院

海盗传说

玩法:海盗版俄罗斯方块,上键 ↑变换、 左键 ← 左移、右键 → 右移、下键 ↓ 加速,
快去玩海盗版俄罗斯方块吧^^。

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

html

 <canvas id="canvas" moz-opaque></canvas>

css

#canvas {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  margin: auto;
}
#rotate-prompt {
  position: fixed;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;

  background: #000;
  opacity: 0.9;
  visibility: hidden;

  z-index: 2541;

  text-align:center;
}
#prompt-icon {
  font-size: 24pt;

  position: relative;
  top: 50%;
}

js

(function (g) {
  Number.prototype.map = function (i, j, h, k) {
      return h + (k - h) * ((this - i) / (j - i))
  };
  Number.prototype.limit = function (i, h) {
      return Math.min(h, Math.max(i, this))
  };
  Number.prototype.round = function (h) {
      h = Math.pow(10, h || 0);
      return Math.round(this * h) / h
  };
  Number.prototype.floor = function () {
      return Math.floor(this)
  };
  Number.prototype.ceil = function () {
      return Math.ceil(this)
  };
  Number.prototype.toInt = function () {
      return (this | 0)
  };
  Number.prototype.toRad = function () {
      return (this / 180) * Math.PI
  };
  Number.prototype.toDeg = function () {
      return (this * 180) / Math.PI
  };
  Array.prototype.erase = function (j) {
      for (var h = this.length; h--;) {
          if (this[h] === j) {
              this.splice(h, 1)
          }
      }
      return this
  };
  Array.prototype.random = function () {
      return this[Math.floor(Math.random() * this.length)]
  };
  Function.prototype.bind = Function.prototype.bind || function (h) {
      if (typeof this !== "function") {
          throw new TypeError("Function.prototype.bind - what is trying to be bound 
          is not callable")
      }
      var l = Array.prototype.slice.call(arguments, 1),
          k = this,
          i = function () {},
          j = function () {
              return k.apply((this instanceof i && h ? this : h), l.concat(
              Array.prototype.slice.call(arguments)))
          };
      i.prototype = this.prototype;
      j.prototype = new i();
      return j
  };
  g.ig = {
      game: null,
      debug: null,
      version: "1.23",
      global: g,
      modules: {},
      resources: [],
      ready: false,
      baked: false,
      nocache: "",
      ua: {},
      prefix: (g.ImpactPrefix || ""),
      lib: "lib/",
      _current: null,
      _loadQueue: [],
      _waitForOnload: 0,
      $: function (h) {
          return h.charAt(0) == "#" ? document.getElementById(h.substr(1)) : 
          document.getElementsByTagName(h)
      },
      $new: function (h) {
          return document.createElement(h)
      },
      copy: function (j) {
          if (!j || typeof (j) != "object" || j instanceof HTMLElement || j 
          instanceof ig.Class) {
              return j
          } else {
              if (j instanceof Array) {
                  var m = [];
                  for (var k = 0, h = j.length; k < h; k++) {
                      m[k] = ig.copy(j[k])
                  }
                  return m
              } else {
                  var m = {};
                  for (var k in j) {
                      m[k] = ig.copy(j[k])
                  }
                  return m
              }
          }
      },
      merge: function (j, h) {
          for (var i in h) {
              var k = h[i];
              if (typeof (k) != "object" || k instanceof HTMLElement || k 
              instanceof ig.Class || k === null) {
                  j[i] = k
              } else {
                  if (!j[i] || typeof (j[i]) != "object") {
                      j[i] = (k instanceof Array) ? [] : {}
                  }
                  ig.merge(j[i], k)
              }
          }
          return j
      },
      ksort: function (l) {
          if (!l || typeof (l) != "object") {
              return []
          }
          var k = [],
              h = [];
          for (var j in l) {
              k.push(j)
          }
          k.sort();
          for (var j = 0; j < k.length; j++) {
              h.push(l[k[j]])
          }
          return h
      },
      setVendorAttribute: function (j, h, k) {
          var i = h.charAt(0).toUpperCase() + h.substr(1);
          j[h] = j["ms" + i] = j["moz" + i] = j["webkit" + i] = j["o" + i] = k
      },
      getVendorAttribute: function (j, h) {
          var i = h.charAt(0).toUpperCase() + h.substr(1);
          return j[h] || j["ms" + i] || j["moz" + i] || j["webkit" + i] || j["o" + i]
      },
      normalizeVendorAttribute: function (j, h) {
          var i = ig.getVendorAttribute(j, h);
          if (!j[h] && i) {
              j[h] = i
          }
      },
      getImagePixels: function (j, n, m, h, p) {
          var i = ig.$new("canvas");
          i.width = j.width;
          i.height = j.height;
          var q = i.getContext("2d");
          ig.System.SCALE.CRISP(i, q);
          var l = ig.getVendorAttribute(q, "backingStorePixelRatio") || 1;
          ig.normalizeVendorAttribute(q, "getImageDataHD");
          var o = j.width / l,
              k = j.height / l;
          i.width = Math.ceil(o);
          i.height = Math.ceil(k);
          q.drawImage(j, 0, 0, o, k);
          return (l === 1) ? q.getImageData(n, m, h, p) : q.getImageDataHD(n, m, h, p)
      },
      module: function (h) {
          if (ig._current) {
              throw ("Module '" + ig._current.name + "' defines nothing")
          }
          if (ig.modules[h] && ig.modules[h].body) {
              throw ("Module '" + h + "' is already defined")
          }
          ig._current = {
              name: h,
              requires: [],
              loaded: false,
              body: null
          };
          ig.modules[h] = ig._current;
          ig._loadQueue.push(ig._current);
          return ig
      },
      requires: function () {
          ig._current.requires = Array.prototype.slice.call(arguments);
          return ig
      },
      defines: function (h) {
          ig._current.body = h;
          ig._current = null;
          ig._initDOMReady()
      },
      addResource: function (h) {
          ig.resources.push(h)
      },
      setNocache: function (h) {
          ig.nocache = h ? "?" + Date.now() : ""
      },
      log: function () {},
      assert: function (i, h) {},
      show: function (h, i) {},
      mark: function (i, h) {},
      _loadScript: function (j, i) {
          ig.modules[j] = {
              name: j,
              requires: [],
              loaded: false,
              body: null
          };
          ig._waitForOnload++;
          var k = ig.prefix + ig.lib + j.replace(/\./g, "/") + ".js" + ig.nocache;
          var h = ig.$new("script");
          h.type = "text/javascript";
          h.src = k;
          h.onload = function () {
              ig._waitForOnload--;
              ig._execModules()
          };
          h.onerror = function () {
              throw ("Failed to load module " + j + " at " + k + " required from " + i)
          };
          ig.$("head")[0].appendChild(h)
      },
      _execModules: function () {
          var k = false;
          for (var p = 0; p < ig._loadQueue.length; p++) {
              var n = ig._loadQueue[p];
              var h = true;
              for (var o = 0; o < n.requires.length; o++) {
                  var l = n.requires[o];
                  if (!ig.modules[l]) {
                      h = false;
                      ig._loadScript(l, n.name)
                  } else {
                      if (!ig.modules[l].loaded) {
                          h = false
                      }
                  }
              }
              if (h && n.body) {
                  ig._loadQueue.splice(p, 1);
                  n.loaded = true;
                  n.body();
                  k = true;
                  p--
              }
          }
          if (k) {
              ig._execModules()
          } else {
              if (!ig.baked && ig._waitForOnload == 0 && ig._loadQueue.length != 0) {
                  var q = [];
                  for (var p = 0; p < ig._loadQueue.length; p++) {
                      var s = [];
                      var r = ig._loadQueue[p].requires;
                      for (var o = 0; o < r.length; o++) {
                          var n = ig.modules[r[o]];
                          if (!n || !n.loaded) {
                              s.push(r[o])
                          }
                      }
                      q.push(ig._loadQueue[p].name + " (requires: " + s.join(", ") + ")")
                  }
                  throw ("Unresolved (or circular?) dependencies. Most likely 
                  there's a name/path mismatch for one of the listed modules or 
                  a previous syntax error prevents a module from loading:\n" + q.join("\n"))
              }
          }
      }

源码

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

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

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

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

相关文章

Scrum的工件

我们采用了Scrum进行开发方面的管理&#xff0c;那么所有的计划和工作都应该是透明的&#xff0c;这给了我们检查这些东西的机会&#xff0c;以便能够即时做出调整来适应即将发生的变化。 那么Scrum为我们设计了一些工件帮助我们检查我们的工作和计划&#xff0c;每个工件都有…

Chinese-llama-2部署踩坑记录

Chinese-llama-2部署踩坑记录 1. Chinese-LLaMA-Alpaca-2A. 部署a. inference_with_transformers_zhb. text generation webui_zhc. api_calls_zhd. llamacpp_zhe. privategpt_zhf. langchain_zh Tool Github 1. Chinese-LLaMA-Alpaca-2 A. 部署 a. inference_with_transform…

L1-085:试试手气

我们知道一个骰子有 6 个面&#xff0c;分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态&#xff0c;即它们朝上一面的点数&#xff0c;让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙&#xff0c;每次摇出的结果都满足以下两个条件&#xff1a; 1、每个骰子摇出…

Fontfabric:一款字体与设计的完美结合

一、产品介绍 Fontfabric是一款由国际字体设计公司Fontfabric开发的字体设计软件。它提供了一整套完整的字体设计工具&#xff0c;让用户可以轻松地创建、设计和定制自己的字体。Fontfabric拥有丰富的字体库&#xff0c;包括各种风格和类型&#xff0c;能够满足用户在不同场景…

【论文阅读笔记】医学多模态新数据集-Large-scale Long-tailed Disease Diagnosis on Radiology Images

这是复旦大学2023.12.28开放出来的数据集和论文&#xff0c;感觉很宝藏&#xff0c;稍微将阅读过程记录一下。 Zheng Q, Zhao W, Wu C, et al. Large-scale Long-tailed Disease Diagnosis on Radiology Images[J]. arXiv preprint arXiv:2312.16151, 2023. 项目主页&#xf…

使用BeautifulReport生成测试报告及遇到的雷点

BeautifulReport是一个基于unittest框架的测试报告生成工具&#xff0c;它可对自动化测试生成美观、详细的HTML测试报告。 使用BeautifulReport需要先安装 pip install BeautifulReport 示例 一个加法功能的测试用例&#xff0c;使用unittestBeautifulReport实现自动化并生成…

Prometheus-Alertmanage钉钉实现告警

获取钉钉的webhook地址 1、注册企业钉钉 a、注册企业钉钉 浏览器打开钉钉注册页面 填入手机号码&#xff0c;填入获取到的验证码&#xff0c;点注册 填入企业资料并注册 注册成功后&#xff0c;扫描二维码下载钉钉&#xff0c;如下图&#xff1a; b、添加机器人 管理后台 因…

L1-084:拯救外星人

你的外星人朋友不认得地球上的加减乘除符号&#xff0c;但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”&#xff0c;是从 1 到 N 的连乘积。所以当他不知道“57”等于多少时&#xff0c;如果你告诉他等于“12!”&#xff0c;他就写出了“479001600”这个答案。 本题就请你写程序…

【信息论与编码】习题-填空题

目录 填空题1.克劳夫特不等式是判断&#xff08; &#xff09;的充要条件。2.无失真信源编码的中心任务是编码后的信息率压缩接近到&#xff08;&#xff09;限失真压缩中心任务是在给定的失真度条件下&#xff0c;信息率压缩接近到&#xff08; &#xff09;。3.常用的检纠错方…

小白综述:深度学习 OCR 图片文字识别

文章目录 1. OCR 算法流程1.1 传统 OCR 方法1.2 深度学习 OCR 方法1.2.1 two-stage方法&#xff1a;文字检测识别1.2.2 端到端方法 2. 文本检测算法3. 文本识别算法3.1 基于分割的单字符识别方法3.2 基于序列标注的文本行识别方法 1. OCR 算法流程 OCR (Optical Character Rec…

微服务-sentinel-基本案例,持久化

sentinel 功能 限流 限流文档 直接拒绝&#xff1a;触发阀值直接抛弃。冷启动&#xff1a;在一段时间内针对突发流量缓慢增长处理数量。 3&#xff09;匀速器&#xff1a;请求以均匀的速度通过。 降级降级文档 1&#xff09;RT 统计时间内&#xff0c;大于预设请求数量&…

数据结构入门到入土——链表(1)

目录 一&#xff0c;顺序表表/ArrayList的缺陷 二&#xff0c;链表 三&#xff0c;链表的实现 四&#xff0c;与链表有关的题目练习&#xff08;1&#xff09; 1.删除链表中等于给定值 val 的所有节点 2.反转一个单链表 3.给定一个带有头结点 head 的非空单链表&#xf…

全新的C++语言

一、概述 C 的最初目标就是成为 “更好的 C”&#xff0c;因此新的标准首先要对基本的底层编程进行强化&#xff0c;能够反映当前计算机软硬件系统的最新发展和变化&#xff08;例如多线程&#xff09;。另一方面&#xff0c;C对多线程范式的支持增加了语言的复杂度&#xff0…

专业实习day3、4(路由器做内网访问公网)

专业实习 代码 display ip interface brief 显示当前设备下所有接口IP undo IP地址支持覆盖&#xff0c;但是正常的命令不能覆盖必须undo&#xff08;删除&#xff09;掉 un in en 在做配置的过程中&#xff0c;设备系统一般都会出现一些提示或者告警之类的东西&#xff0c;从…

书生·浦语大模型全链路开源体系 学习笔记 第一课

背景 大模型是发展人工通用人工智能的一个重要途径&#xff0c;能够解决多种任务和多种模态&#xff0c;展示了一个更面向更高阶的智能的潜在途径。大模型的发展历程是从专用模型到通用模型的过程&#xff0c;从语音识别、图像识别、人脸识别等专用模型&#xff0c;到通用的大…

高级分布式系统-第3讲 网络与网络互联

万维网的诞生 1957年10月4日&#xff0c; 苏联发射了人类第一颗人造卫星—斯普特尼克一号 美国政府震惊不已。 他们认为&#xff0c; 在日趋激烈的冷战对抗中&#xff0c; 自己已经全面落后于苏联。 为了扭转这一局面&#xff0c; 美国国防部很快于1958 年 2 月组建了一个神秘…

现代 C++ 小利器:参数绑定包装器堪称「Lambda 小平替」

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/gt_zxMwhu8UixzCMF73Dng C 原生支持函数输入参数的默认值&#xff0c;但是有些业务场景下对原有设定的默认值不满意&#xff0c;那么可不可以临时…

【已解决】js定义对象属性是.如何访问

当变量没有length属性的时候&#xff0c;可能是个对象变量&#xff0c;当有键值对的时候就可能是个对象&#xff0c;读者都知道的是&#xff0c;用typeof(变量)可以查看属性&#xff0c;今天本文解决的问题是如果js定义对象中属性是"点"如何访问 问题再现 var a {…

java实验室预约管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java servlet 实验室预约管理系统是一套完善的java web信息管理系统 系统采用serlvetdaobean&#xff08;mvc模式)&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数 据库&#xff0c;系统主要采用B/S模式开发。开发环境为T…

【数据采集与预处理】流数据采集工具Flume

一、Flume简介 数据流 &#xff1a;数据流通常被视为一个随时间延续而无限增长的动态数据集合&#xff0c;是一组顺序、大量、快速、连续到达的数据序列。通过对流数据处理&#xff0c;可以进行卫星云图监测、股市走向分析、网络攻击判断、传感器实时信号分析。 &#xff08;…