• 最近学习canvas,写了个小的效果。


    
    
    
    
     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 }
    
    
    
     1 <!doctype html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>看我吃你们</title>
     6     <link rel="stylesheet" href="css/main.css">
     7     <script type="text/javascript" src="js/jquery.js"></script>
     8     <script type="text/javascript" src="js/game.js"></script>
     9 </head>
    10 <body>
    11     <canvas id="game" width="510" height="480"></canvas>
    12 <script type="text/javascript">
    13     $("#game").Game();
    14 </script>
    15 </body>
    16 </html>
    
    
    
      1 View Code
      2  
      3 
      4 //@charset "utf-8";
      5 (function(window,document,$){
      6 "use strict";
      7 var game = {
      8 hx:0,
      9 hy:0,
     10 mx:0,
     11 my:0,
     12 ctx:"",
     13 pie:0,
     14 heroI:"",
     15 monsI:"",
     16 canvas:"",
     17 num : 0,
     18 cw : 0,
     19 ch : 0,
     20 init:function(item){
     21 game.initImg();
     22 var that = this;
     23 game.canvas = document.getElementById("game");
     24 game.pie = that.width()/17;
     25 game.ctx = game.canvas.getContext("2d");
     26 game.hx = game.getRandomPos().x;
     27 game.hy = game.getRandomPos().y;
     28 game.cw = game.canvas.width;
     29 game.ch = game.canvas.height;
     30 game.getRole();
     31 },
     32 initImg:function(){
     33 this.heroI = new Image();
     34 this.heroI.src = "images/me.png";
     35 this.monsI = new Image();
     36 this.monsI.src = "images/you.png";
     37 },
     38 //获取随机角色位置
     39 getRole:function(){
     40 this.getImg(this.heroI,this.hx,this.hy);
     41 setTimeout(function(){
     42 game.getMonster();
     43 },100);
     44 this.move();
     45 },
     46 move:function(){
     47 $(document).on("keyup",function(e){
     48 var m_e = e || window.event;
     49 var keycode = m_e.which;
     50 if(keycode === 38){
     51 if(game.hy*game.pie >game.pie){
     52 game.operate("y",false);
     53 }
     54 }else if(keycode === 40 ){
     55 if(game.hy*game.pie < game.ch-2*game.pie){
     56 game.operate("y",true);
     57 }
     58 }else if(keycode === 37){
     59 if( game.hx*game.pie > game.pie ){
     60 game.operate("x",false);
     61 }
     62 }else if(keycode === 39){
     63 if( game.hx*game.pie < game.cw-2*game.pie ){
     64 game.operate("x",true);
     65 }
     66 }
     67 });
     68 },
     69 operate:function(item,flag){
     70 var aim = flag ? 1 : -1;
     71 game.clearRole("hero");
     72 item == "x" ? game.hx += aim : game.hy +=aim;
     73 game.getNewHero(); 
     74 game.judgeEat(item,flag);
     75 
     76 },
     77 judgeEat:function(item,flag){
     78 if(item == "x"){
     79 //var cel = flag ? this.heroI.width : 0;
     80 var px = this.hx*this.pie;
     81 var disx = Math.abs(px-this.mx*this.pie);
     82 var disy = Math.abs(this.hy - this.my)*this.pie;
     83 if(disx < 5 && disy<5 ){
     84 game.clearRole("mons");
     85 game.getMonster(); 
     86 setTimeout(function(){
     87 game.showResult();
     88 },400);
     89 }
     90 }else{
     91 //var cel = flag ? this.heroI.height : 0;
     92 var py = this.hy*this.pie;
     93 var disy = Math.abs(py-this.my*this.pie);
     94 var disx = Math.abs(this.hx - this.mx)*this.pie;
     95 if(disx <5 && disy< 5 ){
     96 game.clearRole("mons");
     97 game.getMonster(); 
     98 game.showResult();
     99 }
    100 }
    101 },
    102 showResult :function(){
    103 this.num ++;
    104 if(this.num <5){
    105 if($(".wuli").length == 0){
    106 var box = $("<div class='wuli hide'>干掉"+this.num+"个啦!^O^</div>");
    107 $("body").append($(box));
    108 var l = (this.cw-box.width())/2;
    109 var t = (this.ch-box.height())/2;
    110 box.css({
    111 left:l,
    112 top:t
    113 }).removeClass("hide");
    114 }else{
    115 $(".wuli").html("干掉"+this.num+"个啦!^O^").show();
    116 }
    117 }else{
    118 $(".wuli").html("你们全军覆没了诶~").show();
    119 setTimeout(function(){
    120 game.ctx.clearRect(game.mx*game.pie,game.my*game.pie,game.monsI.width,game.monsI.height);
    121 });
    122 
    123 }
    124 setTimeout(function(){
    125 $(".wuli").fadeOut();
    126 },800);
    127 },
    128 clearRole:function(item){
    129 var x,y,width,height;
    130 if(item == "hero"){
    131 x = this.hx;
    132 y = this.hy;
    133 width = this.heroI.width;
    134 height = this.heroI.height;
    135 }else{
    136 x = this.mx;
    137 y = this.my;
    138 width = this.monsI.width;
    139 height = this.monsI.height;
    140 }
    141 var py = y*this.pie;
    142 var px = x*this.pie;
    143 this.ctx.clearRect(px,py,width,height);
    144 },
    145 getNewHero:function(){
    146 this.getImg(this.heroI,this.hx,this.hy);
    147 },
    148 //待优化,什么时候图片加载完成
    149 getImg:function(img,x,y){
    150 var that = this;
    151 /*var icon = new Image();
    152 icon.src=img;*/
    153 setTimeout(function(){
    154 that.ctx.drawImage(img,x*that.pie,y*that.pie);
    155 },100);
    156 },
    157 getMonster:function(){
    158 var x = game.getRandomPos().x;
    159 var y = game.getRandomPos().y;
    160 if(x === this.hx && y === this.hy ){
    161 x = this.judgePos().x;
    162 y = this.judgePos().y;
    163 }
    164 this.mx = x;
    165 this.my = y;
    166 this.getImg(this.monsI,this.mx,this.my);
    167 },
    168 judgePos : function(){
    169 var x=0, y=0;
    170 do{
    171 x = this.getRandomPos().x;
    172 y = this.getRandomPos().y;
    173 }while(x === this.hx && y === this.hy);
    174 return {x:x,y:y};
    175 },
    176 //返回随机的X,Y位置
    177 getRandomPos:function(){
    178 var x = Math.ceil(Math.random()*15);
    179 var y = Math.ceil(Math.random()*14);
    180 return {x:x,y:y};
    181 }
    182 };
    183 $.fn.Game = function(param){
    184 return game.init.apply(this,arguments);
    185 };
    186 
    187 })(window,document,jQuery);

     图片我就没贴了,这个简单的交互就是键盘上下左右移动操作其中的一个,用起来就知道了

  • 相关阅读:
    AutoCompleteTextView 简单用法
    照片颠倒问题及查询摄像头参数问题的解决
    Android Studio-引用jar及so文件
    file新建文件及文件夹
    appcompat_v7报错
    fresco加载本地图片、gif资源
    android根据图片路径显示图片
    sublime text3 及相关的安装
    win 10通过自带IIS搭建ftp
    LCA
  • 原文地址:https://www.cnblogs.com/lr-blog/p/5134592.html
Copyright © 2020-2023  润新知