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

首頁 > 語言 > JavaScript > 正文

JavaScript制作簡易的微信打飛機

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

這篇文章主要介紹了JavaScript制作簡易的微信打飛機,只有簡單的功能,大神們可以自由擴展哈。有需要的小伙伴可以參考下。

簡單的用JavaScript模擬微信打飛機,部分功能還不完善,剛開始寫,還有很多不足,還望大家多多指出。

 

 
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
  2. <html> 
  3. <head> 
  4. <title></title> 
  5. <meta http-equiv="content" content="text/html" charset="utf-8"/> 
  6. <style type="text/css"
  7. *{ 
  8. margin: 0; 
  9. padding: 0; 
  10. #contentdiv{ 
  11. position: absolute; 
  12. left: 500px; 
  13. #startdiv{ 
  14. width: 320px; 
  15. height: 568px; 
  16. background-image: url(../image/開始背景.png); 
  17. button{ 
  18. outline: none; 
  19. #startdiv button{ 
  20. position: absolute; 
  21. top: 500px; 
  22. left: 82px; 
  23. width: 150px; 
  24. height: 30px; 
  25. border: 1px solid black; 
  26. border-radius: 30px; 
  27. background-color: #c4c9ca; 
  28. #maindiv{ 
  29. width: 320px; 
  30. height: 568px; 
  31. background-image:url(../image/background_1.png) ; 
  32. display: none; 
  33. #maindiv img{ 
  34. position: absolute; 
  35. z-index: 1; 
  36. #scorediv{ 
  37. font-size: 16px; 
  38. font-weight: bold; 
  39. position: absolute; 
  40. top: 10px; 
  41. left: 10px; 
  42. display: none; 
  43. #scorediv{ 
  44. font-size: 18px; 
  45. font-weight: bold; 
  46. #suspenddiv{ 
  47. position: absolute; 
  48. top: 210px; 
  49. left: 82px; 
  50. display: none; 
  51. z-index: 2; 
  52. #suspenddiv button{ 
  53. width: 150px; 
  54. height: 30px; 
  55. margin-bottom: 20px; 
  56. border: 1px solid black; 
  57. border-radius: 30px; 
  58. background-color: #c4c9ca; 
  59. #enddiv{ 
  60. position: absolute; 
  61. top: 210px; 
  62. left: 75px; 
  63. border: 1px solid gray; 
  64. border-radius: 5px; 
  65. text-align: center; 
  66. background-color:#d7ddde; 
  67. display: none; 
  68. z-index: 2; 
  69. .plantext{ 
  70. width: 160px; 
  71. height: 30px; 
  72. line-height: 30px; 
  73. font-size: 16px; 
  74. font-weight: bold; 
  75. #planscore{ 
  76. width: 160px; 
  77. height: 80px; 
  78. line-height: 80px; 
  79. border-top: 1px solid gray; 
  80. border-bottom: 1px solid gray; 
  81. font-size: 16px; 
  82. font-weight: bold; 
  83. #enddiv div{ 
  84. width: 160px; 
  85. height: 50px; 
  86. #enddiv div button{ 
  87. margin-top:10px ; 
  88. width: 90px; 
  89. height: 30px; 
  90. border: 1px solid gray; 
  91. border-radius: 30px; 
  92. </style> 
  93. </head> 
  94.  
  95. <body> 
  96. <div id="contentdiv"
  97. <div id="startdiv"
  98. <button onclick="begin()">開始游戲</button> 
  99. </div> 
  100. <div id="maindiv"
  101. <div id="scorediv"
  102. <label>分數:</label> 
  103. <label id="label">0</label> 
  104. </div> 
  105. <div id="suspenddiv"
  106. <button>繼續</button><br/> 
  107. <button>重新開始</button><br/> 
  108. <button>回到主頁</button> 
  109. </div> 
  110. <div id="enddiv"
  111. <p class="plantext">飛機大戰分數</p> 
  112. <p id="planscore">0</p> 
  113. <div><button onclick="jixu()">繼續</button></div> 
  114. </div> 
  115. </div> 
  116. </div> 
  117. <script type="text/javascript"
  118. //獲得主界面 
  119. var mainDiv=document.getElementById("maindiv"); 
  120. //獲得開始界面 
  121. var startdiv=document.getElementById("startdiv"); 
  122. //獲得游戲中分數顯示界面 
  123. var scorediv=document.getElementById("scorediv"); 
  124. //獲得分數界面 
  125. var scorelabel=document.getElementById("label"); 
  126. //獲得暫停界面 
  127. var suspenddiv=document.getElementById("suspenddiv"); 
  128. //獲得游戲結束界面 
  129. var enddiv=document.getElementById("enddiv"); 
  130. //獲得游戲結束后分數統計界面 
  131. var planscore=document.getElementById("planscore"); 
  132. //初始化分數 
  133. var scores=0; 
  134.  
  135. /* 
  136. 創建飛機類 
  137. */ 
  138. function plan(hp,X,Y,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc){ 
  139. this.planX=X; 
  140. this.planY=Y; 
  141. this.imagenode=null
  142. this.planhp=hp; 
  143. this.planscore=score; 
  144. this.plansizeX=sizeX; 
  145. this.plansizeY=sizeY; 
  146. this.planboomimage=boomimage; 
  147. this.planisdie=false
  148. this.plandietimes=0; 
  149. this.plandietime=dietime; 
  150. this.plansudu=sudu; 
  151. //行為 
  152. /* 
  153. 移動行為 
  154. */ 
  155. this.planmove=function(){ 
  156. if(scores<=50000){ 
  157. this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu+"px"
  158. else if(scores>50000&&scores<=100000){ 
  159. this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu+1+"px"
  160. else if(scores>100000&&scores<=150000){ 
  161. this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu+2+"px"
  162. else if(scores>150000&&scores<=200000){ 
  163. this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu+3+"px"
  164. else if(scores>200000&&scores<=300000){ 
  165. this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu+4+"px"
  166. else
  167. this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu+5+"px"
  168. this.init=function(){ 
  169. this.imagenode=document.createElement("img"); 
  170. this.imagenode.style.left=this.planX+"px"
  171. this.imagenode.style.top=this.planY+"px"
  172. this.imagenode.src=imagesrc; 
  173. mainDiv.appendChild(this.imagenode); 
  174. this.init(); 
  175.  
  176. /* 
  177. 創建子彈類 
  178. */ 
  179. function bullet(X,Y,sizeX,sizeY,imagesrc){ 
  180. this.bulletX=X; 
  181. this.bulletY=Y; 
  182. this.bulletimage=null
  183. this.bulletattach=1; 
  184. this.bulletsizeX=sizeX; 
  185. this.bulletsizeY=sizeY; 
  186. //行為 
  187. /* 
  188. 移動行為 
  189. */ 
  190. this.bulletmove=function(){ 
  191. this.bulletimage.style.top=this.bulletimage.offsetTop-20+"px"
  192. this.init=function(){ 
  193. this.bulletimage=document.createElement("img"); 
  194. this.bulletimage.style.left= this.bulletX+"px"
  195. this.bulletimage.style.top= this.bulletY+"px"
  196. this.bulletimage.src=imagesrc; 
  197. mainDiv.appendChild(this.bulletimage); 
  198. this.init(); 
  199.  
  200. /* 
  201. 創建單行子彈類 
  202. */ 
  203. function oddbullet(X,Y){ 
  204. bullet.call(this,X,Y,6,14,"../image/bullet1.png"); 
  205.  
  206. /* 
  207. 創建敵機類 
  208. */ 
  209. function enemy(hp,a,b,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc){ 
  210. plan.call(this,hp,random(a,b),-100,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc); 
  211. //產生min到max之間的隨機數 
  212. function random(min,max){ 
  213. return Math.floor(min+Math.random()*(max-min)); 
  214.  
  215. /* 
  216. 創建本方飛機類 
  217. */ 
  218. function ourplan(X,Y){ 
  219. var imagesrc="../image/我的飛機.gif"
  220. plan.call(this,1,X,Y,66,80,0,660,0,"../image/本方飛機爆炸.gif",imagesrc); 
  221. this.imagenode.setAttribute('id','ourplan'); 
  222.  
  223. /* 
  224. 創建本方飛機 
  225. */ 
  226. var selfplan=new ourplan(120,485); 
  227. //移動事件 
  228. var ourPlan=document.getElementById('ourplan'); 
  229. var yidong=function(){ 
  230. var oevent=window.event||arguments[0]; 
  231. var chufa=oevent.srcElement||oevent.target; 
  232. var selfplanX=oevent.clientX-500; 
  233. var selfplanY=oevent.clientY; 
  234. ourPlan.style.left=selfplanX-selfplan.plansizeX/2+"px"
  235. ourPlan.style.top=selfplanY-selfplan.plansizeY/2+"px"
  236. // document.getElementsByTagName('img')[0].style.left=selfplanX-selfplan.plansizeX/2+"px"; 
  237. // document.getElementsByTagName('img')[0]..style.top=selfplanY-selfplan.plansizeY/2+"px"; 
  238. /* 
  239. 暫停事件 
  240. */ 
  241. var number=0; 
  242. var zanting=function(){ 
  243. if(number==0){ 
  244. suspenddiv.style.display="block"
  245. if(document.removeEventListener){ 
  246. mainDiv.removeEventListener("mousemove",yidong,true); 
  247. bodyobj.removeEventListener("mousemove",bianjie,true); 
  248. else if(document.detachEvent){ 
  249. mainDiv.detachEvent("onmousemove",yidong); 
  250. bodyobj.detachEvent("onmousemove",bianjie); 
  251. clearInterval(set); 
  252. number=1; 
  253. else
  254. suspenddiv.style.display="none"
  255. if(document.addEventListener){ 
  256. mainDiv.addEventListener("mousemove",yidong,true); 
  257. bodyobj.addEventListener("mousemove",bianjie,true); 
  258. else if(document.attachEvent){ 
  259. mainDiv.attachEvent("onmousemove",yidong); 
  260. bodyobj.attachEvent("onmousemove",bianjie); 
  261. set=setInterval(start,20); 
  262. number=0; 
  263. //判斷本方飛機是否移出邊界,如果移出邊界,則取消mousemove事件,反之加上mousemove事件 
  264. var bianjie=function(){ 
  265. var oevent=window.event||arguments[0]; 
  266. var bodyobjX=oevent.clientX; 
  267. var bodyobjY=oevent.clientY; 
  268. if(bodyobjX<505||bodyobjX>815||bodyobjY<0||bodyobjY>568){ 
  269. if(document.removeEventListener){ 
  270. mainDiv.removeEventListener("mousemove",yidong,true); 
  271. else if(document.detachEvent){ 
  272. mainDiv.detachEvent("onmousemove",yidong); 
  273. else
  274. if(document.addEventListener){ 
  275. mainDiv.addEventListener("mousemove",yidong,true); 
  276. else if(document.attachEvent){ 
  277. mainDiv.attachEvent("nomousemove",yidong); 
  278. //暫停界面重新開始事件 
  279. //function chongxinkaishi(){ 
  280. // location.reload(true); 
  281. // startdiv.style.display="none"; 
  282. // maindiv.style.display="block"; 
  283. //} 
  284. var bodyobj=document.getElementsByTagName("body")[0]; 
  285. if(document.addEventListener){ 
  286. //為本方飛機添加移動和暫停 
  287. mainDiv.addEventListener("mousemove",yidong,true); 
  288. //為本方飛機添加暫停事件 
  289. selfplan.imagenode.addEventListener("click",zanting,true); 
  290. //為body添加判斷本方飛機移出邊界事件 
  291. bodyobj.addEventListener("mousemove",bianjie,true); 
  292. //為暫停界面的繼續按鈕添加暫停事件 
  293. suspenddiv.getElementsByTagName("button")[0].addEventListener("click",zanting,true); 
  294. // suspenddiv.getElementsByTagName("button")[1].addEventListener("click",chongxinkaishi,true); 
  295. //為暫停界面的返回主頁按鈕添加事件 
  296. suspenddiv.getElementsByTagName("button")[2].addEventListener("click",jixu,true); 
  297. else if(document.attachEvent){ 
  298. //為本方飛機添加移動 
  299. mainDiv.attachEvent("onmousemove",yidong); 
  300. //為本方飛機添加暫停事件 
  301. selfplan.imagenode.attachEvent("onclick",zanting); 
  302. //為body添加判斷本方飛機移出邊界事件 
  303. bodyobj.attachEvent("onmousemove",bianjie); 
  304. //為暫停界面的繼續按鈕添加暫停事件 
  305. suspenddiv.getElementsByTagName("button")[0].attachEvent("onclick",zanting); 
  306. // suspenddiv.getElementsByTagName("button")[1].attachEvent("click",chongxinkaishi,true); 
  307. //為暫停界面的返回主頁按鈕添加事件 
  308. suspenddiv.getElementsByTagName("button")[2].attachEvent("click",jixu,true); 
  309. //初始化隱藏本方飛機 
  310. selfplan.imagenode.style.display="none"
  311.  
  312. /* 
  313. 敵機對象數組 
  314. */ 
  315. var enemys=[]; 
  316.  
  317. /* 
  318. 子彈對象數組 
  319. */ 
  320. var bullets=[]; 
  321. var mark=0; 
  322. var mark1=0; 
  323. var backgroundPositionY=0; 
  324. /* 
  325. 開始函數 
  326. */ 
  327. function start(){ 
  328. mainDiv.style.backgroundPositionY=backgroundPositionY+"px"
  329. backgroundPositionY+=0.5; 
  330. if(backgroundPositionY==568){ 
  331. backgroundPositionY=0; 
  332. mark++; 
  333. /* 
  334. 創建敵方飛機 
  335. */ 
  336.  
  337. if(mark==20){ 
  338. mark1++; 
  339. //中飛機 
  340. if(mark1%5==0){ 
  341. enemys.push(new enemy(6,25,274,46,60,5000,360,random(1,3),"../image/中飛機爆炸.gif","../image/enemy3_fly_1.png")); 
  342. //大飛機 
  343. if(mark1==20){ 
  344. enemys.push(new enemy(12,57,210,110,164,30000,540,1,"../image/大飛機爆炸.gif","../image/enemy2_fly_1.png")); 
  345. mark1=0; 
  346. //小飛機 
  347. else
  348. enemys.push(new enemy(1,19,286,34,24,1000,360,random(1,4),"../image/小飛機爆炸.gif","../image/enemy1_fly_1.png")); 
  349. mark=0; 
  350.  
  351. /* 
  352. 移動敵方飛機 
  353. */ 
  354. var enemyslen=enemys.length; 
  355. for(var i=0;i<enemyslen;i++){ 
  356. if(enemys[i].planisdie!=true){ 
  357. enemys[i].planmove(); 
  358. /* 
  359. 如果敵機超出邊界,刪除敵機 
  360. */ 
  361. if(enemys[i].imagenode.offsetTop>568){ 
  362. mainDiv.removeChild(enemys[i].imagenode); 
  363. enemys.splice(i,1); 
  364. enemyslen--; 
  365. //當敵機死亡標記為true時,經過一段時間后清除敵機 
  366. if(enemys[i].planisdie==true){ 
  367. enemys[i].plandietimes+=20; 
  368. if(enemys[i].plandietimes==enemys[i].plandietime){ 
  369. mainDiv.removeChild(enemys[i].imagenode); 
  370. enemys.splice(i,1); 
  371. enemyslen--; 
  372.  
  373. /* 
  374. 創建子彈 
  375. */ 
  376. if(mark%5==0){ 
  377. bullets.push(new oddbullet(parseInt(selfplan.imagenode.style.left)+31,parseInt(selfplan.imagenode.style.top)-10)); 
  378.  
  379. /* 
  380. 移動子彈 
  381. */ 
  382. var bulletslen=bullets.length; 
  383. for(var i=0;i<bulletslen;i++){ 
  384. bullets[i].bulletmove(); 
  385. /* 
  386. 如果子彈超出邊界,刪除子彈 
  387. */ 
  388. if(bullets[i].bulletimage.offsetTop<0){ 
  389. mainDiv.removeChild(bullets[i].bulletimage); 
  390. bullets.splice(i,1); 
  391. bulletslen--; 
  392.  
  393. /* 
  394. 碰撞判斷 
  395. */ 
  396. for(var k=0;k<bulletslen;k++){ 
  397. for(var j=0;j<enemyslen;j++){ 
  398. //判斷碰撞本方飛機 
  399. if(enemys[j].planisdie==false){ 
  400. if(enemys[j].imagenode.offsetLeft+enemys[j].plansizeX>=selfplan.imagenode.offsetLeft&&enemys[j].imagenode.offsetLeft<=selfplan.imagenode.offsetLeft+selfplan.plansizeX){ 
  401. if(enemys[j].imagenode.offsetTop+enemys[j].plansizeY>=selfplan.imagenode.offsetTop+40&&enemys[j].imagenode.offsetTop<=selfplan.imagenode.offsetTop-20+selfplan.plansizeY){ 
  402. //碰撞本方飛機,游戲結束,統計分數 
  403. selfplan.imagenode.src="../image/本方飛機爆炸.gif"
  404. enddiv.style.display="block"
  405. planscore.innerHTML=scores; 
  406. if(document.removeEventListener){ 
  407. mainDiv.removeEventListener("mousemove",yidong,true); 
  408. bodyobj.removeEventListener("mousemove",bianjie,true); 
  409. else if(document.detachEvent){ 
  410. mainDiv.detachEvent("onmousemove",yidong); 
  411. bodyobj.removeEventListener("mousemove",bianjie,true); 
  412. clearInterval(set); 
  413. //判斷子彈與敵機碰撞 
  414. if((bullets[k].bulletimage.offsetLeft+bullets[k].bulletsizeX>enemys[j].imagenode.offsetLeft)&&(bullets[k].bulletimage.offsetLeft<enemys[j].imagenode.offsetLeft+enemys[j].plansizeX)){ 
  415. if(bullets[k].bulletimage.offsetTop<=enemys[j].imagenode.offsetTop+enemys[j].plansizeY&&bullets[k].bulletimage.offsetTop+bullets[k].bulletsizeY>=enemys[j].imagenode.offsetTop){ 
  416. //敵機血量減子彈攻擊力 
  417. enemys[j].planhp=enemys[j].planhp-bullets[k].bulletattach; 
  418. //敵機血量為0,敵機圖片換為爆炸圖片,死亡標記為true,計分 
  419. if(enemys[j].planhp==0){ 
  420. scores=scores+enemys[j].planscore; 
  421. scorelabel.innerHTML=scores; 
  422. enemys[j].imagenode.src=enemys[j].planboomimage; 
  423. enemys[j].planisdie=true
  424. //刪除子彈 
  425. mainDiv.removeChild(bullets[k].bulletimage); 
  426. bullets.splice(k,1); 
  427. bulletslen--; 
  428. break
  429. /* 
  430. 開始游戲按鈕點擊事件 
  431. */ 
  432. var set; 
  433. function begin(){ 
  434.  
  435. startdiv.style.display="none"
  436. mainDiv.style.display="block"
  437. selfplan.imagenode.style.display="block"
  438. scorediv.style.display="block"
  439. /* 
  440. 調用開始函數 
  441. */ 
  442. set=setInterval(start,20); 
  443. //游戲結束后點擊繼續按鈕事件 
  444. function jixu(){ 
  445. location.reload(true); 
  446. </script> 
  447. </body> 
  448. </html> 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

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

圖片精選

主站蜘蛛池模板: 合阳县| 韩城市| 靖州| 若尔盖县| 阜平县| 许昌市| 琼中| 平武县| 儋州市| 丰顺县| 昭觉县| 郴州市| 左权县| 马山县| 云林县| 栖霞市| 乌兰察布市| 定陶县| 太和县| 新泰市| 新建县| 横峰县| 瑞安市| 尚志市| 抚顺市| 济南市| 元朗区| 淮安市| 九台市| 泽库县| 古丈县| 苏尼特右旗| 疏勒县| 石城县| 高雄市| 昭苏县| 沙坪坝区| 新绛县| 读书| 嘉黎县| 修文县|