我正在使用具有客户端-服务器通信接口的JS制作战舰游戏。
在我的客户端中,我将用户在CPU游戏板上单击的磁贴发送到服务器,以检查它是HIT还是MISS,并取决于服务器是否响应,游戏板会在何时更新以显示是否有飞船被击中与否。
这是服务器响应命中/未命中的部分:
// generate cpu attack
var tileToAttack = cpuAttack(dataIn['cpuhitship']);
// cpu tile being attacked by player
var tileXY = dataIn['tileattacked'];
// check if a CPU ship placed on the selected tile
if(allCoords.includes(tileXY)){
// remove tile from array
var index = allCoords.indexOf(tileXY);
if(index != -1){
allCoords.splice(index, 1);
}
// check if ship is destroyed
cpuShipDestroyed(tileXY);
// send back hit response and cpu attack
var jsontext = JSON.stringify({
task:'cpuHit',
tilehit:tileXY,
message:'HIT! BOOOOM!',
carrierlength:carrier.length,
battleshiplength:battleship.length,
submarinelength:submarine.length,
cruiserlength:cruiser.length,
patrolboatlength:patrolboat.length,
cpucoords:allCoords.length,
cpuattack:tileToAttack
});
res.send(jsontext);
}
else{
// send back miss response and cpu attack
var jsontext = JSON.stringify({
task: 'cpuMiss',
tilemiss:tileXY,
cpuattack:tileToAttack,
message:'MISS! All you hear is the missile hitting water!'
});
res.send(jsontext);
console.log(jsontext);
}
我正在发送的这个JSON对象
// get coordinates of the tile being attacked
var attackXY = parseInt(cpuTile.substring(8, 10));
var data =
{
task:'playerAttack',
tileattacked:attackXY
};
$.ajax({
url: url,
method: 'POST',
data: data,
dataType: 'json'
}).done(function(response) {
tileXY是对应于游戏板上图块的整数。示例12将是1个图块X和2个图块Y。
allCoords存储与CPU装运位置相对应的17个整数。
但是,即使我确实点击了正确的图块,我也只会发回未命中响应;它会跳过if语句,并且每次都转到else {}部分。关于可能发生什么的任何线索?
已解决。我必须使用parseInt()。