首页 > 编程语言 >纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)

纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)

时间:2022-12-30 10:33:42浏览次数:59  
标签:function JavaScript 兔子 金币 小游戏 tuzi var 源码 Math


Hello,大家好,我是兔哥,我又来分享好玩的入门级项目啦。

今天给大家带来的是一个纯JavaScript入门级小游戏:兔子抢金币,规则非常简单,控制屏幕上的兔子去接天上掉下来的金币,接满20个就可以通关。

下面先放出在线试玩的地址:

​JavaScript应用http://java18.cn/tuzi/index.html​​游戏画面:

纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)_html

用键盘上的A和D控制兔子的左右运动。

兔子是会一直跳动的,这其实是用了帧动画:

纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)_Math_02

如上图所示,运用setInterval不停地更换背景图片就可以实现兔子跳动的效果,相关代码:

animation(document.getElementById('tuzi'),"img/奔跑的兔子.png");

 这边有一个animation方法,这是我单独封装的一个帧动画方法。

/**
* 帧动画函数
* ele 需要控制的DOM元素
* imgUrl 图片地址
*/
function animation(ele,imgUrl){

//变更元素的背景图素材
ele.style.backgroundImage = 'url('+imgUrl+')';
ele.style.backgroundRepeat = 'no-repeat';
var index = 0;
function run(){

index++;
if (index >= positions.length) {
index = 0;
}
var position = positions[index].split(' ');
ele.style.backgroundPosition = position[0]+'px '+position[1]+'px';



}

running = setInterval(run,80);


//clearInterval(running); //清除定时器
}

 在这个案例中,金币也是动态的,其实也是用了类似的方法:

纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)_html_03

 金币的动画我封装到了外部js中

纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)_javascript_04

代码:

//通用的道具类
function Item(type,speed){

var html = "";
var _timer = null;



this.draw = function(){



_timer = setInterval(function(){

if(type == 'medicine'){
var itop = Math.ceil( getScreenHeight() * Math.random() );
var ileft = Math.ceil(getScreenWidth() * Math.random() );

/*console.log(itop + "," + ileft);
return;*/
html = "<div class='medicine' style='top:"+itop+"px;left:"+ileft+"px'></div>";
}else if(type == 'gold'){

var itop = Math.ceil( getScreenHeight() * Math.random() );
var ileft = Math.ceil(getScreenWidth() * Math.random() );

html= "<img src='img/gold/左斜转0000.png' class='gold'style='top:"+itop+"px;left:"+ileft+"px'></img>";

if($(".gold").length >= 10) return;


}

$("body").append(html);

},speed);
};

this.pause = function(){
clearInterval(_timer);
}



};

 还有一个兔子和金币的碰撞逻辑:

function checkTouch($dom){

var tuzi = document.getElementById('tuzi');

var W = tuzi.clientWidth * 2; //兔子的宽度
var H = tuzi.clientHeight * 2; //兔子的高度



var p_X = (tuzi.offsetLeft * 1 + W / 2); //兔子的当前横坐标
var p_Y = (tuzi.offsetTop * 1 + H / 2); //兔子的当前纵坐标

//console.log(p_X + "," + p_Y);


var w = $dom.width(); //金币的宽度
var h = $dom.height(); //金币的高度

var m_top = getTop($dom.get(0)); //金币的当前纵坐标
var m_left = getLeft($dom.get(0)); //金币的当前横坐标

var m_X = (m_left * 1 + w/2);
var m_Y = (m_top * 1 + h/2);


//console.log(Math.abs(p_Y - m_Y) + "========" + (H + h) / 2)

if(Math.abs(p_X - m_X) <= (W + w) / 2 && Math.abs(p_Y - m_Y) <= (H + h) / 2 ){

return true;
}

return false;

}

至于最后的排行榜,是用浏览器缓存做的。

完整源码,放到码云上了:

​兔子抢金币: 纯JavaScript入门级小游戏:兔子抢金币A:向左,D:向右https://gitee.com/skyblue0678/rabbit-grabs-gold-coin​

喜欢的话,还请点个 赞 哦,谢谢各位啦~~

标签:function,JavaScript,兔子,金币,小游戏,tuzi,var,源码,Math
From: https://blog.51cto.com/u_10957019/5979198

相关文章

  • 三分钟学会 H5 聊天机器人开发(附源码和在线演示)
    【学习目标】熟悉和掌握HTML结构和CSS的相关知识学会使用HBuilder进行APP打包熟悉JavaScript的基本用法和jQuery的使用(提前预习)HBuilder它是一个快速开发H5程序的工具,很多......
  • 送书啦,JavaScript百炼成仙,第一轮送书抽奖活动
    ......
  • 利用Python制作第一人称射击小游戏 含源代码
    大家好我是毕加锁(锁!)今天教大家利用Python制作第一人称小游戏 涉及知识点1.sprites2.pygame混音器3.图章  4.python基础语法.代码1发射声fromspritesimport*......
  • 【爬虫实战项目】Python爬虫批量下载网易云音乐飙升榜并保存本地(附源码)
    前言今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得。首先是爬取之前应该尽可能伪装成浏览器而不被识别出来......
  • 10Javascript高级
    JavaScript面向对象目标:能够说出什么是面向对象能够说出类和对象的关系能够使用class创建自定义类能够说出什么是继承面向对象编程介绍:两大编程思想:面向过程面向对象面向过......
  • 7JavaScript基础语法
    第一章1计算机编程基础什么是编程语言编程语言和标记语言的不同常见的数据存储单位及其换算关系内存的主要作用以及特点2编程语言编程:就是让计算机为解决某个问题而使用......
  • 2.1JavaScript基础语法
    第一章1计算机编程基础什么是编程语言编程语言和标记语言的不同常见的数据存储单位及其换算关系内存的主要作用以及特点2编程语言编程:就是让计算机为解决某个问题而使用......
  • 4.1 Javascript高级
    JavaScript面向对象目标:能够说出什么是面向对象能够说出类和对象的关系能够使用class创建自定义类能够说出什么是继承面向对象编程介绍:两大编程思想:面向过程面向对象面向过......
  • 安卓期末大作业——汉服社区(源码+任务书)
    课题的作用和意义汉族占中国人口的91%,是中国的主体民族,在越来越全球化的今天,我们正越来越多地,在不同场合,与不同的民族打交道,由此也就越是需要民族身份的认同和辨异。而由于......
  • Spring AOP源码(四):具体执行流程 - 责任链模式
    1、AOP动态代理的字节码文件1.1、代理对象class的核心伪代码1publicclassMathCalculator$$EnhancerBySpringCGLIB$$9bfe5203extendsMathCalculatorimplementsS......