废柴勇士(据说没有人能坚持37秒)
欢迎来到程序小院
废柴勇士
玩法:点击屏幕下方左右按键击杀怪物,怪物会在左右方向同时来袭,快速点击按钮进行击杀怪物,看您能够坚持多少秒,
据说还没有能够坚持37秒,快去击杀怪物挑战吧^^。
开始游戏
https://www.ormcc.com/play/gameStart/194

html
<canvas id="gameCanvas" width="480" height="800"></canvas>
css
h2.title{display: block;margin: 50px auto;text-align: center;
}
js
var heroLayer = null;
var monsterLayer = null;
var explosionLayer = null;var isFirstPlay = true; //是否第一次玩这个游戏
var prepareMonsterArr = [];//即将出现的怪物数组
var monsterArray = [];//已经出现的怪物
var monsterShadowArray = [];//所有已出现的怪物的影子
var delArray = [];//被砍死的怪物,准备删除
var touchLocationX = null;//触摸的X坐标位置
var positionY = null;//怪物和hero的Y坐标
var bgSprite = null; //背景图片
var shadowBatchNode = null;
var heroSprite = null; //主角
var heroShadow = null;//主角的影子
var targetX = 0;//怪物要到达的X坐标
var durationLabel = null;//时间标签
var duration = 0;//游戏坚持的时间
var hpMax = 3;
var hpLabel = null;//血量标签
var hpProgress = null;
var hp = 0;//血量
var hpNode = null;
var scoreLabel = null;//分数标签
var score = 0;//分数
var isGameOver = false;//游戏是否结束
var coolDowan = 0;//冷却时间
var skillProgress = null;//技能冷却进度条var isSkillPeriod = false; //是否在释放技能期间
var attackDir = 0;//hero攻击的方向,0表示不再攻击,1表示向左攻击,2表示向右攻击
var response = null;
var responsefailedLabel;//请求网络失败时显示的内容
var isSharelayer = false;//是否是分享界面var BgLayer = cc.Layer.extend({ctor:function(){this._super();bgSprite = cc.Sprite.create(res.bg1_jpg);bgSprite.setPosition(cc.p(240,400));bgSprite.setScale(1.6);this.addChild(bgSprite);}
});
/*** 第一次游戏时的引导过程*/
guidePrecess:function(){var noticeNode = cc.Node.create();var noticeSprite = cc.Sprite.create(res.notice_board_png);noticeSprite.setPosition(cc.p(240,840));//提示窗初始化在屏幕上方noticeNode.addChild(noticeSprite);noticeSprite.runAction(cc.Sequence.create(cc.MoveTo.create(0.3,cc.p(240,400)),cc.MoveTo.create(0.05,cc.p(240,420)),cc.MoveTo.create(0.05,cc.p(240,400))));//提示窗口移动到屏幕中间//添加一个巫妖精灵var lichSprite = cc.Sprite.create(res.monster6_1_png);lichSprite.setPosition(cc.p(-lichSprite.getContentSize().width/2,450));//初始位置在屏幕中间左侧外noticeNode.addChild(lichSprite);this.addChild(noticeNode,3);var lichMoveTo = cc.moveTo(0.2,cc.p(lichSprite.getContentSize().width/2,450));var lichAnim = cc.Animation.create();for(var i = 1; i <= 4; i++){var frame = "/default/game/fcys/res/monster6_" + i + ".png";lichAnim.addSpriteFrameWithFile(frame);}lichAnim.setDelayPerUnit(0.15);lichSprite.runAction(cc.RepeatForever.create(cc.Animate.create(lichAnim)));//播放帧动画lichSprite.runAction(cc.Sequence.create(cc.DelayTime.create(0.4),lichMoveTo,cc.CallFunc.create(noticeCallback)));//移动到屏幕左侧内,回调noticeCallback函数
}
//定时更新函数,更新游戏坚持时间、冷却时间、准备出现的怪物
updateDuration:function(dt){duration += dt;coolDowan += dt;if(coolDowan <= 30){//var to = cc.ProgressTo.create(0.01, (30 - coolDowan) / 30 * 100);//skillProgress.runAction(to);}else{coolDowan = 30;}var tempArr = [];for(var i = 0; i < prepareMonsterArr.length; i++){if(prepareMonsterArr[i].time <= duration){tempArr.push(prepareMonsterArr[i]);//即将出现的怪物的属性添加到tempArr数组中}else{break;}}for(var i = 0; i < tempArr.length; i++){this.createMonster(tempArr[i]);//创建即将出现的怪物}deleteChildFromArray(prepareMonsterArr,tempArr);//从prepareMonsterArr中删除已创建的怪物if(duration >= 88){gameOver();}
}
/*** 创建怪物* @param monsterData 怪物的属性*/
createMonster:function(prepareMonsterData){var monsterSprite = cc.Sprite.create("/default/game/fcys/res/monster" + prepareMonsterData.type + "_1.png");//根据类型选择对应的图片monsterSprite.setScale(1.0/0.8);monsterSprite.setAnchorPoint(cc.p(0.5, 0));var dir = Math.random();if(Math.random() < prepareMonsterData.direction){targetX = 180;monsterSprite.setPosition(cc.p(-30,positionY - 55));}else{targetX = 300;monsterSprite.setPosition(cc.p(510,positionY - 55));monsterSprite.setFlippedX(true);//右边出现的怪物镜像显示}/*if(prepareMonsterData.direction == 0){//如果怪物出现的方向是随机的,则产生一个1或2的随机数,1表示左边,2表示右边prepareMonsterData.direction = Math.floor(Math.random() * 10 % 2 + 1);}if(prepareMonsterData.direction == 1){//从左边出现的怪物targetX = 180;monsterSprite.setPosition(cc.p(-30,positionY - 65));}else if(prepareMonsterData.direction == 2){//从右边出现的怪物targetX = 300;monsterSprite.setPosition(cc.p(510,positionY - 65));monsterSprite.setFlippedX(true);//右边出现的怪物镜像显示}*/monsterArray.push(monsterSprite);//已出现的怪物添加到monsterArray数组中monsterLayer.getChildByTag(prepareMonsterData.type).addChild(monsterSprite,1,prepareMonsterData.type);//添加怪物到Layer上,TAG即为怪物的类型//不同的怪物类型初始化不同的血量if(prepareMonsterData.type == 1 || prepareMonsterData.type ==3|| prepareMonsterData.type == 4 || prepareMonsterData.type == 5){monsterSprite.setUserData(monsterUserData(1,1));}else{monsterSprite.setUserData(monsterUserData(2,2));}var walkLine = createMonsterWalkLine(prepareMonsterData.type,prepareMonsterData.rampageProb);//根据怪物类型设置怪物的行走路线和Actionif(prepareMonsterData.type ==1 || prepareMonsterData.type == 2|| prepareMonsterData.type == 5 || prepareMonsterData.type == 6){monsterSprite.runAction(createMonsterWalkAnimate(prepareMonsterData.type));monsterSprite.runAction(cc.Sequence.create(walkLine, cc.CallFunc.create(monsterAttackCallback)));}else if(prepareMonsterData.type ==3 || prepareMonsterData.type ==4){monsterSprite.runAction(walkLine);}
}
源码
https://www.ormcc.com/
需要源码请关注添加好友哦^ ^
转载:欢迎来到本站,转载请注明文章出处
https://ormcc.com/

相关文章:
废柴勇士(据说没有人能坚持37秒)
欢迎来到程序小院 废柴勇士 玩法:点击屏幕下方左右按键击杀怪物,怪物会在左右方向同时来袭,快速点击按钮进行击杀怪物,看您能够坚持多少秒, 据说还没有能够坚持37秒,快去击杀怪物挑战吧^^。开始游戏https:…...
buuctf_练[羊城杯2020]easyphp
[羊城杯2020]easyphp 文章目录 [羊城杯2020]easyphp掌握知识解题思路关键paylaod 掌握知识 .htaccess文件的利用,把自己指定当做 php文件处理;preg_match正则匹配的了解,stristr函数的绕过;file_put_contents文件写入操作的了…...
【Linux】安装配置虚拟机及虚拟机操作系统的安装
目录 一、操作系统 1. 介绍 2. 功能 3. 有哪些 4. 个人版本和服务器版本的区别 二、VMWare虚拟机 1. 安装 2. 配置 三、安装配置Windows Server 1. 配置 2. 安装 四、虚拟机的环境配置及连接 1. 主机连接虚拟机 2. 虚拟机环境配置及共享 3. 环境配置 一、操作系…...
hugo-stack for github
静态博客框架jekyll、hexo和hugo三者之间的区别与差异 博客生成器? 全名为静态网站生成器, 可在任意拥有主机功能的环境下寄存(托管)可直接配合域名进行全球访问 劣势: 每次更新网页必须重新生成整个网站编译速度(单位:秒) Jek…...
【uniapp】proxy 代理切换至线上测试地址调试接口
本地测试地址形如:http://192.168.124.x:xxxx 线上测试地址形如:https://xxxx.xxxx.com 使用线上地址之后需要修改配置项 secure 为 true const constant require(./src/utils/constant) module.exports {devServer: {proxy: {/api: {target: constan…...
对比Vue2和Vue3的自定义指令
一、自定义指令简介 自定义指令是Vue提供的能力,用于注册自定义的指令,从而实现一些自定义的DOM操作。 二、Vue2中自定义指令 在Vue2中,自定义指令通过全局方法Vue.directive()进行注册: // 注册全局指令v-focus Vue.directive(focus, {inserted: function(el) {el.focus()…...
Python:实现日历到excel文档
背景 日历是一种常见的工具,用于记录事件和显示日期。在编程中,可以使用Python编码来制作日历。 Python提供了一些内置的模块和函数,使得制作日历变得更加简单。 在本文,我们将探讨如何使用Python制作日历,并将日历输出到excel文档中。 效果展示 实现 在代码中会用到cale…...
C++ 异常和错误处理机制:如何使您的程序更加稳定和可靠
在C编程中,异常处理和错误处理机制是非常重要的。它们可以帮助程序员有效地处理运行时错误和异常情况。本文将介绍C中的异常处理和错误处理机制。 什么是异常处理? 异常处理是指在程序执行过程中发生异常或错误时,程序能够捕获并处理这些异常…...
第1章 Java、IDEA环境部署与配置
JavaEE简介与IDE环境部署 课程目录 JavaEE简介JDK环境部署IntelliJ IDEA环境部署 JavaEE简介 1. JavaEE是什么? Java EE(Java Platform,Enterprise Edition)是sun公司(2009年4月20日甲骨文将其收购)推…...
如何进行二进制文件的读写操作?
在C语言中,进行二进制文件的读写操作是非常常见的任务,尤其在处理文件、图像、音频和视频等二进制数据时。本文将详细介绍如何进行二进制文件的读写操作,包括如何打开文件、读取文件、写入文件以及关闭文件。我们将使用标准C库中的函数来执行…...
python实现PDF表格与文本分别导出EXCEL
现需将pdf 转换至Excel , 目前实现方式:将PDF的TABLE部分与 非 TABLE部分分别导出至Excel两个sheet中 1)、识别PDF中的表格块 2)、将PDF转换为Word格式 3)、提取Word中非表格的文本数据 4)、对文本与表格重…...
Java开发-WebSocket
WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信-浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并实现 双向数据传输。 使用 导入maven坐标 <dependency><groupId>org.springframework.bo…...
SpringDoc API文档工具集成SpringBoot - Swagger3
1、引言 之前在Spring Boot项目中一直使用的是SpringFox提供的Swagger库,发现已经超过3年没出新版本了!SpringDoc是一款可以结合Spring Boot使用的API文档生成工具,基于OpenAPI 3,是一款更好用的Swagger库!值得一提的是…...
Java将djvu文件转成pdf
需求来源 迫于有部分资源是djvu格式的文件,需要预览这部分文件,web端无法直接预览djvu,所以需要将djvu转成pdf。 转换方法 简单来说就是先把djvu文件转换成tiff文件,再将tiff文件转换成pdf文件。 Ubuntu服务器 如果服务器是U…...
【机器学习合集】激活函数合集 ->(个人学习记录笔记)
文章目录 综述1. S激活函数(sigmoid&Tanh)2. ReLU激活函数3. ReLU激活函数的改进4. 近似ReLU激活函数5. Maxout激活函数6. 自动搜索的激活函数Swish 综述 这些都是神经网络中常用的激活函数,它们在非线性变换方面有不同的特点。以下是这些激活函数的主要区别&am…...
【从0到1设计一个网关】什么是网关?以及为什么需要自研网关?
文章目录 什么是网关?网关类型网关的优缺点目前的网关解决方案有哪些?为什么要自研Gateway网关?自研网关需要注意什么? 注: 这篇文章作为我的网关的第一篇文章,并不涉及任何代码,只是提及了网关…...
Tp框架如何使用事务和锁,还有查询缓存
1.事务 在ThinkPHP框架中,可以使用think\db\Transaction类来实现事务。 use think\Db; use think\db\Transaction;// 开始事务 Db::startTrans();try {// 执行数据库操作Db::table(user)->where(id, 1)->update([name > John]);// 提交事务Db::commit(); }…...
Java IDEA feign调用上传文件MultipartFile以及实体对象亲测可行
Java IDEA feign调用上传文件MultipartFile以及实体对象亲测可行 1. 报错 java.lang.IllegalStateException: Body parameter cannot be used with form parameters2. 解决参考 1. 报错 java.lang.IllegalStateException: Body parameter cannot be used with form parameters …...
【产品经理】APP备案(阿里云)
工信部《关于开展移动互联网应用程序备案工作的通知》 工业和信息化部印发了《关于开展移动互联网应用程序备案工作的通知》,“在中华人民共和国境内从事互联网信息服务的App主办者,应当依照相关法律法规等规定履行备案手续,未履行备案手续的…...
Overmind VS Redux
Overmind Overmind 是一个状态管理库,它可以帮助你管理应用程序的状态和副作用。下面是一个使用 Overmind 的简单示例: 首先,我们需要安装 Overmind 和它的 React 绑定: npm install overmind overmind-react然后,我…...
不止是拆网卡:以联想ThinkCentre M7131z为例,聊聊老旧一体机的升级改造可能性
联想ThinkCentre M7131z改造指南:从拆网卡到全面性能升级 老旧商用一体机往往被贴上"性能瓶颈"的标签,但联想ThinkCentre M7131z系列却隐藏着令人惊喜的改造潜力。这台发布于2015年前后的商用一体机,凭借其模块化设计和充足的内部空…...
Apache Spark 第 11 章:Delta Lake 与 Lakehouse
第十一章深入拆解 Delta Lake 与 Lakehouse 架构,这是现代数据工程的核心组件。从传统数据湖的痛点出发,逐层剖析 Delta Lake 的实现原理。 第一张:为什么需要 Delta Lake。三大痛点和 Delta Lake 的解法一目了然。接下来看最核心的实现机制—…...
Visio高效安装与激活全攻略:从零开始到成功运行
1. Visio安装前的准备工作 第一次安装Visio的朋友们,我强烈建议先做好这些准备工作。我自己在帮同事安装Visio时,经常遇到因为前期准备不足导致安装失败的情况。首先,检查你的电脑是否已经安装了其他版本的Office软件。如果之前安装过Office …...
GLM-4.1V-9B-Base多场景落地:医疗影像辅助描述、零售货架识别、文旅导览图解
GLM-4.1V-9B-Base多场景落地:医疗影像辅助描述、零售货架识别、文旅导览图解 1. 模型介绍 GLM-4.1V-9B-Base是智谱开源的一款视觉多模态理解模型,专门针对图像内容识别、场景描述和目标问答等任务进行了优化。这个模型特别擅长处理中文视觉理解任务&…...
解锁Claude无限潜能:技能生态系统的构建艺术
解锁Claude无限潜能:技能生态系统的构建艺术 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-claude-s…...
春季2021亚马逊研究奖获奖者公布
春季 2021 某机构研究奖获奖者公布 2021年7月,某机构通知申请人已成为2021年春季某机构研究奖的获得者。该奖项旨在为跨多个学科领域开展研究课题的学术研究人员提供无限制资金和某云平台服务积分。今天,我们正式公布26位获奖者,他们来自11个…...
Clawdbot整合Qwen3:32B效果体验:长文档理解与精准问答演示
Clawdbot整合Qwen3:32B效果体验:长文档理解与精准问答演示 1. 从痛点出发:为什么你需要这个工具 如果你经常需要处理技术文档、合同、论文或者产品手册,一定遇到过这样的困扰:面对一份几十页甚至上百页的PDF文件,想要…...
PFC(5.0)模拟:GBM模型(grain- based model ) pb-sj或pb-...
PFC(5.0)模拟:GBM模型(grain- based model ) pb-sj或pb-pb 单轴压缩。 模拟花岗岩等矿物晶体岩石,多种矿物晶体模型,其中矿物种类 数量分布可以自定义。 可以监测sj裂纹,和各矿物内裂纹。PFC5.0的GBM模型玩岩石破裂是真…...
iOS 版本nethack如何更换图形包-iNetHack2
这个iNetHack2这个应该我都没有找到设置按钮。后来无意中在贴吧中看到的。原来它的设置竟然在iOS的系统设置之中,是我少见多怪了,这可能是我见过的App 第1个在系统设置中设置的。UI中的Tileset 设置成Tiles32的界面风格就与nethack官方的UI一致了。...
别只盯着协议!用TC8测试案例深度解读车载网络中的ARP与ICMP:安全与稳定的隐藏关卡
车载以太网底层协议实战:从TC8测试案例看ARP与ICMP的安全设计 当一辆现代汽车以100km/h行驶时,其车载网络每秒需要处理超过5000条网络报文。这些报文中的绝大多数,都由ARP和ICMP这样的基础协议承载。在传统IT领域被视为"简单"的协议…...
