跳跳狗小游戏

欢迎来到程序小院

跳跳狗

玩法:一直弹跳的狗狗,鼠标点击屏幕左右方向键进行弹跳,弹到不同物品会有不同的分数减扣,规定的时间3分钟内完成狗狗弹跳,快去跳跳狗吧^^。

开始游戏https://www.ormcc.com/play/gameStart/198

 

c823bef8125f47c1897cc9d8e2b10e6a.png

 

html

<canvas id="ef" width="100%" height="100%" 
        style="position:absolute;left:0;top:180px;z-index:19;display:none;"></canvas>
<canvas id="game" width="100%" height="100%" 
        style="position:absolute;left:0;top:180px;z-index:18;"></canvas>
<canvas id="bg" width="100%" height="100%" 
        style="position:absolute;left:0;top:180px;z-index:17;"></canvas>

css

h2.title{
    display: block;
    margin: 50px auto;
    text-align: center;
}

js

function dot_TalkBubble() {
 this.reset = function(a, b, c, d, e, f, g, h, k) {
  this.image = a;
  this.text = "";
  this.x = f;
  this.y = g;
  this.offsetX = b;
  this.offsetY = c;
  this.w = h;
  this.font = k;
  a = d.split(" ");
  for (d = c = b = 0; d < a.length; d++) c = k.getTextSize(a[d])
   .w, b + c > this.w ? (this.text += "\n" + a[d] + " ", 
      b = c + k.charWidths[" "]) : (this.text += a[d] + " ", b += c + k.charWidths[" "]);
  this.timer = this.currentIndex = 0;
  this.maxTimer = 1 / e;
  this.justFinished = this.finished = !1
 };
 this.update = function(a) {
  this.justFinished = !1;
  this.finished || (this.timer += a, this.timer >
   this.maxTimer && (this.timer = 0, this.currentIndex++, 
      this.currentIndex == this.text.length && (this.justFinished = this.finished = !0)))
 };
 this.render = function(a, b, c, d) {
  a.drawImage(this.image, Math.floor(this.x + b - this.offsetX), 
    Math.floor(this.y + c - this.offsetY));
  this.font.write(a, Math.floor(this.x + b), Math.floor(this.y + c), 
    this.text, d, 0, this.currentIndex)
 }
}

function dot_Math() {
 this.load = function() {
  this.m_sin = Array(1440);
  this.m_cos = Array(1440);
  for (var a = 0, b = 0; 1440 > b; b++) this.m_sin[b] = Math.sin(a * PI / 180), 
    this.m_cos[b] = Math.cos(a * PI / 180), a += 0.25;
  this.msquare = Array(600);
  for (b = 0; b < this.msquare.length; b++) this.msquare[b] = b * b
 };
 this.sqrt = function(a) {
  a = Math.floor(a);
  a = 0 < a ? a : -a;
  for (var b = 0, c = this.msquare.length - 1, d = b + c >> 1; b < c - 1;) {
   if (this.msquare[d] > a) c = d;
   else if (this.msquare[d] < a) b = d;
   else break;
   d = b + c >> 1
  }
  return d
 };
 this.sin = function(a) {
  0 > a ? a += 360 : 360 <= a && (a -= 360);
  return this.m_sin[Math.floor(4 * a)]
 };
 this.cos = function(a) {
  0 > a ? a += 360 : 360 <= a && (a -= 360);
  return this.m_cos[Math.floor(4 * a)]
 };
 this.seed_w = 1234;
 this.seed_z = 5678;
 this.randomize = function() {
  var a = (new Date)
   .getTime();
  this.seed_w = a % 32E3;
  this.seed_z = a % 65535
 };
 this.rand = function() {
  this.seed_z = 36969 * (this.seed_z & 65535) + (this.seed_z >> 16);
  this.seed_w = 18E3 * (this.seed_w & 65535) + (this.seed_w >> 16);
  return Math.abs((this.seed_z << 16) + this.seed_w)
 };
 this.random = function() {
  return 1 / (this.rand() % 10)
 };
 this.randomIn = function(a,
  b) {
  return 1 < b ? a + this.rand() % b : a + this.random() * b
 }
}
var EASE_NONE = 0,
 EASE_QUAD_IN = 1,
 EASE_QUAD_OUT = 2,
 EASE_QUAD_INOUT = 3,
 EASE_CUBE_IN = 4,
 EASE_CUBE_OUT = 5,
 EASE_CUBE_INOUT = 6,
 EASE_QUART_IN = 7,
 EASE_QUART_OUT = 8,
 EASE_QUART_INOUT = 9,
 EASE_QUINT_IN = 10,
 EASE_QUINT_OUT = 11,
 EASE_QUINT_INOUT = 12,
 EASE_SIN_IN = 13,
 EASE_SIN_OUT = 14,
 EASE_SIN_INOUT = 15,
 EASE_BOUNCE_IN = 16,
 EASE_BOUNCE_OUT = 17,
 EASE_BOUNCE_INOUT = 18,
 EASE_CIRC_IN = 19,
 EASE_CIRC_OUT = 20,
 EASE_CIRC_INOUT = 21,
 EASE_EXPO_IN = 22,
 EASE_EXPO_OUT = 23,
 EASE_EXPO_INOUT = 24,
 EASE_BACK_IN = 25,
 EASE_BACK_OUT = 26,
 EASE_BACK_INOUT = 27,
 PI = 3.1415926,
 PI2 =
 1.5707963,
 B1 = 0.363636363636364,
 B2 = 0.727272727272727,
 B3 = 0.545454545454545,
 B4 = 0.909090909090909,
 B5 = 0.818181818181818,
 B6 = 0.954545;

function dot_Tween() {
 this.duration = this.duration_inverse = this.t = 0;
 this.functionId = EASE_NONE;
 this.targetRangeNumber = this.targetLowest = this.timer = 0;
 this.finished = !0;
 this.delta = 0;
 this.reset = function(a, b, c, d) {
  this.duration_inverse = 1 / d;
  this.functionId = c;
  this.timer = 0;
  this.targetLowest = a;
  this.targetRangeNumber = b - a;
  this.duration = d;
  this.finished = !1;
  this.t = 0;
  this.delta = this.targetLowest;
  this.update(0)
 };
 this.replay = function() {
  this.finished = !1;
  this.t = this.timer = 0;
  this.delta = this.targetLowest;
  this.update(0)
 };
 this.update = function(a) {
  if (!this.finished)
   if (this.timer += a, this.timer > this.duration) this.finished = !0, 
      this.t = 1, this.delta = this.targetLowest + this.targetRangeNumber;
   else {
    a = this.t = this.timer * this.duration_inverse;
    switch (this.functionId) {
     case EASE_QUAD_IN:
      a *= a;
      break;
     case EASE_QUAD_OUT:
      a = -a * (a - 2);
      break;
     case EASE_QUAD_INOUT:
      a = 0.5 >= a ? 2 * a * a : 1 - 2 * --a * a;
      break;
     case EASE_CUBE_IN:
      a *= a * a;
      break;
     case EASE_CUBE_OUT:
      a = 1 + --a * a * a;
      break;
     case EASE_CUBE_INOUT:
      a = 0.5 >= a ? 4 * a * a * a : 1 + 4 * --a * a * a;
      break;
     case EASE_QUART_IN:
      a *= a * a * a;
      break;
     case EASE_QUART_OUT:
      a = 1 - (a -= 1) * a * a * a;
      break;
     case EASE_QUART_INOUT:
      a = 0.5 >= a ? 8 * a * a * a * a : (1 - (a = 2 * a - 2) * a * a * a) / 2 + 0.5;
      break;
     case EASE_QUINT_IN:
      a *= a * a * a * a;
      break;
     case EASE_QUINT_OUT:
      a = (a -= 1) * a * a * a * a + 1;
      break;
     case EASE_QUINT_INOUT:
      a = 1 > (a *= 2) ? a * a * a * a * a / 2 : ((a -= 2) * a * a * a * a + 2) / 2;
      break;
     case EASE_SIN_IN:
      a = -Math.cos(PI2 * a) + 1;
      break;
     case EASE_SIN_OUT:
      a = Math.sin(PI2 * a);
      break;
     case EASE_SIN_INOUT:
      a = -Math.cos(PI * a) / 2 + 0.5;
      break;
     case EASE_BOUNCE_IN:
      a = 1 - a;
      if (a < B1) {
       a = 1 - 7.5625 * a * a;
       break
      }
      if (a < B2) {
       a = 1 - (7.5625 * (a - B3) * (a - B3) +
        0.75);
       break
      }
      if (a < B4) {
       a = 1 - (7.5625 * (a - B5) * (a - B5) + 0.9375);
       break
      }
      a = 1 - (7.5625 * (a - B6) * (a - B6) + 0.984375);
      break;
     case EASE_BOUNCE_OUT:
      if (a < B1) {
       a *= 7.5625 * a;
       break
      }
      if (a < B2) {
       a = 7.5625 * (a - B3) * (a - B3) + 0.75;
       break
      }
      if (a < B4) {
       a = 7.5625 * (a - B5) * (a - B5) + 0.9375;
       break
      }
      a = 7.5625 * (a - B6) * (a - B6) + 0.984375;
      break;
     case EASE_BOUNCE_INOUT:
      if (0.5 > a) {
       a = 1 - 2 * a;
       if (a < B1) {
        a = (1 - 7.5625 * a * a) / 2;
        break
       }
       if (a < B2) {
        a = (1 - (7.5625 * (a - B3) * (a - B3) + 0.75)) / 2;
        break
       }
       if (a < B4) {
        a = (1 - (7.5625 * (a - B5) * (a - B5) + 0.9375)) / 2;
        break
       }
       a = (1 - (7.5625 * (a - B6) * (a - B6) + 0.984375)) / 2;
       break
      }
      a =
       2 * a - 1;
      if (a < B1) {
       a = 7.5625 * a * a / 2 + 0.5;
       break
      }
      if (a < B2) {
       a = (7.5625 * (a - B3) * (a - B3) + 0.75) / 2 + 0.5;
       break
      }
      if (a < B4) {
       a = (7.5625 * (a - B5) * (a - B5) + 0.9375) / 2 + 0.5;
       break
      }
      a = (7.5625 * (a - B6) * (a - B6) + 0.984375) / 2 + 0.5;
      break;
     case EASE_CIRC_IN:
      a = -(Math.sqrt(1 - a * a) - 1);
      break;
     case EASE_CIRC_OUT:
      a = Math.sqrt(1 - (a - 1) * (a - 1));
      break;
     case EASE_CIRC_INOUT:
      a = 0.5 >= a ? (Math.sqrt(1 - 4 * a * a) - 1) / -2 : (Math.sqrt(1 - 
            (2 * a - 2) * (2 * a - 2)) + 1) / 2;
      break;
     case EASE_EXPO_IN:
      a = Math.pow(2, 10 * (a - 1));
      break;
     case EASE_EXPO_OUT:
      a = -Math.pow(2, -10 * a) + 1;
      break;
     case EASE_EXPO_INOUT:
      a =
       0.5 > a ? Math.pow(2, 10 * (2 * a - 1)) / 2 : (-Math.pow(2, -10 * 
              (2 * a - 1)) + 2) / 2;
      break;
     case EASE_BACK_IN:
      a = a * a * (2.70158 * a - 1.70158);
      break;
     case EASE_BACK_OUT:
      a = 1 - --a * a * (-2.70158 * a - 1.70158);
      break;
     case EASE_BACK_INOUT:
      a *= 2;
      if (1 > a) {
       a = a * a * (2.70158 * a - 1.70158) / 2;
       break
      }
      a--;
      a = (1 - --a * a * (-2.70158 * a - 1.70158)) / 2 + 0.5
    }
    this.t = a;
    this.delta = this.targetLowest + this.targetRangeNumber * this.t
   }
 }
}

源码https://www.ormcc.com/

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

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

 

33945bc54df90d6d5d0bdb742bc5f071.gif

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

飞书开发学习笔记(一)-应用创建和测试

飞书开发学习笔记(一)-应用创建和测试 一.前言 现在大企业用的办公IM软件中,飞书是口碑最好的&#xff0c;不得不说&#xff0c;字节在开发产品方面&#xff0c;确实有自己独到的竞争力&#xff0c;比如说抖音、头条、飞书。在办公会议和云文档的体验上&#xff0c;其它的办公…

实验四: Android 资源访问

实验四: Android 资源访问 4.1 实验目的 本次实验的目的是让大家熟悉 Android 中的资源&#xff0c;资源指的是代码中使用 的外部文件&#xff0c;这些文件作为应用程序的一部分&#xff0c;被编译到应用程序中。 4.2 实验要求 掌握字符串资源&#xff0c;颜色资源和尺寸资源…

第五部分:Tomcat

5.1&#xff1a;JavaWeb 5.1.1&#xff1a;JavaWeb的概念 ①什么是JavaWeb? JavaWeb是指所有通过Java语言编写可以通过浏览器访问的程序的总称 JavaWeb是基于请求和响应来开发的 ②什么是请求&#xff1f; 请求是指客户端给服务器发送数据&#xff0c;叫请求Request ③什么是…

时空智友企业流程化管控系统文件存在任意文件上传漏洞

时空智友企业流程化管控系统文件存在任意文件上传漏洞 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: app"时空智友V10.1" 漏洞复现1. 构造poc2. 发送数据包&#xff0c;上传文件3. 访问webshellwebshell地址 免责声明 仅用于技术交流,目的是向相关安全人员展示漏…

NUUO网络摄像头(NVR)RCE漏洞复现

简介 NUUO Network Video Recorder&#xff08;NVR&#xff09;是中国台湾NUUO公司的一款网络视频记录器。 NUUO NVR视频存储管理设备的__debugging_center_utils___.php文件存在未授权远程命令执行漏洞&#xff0c;攻击者可在没有任何权限的情况下通过log参数执行任意命令。…

【产品经理从0到1】ID(工业设计)知识构建

目录 一、ID知识架构思维导图 ​二、3D打印设计工具 导语&#xff1a;作为一个硬件产品经理&#xff0c;虽然不需要自己进行工业设计&#xff0c;但是若要对产品外观和品质细节进行更深入和准确的把控&#xff0c;就需要了解工业设计的相关知识。 一、ID知识架构思维导图 二、…

JavaScript(WebAPI)

文章目录 什么是WebAPIDOM 基本概念DOM 树事件 操作元素获取/修改元素内容获取/修改元素属性获取/修改表单元素属性获取/修改样式属性 网页版猜数字游戏实现一个表白墙 什么是WebAPI 前面学习的 JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: …

两天实现思维导图的协同编辑?用Yjs真的可以

最近使用 Yjs 给自己开源的一个思维导图加上了协同编辑的功能&#xff0c;得益于该框架的强大&#xff0c;一直觉得很复杂的协同编辑能力没想到实现起来异常的简单&#xff0c;所以通过本文来安利给各位。 要实现协同编辑&#xff0c;目前主要有两种算法&#xff0c;一是 OT&a…

关于Intel Press出版的《Bedyong BIOS》第2版的观后感

文章目录 此书的背景UEFI运行时DXE基础CPU架构协议PCI协议UEFI驱动的初始化串口DXE驱动示例 《Beyond BIOS》首先介绍一个简单的UEFI应用程序模块&#xff0c;用于展示UEFI应用程序的行为。作者为Waldo。该模块名为“InitializeHelloApplication”&#xff0c;它接受两个参数&a…

【Mysql】Mysql中表连接的原理

连接简介 在实际工作中&#xff0c;我们需要查询的数据很可能不是放在一张表中&#xff0c;而是需要同时从多张表中获取。下面我们以简单的两张表为例来进行说明。 连接的本质 为方便测试说明&#xff0c;&#xff0c;先创建两个简单的表并给它们填充一点数据&#xff1a; …

保障效率与可用,分析Kafka的消费者组与Rebalance机制

系列文章目录 上手第一关&#xff0c;手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么&#xff0c;以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析&#xff0c;打破面试难关 防止消息丢失与消息重复——Kafka可…

react+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)

本来写这个特效 我打算用css实现的&#xff0c;结果是一波三折&#xff0c;我太难了&#xff0c;最终没能用css实现&#xff0c;转战了canvas来实现。来吧先看效果图 当然这个图的波浪高度、频率、位置、速度都是可调的&#xff0c;请根据自己的需求调整&#xff0c;如果你讲波…

windows10系统-17-文献管理软件

参考诸多文献管理软件的优劣比较如何&#xff1f;你有哪些使用心得&#xff1f; 参考我愿称之为目前最好用的文献管理和阅读软件&#xff01;readpaper 1 文献总结 文献总结是非常重要的一项技能&#xff0c;不知道大家看完文献后有没有总结文献的习惯&#xff0c;有的话那挺…

数据仓库-拉链表

在数据仓库中制作拉链表&#xff0c;可以按照以下步骤进行&#xff1a; 确定需求&#xff1a;首先明确需要使用拉链表的场景和需求。例如&#xff0c;可能需要记录历史数据的变化&#xff0c;以便进行时间序列分析等。设计表结构&#xff1a;在数据仓库中&#xff0c;拉链表通…

Web自动化测试 —— PageObject设计模式!

一、page object 模式简介 1.1、传统 UI 自动化的问题 无法适应 UI 频繁变化无法清晰表达业务用例场景大量的样板代码 driver/find/click 二、page object 设计原则 2.1、POM 模式的优势 降低 UI 变化导致的测试用例脆弱性问题让用例清晰明朗&#xff0c;与具体实现无关 2.…

JVM常用命令

jps —查看pid jstat -gcutil 4364 1000 2000 —查看堆内存占用百分比&#xff0c;每秒打印1次&#xff0c;总共打印2000次 S0&#xff1a;幸存1区当前使用比例 S1&#xff1a;幸存2区当前使用比例 E&#xff1a;伊甸园区使用比例 O&#xff1a;老年代使用比例 M&#xff1a;元…

服务Service

一、服务概述 Service(服务)是Android四大组件之一&#xff0c;是能够在后台长时间执行操作并且不是供用户界面的应用程序组件。Senice可以与其他组件进行交互&#xff0c;一般由Activity启动&#xff0c;但是并不依赖于Activity。当Activity的生命周期结束时&#xff0c;Serv…

野火霸天虎 STM32F407 学习笔记_1 stm32介绍;调试方法介绍

STM32入门——基于野火 F407 霸天虎课程学习 前言 博主开始探索嵌入式以来&#xff0c;其实很早就开始玩 stm32 了。但是学了一段时间之后总是感觉还是很没有头绪&#xff0c;不知道在学什么。前前后后分别尝试了江协科技、正点原子、野火霸天虎三次 stm32 的课程学习。江协科…

学Python,一个月从小白到大神?看你怎么学!

Python是一门超强大而且超受欢迎的编程语言。它被用在各种领域&#xff0c;比如网站开发、数据分析、人工智能和机器学习。学会Python会给你创造很多职业机会&#xff0c;所以绝对是值得一试的。 但你有没有过这样的梦想&#xff1a;一个月时间&#xff0c;从Python小白变成Py…

Docker DeskTop安装与启动(Windows版本)

一、官网下载Docker安装包 Docker官网如下&#xff1a; Docker官网不同操作系统下载页面https://docs.docker.com/desktop/install/windows-install/ 二、安装Docker DeskTop 2.1 双击 Docker Installer.exe 以运行安装程序 2.2 安装操作 默认勾选&#xff0c;具体操作如下…