使用Vue編寫點擊數字小游戲

来源:http://www.cnblogs.com/tab121215/archive/2016/08/30/5823359.html
-Advertisement-
Play Games

使用vue編寫一個點擊數字計時小游戲,列入你在文本框中輸入3,點擊開始會生成一個3行3列的表格,表格數據為1-9隨機排列,這時候從1開始點擊,按順序點到9,當按正確順序點擊完畢,會提示所用的時間,如果順序沒有按對,會提示游戲結束. 1.首先下載vue源碼,下載地址http://cn.vuejs.or ...


使用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的源文件

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

4.簡單的頁面

1)首先v-model,數據的雙向綁定,根據你文本框輸入的值變化而變化.

2)@click綁定一個click事件,其中@是v-on的縮寫.當然綁定事件可以帶參數例如@click='time(item)'.

3)v-for="(index, item) in list",迴圈數組,index為數組的角標,item為數組中的值.

可以看一下vue文檔進一步瞭解.

 1 <body>
 2         <div id="play">
 3             <span>輸入數字,點擊開始,會生成對應輸入數字的表格,從表格中數字1開始點擊,按順序點擊到最後....</span><br />
 4             <input type="number" v-model="num" />
 5             <button @click='arr'>開始</button>
 6             <br />
 7             <div v-for="(index, item) in list">
 8                 <template v-if="index % num == 0 && index!=0"><br><br><br></template>
 9                 <div style="float: left;"><button class="ibutton" @click='time(item)'>{{item}}</button></div>
10             </div>
11         </div>
12 </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來控制點擊的順序.

 

 1 <script>
 2         new Vue({
 3             el: '#play',
 4             data: {
 5                 num: 2,
 6                 list: [],
 7                 startTime: 0,
 8                 endTime:0,
 9                 checkNum:0
10             },
11             methods: {
12                 arr: function() {
13                     if(this.num > 20){
14                         alert('數值過大,瀏覽器會死掉,最好不要大於20');
15                         return;
16                     }
17                     this.checkNum = 0;
18                     var arrlength = this.num * this.num;
19                     var arr = new Array(arrlength);
20                     var index = 0;
21                     for(var i = 1; i <= arrlength; i++) {
22                         //生成隨機數
23                         var num = Math.random(); //Math.random():得到一個0到1之間的隨機數
24                         num = Math.ceil(num * arrlength); //num*?的取值範圍在0~?之間,使用向上取整就可以得到一個1~?的隨機
25                         if(arr[0] != 0) {
26                             var flag = false; // 控制是否存在重覆元素
27                             // 遍歷生產數組中的元素
28                             for(var j = 0; j < arr.length; j++) {
29                                 if(num != arr[j]) {
30                                     flag = true;
31                                 } else {
32                                     flag = false;
33                                     break;
34                                 }
35                             }
36                             if(flag == true) {
37                                 arr[index++] = num;
38                             } else {
39                                 // 發現有重覆元素重新產生新的隨機數
40                                 i--;
41                             }
42                         } else {
43                             arr[index++] = num;
44                         }
45                     
46                     }
47                     this.list = arr;
48                 },
49                 time: function(item){
50                     if(this.checkNum+1 != item){
51                         alert('game over');
52                         this.checkNum = 0;
53                         return; 
54                     }
55                     var date = new Date();
56                     if(item == 1){
57                         this.startTime = date.getTime();
58                     }
59                     if(item == this.num * this.num){
60                         this.endTime = date.getTime();
61                         var useTime = ((this.endTime - this.startTime)/1000).toFixed(2);
62                         alert('使用了'+useTime+'秒');
63                         this.checkNum = 0;
64                         return;
65                     }
66                     this.checkNum = item;
67                 }
68             }
69         })
70 </script>

6.css代碼

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

7.在某些特定的場景使用vue來完成一個功能要比jquery簡單的多,但是jquery還是很強大的,根據不同的場景運用不同的技術,更快更好的完成自己想要的功能.

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [1]innerHTML [2]outerHTML [3]innerText [4]outerText [5]textContent ...
  • 24為師網站地址:https://24ways.org/,比較突出的效果就是右上角翻頁出現作者頭像的效果,見獵心喜,於是模仿寫了一個,沒有用animate,辛勤的你可以優化一下,順便指點下。 實現的效果:1.當滑鼠位於文章上方時,右上角翻頁,出現作者頭像。 2.文章高度自適應 以下是代碼(調代碼用的 ...
  • ...
  • 1.html部分 <body> <div id="tab"> <div class="tab_menu"> <ul> <li class="selected"><a href="#">時事</a></li> <li><a href="#">體育</a></li> <li><a href="#">娛樂 ...
  • 很久之前寫了一個jquery3D樓盤線上選擇,這麼一個插件,插件很簡單,因為後期項目中沒有實際用到,因此,有些地方不是很完善,後面也懶得再進行修改維護了。最近放到github上面,但是也少有人問津及star。昨天,有個網友問我,這個插件中關於拖拽的一些寫法! ...
  • 對於響應式佈局呢,我相信每個人都有自己不同的見解,有的呢認為響應式佈局就是一種網頁,但是我們真正的響應式佈局是可以隨網頁的大小,從而自己調節的一種網頁,在PC端的時候網頁上的所有的東西都呈一排顯示,或者是分為有兩個側欄,或一個側欄,還有主題內容組成的,在PC端的時候是整體一排顯示的,但是隨著屏幕的縮 ...
  • 概念 響應式佈局,就是響應式設計方案的呈現。具體點就是在不同的設備上,網頁能自動識別屏幕寬度、並根據設備的顯示面積(一般情況下是指的屏幕寬度,當然,也可以是其他的,可以在下麵詳細解釋)顯示出不同的效果。通俗點就是設計一套佈局,在PC端和移動端都可以使用。 如何實現響應式佈局? 通俗的有三種方法 1、 ...
  • 響應式佈局,就是一個網站可以相容多類型終端,但不是需要為每一個終端做一個特定的網頁版本。響應式佈局可以為不同終端的用戶提供更舒適的界面和用戶體驗,目前越來越多的大屏幕移動設備的出現,響應式也隨之成為開發人員廣泛使用的WEB技術。 優點: 面對不同解析度設備靈活性強 能夠快捷解決多設備顯示適應問題 缺 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...