使用vue编写一个点击数字计时小游戏


Posted in Javascript onAugust 31, 2016

使用vue编写一个点击数字计时小游戏,列入你在文本框中输入3,点击开始会生成一个3行3列的表格,表格数据为1-9随机排列,这时候从1开始点击,按顺序点到9,当按正确顺序点击完毕,会提示所用的时间,如果顺序没有按对,会提示游戏结束. 

1.首先下载vue源码,下载地址http://cn.vuejs.org 

2.jquery是在面向dom操作,而vue是面向数据操作的,所以使用vue最好不要去操作dom,尽量发挥出vue的独到之处,(如果使用过angularjs可能更容易理解) 

3.建立一个普通的html文件,在头部引用vue的源文件

<head>
  <meta charset="utf-8" />
  <title></title>
  <script type="text/javascript" src="js/vue.js"></script>
</head>

4.简单的页面 

1)首先v-model,数据的双向绑定,根据你文本框输入的值变化而变化. 

2)@click绑定一个click事件,其中@是v-on的缩写.当然绑定事件可以带参数例如@click='time(item)'. 

3)v-for="(index, item) in list",循环数组,index为数组的角标,item为数组中的值. 

可以看一下vue文档进一步了解. 

<body>
 <div id="play">
  <span>输入数字,点击开始,会生成对应输入数字的表格,从表格中数字1开始点击,按顺序点击到最后....</span><br />
  <input type="number" v-model="num" />
  <button @click='arr'>开始</button>
  <br />
  <div v-for="(index, item) in list">
  <template v-if="index % num == 0 && index!=0"><br><br><br></template>
  <div style="float: left;"><button class="ibutton" @click='time(item)'>{{item}}</button></div>
  </div>
 </div>
</body>

5.vue操作 

1)首先要new出一个Vue的实例,el绑定你的dom,这里用id作为标识 

2)data这是vue要操作的数据,num文本框的值(默认为2),list[]根据文本框值,生成的list,startTime点击表格的开始时间,endTime点击表格的结束时间,checkNum当前选中的数字. 

3)methods中有两个方法arr用来根据文本框的值,生成一个数组,生成一个文本框值的平方长度,且不会重复的数组,数组的值为1-文本框值的平方,加入文本框的值为3,则生成的数组长度为9,数组的内容为1-9且不重复. 

time计算点击的开始时间和结束时间,用check]Num来控制点击的顺序.

<script>
 new Vue({
  el: '#play',
  data: {
  num: 2,
  list: [],
  startTime: 0,
  endTime:0,
  checkNum:0
  },
  methods: {
  arr: function() {
   if(this.num > 20){
   alert('数值过大,浏览器会死掉,最好不要大于20');
   return;
   }
   this.checkNum = 0;
   var arrlength = this.num * this.num;
   var arr = new Array(arrlength);
   var index = 0;
   for(var i = 1; i <= arrlength; i++) {
   //生成随机数
   var num = Math.random(); //Math.random():得到一个0到1之间的随机数
   num = Math.ceil(num * arrlength); //num*?的取值范围在0~?之间,使用向上取整就可以得到一个1~?的随机
   if(arr[0] != 0) {
    var flag = false; // 控制是否存在重复元素
    // 遍历生产数组中的元素
    for(var j = 0; j < arr.length; j++) {
    if(num != arr[j]) {
     flag = true;
    } else {
     flag = false;
     break;
    }
    }
    if(flag == true) {
    arr[index++] = num;
    } else {
    // 发现有重复元素重新产生新的随机数
    i--;
    }
   } else {
    arr[index++] = num;
   }
   
   }
   this.list = arr;
  },
  time: function(item){
   if(this.checkNum+1 != item){
   alert('game over');
   this.checkNum = 0;
   return; 
   }
   var date = new Date();
   if(item == 1){
   this.startTime = date.getTime();
   }
   if(item == this.num * this.num){
   this.endTime = date.getTime();
   var useTime = ((this.endTime - this.startTime)/1000).toFixed(2);
   alert('使用了'+useTime+'秒');
   this.checkNum = 0;
   return;
   }
   this.checkNum = item;
  }
  }
 })
</script>

6.css代码 

<style>
 .ibutton{
  margin-top: 10px;
  margin-left: 10px;
  color: #fff;
  border: 1px solid #8a6de9;
  background-color: #8a6de9;
  font-size: 14px;
  padding: 6px 12px;
  border-radius: 7px;
  width: 50px;
  height: 40px;
 }
</style>

7.在某些特定的场景使用vue来完成一个功能要比jquery简单的多,但是jquery还是很强大的,根据不同的场景运用不同的技术,更快更好的完成自己想要的功能.

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
JavaScript通过prototype给对象定义属性用法实例
Mar 23 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
js淡入淡出焦点图幻灯片效果代码分享
Sep 08 Javascript
Bootstrap插件全集
Jul 18 Javascript
微信小程序 地图定位简单实例
Oct 14 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
JS中的算法与数据结构之列表(List)实例详解
Aug 16 Javascript
解决vue 子组件修改父组件传来的props值报错问题
Nov 09 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
May 15 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
原生js实现tab选项卡切换
Mar 23 #Javascript
jquery的checkbox,radio,select等方法小结
Aug 30 #Javascript
Javascript日期格式化format函数的使用方法
Aug 30 #Javascript
浅析ES6的八进制与二进制整数字面量
Aug 30 #Javascript
AngularJS轻松实现双击排序的功能
Aug 30 #Javascript
jQuery simpleModal插件的使用介绍
Aug 30 #Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 #Javascript
You might like
Banner程序
2006/10/09 PHP
基于php split()函数的用法详解
2013/06/05 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
php截取字符串函数分享
2015/02/02 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
Python记录详细调用堆栈日志的方法
2015/05/05 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
社会实践自我鉴定
2013/11/07 职场文书
祖国在我心中演讲稿
2014/01/15 职场文书
财务工作失误检讨书
2015/02/19 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技