效果演示:

代码目录:

主要代码实现:

HTML代码 :

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="js/lufylegend-1.10.1.min.js"></script><script>//当前浏览器是否是移动浏览器if (LGlobal.canTouch) {//指定要使用哪种缩放模式的值。LGlobal.stageScale = LStageScaleMode.EXACT_FIT;//如果是移动端的话 就平铺效果LSystem.screen(LStage.FULL_SCREEN);}</script>
</head><body><div id="legend"></div>
</body></html>
<script>// 引擎初始化函数。等同于 initinit(50, "legend", 800, 450, main);//素材变量var imgData = [{name: "back",path: "./images/back.jpg"},{name: "player",path: "./images/player.png"},{name: "item0",path: "./images/item0.png"},{name: "item1",path: "./images/item1.png"},{name: "item2",path: "./images/item2.png"},{name: "item3",path: "./images/item3.png"},{name: "item4",path: "./images/item4.png"},{name: "item5",path: "./images/item5.png"},{name: "item6",path: "./images/item6.png"},{name: "item7",path: "./images/item7.png"}];var imglist;//层对象var backLayer, playerLayer, itemLayer, overLayer, loadingLayer;var hero; //人物角色var step = 50,stepindex = 0; //速度和初始化的图片位置var point = 0,pointTxt; //积分 和 积分的文本var hp = 1,hpTxt; //生命值 和生命值显示的文本function main() {//创建一个加载层对象  1 - 7loadingLayer = new LoadingSample3();//将加载层放到舞台上面 (底图)addChild(loadingLayer);//加载素材LLoadManage.load(imgData, function(progress) {loadingLayer.setProgress(progress);}, gameInit);}//游戏记载完素材后初始化function gameInit(result) {//删除掉加载层removeChild(loadingLayer);imglist = result;//绘制背景层//新建一个图层backLayer = new LSprite();//将背景图层添加到舞台上面addChild(backLayer);//添加背景图片   //自定义方法addBackGround();//添加人物  自定义方法addPlayer();//添加物品层itemLayer = new LSprite();//将物品添加到背景层backLayer.addChild(itemLayer);//初始化人物运动绑定事件addEvent();//添加分数addText();//添加一个游戏结束层overLayer = new LSprite();//将游戏结束层添加到背景层里面去backLayer.addChild(overLayer);}function addText() {//创建一个文本类的对象hpTxt = new LTextField();//填充颜色hpTxt.color = "#ff0000";hpTxt.size = 30;hpTxt.x = 10;hpTxt.y = 10;backLayer.addChild(hpTxt);//积分文本pointTxt = new LTextField();pointTxt.color = "#ffffff";pointTxt.size = 30;pointTxt.x = 10;pointTxt.y = 50;backLayer.addChild(pointTxt);showText();}function showText() {hpTxt.text = "生命:" + hp;pointTxt.text = "积分:" + point;}//添加一个物品function addItem() {//实例化一个物品对象var item = new Item();item.x = 20 + Math.floor(Math.random() * (LGlobal.width - 50));itemLayer.addChild(item);}//物品对象function Item() {//继承base(this, LSprite, []);var self = this;//物品会有一个die模式self.mode = "";//随机产生一个下标var index = Math.floor(Math.random() * 8);//根据下标来判断一下物品是加分还是减分self.value = index < 4 ? 1 : -1;//获取图片对象var bitmap = new LBitmap(new LBitmapData(imglist[`item${index}`]));//将图片塞到物品对象里面self.addChild(bitmap);}Item.prototype.run = function() {var self = this;self.y += 5; //往下落var hit = self.checkHit(); //自定义的方法 检测碰撞if (hit || self.y > LGlobal.height) {self.mode = "die"; //消亡}}//检测碰撞方法Item.prototype.checkHit = function() {var self = this;if (LGlobal.hitTestArc(self, hero)) {if (self.value > 0) {//加分point += 1;} else {//减生命值hp -= 1;}return true;}return false;}function addEvent() {backLayer.addEventListener(LMouseEvent.MOUSE_DOWN, onDown);backLayer.addEventListener(LMouseEvent.MOUSE_UP, onUp);//播放事件  播放帧动画backLayer.addEventListener(LEvent.ENTER_FRAME, onframe);}function onDown(event) {if (event.selfX < LGlobal.width / 2) {hero.mode = "left";hero.anime.setAction(1); //设置人物的第几行动画} else {hero.mode = "right";hero.anime.setAction(2);}}function onUp() {hero.mode = "";hero.anime.setAction(0); //弹起鼠标将人物回归正面}function onframe() {//给人物运动自定义一个方法hero.run();//让物品层里面的所有物品都下落运动for (var i = 0; i < itemLayer.childList.length; i++) {//让所有的物品运动itemLayer.childList[i].run();if (itemLayer.childList[i].mode == "die") {//销毁itemLayer.removeChild(itemLayer.childList[i]);}}if (stepindex++ > step) {stepindex = 0;//添加一个物品addItem();}//更新积分showText();//游戏结束if (hp <= 0) {gameOver();return false;}}//游戏结束function gameOver() {//将背景层里面的所有事件全部消亡backLayer.die();//删除物品层里面所有的物品itemLayer.removeAllChild();var txt = new LTextField();txt.color = "#ff0000";txt.size = 50;txt.text = "GAME OVER";txt.x = (LGlobal.width - txt.getWidth()) * 0.5;txt.y = 100;//将文本放到游戏结束层里面去overLayer.addChild(txt);backLayer.addEventListener(LMouseEvent.MOUSE_DOWN, function() {backLayer.die(); //全部销毁overLayer.removeAllChild(); //游戏结束层全部销毁hp = 10;point = 0;addEvent(); //重新绑定事件});}function addPlayer() {//新建一个图层playerLayer = new LSprite();//把人物添加到背景层里面去backLayer.addChild(playerLayer);//将人物封装成一个对象hero = new Player();//设置人物的坐标hero.x = hero.y = 350;//将人物图片对象塞到人物层里面playerLayer.addChild(hero);}//新建一个人物对象function Player() {//人物对象其实本身也是一个图层 所以需要继承base(this, LSprite, []);var self = this;//人物可以往左边 还可以右边self.mode = "";//将一张256*256的一张图片切割成 4行4列的一个二维数组坐标var list = LGlobal.divideCoordinate(256, 256, 4, 4);//搞一个人物图片  先加载素材 -> 变成 图片对象var data = new LBitmapData(imglist["player"], 0, 0, 64, 64);//设置一组动画 让当前图层里面的图片按照指定的坐标顺序来动self.anime = new LAnimation(self, data, list);//限制人物的走动速度self.step = 2, self.stepindex = 0;}//人物运动方法Player.prototype.run = function() {var self = this;//限制速度  每隔3次才调用一次运动方法if (self.stepindex++ > self.step) {self.stepindex = 0;self.anime.onframe(); //让人物动起来}//判断人物是往左边 还是右边if (self.mode == "left") {if (self.x > 10) {self.x -= 10;}} else if (self.mode == "right") {if (self.x < LGlobal.width - self.getWidth()) {self.x += 10;}}}function addBackGround() {// LBitmap将加载的图片素材变成一个具体的img对象 LBitmapData加载图片素材var bitmap = new LBitmap(new LBitmapData(imglist['back']));//将背景图片放到背景层里面去backLayer.addChild(bitmap);}document.onkeydown = function(e) {var e = e || event;}function keydown(e) {var e = e || event;var key = e.keyCode || e.which || e.charCode;if (key == 32) {if (hero.mode == "left") {if (hero.x > 10) {hero.x -= 20;}} else if (hero.mode == "right") {if (hero.x < LGlobal.width - hero.getWidth()) {hero.x += 20;}}}}document.onkeydown = keydown;
</script>

上面的图片和js需要引入

源码获取

查看博主主页或私信博主获取

精彩推荐更新中:

HTML5大作业实战100套

打卡 文章 更新 40  /  100天

大家可以点赞、收藏、关注、评论我啦 、需要完整文件随时联系我或交流哟~!

HTML+CSS+JS实现 ❤️卡通人物吃水果游戏❤️相关推荐

  1. web版拳皇,使用html,css,js来制作一款拳皇游戏

    web版拳皇,使用html,css,js来制作一款拳皇游戏 游戏简介 <拳皇>是1994年日本SNK公司旗下在MVS游戏机板上发售的一款著名对战型格斗街机游戏,简称"KOF&qu ...

  2. css3情侣游戏,11个基于HTML/CSS/JS的情人节表白可爱小游戏、小动画【情人节主题征文】...

    情人节表白可爱小游戏.小动画 我要悄悄学习,做一个浪漫的程序员 1.小鹿亲嘴 2.变成小猫 3.爱心表白 4.爱心溢出 5.思念如马 6.霓虹灯爱心 7.3D旋转相册 8.用不同的语言说"爱 ...

  3. Web前端--HTML+CSS+JS实现圣诞抓礼物小游戏

    临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?网页要求的总数量太多?HTML网页作业无从下手?没有合适的模板?等等一系列问题.你想要解决的问题,在这里常见网页设计作业题材有 个 ...

  4. HTML+CSS+JS实现 ❤️ 团队人物图片蜂巢布局❤️

    代码目录: 主要代码实现: css样式: html, body {height: 100%;margin: auto;--wrp: 800px;width: var(--wrp); }body {ba ...

  5. HTML+CSS+JS实现 ❤️卡通湖面上日出动画特效❤️

  6. HTML+CSS+JS实现 ❤️飞行人物图标动画特效❤️

  7. Web前端期末大作业---HTML+CSS+JS实现实现捉虫小游戏

    目录 网页截图展示:文末获取源码 项目源码结构:图片和js以及css等基础文件代码实现 主要源码展示: 获取完整源码: 网页截图展示: 首页展示:   选择昆虫: 效果展示: 有密集恐惧症的别玩哟.游 ...

  8. HTML+CSS+JS制作【俄罗斯方块】小游戏

    文章目录 js制作简单网页版俄罗斯方块 效果演示 设计思路 一.HTML网页结构代码 二.CSS代码 三.JS代码 四.代码资源分享 js制作简单网页版俄罗斯方块 程序虽然很难写,却很美妙.要想把程序 ...

  9. Web前端期末大作业---HTML+CSS+JS实现的翻纸牌记忆游戏

    目录 ​ 代码目录: 主要代码实现: 源码获取 效果演示: 代码目录: 主要代码实现: CSS样式: @import url("https://fonts.googleapis.com/cs ...

最新文章

  1. C语言实现pid算法(附完整源码)
  2. 【Pytorch神经网络理论篇】 24 神经网络中散度的应用:F散度+f-GAN的实现+互信息神经估计+GAN模型训练技巧
  3. 【VB.NET】基于Visual Studio编写VB.NET程序的常见问题的解答
  4. 5G 十项全能、搭载麒麟 820 芯片,1899 元起的荣耀 X10 来了!
  5. TCP滑动窗口协议作用
  6. mysql 2000安装教程_Win10 64位安装个人版SQL2000图文教程
  7. vue2.0_前端跨域解决方案之proxy代理
  8. ofd文件的查看、打印、下载、上传
  9. 如何删除mysql系统服务_如何彻底删除mysql服务(清理注册表)详解
  10. 如何挑选微信第三方开发商
  11. 监控之美——Prometheus云原生监控
  12. 「首席架构师推荐」数值分析软件列表
  13. 搜索引擎Bing必应高级搜索使用技巧荟萃
  14. 应用之星--完全免费的在线移动开发平台
  15. Outlook显示ost has reached maximum size
  16. 社交电商难定义,蘑菇街、小红书、拼多多注定要兵分三路?
  17. 紫光物联linux登录账号,紫光物联智能家居系统功能6.6.pptx
  18. Windows10系统下从库中删除文件夹(保留原始位置的文件)
  19. 怎样循序渐进、有效地学习JavaScript?
  20. 我爱计算机专业作文1000字,计算机人作文1000字

热门文章

  1. 容器技术之kubectl常用命令
  2. 电脑长截图软件_电脑屏幕长截图+WORD文档里没有插入PDF文件选项时怎么办? 简单一招轻松完成...
  3. 混凝土墙开洞_易县混凝土剪力墙切割常见问题
  4. 拖拽的方式使用qbuttongroup_【无机纳米材料科研制图——Photoshop 0402】PS使用选框工具修改图片/图层...
  5. 电脑抓整个路由器的包_网络是电竞游戏体验的命脉 2018年年度电竞路由器功能盘点...
  6. mysql数据库特征_如何掌握MySQL数据库中动态表的特征
  7. win7发现不了无线网络怎么办 win7发现不了无线网络的解决办法
  8. vue的mixins属性
  9. java 枚举(enum) 全面解读
  10. Dubbo与SpringCloud的架构与区别