国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > 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程序設計有所幫助。

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

圖片精選

主站蜘蛛池模板: 水富县| 江油市| 新绛县| 雷波县| 景德镇市| 余干县| 微山县| 凌源市| 白玉县| 吉水县| 库车县| 西贡区| 福贡县| 江北区| 新化县| 宁波市| 贺州市| 宁国市| 汪清县| 高雄县| 广水市| 定襄县| 大英县| 澎湖县| 永嘉县| 池州市| 遂宁市| 渭源县| 祁连县| 贺兰县| 都江堰市| 彰化县| 甘肃省| 兴业县| 望城县| 哈密市| 泰宁县| 星子县| 色达县| 衡阳市| 新郑市|