jQuery写的小游戏

    这些天学习jQuery,写了一个小游戏--名字pk。上代码:

namepk.html:

  1. <html>
  2. <head>
  3.     <title>-----PK-----</title>
  4.     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">  
  5.     <script type='text/javascript' src='jquery-1.2.6.min.js'></script>
  6.     <script type='text/javascript' src='pk.js'></script>
  7. </head>
  8. <body style='background:pink'>
  9.     <center>输入名字,开始战斗</center>
  10.     <div align='center'>
  11.         <fieldset id='bar1' style='float:left;margin:5px;color:blue;text-align:left'></fieldset>
  12.         <fieldset id='bar2' style='float:right;margin:5px;color:blue;text-align:left'></fieldset>
  13.         <table id='state'>
  14.             <tr>
  15.                 <td id='state1'><div id='blood1'></div></td>
  16.                 <td rowspan='2'>VS</td>
  17.                 <td id='state2'><div id='blood2'></div></td>
  18.             </tr>
  19.             <tr>
  20.                 <td><input type='text' style='width:100%; padding:0px; margin:0px'/></td>
  21.                 <td><input type='text' style='width:100%; padding:0px; margin:0px'/></td>
  22.             </tr>
  23.             <tr>
  24.                 <td colspan='3' style='text-align:center'><input type='button' value='GO' /></td>
  25.             </tr>
  26.         </table>
  27.         <p id='battleField'></p>        
  28.     </div>
  29. </body>
  30. </html>

 

pk.js:

  1. var actions = [["踢了""一脚"], ["一脚踹向""的屁股"], ["拿起棒子猛击""的头部"],["发出一招六脉神剑,直指""的胸口"],
  2.                 ["抓了一把毒药向""撒去"], ["使出降龙十八掌,把""吓的屁滚尿流"], ["对""拳打脚踢"]];
  3. var results = [",昏迷了1秒"",站起来后感到晕乎乎的"",眼泪哇哇的"" "" "" "" "];
  4. var places = ["雪山峰顶""紫禁之巅""少林寺""榕树下""桃花盛开的地方""万花丛中""茅厕屋顶之上"];
  5. var who = 0; //who's turn
  6. var warrior1, warrior2;
  7. var w1life, w2life;//初始生命
  8. var timer;//定时器
  9. $(document).ready(function() {  
  10.     $(':button').width(40).css('cursor''hand').bind('click', start);
  11.     $('div:first').wrap('<fieldset style="background:cyan"></fieldset>');   
  12.     $(':text').parent().css({width:'200px',  padding:'0px', margin:'0px'}); 
  13.     $('#state1').css('text-align''right');
  14.     $('#state1, #state2').css({width:'200px', height:'20px', background:'orange'});
  15.     $('#blood1, #blood2').css({right:'0px',position:'relative', width:'100%', height:'100%', background:'red', color:'white'});
  16.     $(this).bind('keydown'function() {if(event.keyCode == 13) $(':button').click()});//绑定回车
  17. });
  18. function start() {
  19.     var w1name= $(':text')[0].value;
  20.     var w2name= $(':text')[1].value;
  21.     var placeIndex = Math.round(Math.random()*(places.length-1));//随机产生战斗地点
  22.     
  23.     if(w1name == "" || w2name == ""return;
  24.     else {
  25.         $('#battleField').empty(); //清空作战区域
  26.         $(':button').attr('disabled''true').css('cursor''default');//按钮不可用
  27.         warrior1 = new warrior(w1name, 0, 0, 100);
  28.         warrior2 = new warrior(w2name, 0, 0, 100);//初始化两个战士
  29.         setProperty(warrior1);  setProperty(warrior2);//设置属性        
  30.         w1life = warrior1.life; w2life = warrior2.life;     
  31.         $('#bar1').html('攻击:'+ warrior1.attack+ '<br/><br/>防御:'+ warrior1.defence+ '<br/><br/>生命:'+ warrior1.life);
  32.         $('#bar2').html('攻击:'+ warrior2.attack+ '<br/><br/>防御:'+ warrior2.defence+ '<br/><br/>生命:'+ warrior2.life);//初始化状态栏
  33.         $('#blood1, #blood2').css({width:'100%', height:'100%', background:'red', color:'white'}); //初始化血条      
  34.         $('#battleField').append('<h3 color="blue">'+warrior1.name+'、'+ warrior2.name+'决战'+ places[placeIndex]+ '</h3>');//战斗地点
  35.         timer = setInterval(start, 1000);//定时器
  36.     }
  37.     
  38.     function start() {
  39.         fight(warrior1, warrior2);//战斗开始
  40.     }
  41.     
  42.     function fight(warrior1, warrior2) {
  43.         var value = "";//伤害值
  44.         var actionIndex = Math.round(Math.random()*(actions.length-1));//随机产生动作
  45.         var resultIndex = Math.round(Math.random()*(results.length-1));//随机产生效果         
  46.         
  47.         if(who == 0) {//init
  48.             if(warrior1.attack+ warrior1.defence < warrior2.attack+ warrior2.defence)
  49.                 who = 1;
  50.             else
  51.                 who = 2;
  52.         }   
  53.         if(who == 1) {//轮到1攻击
  54.             if(warrior1.attack > warrior2.defence) {
  55.                 value = hurtValue(warrior1.attack, warrior2.defence, 3);
  56.                 if(value == 0) value = 1;                   
  57.             }
  58.             else if(warrior1.attack <= warrior2.defence) {
  59.                 value = hurtValue(warrior1.attack, warrior2.defence, 1);
  60.                 if(value == 0) value = 1;
  61.             }
  62.             warrior2.life -= value; //掉血
  63.             
  64.             if(warrior2.life <= 0) warrior2.life = 0;
  65.             $('#blood2').animate({width: warrior2.life/w2life*200}, (value>20?20:value)*50);//掉血动画
  66.                             
  67.             $('#battleField').append(warrior1.name+ ' '+ actions[actionIndex][0]+ warrior2.name+ ' '
  68.             actions[actionIndex][1]+ ', '+ (isDead(warrior2)?(warrior2.name+ "挂掉了!"):(warrior2.name+ '损失<font color="red">'+ value+ '</font>生命'+results[resultIndex]))+ '<br />');
  69.             
  70.             if(isDead(warrior2)) $(':button').attr('disabled''').css('cursor''hand');
  71.             who = 2;//轮到2攻击
  72.             return;
  73.         }
  74.         if(who == 2) {//轮到2攻击
  75.             if(warrior2.attack > warrior1.defence) {
  76.                 value = hurtValue(warrior2.attack, warrior1.defence, 3);
  77.                 if(value == 0) value = 1;
  78.             }
  79.             else if(warrior2.attack <= warrior1.defence) {
  80.                 value = hurtValue(warrior2.attack, warrior1.defence, 1);
  81.                 if(value == 0) value = 1;
  82.             }
  83.             warrior1.life -= value; //掉血
  84.             if(warrior1.life <= 0) warrior1.life = 0;
  85.             $('#blood1').animate({width: warrior1.life/w1life*200,right: '0px'}, (value>20?20:value)*50);
  86.             
  87.             $('#battleField').append(warrior2.name+ ' '+ actions[actionIndex][0]+ warrior1.name+ ' '+
  88.             actions[actionIndex][1]+ ', '+ (isDead(warrior1)?(warrior1.name+ "挂掉了!"):(warrior1.name+ '损失<font color="red">'+ value+ '</font>生命'+ results[resultIndex]))+ '<br />');//战斗效果
  89.             
  90.             if(isDead(warrior1)) $(':button').attr('disabled''').css('cursor''hand');
  91.             who = 1;
  92.             return;
  93.         }       
  94.     }
  95.     
  96.     function hurtValue(attack, defence, multiple) {//计算伤害值
  97.         return Math.round(Math.random()*Math.abs(attack - defence)*multiple);
  98.     }
  99.     
  100.     function isDead(warrior) {//是否挂掉
  101.         if(warrior.life <= 0) {
  102.             clearInterval(timer);
  103.             return true;
  104.         }
  105.     }
  106. }   
  107. function warrior(name, attack, defence, life) {//战士类
  108.     this.name = name;
  109.     this.attack = attack;
  110.     this.defence = defence;
  111.     this.life = life;
  112. }
  113. function setProperty(obj) {//设置属性
  114.     var warrior = obj;
  115.     var name = $.trim(warrior.name);
  116.     var num = 0;
  117.     
  118.     for(i=0; i<name.length; i++) {
  119.         num += name.charCodeAt(i);
  120.     }   
  121.     warrior.attack = findValidNum((num.toString(2)<<13).toString()).substr(0, 2)==''?findValidNum((num.toString(2)<<12).toString().substr(0, 2)):findValidNum((num.toString(2)<<13).toString()).substr(0, 2);   
  122.     warrior.defence = findValidNum((num.toString(2)<<11).toString()).substr(0, 2)==''?findValidNum((num.toString(2)<<10).toString().substr(0, 2)):findValidNum((num.toString(2)<<11).toString()).substr(0, 2);  
  123.     warrior.life = findValidLife((num.toString(2)<<9).toString()).substr(0, 3)==''?findValidLife((num.toString(2)<<8).toString()).substr(0, 3):findValidLife((num.toString(2)<<9).toString()).substr(0, 3);
  124.     
  125.     function findValidNum(str) {
  126.         if(str == ''return '40'//防止堆栈溢出
  127.         if(str.substr(0,1) == '0' || str.substr(0,1) == '-'|| str.substr(0,1) < '4'
  128.             return findValidNum(str.substring(1, str.length-1));
  129.         return str;
  130.     }
  131.     function findValidLife(str) {
  132.         if(str == ''return '100';
  133.         if(str.substr(0,1) == '0' || str.substr(0,1) == '-' || str.substr(0,1) > '3')   
  134.             return findValidLife(str.substring(1, str.length-1));
  135.         return str;
  136.     }
  137. }

 

jQuery的代码就不贴了,网上随便都能搜到。程序写的很简单,战斗属性就定义了三个,可玩性不是很高。另外在ie中血条显示正常,在其他非ie内核浏览器中,左边的血条掉血是从右边开始的,这点感觉不是很完美。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值