• 针对之前的Canvas的一个小小的改版,算作canvas(二)吧


    canvas二增加了角色,一共是7个,操作的那个可以按A放置炸弹,随即移动的其他6个碰到炸弹就算亡,
    然后操作方一共66个炸弹,
    用完后如果其他6个还有没炸掉的,操作方就输了。另,移动的过程中,
    碰到其他6个也算输了。





     1 body {
     2   margin: 0;
     3 }
     4 #game {
     5   background: url("../images/back.png") repeat;
     6 }
     7 .wuli{
     8     position: absolute;
     9     min-width: 200px;
    10     height: 33px;
    11     background: #355596;
    12     opacity: 0.6;
    13     filter:alpha(opacity = 60);
    14     border-radius: 3px;
    15     color: #fff;
    16     text-align: center;
    17     line-height: 33px;
    18 }
    19 .hide{
    20     display: none;
    21 }
    22 .dialog{
    23     position: absolute;
    24     background: #355596;
    25     opacity: 0.6;
    26     filter:alpha(opacity = 60);
    27     border-radius: 5px;
    28     color: #fff;
    29     text-align: center;
    30     line-height: 33px;
    31     padding: 0 5px;
    32     max-width: 300px;
    33 }
    34 .win{
    35     position: absolute;
    36     background: #f5f5f5;
    37     opacity: 0.6;
    38     filter:alpha(opacity = 60);
    39     border-radius: 5px;
    40     color: #cf0f0f;
    41     text-align: center;
    42     line-height: 33px;
    43     padding: 0 5px;
    44     max-width: 300px;  
    45 }
    
    
     1 <!doctype html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>看我吃你们</title>
     6     <link rel="stylesheet" href="css/main2.css">
     7     <script type="text/javascript" src="js/excanvas.min.js"></script>
     8 </head>
     9 <body>
    10     <canvas id="game" width="510" height="480"></canvas>
    11     
    12 <script type="text/javascript" src="js/jquery.js"></script>
    13 <script type="text/javascript" src="js/game2.js"></script>
    14 <script type="text/javascript">
    15     $("#game").Game({
    16         rols:[
    17             {"name":"lr"},
    18             {"name":"lina","hero":true},
    19             {"name":"xiaoping"},
    20             {"name":"zhaoyu"},
    21             {"name":"zhushuai"},
    22             {"name":"baoge"},
    23             {"name":"lyd"}
    24         ]
    25     });
    26 </script>
    27 </body>
    28 </html>
      1 //@charset "utf-8";
      2 (function(window,document,$){
      3     "use strict";
      4     var game = {
      5         defaluts : {
      6             rols:[],
      7             boompic : "images/boom.png",
      8             boom:[],
      9             boomnum:0,
     10             bpos : [],
     11             apos : [],
     12             hero : [],
     13             imgs : [],
     14             boomPos:[],
     15             allnum: 0,
     16             loadnum : 0,
     17             pie : 0,
     18             cw:0,
     19             ctx:"",
     20             ch:0,
     21             mtimer:null
     22         },
     23         init:function(item){
     24             var param = $.extend(game.defaluts,item);
     25             return this.each(function(){
     26                 game.initPic(); //  先把图片加载完成
     27             });
     28         },
     29         initPic : function(){
     30             var item = this.defaluts;
     31             for(var i =0 ; i <item.rols.length; i++){
     32                 item.allnum++;
     33                 var cont = item.rols[i];
     34                 this.loadImg(cont);
     35             }
     36         },
     37         loadImg : function(cont){
     38             var param = this.defaluts;
     39             var url = cont["name"];
     40             var img = new Image();
     41             var flag = false;
     42             img.onload = function(){
     43                 param.loadnum ++;
     44                 if(param.loadnum == param.allnum){
     45                     game.loadBoom();
     46                 }
     47             }
     48             for(var i in cont){
     49                 if(i == "hero"){
     50                     flag = true;
     51                     //only one hero(^-^)说英文会不会被骂!HIAHIAHI
     52                     img.src = "images/"+url+".png";
     53                     param.hero = param.hero.length == 0 ? img : param.hero;
     54                     return;
     55                 }
     56             }
     57             img.src = "images/"+url+".png";
     58             param.imgs.push(img);
     59         },
     60         loadBoom:function(){
     61             var img= new Image();
     62             img.onload = function(){
     63                 game.showRole();    //加载完成后开始画图展示
     64             }
     65             img.src = this.defaluts.boompic;
     66             this.defaluts.boom.push(img);
     67         },
     68         showRole:function(){
     69             var param = this.defaluts;
     70             var canvas = document.getElementById("game");
     71             param.cw = canvas.width;
     72             param.ch = canvas.height;
     73             param.pie = param.cw/17;
     74             param.ctx = canvas.getContext("2d");
     75             this.getCommonPos();
     76         },
     77         getCommonPos:function(){
     78             var param = this.defaluts;
     79             for(var i = 0; i<param.imgs.length; i++){
     80                 var pos = this.getRandomPos();
     81                 this.addPos(pos,param.bpos);
     82             }
     83             var hp = this.getRandomPos();
     84             this.addPos(hp,param.apos);
     85             this.drawRole();
     86             var apos = param.apos[0];
     87             param.ctx.drawImage(param.hero,apos.x,apos.y);
     88             this.showTalk();
     89         },
     90         drawRole:function(){
     91             var param = this.defaluts;
     92             var ctx = param.ctx;
     93             var imgs = param.imgs;
     94             var bpos = param.bpos;
     95             var apos = param.apos[0];
     96             for(var i = 0; i<imgs.length; i++){
     97                 ctx.drawImage(imgs[i],bpos[i].x,bpos[i].y);
     98             }          
     99         },
    100         showTalk:function(){
    101             var param = this.defaluts;
    102             if($(".dialog").length == 0){
    103                 var dialog = $("<div class='dialog'></div>");
    104                 $("body").append(dialog);
    105             }
    106             var dg = $(".dialog");
    107             var txt = ["听说你最近搞专政啊","怎么可能,我这么民主","那上一个游戏设的那么单一,我不管,宝宝们今天要围剿你","好吧,既然这样就开战吧","废话这么多,开战!"];            
    108             this.showTxt(txt,dg,0);
    109         },
    110         showTxt:function(arr,item,i){
    111             var param = this.defaluts;           
    112             if(i%2 == 0){
    113                 item.html(arr[i]).css({
    114                     left:param.bpos[0].x,
    115                     top:param.bpos[0].y-param.pie
    116                 }).show();
    117             }else{
    118                 item.html(arr[i]).css({
    119                     left:param.apos[0].x,
    120                     top:param.apos[0].y-param.pie
    121                 }).show();
    122             }
    123             
    124             setTimeout(function(){
    125                 item.fadeOut(function(){
    126                     ++i < arr.length ? game.showTxt(arr,item,i): game.move(); 
    127                 });                         
    128             },2000);           
    129         },
    130         move:function(){
    131             game.defaluts.mtimer = setInterval(this.randomMove,1000);
    132             game.heroMove();
    133         },
    134         heroMove:function(){
    135             var param = game.defaluts;
    136             var hp = param.apos[0];
    137             var pie = param.pie;
    138             var himg = param.hero;
    139             $(document).on("keyup",function(e){
    140                 var m_e = e || window.event;
    141                 var keycode = m_e.which;
    142                 if(keycode === 38){
    143                     if(hp.y >pie){
    144                         game.operate("y",false);
    145                     }
    146                 }else if(keycode === 40 ){
    147                     if(hp.y < param.ch-2*pie){
    148                         game.operate("y",true);
    149                     }
    150                 }else if(keycode === 37){
    151                     if( hp.x > pie ){
    152                        game.operate("x",false);
    153                     }
    154                 }else if(keycode === 39){
    155                     if( hp.x < param.cw-2*pie ){
    156                         game.operate("x",true);
    157                     }
    158                 }else if(keycode == 65){
    159                     game.layBoom();
    160                 }
    161             });
    162         },
    163         operate:function(item,flag){
    164             var param = game.defaluts;
    165             var apos = param.apos[0];
    166             var aim = flag ? param.pie : -param.pie;
    167             param.ctx.clearRect(apos.x,apos.y,param.pie,param.pie);
    168             game.coverBoom();
    169             item == "x" ? apos.x += aim : apos.y +=aim;
    170             game.getNewHero();
    171             game.judgeHurt();  //是否坑了自己
    172             //game.drawLine(apos,item,aim);       
    173         },
    174         coverBoom:function(){
    175             var param = game.defaluts;
    176             var booms = param.boomPos;
    177             var apos = param.apos[0];
    178             var ctx  = param.ctx;
    179             for(var i = 0 ; i< booms.length; i++){
    180                 var cur = booms[i];
    181                 if(apos.x == cur.x && apos.y == cur.y){
    182                     ctx.drawImage(param.boom[0],apos.x,apos.y);
    183                 }
    184             }
    185         },
    186         layBoom:function(){
    187             var param = game.defaluts;
    188             if(param.boomnum <66){
    189                 var boom = param.boom[0];
    190                 var ctx = param.ctx;
    191                 var x = param.apos[0].x;
    192                 var y = param.apos[0].y;
    193                 ctx.drawImage(boom,x,y);
    194                 param.boomPos.push({x:x,y:y});  
    195                 param.boomnum++;
    196                 game.stayTime(x,y);             
    197             }else{
    198                 setTimeout(function(){
    199                     game.finalResult("弹尽粮绝,战士赢了!!",true);
    200                 },6000);
    201             }
    202         },
    203         stayTime:function(x,y){
    204             var param = game.defaluts;
    205             var boomPos = param.boomPos;
    206             var flag = false;
    207             var idx;
    208             setTimeout(function(){
    209                 for(var i = 0; i< boomPos.length; i++){
    210                     if(boomPos[i].x == x && boomPos[i].y == y){
    211                         flag = true;
    212                         idx = i;
    213                     }
    214                 }
    215                 if(flag){
    216                     boomPos.splice(idx,1);
    217                     param.ctx.clearRect(x,y,param.pie,param.pie);
    218                 }
    219             },6000);
    220         },
    221         judgeHurt:function(){
    222             var apos = game.defaluts.apos[0];
    223             var bpos = game.defaluts.bpos;
    224             for(var i = 0; i < bpos.length; i++){
    225                 var cur = bpos[i];
    226                 if(apos.x == cur.x && apos.y == cur.y){
    227                     game.finalResult("自食其果了!!战士们赢了!",true);
    228                 }
    229             }
    230         },
    231         drawLine:function(apos,item,aim){
    232             var ctx = game.defaluts.ctx;
    233             var startx,starty;
    234             ctx.lineWidth = 1;
    235             ctx.strokeStyle="#cf0f0f";
    236             ctx.beginPath();
    237             if(item == "x"){
    238                 startx = apos.x-aim;
    239                 starty = apos.y;
    240             }else{
    241                 startx = apos.x;
    242                 starty = apos.y;
    243             }
    244             ctx.moveTo(startx,starty);
    245             ctx.lineTo(apos.x,apos.y);
    246             ctx.stroke();
    247         },
    248         getNewHero:function(){
    249             var param = game.defaluts;
    250             var apos = param.apos[0];
    251             param.ctx.drawImage(param.hero,apos.x,apos.y);
    252         },
    253         randomMove:function(){
    254             var param = game.defaluts;
    255             var bpos = param.bpos;
    256             for(var i = 0 ; i<param.imgs.length; i++){
    257                 var oldx = bpos[i].x;
    258                 var oldy = bpos[i].y;
    259                 param.ctx.clearRect(oldx,oldy,param.pie,param.pie);
    260                 var tn = game.getMovePos(bpos[i]);             
    261                 game.turnPos(tn,i);
    262                 game.judgeWin(tn,i);
    263                 game.drawRole();
    264             }
    265         },
    266         judgeWin :function(pos,i){
    267             var hero = game.defaluts.apos[0];
    268             if(pos.x == hero.x && pos.y == hero.y){      
    269                 game.finalResult("团结就是力量,你们赢了!!",true);
    270             }else{
    271                 game.careBoom(pos,i);
    272             }
    273         },
    274         careBoom:function(pos,idx){
    275             var param = game.defaluts;
    276             var booms = param.boomPos;
    277             var imgs = param.imgs;
    278             var bpos = param.bpos;
    279             var ctx = param.ctx;
    280             for(var i = 0 ; i< booms.length; i++){
    281                 var cur = booms[i];
    282                 if(cur.x == pos.x && cur.y ==pos.y){
    283                     clearInterval(param.mtimer);
    284                     imgs.splice(idx,1);
    285                     booms.splice(i,1);
    286                     bpos.splice(idx,1);
    287                     ctx.clearRect(cur.x,cur.y,param.pie,param.pie);  
    288                     param.mtimer = setInterval(game.randomMove,1000);
    289                     if(imgs.length == 0){
    290                         game.finalResult("再磨练磨练后来挑战吧!",false);
    291                         $(document).unbind("keyup");
    292                     }
    293                 }
    294             }
    295         },
    296         finalResult:function(txt,flag){
    297             var param = game.defaluts;
    298             var apos = param.apos[0];
    299             clearInterval(game.defaluts.mtimer);
    300             if(flag){
    301                 param.ctx.clearRect(apos.x,apos.y,param.pie,param.pie);
    302             }else{
    303                 param.ctx.clearRect(0,0,param.cw,param.ch);
    304             } 
    305             var div = $("<div class='win'>"+txt+"</div>");
    306             $("body").append(div);
    307             div.css({
    308                 left:(param.cw-div.width())/2,
    309                 top:(param.ch-div.height())/2
    310             });
    311             $(document).unbind("keyup");
    312         },
    313         turnPos:function(pos,idx){
    314             var pos_all = this.defaluts.bpos;
    315             var flag = true;
    316             for(var i = 0 ; i<pos_all.length; i++){
    317                 var cur = pos_all[i];
    318                 flag = cur.x == pos.x && cur.y == pos.y ? false : true;       
    319             }
    320             if(flag){
    321                 pos_all.splice(idx,1);
    322                 pos_all.splice(idx,0,pos);
    323             }else{
    324                 var tn = game.getMovePos(pos_all[idx]);
    325                 game.turnPos(tn,idx);
    326             }
    327         },
    328         getMovePos:function(item){
    329             //var ois;
    330             var dir = Math.ceil(Math.random()*4);
    331             var x = 0, y = 0;
    332             switch(dir){
    333                 case 1: x = -1;break;
    334                 case 2 :x = 1;break;
    335                 case 3 : y = -1;break;
    336                 case 4 : y = 1;break;
    337             }
    338             //判断是否越界
    339             return game.judgeBounder(x,y,item);
    340         },
    341         judgeBounder:function(x,y,item){
    342             var ois;
    343             var pie = game.defaluts.pie;
    344             var cw = game.defaluts.cw,
    345                 ch = game.defaluts.ch;
    346             var xfl,yfl;
    347             xfl = ( x*pie+item.x <= cw-2*pie ) && (x*pie + item.x >= pie) ;
    348             yfl = ( y*pie+item.y <=ch-2*pie ) && ( y*pie +item.y >=pie);
    349             if(xfl && yfl){
    350                 var x = x*pie+item.x,
    351                     y = y*pie+item.y;
    352                     ois = {x:x,y:y};
    353                return ois;
    354             }else{
    355                 return game.getMovePos(item);
    356             }
    357         },
    358         addPos:function(pos,pos_cur){   
    359             var pos_all = this.defaluts.bpos;        
    360             if(pos_all.length == 0 ){
    361                 pos_cur.push(pos);
    362             }else{
    363                 var flag = true;
    364                 for(var i = 0 ; i<pos_all.length; i++){
    365                     var cur = pos_all[i];
    366                     flag = cur.x == pos.x && cur.y == pos.y ? false : true;       
    367                 }
    368                 if(flag){
    369                     pos_cur.push(pos);
    370                 }else{
    371                     var new_p = this.getRandomPos();
    372                     this.addPos(new_p,pos_cur);
    373                 }
    374             }
    375         },
    376         getRandomPos:function(){
    377             var x = Math.ceil(Math.random()*15)*this.defaluts.pie;
    378             var y = Math.ceil(Math.random()*14)*this.defaluts.pie;
    379             return {x:x,y:y};
    380         }
    381     };
    382     
    383     $.fn.Game = function(param){
    384         return game.init.apply(this,arguments);
    385     };
    386 })(window,document,jQuery);
  • 相关阅读:
    Metasploit的使用命令_1
    Kali Linux -系统定制
    20200522随笔
    阿里大于接口的问题
    根据一篇文章学习逻辑漏洞
    flask注册蓝图报错
    python 生成验证码
    flask-mail 机制
    对巡风vulscan的理解
    “百度杯” YeSerCMS
  • 原文地址:https://www.cnblogs.com/lr-blog/p/5134600.html
Copyright © 2020-2023  润新知