使用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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...