跳跳狗小游戏

news2024/11/26 4:25:09

欢迎来到程序小院

跳跳狗

玩法:一直弹跳的狗狗,鼠标点击屏幕左右方向键进行弹跳,弹到不同物品会有不同的分数减扣,规定的时间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.coloradmin.cn/o/1167343.html

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

相关文章

B端设计必看的9个开源组件库,值得收藏!

如果你想开发一款To B Web端产品&#xff0c;如何选择令人眼花缭乱的开源组件库&#xff1f;行业团队常用的B端开源组件库是什么&#xff1f;今天&#xff0c;我们将为您带来入门级开源组件库的介绍。你可以先有一个大致的了解&#xff0c;希望能对你有所帮助。未来&#xff0c…

【带货案例】从美区十月带货达人身上寻找商品爆款秘诀!

2023只剩下最后两个月&#xff0c;年底也是各大商家冲刺卖货的黄金时期&#xff01; 带货过程中的一个重要环节即【达人营销】&#xff0c;背受跨境卖家关注。 下面选取美区十月带货达人TOP3&#xff0c;分析其带货秘诀。 据超店有数达人榜单显示&#xff1a;美区十月带货达人…

山东专业商品信息管理系统解决方案,智能管理多门店,可定制-亿发

众所周知&#xff0c;现如今商品种类繁多、品牌众多、商品信息量庞大&#xff0c;同时商品销售价格经常变动&#xff0c;还需管理商品批次&#xff0c;避免库存积压和过期&#xff0c;这给山东地区的传统企业在商品管理上带来了极大的挑战。 随着数字化时代的来临&#xff0c;山…

Java Web 学习笔记(一) —— MySQL(1)

目录 1 SQL简介2 MySQL基本语法2.1 语法规则2.2 数据类型 3 DDL3.1 操作数据库3.2 操作表 4 DML4.1 添加数据4.2 修改数据4.3 删除数据 5 DQL5.1 基础查询5.2 条件查询5.3 排序查询5.4 聚合查询5.5 分组查询5.6 分页查询 1 SQL简介 SQL &#xff1a;Structured Query Language&…

iOS App Store上传项目报错 缺少隐私政策网址(URL)解决方法

iOS App Store上传项目报错 缺少隐私政策网址(URL)解决方法 一、问题如下图所示&#xff1a; 二、解决办法&#xff1a;使用Google浏览器&#xff08;翻译成中文&#xff09;直接打开该网址 https://www.freeprivacypolicy.com/free-privacy-policy-generator.php 按照要求…

蓝桥杯每日一题2023.11.3

题目描述 承压计算 - 蓝桥云课 (lanqiao.cn) 题目分析 将重量存入a中&#xff0c;每一层从上到下进行计算&#xff0c;用d进行计算列的重量&#xff0c;当前d的重量应为正上数组和右上数组的个半和并加上自身的重量 计算到30层记录最大最小值&#xff0c;进行比例运算即可 …

Ubuntu20.04搭建RISC-V和qemu环境

1. 前言 risc-v是一个非常有潜力的指令集框架&#xff0c;最近对其产生了浓厚的兴趣&#xff0c;由于之前对于这方面的知识储备很少&#xff0c;在加上网上的教程都是点到为止&#xff0c;所以安装过程异常曲折。好在最后一步一步积累摸索&#xff0c;终于利用源码安装完成。看…

python对象方法是什么

python对象方法是什么 概念 1、在类中&#xff0c;对象调用的函数称为对象方法&#xff0c;一般也称为方法。 定义格式 class 类名:def 函数1(self, 参数1, 参数2):...实例 2、在定义对象方法时&#xff0c;第一个参数默认使用self&#xff0c;这个参数在定义时必须存在&am…

new Proxy

Proxy&#xff1a;代理 - JavaScript |MDN网络 (mozilla.org) 首先要确定Proxy的入参&#xff1a;new Proxy 的两个参数分别是目标对象和处理程序。 如下&#xff0c;写了个只有两个方法的Proxy let target {name:张三,age:18}; let handler {get(target, property, recei…

今天,他们一起聊了聊数据融合|CNCC 2023

2023 年 10 月 26-28 日&#xff0c;第二十届中国计算机大会(CNCC 2023)在沈阳市举行&#xff0c;27 日下午&#xff0c;由 OceanBase 申办的「下一代数据融合技术趋势」技术论坛圆满落幕。 会上&#xff0c;OceanBase 联合多位数据库领域知名学者、专家围绕 HTAP 工作负载融合…

Vector CANape 21安装

系列文章目录 文章目录 系列文章目录简介下载 Vector CANape 21 简介 CANape基础操作介绍&#xff1a;工程创建&#xff0c;测量&#xff0c;标定&#xff0c;离线分析操作。 下载 Vector CANape 21 如下是Vector CANape21的下载安装步骤&#xff1a; https://www.vector.co…

uni-app 开发的H5 定位功能部署注意事项

一、H5部署的时候&#xff0c;如果设计到定位功能&#xff0c;需要注意以下几点 1、打包部署的时候需要在Web配置-定位和地图里面勾选一个地图&#xff0c;并配置key 2、打包部署需要域名是https协议的&#xff0c;大多数现代浏览器要求在HTTPS协议下才能够访问地理位置信息&a…

【Python基础知识四】控制语句

Python基础知识&#xff1a;控制语句 1 条件控制1.1 if语句1.2 match...case语句 2 循环语句2.1 for循环2.2 for...else语句2.3 while循环2.4 while 循环使用 else 语句2.5 无限循环 参考 Python控制语句主要包含顺序、选择和循环三个方面&#xff0c;下面主要从这三方面进行介…

winscp文件增量同步到linux服务器

一&#xff0c;点击同步 场景&#xff1a;在做服务器迁移的时候&#xff0c;文件好几十个G一天也迁移不完&#xff0c;每天还有增量的文件&#xff0c;先全量同步一次&#xff0c;然后再用增量同步&#xff0c;然后你用winscp的同步工具&#xff0c;进增量同步。 将本地文件同…

[JavaWeb]——JWT令牌技术

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 一、前言&#xff1a; 二、JWT令牌技术 2.1 概念介绍 2.2 组成介绍 2.3 JWT对象介绍 2.4 JWT生成 2.5 JWT校验 三、总结 一、前言&#xff1a; 问题抛出❓ 许多网页都会设置登录界面&#xff0c;我们点击…

HarmonyOS列表组件

List组件的使用 import router from ohos.routerEntry Component struct Index {private arr: number[] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]build() {Row() {Column() {List({ space: 10 }) {ForEach(this.arr, (item: number) > {ListItem() {Text(${item}).width(100%).heig…

光电直读水表支持短时间多次抄表吗

传统的水表读数方式已经逐渐无法满足人们对于便捷、准确的需求。为此&#xff0c;光电直读水表应运而生&#xff0c;它凭借出色的读数性能和稳定的准确性&#xff0c;赢得了广大用户的一致好评。那么&#xff0c;光电直读水表支持短时间多次抄表吗&#xff1f;答案是肯定的&…

centos7-lamp

目录 一、安装 1.关闭防火墙关闭selinux 2.安装apache 3.配置主页 二、部署mariadb&#xff08;mysql&#xff09; 1.用yum安装 2.启动数据库 3.看下端口是否listen 4登录mysql 5.修改下密码 三、安装php 1.安装依赖包 2.安装php解释器和php连接mysql驱动 3.配置…

网站文章收录因素,别人复制文章排名比你原创的好?

我经常看到有站长抱怨“网站不收录”&#xff0c;“排名不好”&#xff0c;“复制的文章为什么秒收”之类的问题。对于SEO从业者来说&#xff0c;这确实是一个打击&#xff0c;认为搜索引擎不公平。凭什么自己原创不收录&#xff0c;别人复制去了&#xff0c;秒收他的&#xff…

ClickHouse 学习之从高级到监控以及备份(二)

第 一 部分 高级篇 第 1 章 Explain 查看执行计划 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能可以看到&#xff0c;并且只能真正执行 sql&#xff0c;在执行日志里面查看。在 20.6 版本引入了原生的执行计划的语法。在 20.6.3 版本成…