当前位置:编程学习 > html/css >>

html画布写的一个键盘游戏

   今天简单用html5画布写了一个简单的键盘字母游戏。遇到的难点如下:
 
 
 
        1.键盘事件如果对了画布如何消失,解决方法:filltext()方法填充的字母为空,然后填充的坐标归0。
 
 
 
        2.如何再产生一个字母,发现在js的方法用这html5画布是行不通的。解决方法splice()方法移除字母并替换一个新的字母。
 
 
 
       3.清除画布的坐标捉的不够准确,效果能看的出来。
 
 
            
 
 
 
            下面贴出画布的代码,不足之处谢谢指出:
 
 
 
                   
 
<html>  
    <head>  
            <title>canvas画布</title>  
    </head>  
    <script>  
            //字母类  
        function CharA(){  
            //alert("charA()");  
            //声明一个下落坐标为0的变量  
            var speet=0;  
            //外面声明一个上下文  
            var context="";  
            //声明一个数组装住随机数  
            var arrays=new Array("A","B","C","D","E","F","G");  
            //声明一个空的变量装住字母  
            var zimu="";  
            //声明一个left变量装住随机产生的left值  
            var left=0;  
            //初始化一个画布方法  
            function init(){  
                //初始值为50的下落坐标  
                speet=50;  
                //声明一个left变量装住随机产生的left值  
                 left=parseInt(Math.random()*1000);  
                //获取画布  
                var canvas=document.getElementById("mycanvas");  
                //给画布上下文赋值  
                context=canvas.getContext("2d");  
                //给字母赋值  
                zimu=arrays[parseInt(Math.random()*arrays.length)];  
                //设置画布字体大小  
                context.font="20pt serif";  
                //填充一个zimu的值  
                context.fillText(zimu, left, speet);  
            }  
            init();  
            //移动方法  
            this.move=function(){  
                //清除画布  
                context.clearRect(left,speet-20,20,20);  
                //下落坐标加10  
                speet+=10;  
                //填充一个zimu的值  
                context.fillText(zimu,left,speet);  
            }  
            //返回字母值的方法  
            this.Text=function(){  
                return zimu;  
            }  
            //隐藏zimu方法  
            this.hide=function(){  
                //让字母为空  
                zimu="";  
                context.clearRect(left,speet-20,20,20);  
                //填充为0.即不显示  
                context.fillText(zimu,0,0);  
            }  
            //增加一个字母方法  
            this.add=function(){  
                init();  
            }  
              
        }  
        //窗体加载执行  
        window.onload=function(){  
            //实例化类  
            var game=new Game();  
            //调用方法  
            game.start();  
        }  
        //游戏类  
        function Game(){  
            //声明一个数组用来装实例化的对象  
            var Arrays=new Array();  
              
            for(var i=0;i<10;i++){  
                //实例化字母类  
                var charA=new CharA();  
                //数组装实例化的字母类  
                Arrays.push(charA);  
            }  
            //开始方法  
            this.start=function(){  
                //调用定时器  
                time=setInterval(function(){  
                    for(var i=0;i<Arrays.length;i++){  
                        //调用charA类的移动方法  
                        Arrays[i].move();  
                    }  
                },1000);  
            }  
            //调用键盘的方法  
            document.onkeydown=function(e){  
                //alert(String.fromCharCode(e.which));  
                for(var i=0;i<Arrays.length;i++){  
                    //如果键盘输入的值等于随机返回的字母值  
                    if(String.fromCharCode(e.which)==Arrays[i].Text()){  
                    //调用隐藏方法  
                    Arrays[i].hide();  
                    //去掉数组元素即替换一个新元素调用add()方法  
                    Arrays.splice(i,Arrays[i].add());  
                }  
                }  
                  
            }  
              
        }  
    </script>  
    <body>  
        <canvas id="mycanvas" width="1000" height="1000" style="border:1px solid blue"></cancas>  
    </body>  
</html>  

 

 
 
补充:web前端 , HTML/CSS  ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,