小游戏键盘操作

这篇博客主要介绍了如何使用HTML5实现小游戏的键盘操作,包括在不同浏览器中捕获window.event键盘事件,编写判断碰撞的函数,并参考了韩老师的代码。整个游戏只需要一个index.html文件和两张图片,通过设置div的position属性为absolute来布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识点:
1,键盘window.event事件的接收,IE和firefox
2,判断碰撞的小函数
3,代码参考韩老师
4,index.html一个文件,2张图片
5,div属性,要设置成position:absolute

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
        function move(obj){
            var wugui_height=67;
                var wugui_width=94;
                var tuzi_height=73;
                var tuzi_width=76;
                var wugui=document.getElementById('wugui');
                var tuzi=document.getElementById('tuzi');
                if(window.event|| arguments.callee.caller.arguments[0]){
                    key=obj.keyCode;

                    }
            //得到乌龟当前的top和left
                var wugui_top=wugui.style.top;
                var wugui_left=wugui.style.left;
                //处理px后缀
            wugui_top=parseInt(wugui_top.substring(0,wugui_top.indexOf("p")));
            wugui_left=parseInt(wugui_left.substring(0,wugui_left.indexOf("p")));
            //判断用户点击了哪个键
            if(obj.value=="向下走"||key==83){
                wugui.style.top=(wugui_top+10)+"px";
                wugui_top=wugui_top+10;
            }else if(obj.value=="向右走"||key==68){
                wugui.style.left=(wugui_left+10)+"px";
                wugui_left=wugui_left+10;
            }else if(obj.value=="向左走"||key==65){
                wugui.style.left=(wugui_left-10)+"px";
                wugui_left=wugui_left-10;

            }else if(obj.value=="向上走"||key==87){
                wugui.style.top=(wugui_top-10)+"px";
                wugui_top=wugui_top-10;
            }
        //下面判断乌龟和兔子 碰到,应该可以做成一个函数
        var tuzi_top=tuzi.style.top;
        var tuzi_left=tuzi.style.left;
            tuzi_top=parseInt(tuzi_top.substring(0,tuzi_top.indexOf("p")));
            tuzi_left=parseInt(tuzi_left.substring(0,tuzi_left.indexOf("p")));
            y=Math.abs(wugui_top-tuzi_top);
            x=Math.abs(wugui_left-tuzi_left);
        //方法
            //判断条件
            xx=0;
            yy=0;
            //纵向判断
            if(wugui_top<tuzi_top){
                if(y<wugui_height){
                    yy=1;
                }

            }else{
                if(y<tuzi_height){
                    yy=1;
                }
            }
            //横向判断
            if(wugui_left<tuzi_left){
                if(x<wugui_width){
                    xx=1;
                }
            }else{
                if(x<tuzi_width){
                    xx=1;
                    }
            }
    if(xx==1&&yy==1){
        window.alert("抓到了");
        wugui.style.top=120+"px";
        wugui.style.left=100+"px";

    }
}
        </script>
    </head>
    <body onkeydown="return move(event)">

    <!--
        作者:offline
        时间:2016-10-25
        描述://把乌龟放在这个div
    -->

    <div id="wugui" style="position:absolute ;left:100px;top:120px;" >
        <img src="wugui.png" border="1" alt="乌龟" width="94" height="67"/>
    </div>
        <div id="tuzi" style="position:absolute ;left:300px;top:200px;" >
        <img src="tuzi.png" border="1" alt="兔子" width="76" height="73"/>
    </div>

    <table border="1" cellspacing="0" cellpadding="10" width="300">
        <tr><th> </th><th><input type="button" value="向上走" onclick="move(this)" /></th><th> </th></tr>
        <tr><td><input type="button" value="向左走" onclick="move(this)" /></td>
            <td><input type="button" value="向下走" onclick="move(this)" /></td>
            <td><input type="button" value="向右走" onclick="move(this)" /></td></tr>
    </table>

    </body>
</html>
vc++ KeyMessage 监听键盘按键状态,代码中有丰富的注释,一步一步的讲解,程序虽然简单,但通过它了解到的知识有很多,部分代码释义摘录:WinMain:Windows程序的入口函数。    WINAPI :在应用程序回调函数中作为一个返回值的样式,当Windows的外壳(Windows9X的资源管理器)侦测到使用者意欲执行一个Windows程序,于是调用加载器把该程序加载,然后调用C startup code,后者再调用WinMain,开始    执行程序。WinMain的四个参数由操作系统传递进来。   创建一个完整的窗口需要经过下面四个操作步骤:    设计一个窗口类;    注册窗口类;    创建窗口;    显示及更新窗口;      窗口的显示类型CS_HREDRAW窗口水平重画,ClassStyle_horizontal(水平的,与地平线平行的) redraw,CS_VREDRAW窗口水平重画ClassStyle_vertical(垂直的,竖的) redraw 如果选择水平重绘和竖直重绘,用鼠标拖动窗口后则文字消失,如果属性设置为NULL,则拖动变换大小文字还照样显示,CreateWindow只产生窗口,并不显示窗口,所以稍后我们必需再利用ShowWindow将他显示在屏幕上,又,我们希望先送一个WM_PAINT给窗口,以驱动窗口的绘图操作,所以调用UpdateWindow,DispatchMessage会将消息传给窗口函数去处理。消息发生之时,操作系统根据当时的状态,为它标明了所属窗口而窗口所属的窗口类又已经明白标识了窗口函数,(也就是wndcls.lpfnWndProc),所以DispatchMessage自有脉络可寻。   窗口的生命中枢:窗口函数。窗口函数通常利用switch/case方式判断消息的种类,以决定处置方式,由于它是被Windows系统所调用的,所以这是一种call back 函数,意思是指在你的程序中,被Windows系统调用的函数,这些函数虽然是由你设计, 但是永远不会也不该被你调用,他们是为Windows系统准备的…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值