2011-12-09 4 views
4

Я начинаю делать квадратную панель размером 8 х 8 для назначения шахматной игры. Тем не менее, мне интересно, есть ли что-нибудь намек на создание квадрата, а не 2D-массива в Java.Создание совета Презентация для шахматной игры

Одно из ограничений для присвоения запрещает использование 2D-массива или любого подобного. Нет AI, кроме пользовательского контроля.

+1

Вы можете использовать массив 1D, если это не слишком похоже. – Thilo

ответ

7

Вы можете использовать одномерный массив, скажем, Figure [] board = new Figure[64] и сделать простой метод геттер/сеттер для эмуляции 2-размеры:

Figure get(int hor, int vert) { 
    return board[hor*8+ver]; 
} 

void set(int hor, int vert, Figure f) { 
    board[hor*8+ver] = f; 
} 
3

Вы можете использовать 1 одномерный массив или ArrayList, а затем делят на 8 и используйте результат и остаток, чтобы знать, в какой колонке и строке вам нужно идти.

Затем вы можете работать наоборот, чтобы получить местоположение в массиве для соответствующей секции шахматной доски.

2

Вы также можете использовать карту:

private Map<String, Figure> board = new HashMap<String, Figure>(); 

private String positionToString(int hor, int vert) { 
    return hor + " " + vert; 
} 

public Figure get(int hor, int vert) { 
    return board.get(positionToString(hor, vert)); 
} 

public void set(int hor, int vert, Figure fig) { 
    board.put(positionToString(hor, vert), fig); 
} 
+0

Карта и строка <-> int конвертация здесь нестандартный. Это приведет только к потерям производительности. – korifey

+0

@korify Я не думаю, что эти потери производительности очень большие. –

+0

@ НикитаБелоглазов: так? попробуйте 'std :: pair '? – sehe

2

У меня нет знания Java, я играю в шахматы и сделать некоторые программирования Delphi. Я понятия не имею о возможностях манипуляции с Java.

Но я предлагаю вам исследовать структуру данных и поиск по сети для открытого шахматного движка с открытым исходным кодом.

Это обычное явление в мире C++.

0

Возможно, вам удастся избежать даже создания площади в первую очередь?

Альтернативный способ представления шахматной доски - это всего лишь список частей и их соответствующих координат.

Смежные вопросы