伐木猪小游戏

news2024/12/24 20:28:04

欢迎来到程序小院

伐木猪

玩法:控制小猪点击屏幕左右砍树,不能碰到树枝,考验手速与眼力,记录分数,快去挑战伐木吧^^。

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

html

<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

var isStart = 0;
window.Timberpig.state.demo = {
 create: function(){
  var game = this;
  var j = 0; //当第一次按下 不执行
  var tweenA,tweenB;
  this.background = mt.create("background"); //创建背景
  this.ground = mt.create("ground");   //创建地面
  this.cloud = mt.create("cloud");   //创建云层
  this.cloud.update = function(){    //云层动画
   for(var i = 0; i < this.length; i++){
    if(this.getChildAt(i).x + this.getChildAt(i).width < 0){
     this.getChildAt(i).x = game.world.width;
     this.getChildAt(i).y = game.rnd.between(game.world.centerY / 2,game.world.centerY / 1.5);
    }
    this.getChildAt(i).x--;
   }
  };
  this.tree = mt.create("tree");      //创建树木
  this.title = mt.create("title");     //创建标题
     tweenA = game.add.tween(this.title).to( { y: this.title.y + 100 }, 2000, "Linear");
  tweenB = game.add.tween(this.title).to( { y: this.title.y }, 2000, "Linear");
  tweenA.chain(tweenB);        //缓动动画
  tweenB.chain(tweenA);        //动画链接
  tweenA.start();          //播放动画
  this.title.update = function(){
   if(isStart == 1){this.destroy();}
  };
  this.Score = mt.create("Score");
  this.Score.alpha = 0;
  var Score = this.Score;
  this.btnPlay = mt.create("btnPlay");    //开始按钮
  this.btnPlay.inputEnabled = true;     //接收事件
  this.btnPlay.events.onInputDown.addOnce(function(){ //鼠标点击事件
   j = 2;
   isStart = 1;
   Score.alpha = 1;
  });
  this.btnPlay.update = function(){
   if(isStart == 1){this.destroy();}
  };
  this.player = mt.create("player");
  var player = this.player;
  this.player.dt = 0;
  this.player.frameIndex = this.player.frame;
  var cutA = this.player.animations.add('cut', [0, 1, 2]);
  this.player.animations.add('gif', [0, 7]);
  this.player.animations.add('die',[12,11,10,4,3,8,9,6,5],10,false);
  cutA.onComplete.add(function(){
   player.animations.play('gif',5,true);
  }, this);
  this.player.anchor.set(0.5,0);
  this.player.leftX = 184;
  this.player.rightX = 354;
  this.player.x = this.player.leftX;
  this.player.update = function(){
//    this.dt++;
//    if(this.dt % 10 === 0){
//     if(this.frameIndex === 0){
//      //console.log("a");
//      this.frameIndex = 7;
//     } else {
//      //console.log("b");
//      this.frameIndex = 0;
//     }
//    }
//    this.frame = this.frameIndex;//播放人物常态动画
   
   if(isStart == 1){
    if (j <= 1) return false;
    if (game.input.activePointer.isDown){//游戏内鼠标点击
     if(game.input.activePointer.x < game.world.centerX){
      this.x = this.leftX;
      this.scaleX = 1;
     } else {
      this.x = this.rightX;
      this.scaleX = -1;
     }
     //this.animations.play('cut');
     cutA.play(10,false);
    }
   }
  };
  this.gameOver = mt.create("gameOver");
  this.gameOver.alpha = 0;
  this.gameOver.getData().userData.score = 0;
  this.gameOver.update = function(){
   if(isStart !== 2) {return false}
   if(isStart == 2){
    Score.destroy();
    this.mt.children.gameCase.setText(this.getData().userData.case);
    this.mt.children.gameScore.setText(this.getData().userData.score);
    this.mt.children.gameCase.x = game.world.centerX;
    this.mt.children.gameScore.x = game.world.centerX;
    this.alpha = 0.9;
    if(this.getData().userData.case == "Lost"){
     //死亡动画
     player.scaleY = 1;
     //player.frame = 5;
     player.animations.play('die');
    }
    isStart = 3;
   }
  };
  this.gameOver.mt.children.btnRetry.inputEnabled = true;
  this.gameOver.mt.children.btnRetry.events.onInputDown.addOnce(function(){
   game.state.start("demo");
  },this);
  var gameOver = this.gameOver;
  this.time = mt.create("time");
  this.time.alpha = 0;
  this.time.update = function(){
   if(isStart == 1){
    this.alpha = 1;
    this.mt.children.top.width--;
    if(this.mt.children.top.width <= 0){
     this.alpha = 0;
     gameOver.getData().userData.case = "Lost";
     isStart = 2;
    }
   }
   if(isStart == 2){
    this.alpha = 0;
   }
  };
  var dx1 = 0,dx2 = 0;
  game.input.onDown.add(function(){
   if(isStart == 1){//游戏内鼠标点击
    if(game.input.activePointer.x < game.world.centerX){
     //left
     dx1 = 50;
     dx2 = 100;
    } else {
     //right
     dx1 = -50;
     dx2 = -100;
    }
    for(var i = 1;i < this.tree.length;i++){
     if(this.tree.getChildAt(i).y + this.tree.getChildAt(i).height >= 
          this.tree.getChildAt(0).y){
      //创建动画
      var animation = game.add.image(this.tree.getChildAt(i).x,
            this.tree.getChildAt(i).y,"");
      animation.texture = this.tree.getChildAt(i).texture;
      tweenA = game.add.tween(animation).to( { x: animation.x + 
            dx1,y: animation.y - 50  }, 300, "Linear");
      tweenB = game.add.tween(animation).to( { x: animation.x + 
            dx2,y: animation.y + 50 }, 300, "Linear");        
            //缓动动画
      tweenB.onComplete.add(function(){
       animation.destroy();
      },this);
      tweenA.chain(tweenB);
      tweenA.start(); /播放动画
      //销毁树桩上的一段木头
      this.tree.getChildAt(i).destroy();
      //游戏得分递增
      this.gameOver.getData().userData.score++;
      this.time.mt.children.top.width += 5;
      if(this.gameOver.getData().userData.score == 49){
       this.gameOver.getData().userData.case = "Win";
       isStart = 2;
      }
     } 
    }
    for(var i = 1;i < this.tree.length;i++){//被砍往下掉
     this.tree.getChildAt(i).y += 57;
     if(this.tree.getChildAt(i).y + this.tree.getChildAt(i).height >= 
          this.tree.getChildAt(0).y){//防止越界
      this.tree.getChildAt(i).y = this.tree.getChildAt(0).y - 
            this.tree.getChildAt(i).height;
     }
    }
   }
  },this);
 },
 update:function(){
  if(isStart !== 1) return false;
  this.Score.text = this.gameOver.getData().userData.score;
  var gameOver = this.gameOver;
  this.game.physics.arcade.overlap(this.player,this.tree,function(){
   //console.log("游戏结束");
   gameOver.getData().userData.case = "Lost";
   isStart = 2;
  });
 }
};

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

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

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

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

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

相关文章

Centos7开放及查看端口

1、开放端口 firewall-cmd --zonepublic --add-port8888/tcp --permanent # 开放8888端口 firewall-cmd --zonepublic --remove-port8888/tcp --permanent #关闭8888端口 firewall-cmd --reload # 配置立即生效 2、查看防火墙所有开放的端口 firewall-cmd --zonepubl…

5 Tensorflow图像识别(下)模型构建

上一篇&#xff1a;4 Tensorflow图像识别模型——数据预处理-CSDN博客 1、数据集标签 上一篇介绍了图像识别的数据预处理&#xff0c;下面是完整的代码&#xff1a; import os import tensorflow as tf# 获取训练集和验证集目录 train_dir os.path.join(cats_and_dogs_filter…

有关python库

官方库 #1、导入某模块 import os #2、导入OS模块中的system方法 from os import system #3、导入某模块中的孙子模块中的xx方法&#xff0c;并重命名 from module.xx.xx import xx as rename #4、导入OS中的所有模块 #不用进行OS.method(),直接method&#xff08;&#xff0…

ST 任意内核 移植freertos系统

FREERTOS系统移植&#xff0c;先下载系统文件并解压如下 keil5移植后效果如图 注意事项 注意内核类型&#xff0c;ST的f1为M3,F4为m4&#xff0c;h7&#xff0c;f7为m7 再include包含.h路径即可 任务函数一定要写到while&#xff08;1&#xff09;否则无法运行 void lvgl_demo…

AVL树 c语言版本 插入部分

目录 引入平衡树 为什么要变平衡 怎么判断是否需要变平衡 怎么变平衡 LL型失衡 RR型失衡 LR型失衡 RL型失衡 补充 左旋补充 右旋补充 Code 开辟一个新节点 初始化 获取树的高度 左旋函数 更新树高 树高的求法 右旋转函数 插入 InsertNode() 更新树高 getbala…

ZZ308 物联网应用与服务赛题第G套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;G卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用…

星岛专栏|从Web3发展看金融与科技的融合之道

11月起&#xff0c;欧科云链与香港主流媒体星岛集团开设Web3.0安全技术专栏&#xff0c;该专栏主要面向香港从业者、交易机构、监管机构输出专业性的安全合规建议&#xff0c;旨在促进香港Web3.0行业向安全与合规发展。 出品&#xff5c;欧科云链研究院 自2016年首届香港金融…

P02项目诊断报警组件(学习操作日志记录、单元测试开发)

★ P02项目诊断报警组件 诊断报警组件的主要功能有&#xff1a; 接收、记录硬件设备上报的报警信息。从预先设定的错误码对照表中找到对应的声光报警和蜂鸣器报警策略&#xff0c;结合当前的报警情况对设备下发报警指示。将报警消息发送到消息队列&#xff0c;由其它组件发送…

Linux常用命令及项目部署

目录 Linux介绍 Linux环境 下载xshell 常见的Linux命令 搭建Java部署环境 1.jdk 2.tomcat 3.mysql 进行部署 Linux介绍 Linux操作系统是和Windows并列的关系&#xff0c;Linux主要通过命令行进行操作的。 Linux环境 1.使用虚拟机&#xff0c;电脑上安装虚拟机软件 …

快来看看如何拿下7+干湿结合生信思路。赶紧拿起笔记本

今天给同学们分享一篇生信文章“CENPF/CDK1 signaling pathway enhances the progression of adrenocortical carcinoma by regulating the G2/M-phase cell cycle”&#xff0c;这篇文章发表在J Transl Med期刊上&#xff0c;影响因子为7.4。 结果解读&#xff1a; CENPF在AC…

Python实现图片与PDF互相转换

目录 图片转PDF文件夹所有图片转为1个PDF文件夹指定图片转为1个PDF文件夹所有图片分别转为PDF举例 PDF转图片指定PDF转为图片文件夹所有PDF转为图片举例 图片转PDF 之前的一篇博客《Python合并拼接图片》&#xff0c;可对图片进行合并拼接 使用前需要安装PyMuPDF库&#xff0c…

lua脚本实现redis分布式锁(脚本解析)

文章目录 lua介绍lua基本语法redis执行lua脚本 - EVAL指令使用lua保证删除原子性 lua介绍 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。 设…

最适合后端程序员要学的前端基本知识js版本

本文章适合有后端基础&#xff0c;也对前端知识有所了解的同学&#xff0c;简单而精准的了解后端程序员要了解的前端知识。让自己能看懂前端js&#xff0c;html和css版本后续写出。。。。 自定义对象 在对象中创建对象的行为时若是要调用对象属性&#xff0c;要加this 列如&a…

kubernetes 认证授权

目录 一、kubernetes API访问控制 二、pod绑定sa 三、认证 四、授权 一、kubernetes API访问控制 Authentication&#xff08;认证&#xff09;认证方式现共有8种&#xff0c;可以启用一种或多种认证方式&#xff0c;只要有一种认证方式通过&#xff0c;就不再进行其它方式…

【Axure高保真原型】树切换动态面板案例

今天和大家分享树切换动态面板的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击最后一级人物节点&#xff0c;可以切换右侧面板的状态到对应的页面&#xff0c;左侧的树是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表…

人大金仓三大兼容:SQL Server迁移无忧

SQL Server在数据库领域一直占据着重要地位。作为一款成熟稳定的关系型数据库管理系统&#xff0c;SQL Server在国内有着广泛的用户群体&#xff0c;医疗、海关、政务等行业的核心业务系统多采用SQL Server数据库。随着政策与市场的双重驱动&#xff0c;信息技术应用创新产业的…

【快速使用ShardingJDBC的哈希分片策略进行分表】

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容&#x1f34a;1.引入maven依赖&#x1f34a;2.启动类上添加注解MapperScan&#x1f34a;3.添加application.properties配置&#x1f34a;4.普通的自定义实体类&#x1f34a;5.写个测试类验证一下&#x1f34a;6.控制台打印…

竞赛 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

Linux之make/maakefile

access不是实时更新的。 printf打印并不是直接给屏幕而是先放到缓冲区。 可以通过fflush(stdout)强制刷新缓冲区。 换行是指直接到同一位置的下一行&#xff0c;回车是回到开头。

【MySQL数据库】 七

本文主要介绍了Java的JDBC编程的过程. 超详细 !!! 一.JDBC JDBC就是通过Java代码,来操作数据库 由于我们在实际开发中,绝大部分都是用代码来操作数据库的 , 因此一个成熟的数据库,都会提供一些API让程序员来使用. 常见的数据库比如mysql / oracl / sqlserver / SQLite 都会提…