使用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 相关文章推荐
JS获取鼠标坐标的实例方法
Jul 18 Javascript
jQuery动态添加删除select项(实现代码)
Sep 03 Javascript
JavaScript调用后台的三种方法实例
Oct 17 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
Nov 29 Javascript
JSON.parse()和JSON.stringify()使用介绍
Jun 20 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
javascript类型系统——undefined和null全面了解
Jul 13 Javascript
功能强大的jquery.validate表单验证插件
Nov 07 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
Nov 09 Javascript
jstree中的checkbox默认选中和隐藏示例代码
Dec 29 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 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
php递归列出所有文件和目录的代码
2008/09/10 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
tab栏切换原理
2017/03/22 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
python cs架构实现简单文件传输
2020/03/20 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
python 写一个性能测试工具(一)
2020/10/24 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
软件测试有哪些?什么是配置项?
2012/02/12 面试题
自我评价的写作规则
2014/01/06 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
mysql分表之后如何平滑上线详解
2021/11/01 MySQL