我去,我的图片分数被这个录屏软件的水印盖上了,扎心。
这个程序的文件以及代码全部上传到了github
程序下载链接传送门
这是自己第一次通过js写的小游戏,那个时候对象的原理跟结构体的概念不是特别的清晰,所以没用对象来写,所以直接导致后期我对这个程序进行修改的时候出现问题,太过于复杂了,我终于了解什么叫做牵一发动全身了。所以这个程序教会我一定一定要用对象的思想处理以后的问题,尤其是这种带属性明显的东西。
当然你要问我图片怎么来的我只能说都是我自己画的所以这可是原创的原创。
代码部分我是通过一个大的函数直接进行所有的封装,当然写这个的时候的我完完全全对jquery么有一丁点认识,所以自己写了渐隐渐现的函数。所以开始的代码很简单。
window.onload = function(){
var Base = new base();
var start = document.getElementById('start');
start.onclick = function(){
Base.fadehide('start');
getId('path').style.display='block';
Base.fadeshow('path');
Base.createBullteAndMovePlain();
}
}
这就是开始接入的函数。渐隐渐现的函数是这个。
this. fadehide = function (name){
var i = 1;
var odiv = document.getElementById(name);
function show(){
odiv.style.opacity = i;
i-=0.1;
if(i<0){odiv.style.display = 'none';clearInterval(t);
}
}
var t = setInterval(show,10);
return this;
}
this.fadeshow = function (name){
var i = 0;
var odiv = document.getElementById(name);
function show(){
odiv.style.opacity = i;
i+=0.1;
if(i>1){clearInterval(t);}
}
var t = setInterval(show,100);
return this;
}
剩下的代码,懒得解释了,里面有注释。
//生成子弹
this.createBullteAndMovePlain = function (){
var arr= [];
var bulletNum=[];
var way = path.getElementsByClassName('way');
var play =document.getElementById('bullet');
var flag =0;
var score=0;
//获取按键
document.onkeydown = function(evt){
var ev = evt||event;
//left keyCode is 39
//right keyCode is 37
switch(ev.keyCode){
case 39:
flag=(flag+1)%5;
break;
case 37:
if(flag==0){
flag=Math.abs(flag-4);
}else if(flag>0){
flag=(flag-1)%5;
}
break;
}
//移动飞机
function movePlain (){
var plain = document.getElementById('player');
switch(flag){
case 0:player.style.left='0px';break;
case 1: player.style.left='100px';break;
case 2: player.style.left='200px';break;
case 3: player.style.left='300px';break;
case 4:player.style.left='400px';break;
}
}
movePlain();
}
function createBulltes(){
//生成敌人
var newenemy = document.createElement('img');
newenemy.src = 'img/enemy.png';
newenemy.style.position='absolute';
newenemy.style.zIndex='5';
var enemyTop=0;
var sign=0;
var randomNum = Math.random()*5;
sign=Math.floor(randomNum);
newenemy.style.top='0px';
switch(sign){
case 0:newenemy.style.left='0px';break;
case 1: newenemy.style.left='100px';break;
case 2: newenemy.style.left='200px';break;
case 3: newenemy.style.left='300px';break;
case 4:newenemy.style.left='400px';break;
}way[0].appendChild(newenemy);
arr.unshift(newenemy);
//生成子弹
var bullet = document.getElementById('bullet');
var newbullet = document.createElement('img');
var plain = document.getElementById('player');
newbullet.className='bullet';
newbullet.style.position='absolute';
newbullet.style.top='560px';
newbullet.src='img/bullet.png';
newbullet.style.zIndex='4';
var bulletTop=0;
switch(flag){
case 0: newbullet.style.left='45px';player.style.left='0px';;break;
case 1: newbullet.style.left='145px';player.style.left='100px';;break;
case 2: newbullet.style.left='245px';player.style.left='200px';break;
case 3: newbullet.style.left='345px';player.style.left='300px';break;
case 4: newbullet.style.left='445px';player.style.left='400px';break;
}way[2].appendChild(newbullet);
bulletNum.unshift(newbullet);
//分数图片
function scoreup(score){
var imgs = document.getElementsByClassName('score');
var imgsnum=score.toString().split('');
for(var i=0; i<imgsnum.length; i++){
imgs[4-i].src='img/'+imgsnum[i]+'.png';
}
}
//判定触碰
function decide(){
for(var i = 0;i<arr.length; i++){
for(var j=0; j<bulletNum.length; j++)
if(arr[i].offsetLeft==(bulletNum[j].offsetLeft-45)&&((arr[i].offsetTop+98)>bulletNum[j].offsetTop-10&&(arr[i].offsetTop+98)<bulletNum[j].offsetTop+10)){
score++;
scoreup(score);
arr[i].parentNode.removeChild(arr[i]);
bulletNum[j].parentNode.removeChild(bulletNum[j]);
}
}
var player=document.getElementById('player');
for(var i=0; arr.length; i++){
if(arr[i].offsetLeft==player.offsetLeft&&(arr[i].offsetTop+70)==player.offsetTop){
alert('game over');location.reload();
}
}
}
//放在一起的移动
function bulletmove (){
bulletTop=newbullet.offsetTop;
enemyTop=newenemy.offsetTop;
// alert('buller:'+newbullet.offsetLeft);
// alert(newenemy.offsetLeft);
function move (){
bulletTop-=6;
enemyTop+=1;
newbullet.style.top=bulletTop+'px';
newenemy.style.top=enemyTop+'px';
decide();
if(bulletTop==0&&enemyTop==560){
newbullet.style.opacity='0';
newenemy.style.opacity='0';
clearInterval(t);
}else if(bulletTop==0){
newbullet.parentNode.removeChild(newbullet);
bulletNum.pop();
}else if(enemyTop==560){
newenemy.parentNode.removeChild(newenemy);arr.pop();
}
}
var t = setInterval(move,20);
}
bulletmove();
}
var s=setInterval(createBulltes,3000);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。

