Я создаю игру в java, и я пытаюсь создать для нее многопользовательский режим, когда игра начинается, уровень загружается и клиент добавляется в список игроков, который клиентский, клиент будет перебирать список и добавлять больше, если сервер сообщает об этом, но проблема в том, что я получаю «ArrayIndexOutOfBoundsException», когда он начинает игру, я дал указание моей игре проигнорировать это, я не могу показаться чтобы решить проблему.Array Index Out Of Bounds Exception Java Game
Я предполагаю, что это связано с созданием нового игрока и временем, необходимым для того, чтобы потоки выполняли свою работу, но надеялись, что кто-то может помочь!
Сообщение вар является строка получила fromt он сервер, отформатированный как это:
имя, адрес, PosX; Пози; fakeRotation; вращение; rotationSpeed; скорость; sheildEnabled; sheildHealth, здоровье
Вот пример того, что посылает сервер:
Luke;/127.0.0.1:53701;50.0;50.0;0.0;0.0;0.0;0.0;true;100;100
Вот вары:
String[] decrypted = message.split(",");
String[] commands = decrypted[x].split(";");
Вот кусок кода, который меня беспокоит:
boolean newPlayer = true;
if(Main.level.playerList != null)
{
try
{
for(int p = 0; p < Main.level.playerList.size(); p++)
{
if(Main.level.playerList.get(p).address.toString().equals(commands[1]))
{
newPlayer = false;
break;
}
}
if(newPlayer)
{
Player player = new Player(50, 50, 100, 150, commands[1], Main.level.shipImage1, Main.level.thrusterFlamesSprite1, Main.level.shieldSprite1);
Main.level.playerList.add(player);
}
for(int p = 0; p < Main.level.playerList.size(); p++)
{
Player player = Main.level.playerList.get(p);
if(player.address.equals(commands[1]))
{
// name:address:posX:posY:fakeRotation:rotation:rotationSpeed:speed:sheildEnabled:sheildHealth:health
player.name = commands[0];
player.address = commands[1];
player.pos[0] = Double.parseDouble(commands[2]);
player.pos[1] = Double.parseDouble(commands[3]);
player.fakeRotation = Float.parseFloat(commands[4]);
player.rotation = Float.parseFloat(commands[5]);
player.rotationSpeed = Double.parseDouble(commands[6]);
player.speed = Double.parseDouble(commands[7]);
player.sheildEnabled = Boolean.parseBoolean(commands[8]);
player.sheildStrength = Integer.parseInt(commands[9]);
//player.health = Integer.parseInt(commands[10]);
}
}
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Array index out of bounds, continuing.");
e.printStackTrace();
}
}
Надеюсь кто-то может помочь, как я сказал, я думаю, что его somethign делать с добавлением «новый» товар, но я не могу найти способ сделать это Работа!
Трассировка стека я получаю это:
java.lang.ArrayIndexOutOfBoundsException: 1
at multiplayer.Translator.interperate(Translator.java:28)
at multiplayer.GameClient.run(GameClient.java:81)
Заранее спасибо!
Как объявляется 'command []'? Для того, что у вас есть в настоящее время, оно должно быть не менее 10. Если вы раскомментируете строку состояния, это должно быть 11. Как вы инициализировали 'command []'? –
извините, команда String [] commands = decrypted [x] .split (";"); и дешифрование дешифровано = сообщение.Трещина(","); –
сообщение отформатировано как имя, адрес; posX; posY; fakeRotation; rotation; rotationSpeed; speed; sheildEnabled; sheildHealth; health –