亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

使用vue.js編寫藍色拼圖小游戲

2019-11-19 17:07:26
字體:
來源:轉載
供稿:網友

之前在網上看到《藍色拼圖》這款小游戲,作者是用jquery寫的。于是便考慮能不能用vue.js優雅簡單的編寫出來呢?

Later equals never!說干就干。首先理解游戲的規則:第一關為1*1的方塊,第二關為2*2以此類推

該圖為第三關3*3的方塊。點擊一個小方塊,該方塊和它相鄰的方塊的的顏色會從黃色變為藍色,全部變為藍色就過關了。

現在規則清楚了,開動吧!

/*style*/.game_bg{background: #333;width: 600px;height: 600px;margin: 30px auto;border-radius: 3px;}.card{background: #E6AB5E;float: left;margin: 6px 0 0 6px;}.blueCard{background: #5C90FF;}/*html*/<div id="game"><div class='game_bg'><div></div></div></div>/*js*/var vm=ew Vue({el:'#game',data:{margin:6,//每張卡片間的距離level:1,//游戲等級cards:[],//卡片size:0,//每張卡片的尺寸},methods:{},});

卡片數為等級的平方,而每張卡片有黃色和藍色兩種顏色,并且隨著游戲難度的升級,方塊間的距離也在變小。所以在vue構造函數中添加初始化游戲方法

initGame:function(){//初始化游戲函數if(this.level<4){this.margin=12;}else if(this.level<8){this.margin=6;}else if(this.level<16){this.margin=3;}else{this.margin=1;}this.cards=[];this.size=(600-(this.level+1)*this.margin)/this.level;for(var i=this.level*this.level;i--;){this.cards.push({color:false,//false是黃色,true是藍色})}}

<div class='game_bg'></div>中的div進行數據綁定

<div class='card':style="{'width':size+'px','height':size+'px','marginTop':margin+'px','marginLeft':margin+'px'}" :class="{'blueCard':card.color}" v-for="(index,card) in cards"></div></div>

 接下來就是點擊一個方塊進行翻牌的方法。它本身和相鄰的卡片的color屬性取反就行了。而我們注意到:位于該卡片左邊的是下標減1;右邊的是下標加1;上面的是下標減等級;下面的下標加等級。要注意的vm.cards下標不存在的時候和在最左邊或最右邊時雖然下標有可能存在但是相鄰的卡片是可能沒有的。所以加了一個改變相鄰區域的顏色的方法和在methods中加了一個翻牌子的方法

var changeNeighbor=function(index){var cards=vm.cards;if(index>0){//左邊if(index%vm.level){//不在最左邊cards[index-1].color=!cards[index-1].color;}}if(index<cards.length-1){//右邊if((index+1)%vm.level){//不在最右邊cards[index+1].color=!cards[index+1].color;}}if(index-vm.level>=0){//上面cards[index-vm.level].color=!cards[index-vm.level].color;}if(index+vm.level<cards.length){//下面cards[index+vm.level].color=!cards[index+vm.level].color;}}/*********************************************************/flop:function(index){//翻牌this.cards[index].color=!this.cards[index].color;changeNeighbor(index);}

每次點擊后都要判斷本關游戲是否結束。遍歷vm.cards。發現如果存在color屬性為false的就是沒有過關,反之則關過。

var gameOver=function(){var cards=vm.cards;for(var i=cards.length;i--;){if(!cards[i].color) return false;}return true};

這樣游戲基本的功能就實現了。然后再加上過關之后將等級提高1。并且將等級存到localStorage中。每次進入頁面都去localStorage中查詢等級。過關之后給個提示。將點擊的步驟數顯現出來。加上重置本輪和重置等級的方法。在細節上進行一些修改和增加最后的代碼就是這樣

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><style type="text/css">.game_bg{background: #333;width: 600px;height: 600px;margin: 30px auto;border-radius: 3px;}.card{background: #E6AB5E;float: left;margin: 6px 0 0 6px;}.blueCard{background: #5C90FF;}.btn_box{text-align: center;}.info_box{text-align: center;}.info_box span{padding: 20px;}.rule_box{width: 300px;position: fixed;top: 100px;left: 50px;color: #333;}h1{margin: 0;text-align: center;font-size: 28px;margin-bottom: 10px;}</style></body><h1>翻牌子游戲</h1><div id="game"><div class="info_box"><span v-text="'第'+level+'關'"></span><span v-text="'點擊'+stepCount+'次'"></span></div><div class='game_bg'><div class='card' @click="flop(index)":style="{'width':size+'px','height':size+'px','marginTop':margin+'px','marginLeft':margin+'px'}" :class="{'blueCard':card.color}" v-for="(index,card) in cards"></div></div><div class="rule_box"><h3>游戲規則</h3><h4>點擊相應的方塊該方塊和它相鄰的方塊的的顏色會發生變化,全部變為藍色就過關了</h4></div><div class="btn_box"><button @click="resetLevel">重置等級</button><button @click="initGame">重新開始本輪</button></div></div><script src="vue/Vue.min.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript">/*** 該函數用來改變點擊的卡片相鄰卡片的顏色* 位于該卡片左邊的是下標減1;右邊的是下標加1;上面的是下標減等級;下面的下標加等級*/var changeNeighbor=function(index){var cards=vm.cards;if(index>0){//左邊if(index%vm.level){//不在最左邊cards[index-1].color=!cards[index-1].color;}}if(index<cards.length-1){//右邊if((index+1)%vm.level){//不在最右邊cards[index+1].color=!cards[index+1].color;}}if(index-vm.level>=0){//上面cards[index-vm.level].color=!cards[index-vm.level].color;}if(index+vm.level<cards.length){//下面cards[index+vm.level].color=!cards[index+vm.level].color;}}/***該函數用來判斷游戲是否結束 */var gameOver=function(){var cards=vm.cards;for(var i=cards.length;i--;){if(!cards[i].color) return false;}setLevel(vm.level+1);vm.stepCount=0;return true};/*** 將等級儲存止本地*/var setLevel=function(level){localStorage.cardLevel=level;};/*** 得到本地的等級*/var getLevel=function(){if(localStorage.cardLevel) return localStorage.cardLevel*1;return 0;};/*** 構建vue構造函數*/var vm=new Vue({el:'#game',data:{margin:6,//每張卡片間的距離level:1,//游戲等級cards:[],//卡片size:0,//每張卡片的尺寸stepCount:0,//每輪點擊的次數},methods:{initGame:function(){//初始化游戲函數var level=getLevel();if(level){this.level=level;}if(this.level<4){this.margin=12;}else if(this.level<8){this.margin=6;}else if(this.level<16){this.margin=3;}else{this.margin=1;}this.cards=[];this.size=(600-(this.level+1)*this.margin)/this.level;for(var i=this.level*this.level;i--;){this.cards.push({color:false,//false是黃色,true是藍色})}},flop:function(index){//翻牌this.stepCount++;this.cards[index].color=!this.cards[index].color;changeNeighbor(index);if(gameOver()){setTimeout(function(){alert('恭喜通過第'+vm.level+'關');vm.level++;vm.initGame();},200)}},resetLevel:function(){//重置等級this.level=1;localStorage.cardLevel=1;vm.initGame();},},});vm.initGame();</script></html>

別忘了加上vue2.0。就可以玩了。


以上所述是小編給大家介紹的vue.js編寫藍色拼圖小游戲,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产性色av一区二区| 成人日韩在线电影| 黑人精品xxx一区| 红桃av永久久久| 欧美视频一区二区三区…| 久久久成人的性感天堂| 成人黄色在线观看| 中文字幕在线日韩| 久久在线精品视频| 亚洲第一视频在线观看| 国产精品老女人视频| 亚洲缚视频在线观看| 日韩资源在线观看| 亚洲性日韩精品一区二区| 欧美中文在线观看国产| 亚洲欧美精品在线| 国产精品一区电影| 欧美专区在线观看| 亚洲精品久久久久久久久久久久久| 精品一区电影国产| 美女999久久久精品视频| 欧美成人在线影院| 欧美激情精品久久久久久变态| 色吧影院999| 欧美与黑人午夜性猛交久久久| 国产精品三级美女白浆呻吟| 亚洲香蕉伊综合在人在线视看| 欧美成年人网站| 欧美性极品xxxx娇小| 亚洲伊人一本大道中文字幕| 91精品视频播放| 欧美性猛交丰臀xxxxx网站| 成人在线精品视频| 不卡在线观看电视剧完整版| 欧美福利视频在线| 久久久久久久一区二区三区| 久久亚洲国产成人| 国产精品视频大全| 欧美精品少妇videofree| 成人免费视频网址| 日本一欧美一欧美一亚洲视频| 欧美在线视频免费播放| 色婷婷亚洲mv天堂mv在影片| 亚洲性视频网址| 欧美电影在线观看网站| 久久久久久国产免费| 亚洲欧洲国产一区| 俺去啦;欧美日韩| 亚洲欧洲中文天堂| 久久精品久久久久电影| 国产精品黄色av| 97在线精品视频| 亚洲精品中文字幕有码专区| 这里只有精品丝袜| 日韩一区二区久久久| 亚洲性视频网站| 国产亚洲aⅴaaaaaa毛片| 日本精品视频在线播放| 都市激情亚洲色图| 91探花福利精品国产自产在线| 91精品在线观看视频| 欧美高清视频免费观看| 欧美性猛交xxxx免费看漫画| 国产精品高潮呻吟久久av黑人| 在线电影欧美日韩一区二区私密| 国产欧美精品va在线观看| 日韩av免费在线| 色噜噜国产精品视频一区二区| 九九久久综合网站| 91久久在线观看| 久久久久久久久久久亚洲| 日韩av网址在线观看| 欧洲中文字幕国产精品| 欧美一区二区三区精品电影| 国产成人精品综合久久久| 日韩av片免费在线观看| 97精品久久久中文字幕免费| 亚洲国产精品va在线看黑人| 456国产精品| 欧美午夜xxx| 欧美一级大片在线免费观看| 亚洲国产精品99| 欧美成人一二三| 国产精品自产拍在线观看中文| 成人精品一区二区三区| 97成人精品视频在线观看| 91国内在线视频| 欧美日韩亚洲网| 成人免费淫片视频软件| 色婷婷综合成人av| 搡老女人一区二区三区视频tv| 国产在线播放不卡| 91久久国产综合久久91精品网站| 国产精品久久久久久久午夜| 国产日韩欧美中文在线播放| 欧美激情一区二区三区久久久| 97在线观看视频| 日韩精品高清在线观看| 亚洲毛片在线观看| 亚洲成人精品久久| 亚洲免费人成在线视频观看| 97色伦亚洲国产| 成人免费视频在线观看超级碰| 欧美区在线播放| 欧美成人免费在线视频| 精品国产乱码久久久久久虫虫漫画| 高潮白浆女日韩av免费看| 精品国产欧美成人夜夜嗨| 日韩在线视频免费观看高清中文| 久久久成人精品视频| 精品视频在线播放| 深夜福利国产精品| 欧美一级视频一区二区| 欧美大肥婆大肥bbbbb| 欧美色欧美亚洲高清在线视频| 成人黄色生活片| 日韩精品在线私人| 日韩一区二区福利| 久久91精品国产91久久跳| 欧美成人在线影院| 国产成人jvid在线播放| 57pao成人永久免费视频| 色综合久久中文字幕综合网小说| 国产精品久久久久久久久久99| 久久影院模特热| 欧美成人免费大片| 日韩有码在线视频| 91精品国产综合久久香蕉最新版| 国产精品444| 久久久久九九九九| 亚洲欧美激情一区| 在线国产精品播放| 精品国产91乱高清在线观看| 国产精品午夜国产小视频| 国产日韩欧美在线| 日韩av大片在线| 日韩欧美a级成人黄色| 91精品国产综合久久久久久久久| 亚洲91av视频| 国产精品视频区1| 国产精品高潮呻吟久久av黑人| 欧美国产第一页| 日韩国产欧美精品一区二区三区| 91在线精品视频| 国产精品成人av在线| 亚洲女人被黑人巨大进入al| 日韩女优在线播放| 国产精品视频免费在线观看| 中文字幕日韩综合av| 国产日韩欧美另类| 68精品久久久久久欧美| 日韩在线免费视频| 97色在线视频| 欧美色另类天堂2015| 中日韩美女免费视频网站在线观看| 精品国产一区久久久| 97精品国产97久久久久久免费| 最近中文字幕日韩精品| 亚洲在线视频观看| 色婷婷综合久久久久| 国产精品成人免费电影| 国产+成+人+亚洲欧洲| 57pao成人永久免费视频| 久久久久久18|