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

首頁 > 編程 > JavaScript > 正文

JS小游戲之極速快跑源碼詳解

2019-11-20 14:06:31
字體:
供稿:網(wǎng)友

本文實(shí)例講述了JS小游戲的極速快跑源碼,分享給大家供大家參考。具體如下:

游戲運(yùn)行后如下圖所示:

Javascript部分代碼如下:

/** 極速快跑* Author: fdipzone* Date: 2012-07-15* Ver: 1.0*/var gameimg = ['images/start.png', 'images/start_over.png', 'images/go.png', 'images/go_over.png', 'images/running.gif', 'images/run_start1.gif', 'images/run_start2.gif', 'images/run_start3.gif'];var speed_obj = new SpeedClass();window.onload = function(){ var callback = function(){ speed_obj.init(); } img_preload(gameimg, callback);}// Speed Classfunction SpeedClass(){ this.levelset = [8,5,8,12]; // 難度參數(shù) this.playerlist = null; // 選手列表 this.player = 0;  // 選中的選手 this.level = 2;  // 難度 this.lock = 0;  // 鎖定 this.isstart = 0;  // 是否開始 this.isover = 0;  // 是否結(jié)束}// initSpeedClass.prototype.init = function(){ this.reset(); this.create_player(); this.create_event();}// resetSpeedClass.prototype.reset = function(){ this.player = 0; this.level = $('level').value; // level this.playerlist = $_tag('li', 'playerlist'); for(var i=0; i<this.playerlist.length; i++){ this.playerlist[i].className = ''; } disp('start_btn', 'show', 'start_btn'); disp('go_btn', 'hide', 'go_btn'); this.lock = 0; // unlock this.isstart = 0; // unstart this.isover = 0; // unover}// create playerSpeedClass.prototype.create_player = function(){ var runway = []; var playerlist = []; for(var i=1; i<=8; i++){ runway[i] = '<li><div id="player' + (9-i) + '" class="run_status1"></div></li>'; playerlist[i] = '<li>' + i + '</li>'; } $('runway').innerHTML = runway.join(''); $('playerlist').innerHTML = playerlist.join(''); runway = null; playerlist = null;}// create eventSpeedClass.prototype.create_event = function(){ var self = this; this.playerlist = $_tag('li', 'playerlist'); for(var i=0; i<this.playerlist.length; i++){ this.playerlist[i].onmouseover = function(){  if(this.className!='on'){  this.className = 'over';  } } this.playerlist[i].onmouseout = function(){  if(this.className!='on'){  this.className = '';  } } this.playerlist[i].onclick = function(o,c){  return function(){  if(self.lock==0){   o.playerlist[c].className = 'on';   if(o.player!=0 && o.player!=c+1){ // 不等於0且不等於自己   o.playerlist[o.player-1].className = '';   }   o.player = c + 1;  }  } }(self, i); } $('start_btn').onmouseover = function(){ this.className = 'start_over_btn'; } $('start_btn').onmouseout = function(){ this.className = 'start_btn'; } $('start_btn').onclick = function(){ if(self.player==0){  return alert('請(qǐng)選擇要支持的選手'); }else{  self.lock = 1; // locked  disp('start_btn','hide');  disp('go_btn','show');  for(var i=1; i<=8; i++){  self.start(i);  } } } $('go_btn').onmouseover = function(){ this.className = 'go_over_btn';  } $('go_btn').onmouseout = function(){ this.className = 'go_btn'; } $('go_btn').onclick = function(){ self.go(); }}// start gameSpeedClass.prototype.start = function(c){ var o = $('player' + c); var step = 1; var self = this; var exert = 0; o.style.marginLeft = '62px'; // init  var et = setInterval(function(){ if(step<4){ // step 1-3 is ready  o.className = 'run_status' + step; }else{  // run  if(o.className!='running'){  o.className = 'running';  }  // start can go  if(self.isstart==0){  self.isstart = 1;  }  // 已有一名選手到達(dá)終點(diǎn)  if(self.isover==1){  clearInterval(et);  }else{  if(self.player!=c){ // 其他選手   exert = Math.floor(Math.random()* self.levelset[self.level])+3; // 根據(jù)level調(diào)整  }  o.style.marginLeft = parseInt(o.style.marginLeft) + Math.floor(Math.random()*8)+4 + exert + 'px';  // 到達(dá)終點(diǎn)  if(parseInt(o.style.marginLeft)>=745){    clearInterval(et);   self.isover = 1;   self.gameover(o.id);  }  } } step ++; }, 350)}// goSpeedClass.prototype.go = function(){ if(this.isstart==1 && this.isover==0){ var o = $('player' + this.player); var exert = Math.floor(Math.random()*3)+2; // 2-5 o.style.marginLeft = parseInt(o.style.marginLeft) + exert + 'px'; } return false;}// gameoverSpeedClass.prototype.gameover = function(id){ id = id.replace('player',''); var self = this; var msg = ''; if(id==this.player){ msg = "恭喜你,你支持的選手獲得勝利/n/n"; }else{ msg = "很遺憾,你支持的選手沒有獲得勝利,獲勝的是" + id + "號(hào)選/n/n"; } if(confirm(msg + '是否重新開始?')==true){ setTimeout(function(){  self.init(); },1000); }else{ return false; }}/** common function */// get document.getElementBy(id)function $(id){ this.id = id; return document.getElementById(id);}// get document.getElementsByTagNamefunction $_tag(name, id){ if(typeof(id)!='undefined'){ return $(id).getElementsByTagName(name); }else{ return document.getElementsByTagName(name);  }}/* div show and hide* @param id dom id* @param handle show or hide* @param classname*/function disp(id, handle, classname){ if(handle=='show'){ $(id).style.display = 'block'; }else{ $(id).style.display = 'none';  } if(typeof(classname)!='undefined'){ $(id).className = classname; }}/* img preload* @param img 要加載的圖片數(shù)組* @param callback 圖片加載成功后回調(diào)方法*/function img_preload(img, callback){ var onload_img = 0; var tmp_img = []; for(var i=0,imgnum=img.length; i<imgnum; i++){ tmp_img[i] = new Image(); tmp_img[i].src = img[i]; if(tmp_img[i].complete){  onload_img ++; }else{  tmp_img[i].onload = function(){  onload_img ++;  } } } var et = setInterval( function(){  if(onload_img==img.length){ // 定時(shí)器,判斷圖片完全加載后調(diào)用callback  clearInterval(et);  callback();  } },200);}

完整實(shí)例代碼點(diǎn)擊此處本站下載

相信本文所述對(duì)大家的javascript游戲設(shè)計(jì)有一定的借鑒價(jià)值。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 融水| 宁阳县| 正镶白旗| 昌吉市| 滨海县| 柳林县| 华亭县| 自治县| 京山县| 梅河口市| 梅州市| 洛扎县| 泽库县| 龙胜| 武冈市| 黔西县| 扶沟县| 海林市| 天津市| 绥中县| 呼伦贝尔市| 清流县| 镇宁| 麻城市| 肥乡县| 江津市| 阜南县| 屯昌县| 班玛县| 商南县| 皮山县| 淅川县| 徐州市| 沈阳市| 潍坊市| 紫金县| 兰州市| 广汉市| 南昌县| 唐山市| 碌曲县|