JQuery&原生js ——实现剪刀石头布小游戏
前言 |
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
上一篇博客中,小编给大家展示了jQuery的一大优势,自定义插件。相信这个功能让各位都跃跃欲试,想要制作一个自己的插件了吧!在这里小编祝贺大家在成为大牛的路上向前跨了一步!!今天,小编就实现一个小游戏带大家领略jQuery的最大大优势,相比于原生的简洁,也就是“write Less,Do More”。
一、原生JS实现剪刀石头布游戏功能 |
话不多说,直接来代码!
HTML:
<body> <div id="body">
<div id="tips">
请选择
</div> <div id="imgs">
<img src="插件/img/jiandao.png" id="jiandao" onclick="jianDao()"class="img1"/>
<img src="插件/img/shitou.png" id="shitou" onclick="shiTou()"class="img1"/>
<img src="插件/img/bu.png" id="bu" onclick="bU()" class="img1"/>
</div> <div id="jieguo">
<div class="jieguo">
<div>您选择了</div>
<img src="插件/img/daiding.png" id="myImg" />
</div> <div class="pk">PK</div> <div class="jieguo">
<div>系统选择了</div>
<img src="插件/img/daiding.png" id="computer" />
</div>
</div> <div id="score">
等待结果中....
</div> <div id="scoreFen">
<span>00</span>:<span>00</span>
</div>
</div>
</body>
css:
<style type="text/css">
*{
margin: 0px;
padding: 0px;
} #body{
width: 100%;
height: 700px;
max-width: 500px;
margin: 0 auto;
background-color: #FAE738;
overflow: hidden;
} #tips{
margin-top: 40px;
text-align: center;
color: white;
font-size: 36px;
font-weight: bold;
} #imgs{
width: 90%;
margin: 20px auto;
display: flex;
justify-content: space-around;
} #jieguo{
width: 90%;
margin: 30px auto;
display: flex;
justify-content: space-around;
} #jieguo .jieguo div{
height: 30px;
width: 89px;
line-height: 30px;
text-align: center;
color: white;
} #jieguo .jieguo img{
height: 89px;
} #jieguo .pk{
height: 120px;
line-height: 120px;
font-size: 48px;
font-weight: bold;
} #score,#scoreFen{
text-align: center;
font-size: 24px;
color: red;
padding-top: 10px;
} </style>
js:
<script src="JS/jquery-3.1.1.js" type="text/javascript"></script>
<script type="text/javascript"> var jiandao = document.getElementById("jiandao");
var shitou = document.getElementById("shitou");
var bu = document.getElementById("bu");
var myImg = document.getElementById("myImg");
var computer = document.getElementById("computer");
var score = document.getElementById("score");
var scoreFen = document.getElementById("scoreFen"); var myScore=0,comScore=0; var imgs = ["插件/img/jiandao.png","插件/img/shitou.png","插件/img/bu.png"];
console.log(imgs[0]);
jiandao.onclick = function(){
var imgSrc = jiandao.getAttribute("src"); myImg.setAttribute("src",imgSrc);
checkImg(imgSrc);
} shitou.onclick = function(){
var imgSrc = shitou.getAttribute("src");
myImg.setAttribute("src",imgSrc);
checkImg(imgSrc);
} bu.onclick = function(){
var imgSrc = bu.getAttribute("src");
myImg.setAttribute("src",imgSrc);
checkImg(imgSrc);
} function checkImg(imgSrc){
var myIndex = imgs.indexOf(imgSrc);
var intervalId = setInterval(function(){
var num = parseInt(Math.random()*3);
computer.setAttribute("src",imgs[num]); },20); setTimeout(function(){
clearInterval(intervalId);
var comSrc = computer.getAttribute("src");
var comIndex = imgs.indexOf(comSrc);
if(myIndex==comIndex){
score.innerHTML = "平局!再战一轮吧!";
}else if(myIndex==0&&comIndex==2
|| myIndex==1&&comIndex==0
|| myIndex==2&&comIndex==1){
score.innerHTML = "赢啦!继续虐他吧!";
myScore++;
}else{
score.innerHTML = "输啦!继续努力吧!";
comScore++;
}
myScore = (myScore+"").length<2?"0"+myScore:myScore+"";
comScore = (comScore+"").length<2?"0"+comScore:comScore+""; scoreFen.firstElementChild.innerHTML = myScore;
scoreFen.lastElementChild.innerHTML = comScore; },400);
} </script>
结果:
二、jQuery实现剪刀石头布 |
HTML代码与css代码请看上栗,毕竟只是实现功能的方式不用,布局是一样一样滴!
jQuery:
<script type="text/javascript">
$("#imgs>img").click(function(){
checkImg($(this).attr("src"));
}); var imgs = ["插件/img/jiandao.png","插件/img/shitou.png","插件/img/bu.png"];
function checkImg(imgSrc){
$("#myImg").attr("src",imgSrc);
var id = setInterval(function(){
var num = parseInt(Math.random()*3);
$("#computer").attr("src",imgs[num]);
},20); setTimeout(function(){
clearInterval(id);
var my = imgs.indexOf(imgSrc);
var com = imgs.indexOf($("#computer").attr("src"));
if(my==0&&com==2 || my==1&&com==0 || my==2&&com==1){
$("#score").html("恭喜!您赢啦!");
var mf = parseInt($("#scoreFen span:eq(0)").text())+1;
mf = mf<10 ? "0"+mf : mf;
$("#scoreFen span:eq(0)").text(mf);
}else if(my==0&&com==0 || my==1&&com==1 || my==2&&com==2){
$("#score").html("平局!再战一轮吧!");
}else{
$("#score").html("哈哈哈哈你输啦!!!");
var cf = parseInt($("#scoreFen span:eq(1)").text())+1;
cf = cf<10 ? "0"+cf : cf;
$("#scoreFen span:eq(1)").text(cf);
}
},500);
}
</script>
结果:
三、JS&jQuery |
大家从上边的例子也发现了,功能的实现上,原生用了60多行代码,而jQuery则用了30多行代码。少了将近的一般,这只是一个小游戏就有这么大的差距。
现在,小编带大家分析一下其中的原因:
3.1在语法上
1、jQuery在语法上,必须使用jQuery必须先导入JQuery.x.x.x.js文件;这个是必须的,小编就不多说了;
2、JQuery中的选择器:
$("选择器").函数();
原生中:获取节点要用.document.getElementById();
从这里就发现了吧,jQuery的简洁,这也是jQuery相对于原生最体现简洁的地方;
大家从上栗来看个例子:实现图片点击事件,并在下方改变更换图片,也就是替换图片url地址:
JS:
bu.onclick = function(){
var imgSrc = bu.getAttribute("src");
myImg.setAttribute("src",imgSrc);
checkImg(imgSrc);
}
jQuery:
function checkImg(imgSrc){
$("#myImg").attr("src",imgSrc);
}
3.2原生JS对象与JQuery对象
①使用$("")选中的对象是jQuery对象,只能调用jQuery的函数,而不能使用元素js的事件与函数;
$("#p").click(); √
$("#p").onclick = function(){}; ×
解释:$("#p")是jQuery对象,.onclick是原生JS事件
同理,使用document.getElement系列获取的原生JS对象,也不能使用jQuery相关函数。
②原生JS对象转为jQuery对象
可以使用$()包裹原生JS对象即可转为jQuery对象。
var p = document.getElementsByTagName("p");
$(p).click(); √ 原生JS的对象p已转为jQuery对象;
③jQuery对象转为原生JS对象。使用.get(index)或[index]:
$("#p").get(0).onclick = function(){} √
$("#p")[0].onclick = function(){} √
四、作者编 |
从上边,大家可以看出来了,jQuery真心很简洁而且好用!!但是,不可否认,原生JS真心灰常的强大,毕竟原生就是原生,有着无法取代的地位!只是代码的复杂性确实让我们又爱又恨!
而且,jQuery也是他的一个框架,虽然现在jQuery的地位已经和原生差不多相等了。但是小编提醒大家,一定要学号原生哟!
而且,小编听某位自称浩哥的帅锅说过,程序猿是一种非常懒得生物,所以大神们研究了这么多的框架,重要的是,有了这简单的jQuery,为何不用!
JQuery&原生js ——实现剪刀石头布小游戏的更多相关文章
- 一个简单用原生js实现的小游戏----FlappyBird
这是一个特别简单的用原生js实现的一个小鸟游戏,比较简单,适合新手练习 这是html结构 <!DOCTYPE html><html lang="en">&l ...
- 原生js做h5小游戏之打砖块
前言 首先,先说明一下做这个系列的目的:其实主要源于博主希望熟练使用 canvas 的相关 api ,同时对小游戏的实现逻辑比较感兴趣,所以希望通过这一系列的小游戏来提升自身编程能力:关于 es6 语 ...
- 原生js完成拼图小游戏
废话不说,看代码,图片可以自己找,我这直接引用了百度的了 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml ...
- 原生js完成打地鼠小游戏
:这是首页,有简单模式和地狱模式两种模式进行选择 这是选择完模式之后的游戏界面:30秒一局游戏倒计时,每打中一只老鼠加一分,没砸中减一分,没砸不加不减 首先准备几张图片 html代码: <!-- ...
- 一款简洁而强大的前端框架JQUery—动画效果及剪刀石头布小游戏
jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动画 ...
- 用js实现2048小游戏
用js实现2048小游戏 笔记仓库:https://github.com/nnngu/LearningNotes 1.游戏简介 2048是一款休闲益智类的数字叠加小游戏.(文末给出源代码和演示地址) ...
- 【转】利用 three.js 开发微信小游戏的尝试
前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...
- 使用JS实现2048小游戏
JS实现2048小游戏源码 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器.) &l ...
- js实现一个小游戏(飞翔的jj)
js实现一个小游戏(飞翔的jj) 源代码+素材图片在我的仓库 <!DOCTYPE html> <html lang="en"> <head> & ...
随机推荐
- JavaScript基本语法2
javaScript中要显示> .<必须使用> .<,如果是不显示但是要作为条件可以直接使用>.<. 接下来是JavaScirpt函数: 要使用func ...
- Java内存原型分析
Java虚拟机内存原型 寄存器:在程序中无法控制 栈:存放基本类型的数据和对象的引用,但是对象本身不存放在栈中,而是存放在堆中 堆:存放用new产生的数据 静态域:存放在对象中用static定义的静态 ...
- php 数据访问练习:租房查询页面
<html> <head> <title></title> <meta charset="UTF-8"/> <li ...
- [js高手之路]gulp教程-从入门到项目中快速上手使用
在这之前,我已经分享过一个webpack的全系列,相对于webpack, gulp使用和配置起来非常的简单. gulp是什么? gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能 ...
- CSS文本效果
前面的话 本文将详细介绍CSS文本效果 凸版印刷效果 这种效果尤其适用于中等亮度背景配上深色文字的场景:但它也可用于深色底.浅色字的场景,只要文字不是黑色并且背景不是纯黑或纯白就行 [浅色背景深色文本 ...
- (三)、LNMP的搭建,并制作rpm包
中小型规模网站集群架构:yum仓库搭建 : 矮哥linux运维群:93324526 编译的三条命令的规则 ./configure 就是在本地创建了一个Makefile文件 (也就是指定一下各种配置参数 ...
- 详解 mpls vpn 的实现
MPLS VPN的实现 一.实验目的 该实验通过MPLS VPN的数据配置,使学生掌握路由器相关接口的IP地址设置.路由协议的配置以及MPLS VPN的完整的创建过程, 从而加深对IP网络的IP编址. ...
- 防止fixed元素遮挡其他元素的方法
有多个页面,有的有固定的头部(设置了postion:fixed的元素),有的没有固定的头部,这时就有个问题,有固定头部的页面,头部会遮挡下面的内容,那怎么解决呢? <!DOCTYPE html& ...
- 转:【Java集合源码剖析】HashMap源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/36034955 您好,我正在参加CSDN博文大赛,如果您喜欢我的文章,希望您能帮我投一票 ...
- JQuery 相关用法和操作
01-JQuery 基础语法: 1.使用JQuery必须先导入JQuery.x.x.xjs文件. 2.JQuery中的选择器: $(选择器).函数() ① $是JQuery的缩写,既可以使用JQuer ...