游戏图片:

源文件下载地址:点击下载

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 Class
function SpeedClass(){this.levelset = [8,5,8,12];   // 难度参数this.playerlist = null;        // 选手列表this.player = 0;            // 选中的选手this.level = 2;                // 难度this.lock = 0;                // 锁定this.isstart = 0;         // 是否开始this.isover = 0;            // 是否结束
}// init
SpeedClass.prototype.init = function(){this.reset();this.create_player();this.create_event();
}// reset
SpeedClass.prototype.reset = function(){this.player = 0;this.level = $('level').value; // levelthis.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;        // unlockthis.isstart = 0; // unstartthis.isover = 0; // unover
}// create player
SpeedClass.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 event
SpeedClass.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('请选择要支持的选手');}else{self.lock = 1; // lockeddisp('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 game
SpeedClass.prototype.start = function(c){var o = $('player' + c);var step = 1;var self = this;var exert = 0;o.style.marginLeft = '62px'; // initvar et = setInterval(function(){if(step<4){  // step 1-3 is readyo.className = 'run_status' + step;}else{// runif(o.className!='running'){o.className = 'running';}// start can goif(self.isstart==0){self.isstart = 1;}// 已有一名选手到达终点if(self.isover==1){clearInterval(et);}else{if(self.player!=c){ // 其他选手exert = Math.floor(Math.random()* self.levelset[self.level])+3; // 根据level调整}o.style.marginLeft = parseInt(o.style.marginLeft) + Math.floor(Math.random()*8)+4 + exert + 'px';// 到达终点if(parseInt(o.style.marginLeft)>=745){ clearInterval(et);self.isover = 1;self.gameover(o.id);}}}step ++;}, 350)
}// go
SpeedClass.prototype.go = function(){if(this.isstart==1 && this.isover==0){var o = $('player' + this.player);var exert = Math.floor(Math.random()*3)+2; // 2-5o.style.marginLeft = parseInt(o.style.marginLeft) + exert + 'px';}return false;
}// gameover
SpeedClass.prototype.gameover = function(id){id = id.replace('player','');var self = this;var msg = '';if(id==this.player){msg = "恭喜你,你支持的选手获得胜利\n\n";}else{msg = "很遗憾,你支持的选手没有获得胜利,获胜的是" + id + "号选\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.getElementsByTagName
function $_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       要加载的图片数组
* @param callback  图片加载成功后回调方法
*/
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){   // 定时器,判断图片完全加载后调用callbackclearInterval(et);callback();}},200);
}

转载于:https://www.cnblogs.com/fdipzone/archive/2012/07/15/3715159.html

JS小游戏-极速快跑相关推荐

  1. HTML5写的简单小游戏-绵羊快跑

    为什么80%的码农都做不了架构师?>>>    用HTML5仿一款灵敏测试的flash小游戏程序: 完整程序在我博客:http://meego123.net/post-61.html ...

  2. php html5 游戏,分享一款HTML5小游戏绵羊快跑

    有一点小bug,绵羊被抓了,过一段时间重新开始狼的数量会很多,不是从1个开始增加.不过小编正在努力的改中--..<?php /* *Author: Jamin * *Blog:http://me ...

  3. 【JavaScript】(一)解读一个js小游戏

    [前言] 离公司近的好处,就在于每天都能利用自己的下班时间,更好地查漏补缺,充实技能. 最近小编做的项目需要写js偏多,而我不擅长写前端js,利用工作之余,开始学习,下面通过一个成型的js小游戏,开始 ...

  4. adb调式问题总述(oppo小游戏【快应用】打包调试)

    adb调式问题总述(oppo小游戏[快应用]打包调试) 一,什么是adb 二,adb有什么用 三,adb的安装 四,adb常用操作命令 五,adb调试常见错误 ①adb devices 时显示List ...

  5. js小游戏 (飞行的小鸟--canvas)

    js小游戏 (飞行的小鸟) 这个里面用到的主要是 canvas 绘图 <!DOCTYPE html> <html><head><meta charset=&q ...

  6. 是男人就要坚持30秒:原生JS小游戏

    在继之前完成的数个JavaScript demo后,我发现我还没有写过JS小游戏,这次呢,我就来分享一个,非常经典的"是男人就要坚持30s"的小游戏.当然我肯定 is a man, ...

  7. 100行JS代码实现❤坦克大战js小游戏源码 HTML5坦克大战游戏代码(HTML+CSS+JavaScript )

    坦克大战js小游戏源码 HTML5坦克大战游戏代码(HTML+CSS+JavaScript ) HTML5坦克大战网页小游戏,完美还原小霸王学习机效果,以坦克战斗及保卫基地为主题,属于策略型类游戏. ...

  8. js小游戏之经典炸弹人(1)--地图实现

    前段时间,写了一款js小游戏--经典炸弹人,因为这是第一次写游戏,对很多东西都不是很熟悉.于是,疯狂的上网找资料,结果发现,关于经典炸弹人的js资料少的可怜.所以,很是头疼了一段时间.在写完经典炸弹人 ...

  9. js小游戏动物连连看代码

    下载地址 js小游戏动物连连看代码,有多种语言切换,默认是中文.不用部署本地解压即可预览. dd:

最新文章

  1. 韦东奕陈杲同获达摩院青橙奖,90后数学新星光彩夺目,却说「没有黄金一代」...
  2. 什么地方容易刷出ak_CSGO皮肤推荐——AK燃料喷射器
  3. 如何理解并学习javascript中的面向对象(OOP)
  4. linux复制文件通信方式,Linux分布式文件拷贝
  5. Codeforces 1189B Number Circle
  6. Android 6.0 Permission权限与安全机制
  7. iOS开发之获取手机本地语言
  8. 关于SetTimer函数的总结
  9. android singletask启动模式,android:Activity启动模式之singleTask(一)(示例代码)
  10. Landlock:一种新型Linux安全模块
  11. 汇编语言--常用DOS功能
  12. 关于python注释说法错误的是_关于 Python 语言的注释,以下选项中描述错误的是:...
  13. QCustomPlot图例
  14. php开发环境搭建和基础入门
  15. java架构模式与设计模式(三)--事件风暴
  16. Linux(Ubuntu)同步互联网时间(ntpdate)
  17. 牛客网 小白月赛4 D-郊区春游 最短路+状压dp
  18. 【软件工程】 软件设计阶段
  19. 数据分析之np.random.choice()补充【从二维数组随机选择n行一维数组】
  20. 『每周译Go』Go 语言中的插件

热门文章

  1. SharePoint 2013 托管导航及相关配置
  2. mysql 插入数据会执行事务吗_在代码中,插入数据到数据库时,如果不使用事务,将会导致速度极慢...
  3. 《Android Design》 4.4 中文版
  4. json数组对象和对象数组
  5. 《『若水新闻』客户端开发教程》——05.设计新闻列表UI
  6. 12 个有效的提高编程技能的方法
  7. ISA2006发布Exchange服务器 RPC OVER HTTPS
  8. SpringAOP 通知(adivce)- methodIntercepor
  9. Queue 输出数据
  10. ZeroMQ研究与应用分析