Javascript 两个玩家如何同时移动(js游戏)
用javascript进行曲棍球比赛,但球员不能同时移动。事实上,当一个移动时,另一个保持静止。在这场比赛中,两名球员同时移动是正常的。你知道一个能帮我的函数吗?是否应添加外部函数?谢谢你的帮助Javascript 两个玩家如何同时移动(js游戏),javascript,Javascript,用javascript进行曲棍球比赛,但球员不能同时移动。事实上,当一个移动时,另一个保持静止。在这场比赛中,两名球员同时移动是正常的。你知道一个能帮我的函数吗?是否应添加外部函数?谢谢你的帮助 <html> <head> <style> body { margin: 0; } .P1 {
<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'
},每隔一段时间重复一次
编辑:
也不要按原样使用键码以提高可读性