坦克大战(二)

欢迎来到程序小院

坦克大战(二)

玩法:键盘(A W S D)键来控制方向,空格键发射子弹,N:下一关,P:上一关,Enter:开始,赶紧去闯关吧^^。

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

html

  <CENTER><div id="game-area"></div></CENTER>

css

canvas{display: block; touch-action: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); width: 414px; height: 550px; cursor: inherit;
}

js

game.physics.startSystem(Phaser.Physics.ARCADE); 
soundStart = game.add.audio("sound-start");
soundFire  = game.add.audio("sound-fire");
soundHit = game.add.audio("sound-hit");
soundBoom1 = game.add.audio("sound-boom1");
soundBoom2 = game.add.audio("sound-boom2");
soundWin = game.add.audio("sound-win");
soundOver = game.add.audio("sound-over");
soundStart.play();
map = game.add.tilemap("levels");
map.addTilesetImage("tile");
map.playTimer = 0;
map.playIndex = 0;
enemies = game.add.group();
enemies.enableBody = true;
for (var i=0; i<8; i++){var imgID=parseInt(i/4)*32+(i%4)*2;var enemy = enemies.create(0, 0, "enemy",imgID).kill();  enemy.animations.add("up",[imgID, imgID + 1], 5, true); enemy.animations.add("right",[imgID + 8, imgID + 9], 5, true); enemy.animations.add("down",[imgID + 16, imgID + 17], 5, true);enemy.animations.add("left",[imgID + 24, imgID + 25], 5, true);enemy.body.collideWorldBounds = true;enemy.timeToMove = 0;
}
//创建主角
player = game.add.sprite(26*8,38*8, "tank",0);  
game.physics.arcade.enable(player,Phaser.Physics.ARCADE);  
player.body.collideWorldBounds = true;
player.animations.add("up", [0, 1], 5, true); 
player.animations.add("right",[8, 9], 5, true); 
player.animations.add("down",[16, 17], 5, true);
player.animations.add("left", [24, 25], 5, true);
levelLayer = map.createLayer("level-"+_levelInfo[0]);
map.setCollisionByExclusion([5,6],true,levelLayer);
levelLayer.resizeWorld();
//按键
cursors = game.input.keyboard.createCursorKeys();
actKey  = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
actKey.onDown.add(this.actKeyDown, this);
myFires = game.add.group();  
myFires.enableBody = true;
for (var i=0;i<2;i++){  //这里限制发弹数量var fire = myFires.create(0,0,"bullet",0).kill();fire.checkWorldBounds = true;fire.outOfBoundsKill = true;
}
enemyFires = game.add.group();
enemyFires.enableBody = true;
explodes = game.add.group(); //爆炸效果
explodes.enableBody = true;
bores = game.add.group();//这个就叫它敌机生成器吧
bores.enableBody = true;
bores.create(0,0,"bore",0).kill();
if(!game.device.desktop){this.addTouchKey(); //移动端显示虚拟按键
}
scoreText = game.add.text(16, 16, "Enemy: " + score, { fontSize: "16px", fill: "#fff" });  
scoreText.fixedToCamera=true;  
};
this.update = function(){
game.physics.arcade.collide(player, levelLayer, this.bossHit, null, this); 
game.physics.arcade.collide(enemies, levelLayer, this.bossHit, null, this); 
game.physics.arcade.overlap(player, enemies, this.tankHit, null, this); 
game.physics.arcade.overlap(player, enemyFires, this.fireHit, null, this); 
game.physics.arcade.overlap(enemies, myFires, this.fireHit, null, this);
game.physics.arcade.overlap(myFires, levelLayer, this.tileHit, null, this); 
game.physics.arcade.overlap(enemyFires, levelLayer, this.tileHit, null, this); 
player.body.velocity.setTo(0,0);
if(!isOver){if(cursors.right.isDown || touchRight){ this.playerMove(8,0);player.animations.play("right");facing=1;}else if(cursors.left.isDown || touchLeft){this.playerMove(-8,0);player.animations.play("left");facing=3;}else if(cursors.up.isDown || touchUp){this.playerMove(0,-8);player.animations.play("up");facing=0;}else if(cursors.down.isDown || touchDown){this.playerMove(0,8);player.animations.play("down");facing=2;}else{player.animations.stop();}enemies.forEachAlive(this.enemyMove,this);//this.mapTilePlay(); // 水的动画效果this.enemyMake();
}
};
this.playerMove = function(xx,yy){
player.x = (yy!=0) ? Math.round(player.x/8)*8 : player.x;
player.y = (xx!=0) ? Math.round(player.y/8)*8 : player.y;
player.body.velocity.setTo(xx*8,yy*8);
};
this.enemyMove = function(enemy){
if(game.time.now>=enemy.timeToMove){var go = parseInt(Math.random()*7);go = go>3 ? go-3 : go; // 减少几率往上enemy.body.velocity.setTo((go==1?8:go==3?-8:0)*5,(go==0?-8:go==2?8:0)*5);enemy.animations.play(["up","right","down","left"][go]);enemy.timeToMove=game.time.now+Math.random()*2000;if(Math.random() < 0.5){  // 随机开炮...var xx = enemy.x+(go==3?0:go==1?10:5);var yy = enemy.y+(go==0?0:go==2?10:5);soundFire.play();var fire = enemyFires.getFirstDead(true, xx, yy,"bullet",go);fire.body.velocity.setTo((go==1?8:go==3?-8:0)*20,(go==2?8:go==0?-8:0)*20);fire.checkWorldBounds = true;fire.outOfBoundsKill = true;}
}
};

源码

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主馆位置即将售罄“2024北京国际信息通信展会”众多知名企聚京城

2024北京国际信息通信展&#xff0c;将于2024年9月份在北京国家会议中心盛大召开。作为全球信息通信技术领域的重要盛会&#xff0c;此次展会将汇集业内顶尖企业&#xff0c;展示最新的技术成果和产品。 目前&#xff0c;主馆位置即将售罄&#xff0c;华为、浪潮、中国移动、通…

使用小程序实现App灰度测试的好处

灰度测试&#xff08;Gray Testing&#xff09;是一种软件测试策略&#xff0c;也被称为渐进性测试或部分上线测试。在灰度测试中&#xff0c;新的软件版本或功能并非一次性推送给所有用户&#xff0c;而是仅在一小部分用户中进行测试。这可以帮助开发团队逐步暴露新功能或版本…

react-native利用百度地图SDK实现管道的采集

一、效果图 二、具体实现步骤 1、安装react-native-baidu-map npm install react-native-baidu-map 2、查看百度地图sdk的文档 通过参数配置&#xff0c;可选择定位模式、可设定返回经纬度坐标类型、可设定是单次定位还是连续定位 主要配置 option.setLocationMode(Location…

隐私计算介绍

这里只对隐私计算做一些概念性的浅显介绍&#xff0c;作为入门了解即可 目录 隐私计算概述隐私计算概念隐私计算背景国外各个国家和地区纷纷出台了围绕数据使用和保护的公共政策国内近年来也出台了数据安全、隐私和使用相关的政策法规 隐私计算技术发展 隐私计算技术安全多方计…

Web前端-CSS(文本样式)

文章目录 1.font字体1.1 font-size:大小1.2 font-family:字体1.3 font-weight:字体粗细1.4 font-style:字体风格1.5 font总结 2. css外观属性2.1 color:文本颜色2.2 text-align:文本水平对齐方式2.3 line-height:行间距2.4 text-indent:首行缩进2.5 text-decoration 文本的装饰…

协同物联:设备物联与车间数据采集的融合

随着工业4.0和智能制造的快速发展&#xff0c;物联网技术在工业领域的应用逐渐普及。其中&#xff0c;协同物联、设备物联和车间数据采集技术对于提升企业生产效率和降低运营成本具有重要意义。本文将深入探讨这些技术在现代工业环境中的应用及它们如何共同推动企业向数字化转型…

c语言:输出26个英文字母|练习题

一、题目 分两排&#xff0c;输出26个英文字母 如图&#xff1a; 二、思路分析 1、从第13个字母分行显示 2、从A开始&#xff0c;在A的ASC码后面&#xff0c;按顺序加1~26 三、代码图片【带注释】 四、源代码【带注释】 #include <stdio.h> //题目:输入26个字母&#x…

DBeaver Ultimate for Mac/win:掌握数据库的终极利器,助您高效管理数据!

在当今数字化时代&#xff0c;数据管理变得越来越重要。而作为一款功能强大的数据库管理工具&#xff0c;DBeaver Ultimate&#xff08;简称DBU&#xff09;助您轻松应对各种复杂的数据管理任务。无论您是数据库管理员、开发人员还是数据分析师&#xff0c;DBU都能为您提供全面…

穿越时光的Java之旅

穿越时光的Java之旅 《穿越时光的Java之旅》摘要引言1. 从大一开始的编程启蒙1.1 编程的初衷1.2 学习Java的初体验1.3 遇到的挑战与解决之道2. 大二&#xff1a;探索专业分流与技术方向选择2.1 专业选择的思考2.2 技术领域的广度与深度2.3 找到感兴趣的方向2.4 实践与项目经验3…

Unity中URP下的半透明效果实现

文章目录 前言一、实现半透明的步骤1、修改Blend模式&#xff0c;使之透明2、打开深度写入&#xff0c;防止透明对象穿模3、在Tags中&#xff0c;修改渲染类型和渲染队列为半透明 Transparent 二、对透明效果实现从下到上的透明渐变1、 我们在 Varying 中&#xff0c;定义一个v…

【大模型知识库】(5):本地环境运行dity+fastchat的BGE模型,可以使用embedding接口对知识库进行向量化,连调成功。

1&#xff0c;视频演示地址 2&#xff0c;关于 dify 项目 https://github.com/langgenius/dify/blob/main/README_CN.md Dify 是一个 LLM 应用开发平台&#xff0c;已经有超过 10 万个应用基于 Dify.AI 构建。它融合了 Backend as Service 和 LLMOps 的理念&#xff0c;涵盖…

100G云数据中心网络建设解决方案

随着数据和流量的快速增长&#xff0c;近年来数据中心已经进入了一个全新的100G时代。为了更高效地提供包括人工智能、虚拟现实、4K视频等在内的云计算服务&#xff0c;全球范围内正在大规模建设众多大型100G数据中心&#xff0c;如云数据中心。作为一种新型高效的基础设施&…