使用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 存在陷阱 删除某一区域所有节点
May 10 Javascript
firefox浏览器不支持innerText的解决方法
Aug 07 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
Apr 21 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
js动态创建及移除div的方法
Jun 03 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
JS 使用 window对象的print方法实现分页打印功能
May 16 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
Aug 29 Javascript
详解webpack模块加载器兼打包工具
Sep 11 Javascript
vue组件传值的实现方式小结【三种方式】
Feb 05 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
Jul 21 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
Sep 09 Javascript
原生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
php 删除cookie和浏览器重定向
2009/03/16 PHP
php模板原理讲解
2013/11/13 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
xml和web特殊字符
2009/04/28 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
python实现图书借阅系统
2019/02/20 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
为什么称python为胶水语言
2020/06/16 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
大学生职业规划书的范本
2014/02/18 职场文书
优秀语文教师事迹
2014/05/18 职场文书
工作收入住址证明
2014/10/28 职场文书