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

首頁 > 語言 > JavaScript > 正文

原生js實現的貪吃蛇網頁版游戲完整實例

2024-05-06 16:20:35
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了原生js實現的貪吃蛇網頁版游戲完整實例,可實現自主選擇游戲難度進行貪吃蛇游戲的功能,涉及javascript鍵盤事件及頁面元素的操作技巧,需要的朋友可以參考下

本文實例講述了原生js實現的貪吃蛇網頁版游戲。分享給大家供大家參考。具體實現方法如下:

 

 
  1. <html> 
  2. <head> 
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  4. <title>原生js寫的貪吃蛇網頁版游戲</title> 
  5. </head> 
  6. <body> 
  7. </body> 
  8. <script>  
  9. Star = { 
  10. init:function(){ 
  11. var bigDiv = this.appendEle(this.addStyle(this.creatEle(), 
  12. {w:'900',h:'600',p:'absolute',t:10,l:500})); 
  13. for(var i = 0; i<600/30;i++){ 
  14. Star.data.arrayAll[i] = []; 
  15. for(var j = 0; j<900/30; j++){ 
  16. div = this.addStyle(this.creatEle(),{w:(!+[1,] ? 30 :28),h:(!+[1,] ? 30 :28),f:'left',border:'1px solid #666'}); 
  17. div.setAttribute('number', i*30+j) 
  18. this.appendEle(div,bigDiv) 
  19. Star.data.arrayAll[i][j] = div; 
  20. bigDiv = this.appendEle(this.addStyle(this.creatEle(), 
  21. {w:'900',h:'600',p:'absolute',t:10,l:500})); 
  22. this.pushEleInSelect(Star.data.arrayAll[9][15],Star.data.arrayAll[9][14],Star.data.arrayAll[9][13]) 
  23. this.keyBoard.apply(this,arguments); 
  24. this.appearPoint(); 
  25. this.leftGo(); 
  26. }, 
  27. appearPoint:function(){ 
  28. var arrayIn = []; 
  29. var number; 
  30. for(var i = 0; i<600; i++){ 
  31. if(!this.hasInArray(Star.data.arrayAll[parseInt(i/30)][i%30].getAttribute('number'),Star.data.arraySelect)){ 
  32. arrayIn.push(Star.data.arrayAll[i]) 
  33. Star.data.foodNumber = number = parseInt(Math.random()*arrayIn.length); 
  34. this.giveColor(number) 
  35. }, 
  36. giveColor:function(number){ 
  37. var div = Star.data.arrayAll[parseInt(number/30)][number%30]; 
  38. Star.timeInterval.timeB = setInterval(function(){ 
  39. if(div.className == 'shanshuo'){ 
  40. div.className = '' 
  41. div.style.backgroundColor = '#fff' 
  42. else
  43. div.className = 'shanshuo'
  44. div.style.backgroundColor = '#f00' 
  45. },500) 
  46. }, 
  47. disappearColor:function(){ 
  48. clearInterval(Star.timeInterval.timeB); 
  49. Star.data.arrayAll[parseInt(Star.data.foodNumber/30)][Star.data.foodNumber%30].style.backgroundColor = '#f00'
  50. }, 
  51. hasInArray:function(number,array){ 
  52. for(var i in array){ 
  53. if(array[i] instanceof Array){ 
  54. if(this.hasInArray(number,array[i])){ 
  55. return true
  56. if(array[i].getAttribute && array[i].getAttribute('number') == number) return true
  57. return false
  58. }, 
  59. keyBoard:function(){ 
  60. var self = this
  61. document.onkeydown = function(e){ 
  62. e = e? e : window.event; 
  63. switch(e.keyCode){ 
  64. case 37: if(Star.keycode == 37 || Star.keycode == 39){return;}; self.leftGo(); break
  65. case 38: if(Star.keycode == 38 || Star.keycode == 40){return;}; self.upGo();break
  66. case 39: if(Star.keycode == 37 || Star.keycode == 39){return;}; self.rightGo();break
  67. case 40: if(Star.keycode == 38 || Star.keycode == 40){return;}; self.downGo();break
  68. }, 
  69. leftGo:function(){ 
  70. var div, number , self = this
  71. Star.keycode = 37; 
  72. clearInterval(Star.timeInterval.timeA) 
  73. Star.timeInterval.timeA = setInterval(function(){ 
  74. number = Star.data.arraySelect[0].getAttribute('number'); 
  75. if(number%30<=0 || self.hasInArray(number-1,Star.data.arraySelect)){ 
  76. self.guanle(); 
  77. else
  78. if(Star.data.foodNumber == number-1){ 
  79. self.pushEleInSelect(Star.data.arrayAll[parseInt(Star.data.foodNumber/30)][Star.data.foodNumber%30]); 
  80. self.disappearColor(); 
  81. self.appearPoint(); 
  82. else
  83. div = Star.data.arraySelect.pop(); 
  84. div.style.background = '#fff'
  85. self.pushEleInSelect(Star.data.arrayAll[parseInt(number/30)][number%30-1]); 
  86. },Star.timeInterval.speed) 
  87. }, 
  88. upGo:function(){ 
  89. var div, number , self = this
  90. Star.keycode = 38; 
  91. clearInterval(Star.timeInterval.timeA) 
  92. Star.timeInterval.timeA = setInterval(function(){ 
  93. number = parseInt(Star.data.arraySelect[0].getAttribute('number')); 
  94. if(parseInt(number/30)<=0 || self.hasInArray(number-30,Star.data.arraySelect)){ 
  95. self.guanle(); 
  96. else
  97. if(Star.data.foodNumber == number-30){ 
  98. self.pushEleInSelect(Star.data.arrayAll[parseInt(Star.data.foodNumber/30)][Star.data.foodNumber%30]); 
  99. self.disappearColor(); 
  100. self.appearPoint(); 
  101. else
  102. div = Star.data.arraySelect.pop(); 
  103. div.style.background = '#fff'
  104. self.pushEleInSelect(Star.data.arrayAll[parseInt(number/30)-1][number%30]); 
  105. },Star.timeInterval.speed) 
  106. }, 
  107. rightGo:function(){ 
  108. var div, number , self = this
  109. Star.keycode = 39; 
  110. clearInterval(Star.timeInterval.timeA) 
  111. Star.timeInterval.timeA = setInterval(function(){ 
  112. number = parseInt(Star.data.arraySelect[0].getAttribute('number')); 
  113. if(parseInt(number%30)>=29 || self.hasInArray(number+1,Star.data.arraySelect)){ 
  114. self.guanle(); 
  115. else
  116. if(Star.data.foodNumber == number+1){ 
  117. self.pushEleInSelect(Star.data.arrayAll[parseInt(Star.data.foodNumber/30)][Star.data.foodNumber%30]); 
  118. self.disappearColor(); 
  119. self.appearPoint(); 
  120. else
  121. div = Star.data.arraySelect.pop(); 
  122. div.style.background = '#fff'
  123. self.pushEleInSelect(Star.data.arrayAll[parseInt(number/30)][number%30+1]); 
  124. },Star.timeInterval.speed) 
  125. }, 
  126. downGo:function(){ 
  127. var div, number , self = this
  128. Star.keycode = 40; 
  129. clearInterval(Star.timeInterval.timeA) 
  130. Star.timeInterval.timeA = setInterval(function(){ 
  131. number = parseInt(Star.data.arraySelect[0].getAttribute('number')); 
  132. if(parseInt(number/30)>=19 || self.hasInArray(number+30,Star.data.arraySelect)){ 
  133. self.guanle(); 
  134. else
  135. if(Star.data.foodNumber == number+30){ 
  136. self.pushEleInSelect(Star.data.arrayAll[parseInt(Star.data.foodNumber/30)][Star.data.foodNumber%30]); 
  137. self.disappearColor(); 
  138. self.appearPoint(); 
  139. else
  140. div = Star.data.arraySelect.pop(); 
  141. div.style.background = '#fff'
  142. self.pushEleInSelect(Star.data.arrayAll[parseInt(number/30)+1][number%30]); 
  143. },Star.timeInterval.speed) 
  144. }, 
  145. guanle:function(){ 
  146. alert('撞墻了,總分:' + (Star.data.arraySelect.length-3) * parseInt(1000 / Star.timeInterval.speed)); 
  147. location.reload(); 
  148. }, 
  149. creatEle:function(tag){ 
  150. var tagName = tag || 'DIV' 
  151. return document.createElement(tagName) 
  152. }, 
  153. appendEle:function(ele,father){ 
  154. var father = father || document.body || document.documentElement 
  155. father.appendChild(ele) 
  156. return ele; 
  157. }, 
  158. addStyle:function(ele,css){ 
  159. for(var i in css){ 
  160. switch(i){ 
  161. case 'b' : ele.style.background = css[i]; break
  162. case 'l' : ele.style.left = css[i]+'px'break
  163. case 'r' : ele.style.right = css[i]+'px'break
  164. case 't' : ele.style.top = css[i]+'px'break
  165. case 'd' : ele.style.down = css[i]+'px'break
  166. case 'p' : ele.style.position = css[i]; break
  167. case 'w' : ele.style.width = css[i]+'px'break
  168. case 'h' : ele.style.height = css[i]+'px'break
  169. case 'f' : ele.style.cssFloat = css[i]; ele.style.styleFloat = css[i]; break
  170. default : ele.style[i] = css[i]; break
  171. return ele; 
  172. }, 
  173. pushEleInSelect:function(){ 
  174. for(var i = 0; i<arguments.length; i++){ 
  175. Star.data.arraySelect = [arguments[i]].concat(Star.data.arraySelect) 
  176. this.addStyle(arguments[i],{b:'#f00'}) 
  177. Star.data={ 
  178. arrayAll : [], 
  179. arraySelect:[], 
  180. newPoint:null
  181. foodNumber:0 
  182. Star.timeInterval={ 
  183. timeA:null
  184. timeB:null 
  185. Star.keycode = 0; 
  186. window.onload = function(){ 
  187. var select = Star.creatEle('select'); 
  188. var optionDefault = Star.creatEle('option'); 
  189. optionDefault.innerHTML = '請選擇關卡' 
  190. Star.appendEle(optionDefault,select) 
  191. Star.addStyle(select,{w:200,h:30,p:'absolute',left:'40%',top:'40%'}) 
  192. for(var i = 0 ; i <10 ; i++){ 
  193. var option = Star.creatEle('option'); 
  194. option.innerHTML = '第' + (i+1) + '關' 
  195. Star.appendEle(option,select); 
  196. Star.appendEle(select) 
  197. select.onchange = function(){ 
  198. selectValue = select.options[select.selectedIndex].value || select.options[select.selectedIndex].innerHTML 
  199. var number = selectValue.match(//d+/)[0] 
  200. Star.timeInterval.speed = parseInt(200/number); 
  201. Star.addStyle(select,{display:'none'}); 
  202. Star.init(); 
  203. </script> 
  204. </html> 

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av毛片网| 亚洲精品一区二三区不卡| 成人妇女免费播放久久久| 欧美一级淫片videoshd| 国产成人精彩在线视频九色| 欧美成人午夜影院| 1769国内精品视频在线播放| 亚洲风情亚aⅴ在线发布| 精品亚洲一区二区| 亚洲人成电影网站色| 久久精品视频在线观看| 久久夜色精品国产亚洲aⅴ| 亚洲男子天堂网| 日韩免费在线看| 亚洲老头同性xxxxx| 粉嫩老牛aⅴ一区二区三区| 精品视频在线播放免| 日本不卡视频在线播放| 欧美中文字幕视频在线观看| 97久久精品在线| 中文字幕国产日韩| 国产深夜精品福利| 久久影院在线观看| 亚洲精品免费网站| 日韩av手机在线观看| 国产精品一区二区av影院萌芽| 久久精品免费电影| 亚洲美女激情视频| 国产视频999| 两个人的视频www国产精品| 国产精品一区久久久| 秋霞成人午夜鲁丝一区二区三区| 欧美电影《睫毛膏》| 国产日韩欧美中文在线播放| 日本sm极度另类视频| 日韩欧美在线免费观看| 亚洲精品小视频在线观看| 欧美性猛交xxxx乱大交3| 久久av红桃一区二区小说| 91精品久久久久久久久不口人| 日韩欧美在线一区| 久久中文字幕在线| 亚洲国产精品久久精品怡红院| 久久久久久久久久久国产| 国产一区二区欧美日韩| 日韩精品免费综合视频在线播放| 久久九九热免费视频| 91免费电影网站| 欧美性生交xxxxx久久久| 亚洲国产美女久久久久| 欧美巨大黑人极品精男| 中文字幕日韩精品在线观看| 98精品国产自产在线观看| 色偷偷偷综合中文字幕;dd| 国产成人a亚洲精品| 欧美日韩午夜视频在线观看| 91福利视频在线观看| 综合av色偷偷网| 午夜精品久久久久久久久久久久| 亚洲影院色在线观看免费| 日韩久久午夜影院| 国产日韩精品在线| 欧美韩国理论所午夜片917电影| 亚洲欧美激情四射在线日| 色一情一乱一区二区| 亚洲自拍偷拍第一页| 精品毛片网大全| 69久久夜色精品国产69| 日韩在线国产精品| 亚洲成色777777在线观看影院| 中文字幕亚洲二区| 欧美高跟鞋交xxxxxhd| 久久亚洲精品中文字幕冲田杏梨| 欧美性极品少妇精品网站| 2020欧美日韩在线视频| 欧美精品手机在线| 成人激情在线观看| 久久视频在线免费观看| 久久久av免费| 国产视频精品va久久久久久| 欧美黑人巨大精品一区二区| 在线观看欧美www| 日韩国产高清污视频在线观看| 日本中文字幕不卡免费| 亚洲成av人片在线观看香蕉| 2019亚洲日韩新视频| 国产精品美女视频网站| 国产精品久久久久久久久免费看| 国产91精品久久久| 欧美成人精品激情在线观看| 日本国产一区二区三区| 国产精品视频区1| 日韩高清电影免费观看完整| 在线观看国产精品日韩av| 国产精品久久久久免费a∨大胸| 国产成人综合精品在线| 中文字幕日韩精品有码视频| 国产视频久久久| 国产精品一区二区久久久| 伊人久久久久久久久久| 国产亚洲综合久久| 亚洲激情中文字幕| 日韩免费在线免费观看| 色诱女教师一区二区三区| 一区二区成人精品| 成年无码av片在线| 5566成人精品视频免费| 高清视频欧美一级| 一区二区三区国产视频| 欧美性做爰毛片| 精品视频在线播放免| 亚洲第一av网站| 欧美日韩成人在线播放| 亚洲区中文字幕| 欧美成人免费播放| 91精品视频网站| 亚洲成色777777女色窝| 亚洲xxxx做受欧美| 中文字幕欧美日韩| 亚洲va国产va天堂va久久| 国产精品丝袜一区二区三区| 日韩av在线不卡| 久久久999精品免费| 91亚洲精品久久久| 久久久久久高潮国产精品视| 国产精品免费久久久久久| 欧美成人精品在线视频| 国产精品欧美日韩一区二区| 精品视频久久久久久久| 亚洲综合在线做性| 欧美国产高跟鞋裸体秀xxxhd| 国产精品美女在线| 国产日产欧美精品| 91精品国产91久久久久久| 久久亚洲国产成人| 成人啪啪免费看| 性金发美女69hd大尺寸| 91精品国产高清自在线看超| 久久91亚洲精品中文字幕奶水| xxxxxxxxx欧美| 中文字幕亚洲无线码a| 欧美极品少妇与黑人| 欧美精品做受xxx性少妇| 亚洲第一色中文字幕| 亚洲无限乱码一二三四麻| 亚洲自拍小视频免费观看| 成人午夜一级二级三级| 欧美多人乱p欧美4p久久| 国模精品视频一区二区三区| 精品久久久久久亚洲国产300| 国产精品黄视频| 精品呦交小u女在线| 国产精品久久久91| 欧美激情奇米色| 国产精品久久久久久久久| 亚洲图片欧美午夜| 欧美专区国产专区| 国产精品自拍偷拍视频| 韩国精品美女www爽爽爽视频| 91精品久久久久久久久久久久久| 日韩免费视频在线观看| 亚洲一二三在线| 日韩av在线免费看| 精品国产一区二区三区久久久|