Javascript 两个玩家如何同时移动(js游戏)

Javascript 两个玩家如何同时移动(js游戏),javascript,Javascript,用javascript进行曲棍球比赛,但球员不能同时移动。事实上,当一个移动时,另一个保持静止。在这场比赛中,两名球员同时移动是正常的。你知道一个能帮我的函数吗?是否应添加外部函数?谢谢你的帮助 <html> <head> <style> body { margin: 0; } .P1 {

用javascript进行曲棍球比赛,但球员不能同时移动。事实上,当一个移动时,另一个保持静止。在这场比赛中,两名球员同时移动是正常的。你知道一个能帮我的函数吗?是否应添加外部函数?谢谢你的帮助

    <html>
    <head>
        <style>
            body {
                margin: 0;
            }
            .P1 {
                position: absolute;
                font-size: 110px;
                background-color: white;
            }
            .P2 {
                position: absolute;
                left: 1500px;
                font-size: 110px;
                background-color: white;
            }
        </style>
    </head>
    <body onkeydown="keyD(event)">
        <span class="P1">|</span>
        <span class="P2">|</span>
    </body>
    <script>
        var P1D = 0;
        var P2D = 0;
        var spanP1 = document.getElementsByClassName("P1")[0];
        var spanP2 = document.getElementsByClassName("P2")[0];
        function keyD(e) {
            if (e.keyCode == 38 || e.keyCode == 40) {
                f1(e);
            }
            if (e.keyCode == 83 || e.keyCode == 87) {
                f2(e);
            }
        }
        function f1(e) {
            if (e.keyCode == 40) {
                if (P2D >= 620) {
                } else {
                    P2D += 10;
                    spanP2.style.top = P2D + "px";
                }
            }
            if (e.keyCode == 38) {
                if (P2D <= -20) {
                } else {
                    P2D -= 10;
                    spanP2.style.top = P2D + "px";
                }
            }
        }
        function f2(e) {
            if (e.keyCode == 83) {
                if (P1D >= 620) {
                } else {
                    P1D += 10;
                    spanP1.style.top = P1D + "px";
                }
            }
            if (e.keyCode == 87) {
                if (P1D <= -20) {

                } else {
                    P1D -= 10;
                    spanP1.style.top = P1D + "px";
                }
            }
        }
    </script>
    </html>

您需要记住哪些键被按下或未按下。例如,通过在对象中保存其状态

此外,当播放器1按下一个键且播放器2开始按下另一个键时,播放器1的键停止重复片刻。为了防止这种情况,您需要停止依赖用户系统的密钥重复。例如,使用setInterval或更高版本将其实现到游戏循环中。例如:

//在对象中保存关键帧状态 常量keystates={} document.addEventListener'keydown',e=>{ keystates[e.code]=真 } document.addEventListener'keyup',e=>{ keystates[e.code]=false } //在游戏循环中重复关键动作 常数重复间隔=500 setInterval=>{ 如果keystates['KeyW']console.log'Player1 up' 如果keystates['KeyS']console.log'Player1 down' 如果按键状态为['ArrowUp']console.log'Player2 up' 如果按键状态为['ArrowDown']console.log'Player2 down' },每隔一段时间重复一次 编辑:
也不要按原样使用键码

以提高可读性