为你摘星辰

欢迎来到程序小院

为你摘星辰

玩法:鼠标控制人物方向,点击鼠标键上升人物,经过⭐️⭐️吃掉获得分数,共三次生命,碰到红色障碍物减去一次生命,
人物掉落底部游戏结束,看你获得多少分^^。

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

html

  <script type="text/javascript" src="js/lib/phaser.min.js"></script>
  <script type="text/javascript" src="js/lib/mt.helper.js"></script>
  <script type="text/javascript" src="js/lib/mt.data.js"></script>
  <script type="text/javascript" src="js/main.js"></script>
  <script type="text/javascript" src="js/state/boot.js"></script>
  <script type="text/javascript" src="js/state/load.js"></script>
  <script type="text/javascript" src="js/state/menu.js"></script>
  <script type="text/javascript" src="js/state/play.js"></script>
  <script type="text/javascript" src="js/state/demo.js"></script>

css

*{
 padding: 0;
 margin: 0;
 border: none;
 user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: 
    none;
 box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; 
  -ms-box-sizing: border-box;
}
canvas{
 margin: 0 auto;
}

js

(function(){
 "use strict";
  var _loadFile = Phaser.Loader.prototype.loadFile;

 Phaser.Loader.prototype.loadFile = function(file){
  //var file = this._fileList[this._fileIndex];
  this.onFileStart.dispatch(this.progress, file.key, file.url);
  
  if(file.type == "font"){
   this.fontLoad(file, file.key, 'text', 'fileComplete', 'fileError');
   return;
  }
  
  if(file.type != "script"){
   _loadFile.call(this, file);
   return;
  }
  
  file.type = "unknown";
  this.scriptLoad(file, this.baseURL + file.url, 'text', 'fileComplete', 'fileError');
 };

 Phaser.Loader.prototype.scriptLoad = function (index, url, type, onload, onerror) {
  var script = document.createElement("script");
  script.src = url;
  var _this = this;
  script.onload = function(){
   window.setTimeout(function(){
    _this[onload](index);
   }, 0);
  };
  script.onerror = function(){
   return _this[onerror](index);
  };
  document.body.appendChild(script);
 };
 // end script loader
 
 // fix align by wordWrapWidth
 Phaser.Text.prototype.updateText = function () {
  if(!this || !this.texture){
   return;
  }
  this.texture.baseTexture.resolution = this.resolution;

  this.context.font = this.style.font;

  var outputText = this.text;

  if (this.style.wordWrap) {
   outputText = this.runWordWrap(this.text);
   maxLineWidth = this.wordWrapWidth;
  }

  //split text into lines
  var lines = outputText.split(/(?:\r\n|\r|\n)/);

  //calculate text width
  var lineWidths = [];
  var maxLineWidth = 0;
  var fontProperties = this.determineFontProperties(this.style.font);

  for (var i = 0; i < lines.length; i++)
  {
   var lineWidth = this.context.measureText(lines[i]).width;
   lineWidths[i] = lineWidth;
   maxLineWidth = Math.max(maxLineWidth, lineWidth);
  }

  var width = maxLineWidth + this.style.strokeThickness;

  this.canvas.width = (width + this.context.lineWidth) * this.resolution;

  //calculate text height
  var lineHeight = fontProperties.fontSize + this.style.strokeThickness;

  var height = lineHeight * lines.length + this.style.shadowOffsetY;

  this.canvas.height = height * this.resolution;

  this.context.scale(this.resolution, this.resolution);

  if (navigator.isCocoonJS)
  {
   this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
  }

  this.context.fillStyle = this.style.fill;
  this.context.font = this.style.font;
  this.context.strokeStyle = this.style.stroke;
  this.context.textBaseline = 'alphabetic';
  this.context.shadowOffsetX = this.style.shadowOffsetX;
  this.context.shadowOffsetY = this.style.shadowOffsetY;
  this.context.shadowColor = this.style.shadowColor;
  this.context.shadowBlur = this.style.shadowBlur;
  this.context.lineWidth = this.style.strokeThickness;
  this.context.lineCap = 'round';
  this.context.lineJoin = 'round';

  var linePositionX;
  var linePositionY;

  this._charCount = 0;

  //draw lines line by line
  for (i = 0; i < lines.length; i++)
  {
   linePositionX = this.style.strokeThickness / 2;
   linePositionY = (this.style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;

   if (this.style.align === 'right')
   {
    linePositionX += maxLineWidth - lineWidths[i];
   }
   else if (this.style.align === 'center')
   {
    linePositionX += (maxLineWidth - lineWidths[i]) / 2;
   }

   linePositionY += this._lineSpacing;

   if (this.colors.length > 0)
   {
    this.updateLine(lines[i], linePositionX, linePositionY);
   }
   else
   {
    if (this.style.stroke && this.style.strokeThickness)
    {
     this.context.strokeText(lines[i], linePositionX, linePositionY);
    }

    if (this.style.fill)
    {
     this.context.fillText(lines[i], linePositionX, linePositionY);
    }
   }
  }

  this.updateTexture();
 };
 // add scaleX/Y and anchorX/Y - so we can skip extra tweens
 Object.defineProperty(PIXI.Sprite.prototype, "scaleX", {
  set: function(val){
   this.scale.x = val;
  },
  get: function(){
   return this.scale.x;
  }
 });

 Object.defineProperty(PIXI.Sprite.prototype, "scaleY", {
  set: function(val){
   this.scale.y = val;
  },
  get: function(){
   return this.scale.y;
  }
 });

 Object.defineProperty(PIXI.Sprite.prototype, "anchorX", {
  set: function(val){
   this.anchor.x = val;
  },
  get: function(){
   return this.anchor.x;
  }
 });

 Object.defineProperty(PIXI.Sprite.prototype, "anchorY", {
  set: function(val){
   this.anchor.y = val;
  },
  get: function(){
   return this.anchor.y;
  }
 });

 Object.defineProperty(Phaser.Group.prototype, "scaleX", {
  set: function(val){
   this.scale.x = val;
  },
  get: function(){
   return this.scale.x;
  }
 });

 Object.defineProperty(Phaser.Group.prototype, "scaleY", {
  set: function(val){
   this.scale.y = val;
  },
  get: function(){
   return this.scale.y;
  }
 });

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

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

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

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

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

相关文章

排序算法的空间复杂度和时间复杂度

一、排序算法的时间复杂度和空间复杂度 排序算法 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 冒泡排序 O(n) O(n) O(n) O(1) 稳定 直接选择排序 O(n) O(n) O(n) O(1) 不稳定 直接插入排序 O(n) O(n) O(n) O(1) 稳定 快速排序 O(n…

ChatGPT付费创作系统V2.4.9独立版 +WEB端+ H5端 + 小程序端系统测试安装教程

播资源提供的GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序&#xff0c;是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。当前全民热议ChatGPT&#xff0c;流量超级大&#xff0c;引流不要太简单&#xff01;一键下单即可拥有自己的GPT&#xff01;…

【TASKING】如何提高编译器的编译速度

文章目录 前言一、How to Improve the compilation speed.1.1、Cache generated code to improve the compilation speed1.2 Influencing the Build TimeSFR File&#xff08;勾了可能会报错&#xff0c;好像得配合include一起用&#xff0c;暂未研究清除&#xff0c;仅供参考&…

死亡游戏:密室互猜硬币规则及其破解方法

今天听到一个有点小恐怖的死亡游戏 规则是 将你和最好的朋友 分别关进两个不同的房间 要关 100天 在被关的时间里 你们无法进行任何的沟通 每一天 会有一个人在你和朋友的房间分别抛一次硬币 你们需要去猜对方硬币的正反面 只需要一个人猜对了 则 相安无事 如果两个人都猜错了…

android手机平板拓展电脑音频

&#xff08;1&#xff09;首先确保电脑上有声卡&#xff0c;就是电脑右下角小喇叭能调音量&#xff0c;不管电脑会不会响&#xff0c;如果小喇叭标记了个错误&#xff0c;说明没有声卡&#xff0c;安装图上的虚拟声卡软件。 &#xff08;2&#xff09;图上第一个PC免安装及局…

图像二值化阈值调整——Triangle算法,Maxentropy方法

一. Triangle方法 算法描述&#xff1a;三角法求分割阈值最早见于Zack的论文《Automatic measurement of sister chromatid exchange frequency》主要是用于染色体的研究&#xff0c;该方法是使用直方图数据&#xff0c;基于纯几何方法来寻找最佳阈值&#xff0c;它的成立条件…

Qt 项目实战 | 音乐播放器

Qt 项目实战 | 音乐播放器 Qt 项目实战 | 音乐播放器播放器整体架构创建播放器主界面媒体对象状态实现播放列表实现桌面歌词添加系统托盘图标 资源下载 官方博客&#xff1a;https://www.yafeilinux.com/ Qt开源社区&#xff1a;https://www.qter.org/ 参考书&#xff1a;《Q…

怎么建模HEC-RAS【案例-利用HEC-RAS分析河道建筑对洪水管控的作用】 洪水计算、堤防及岸坡稳定计算、冲淤分析、壅水计算、冲刷计算、水工构筑物建模

背景介绍 人口数量的增长、不合理的区域规划和无计划的工程实践&#xff0c;让洪水对于人类而言变得极具风险。 为了最大程度地减少洪水造成的损害&#xff0c;采取管控措施往往需要在初期执行&#xff0c;为了研究这些管控措施&#xff0c;需要确定河段桥梁和作为调节的水利设…

[工业自动化-7]:西门子S7-15xxx编程 - PLC主站 - 电源模块

目录 前言&#xff1a; 一、主站电源PM VS PS 1.1 主站PM电源模块(PM) 1.2 主站PS电源模块 1.3 PM/PS电源模块区别 1.4 如何选择PM/PS电源 1.5 什么时候必须使用PM模块 1.6 什么时候必须使用PS模块 二、背板总线 三、电源模块的安装 前言&#xff1a; 一、主站电源PM…

电商项目之Java8函数式接口落地实践

文章目录 1 问题背景2 前言3 多处重复的重试机制代码4 优化后的代码5 进一步优化 1 问题背景 在电商场景中&#xff0c;会调用很多第三方的云服务&#xff0c;比如发送邮件、发起支付、发送验证码等等。由于网络存在抖动&#xff0c;有时候发起调用后会拿到500的状态码&#xf…

jquery的项目,html页面使用vue3 +element Plus

vue3&#xff0c;element引入 <script src"../vue3.3.8/vue.global.js"></script> <link rel"stylesheet" href"js/elementPlus/index.css"> <script src"js/elementPlus/index.full.js"></script>…

Flutter笔记:关于Flutter中的大文件上传(上)

Flutter笔记 关于Flutter中的大文件上传&#xff08;上&#xff09; 大文件上传背景与 Flutter 端实现文件分片传输 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#…

开发知识点-Pygame

Pygame Pygame最小开发框架与最小游戏游戏开发入门单元开篇 Pygame简介安装游戏开发入门语言开发工具的选择 Pygame最小开发框架与最小游戏 游戏开发入门单元开篇 Pygame简介安装 游戏开发入门语言开发工具的选择

【案例卡】clickhouse:多行数据拼接在一行

一、需求 针对clickhouse数据库中&#xff0c;group by 分组后的字符串字段&#xff0c;拼接处理在一行的问题实现。在mysql中&#xff0c;可以用group_concat()函数来实现&#xff0c;而clickhouse数据库不支持此函数&#xff0c;特此记录实现方式。 二、clickhouse相关函数…

FreeRTOS_内存管理

目录 1. 内存管理简介 2. 内存碎片 3. heap_1 内存分配方法 3.1 分配方法简介 4. heap_2 内存分配方法 4.1 分配方法简介 4.2 内存块详解 5. heap_4 内存分配方法 6. FreeRTOS 内存管理实验 6.1 实验程序 内存管理是一个系统基本组成部分&#xff0c;FreeRTOS 中大量…

【刚体姿态运动学】角速度和欧拉角速率的换算关系的详细推导

0 引言 本文以一种新的角度推导刚体姿态运动学&#xff0c;也即角速度和欧拉角速率之间的换算&#xff0c;不同于相似博文的地方在于&#xff0c;本文旨在从原理上给出直观清晰生动的解释。将详细过程记录于此&#xff0c;便于后续学习科研查找需要。 1 符号 符号含义 { E }…

STM32 GPIO

STM32 GPIO GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口&#xff0c;也就是我们俗称的IO口 根据使用场景&#xff0c;可配置为8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 数据0就是低电平&#xff0c…

一篇带你精通php

华子目录 什么是phpphp发展史平台支持和数据库支持网站静态网站和动态网站的区别静态网站动态网站的特点 关键名词解析服务器概念IP的概念域名DNS端口 web程序的访问流程静态网站访问流程动态网站访问流程 php标记脚本标记标准标记&#xff08;常用&#xff09; php注释 什么是…

Linux Hadoop平台伪分布式安装

Linux Hadoop 伪分布式安装 1. JDK2. Hadoop3. MysqlHive3.1 Mysql8安装3.2 Hive安装 4. Spark4.1 Maven安装4.2 Scala安装4.3 Spark编译并安装 5. Zookeeper6. HBase 版本概要&#xff1a; jdk&#xff1a; jdk-8u391-linux-x64.tar.gzhadoop&#xff1a;hadoop-3.3.1.tar.gzh…

Spring Ioc 容器启动流程

Spring容器的启动流程 本文基于 Spring 5.3.23 基于XML文件 public void test() {ApplicationContext applicationContext new ClassPathXmlApplicationContext("applicationContext.xml");User user applicationContext.getBean("user", User.class)…