2016-08-12 2 views
0

Я сейчас в процессе создания многопользовательской шахматной игры в холсте Javascript + HTML5 в качестве мини-проекта. Я хотел бы знать, какой будет наилучшая практика для представления совета.Создание 2D-массива объектов против ints для шахматной игры в Javascript

Вариант 1: 2D-массив объектов - У меня есть модуль Piece с некоторыми функциями, общими для всех частей платы. Затем у меня есть объекты для всех частей, которые наследуются от Piece. - Затем я могу создать 2D-массив пьес с 32 общими объектами и установить их положение на доске.

Вариант 2: 2D-массив из интс - Я могу просто создать 2D-сетку, где определенное целое представляет заданную деталь.

Какой вариант был бы «лучшим», или есть лучший? Я пытаюсь использовать подход OO в целом.

Цените любой вход. Спасибо, парни.

+0

Вариант 1 предоставит вам максимальную гибкость - каждый объект может содержать целое число, которое идентифицирует кусок, но оно также может содержать информацию типа типа, а если она белая или черная: 'pieces = [{id : 1, side: 'white', type: 'pawn'}, ...] Переход на второй вариант кажется вам, что вы просто ограничиваете себя, мало или совсем не выигрывая. Если цель состоит в том, чтобы пойти OO в целом, пойдите с объектами! –

+0

Лично я бы пошел с 2D-массивом объектов, чтобы я мог легко получить информацию о том, какая часть находится на этой позиции, каков цвет окна, какой игрок принадлежит этой части и т. Д. –

ответ

1

Вы могли бы также пойти на объекты, узнать ООП, иметь код, который в целом «лучше» ... Если вы программировали игру со значительно большей «доской», то есть с размером в тысячах или более фрагментов , вы можете рассмотреть целочисленный подход по соображениям производительности.

Шахматная доска размером 8 x 8, однако, не является чем-то вроде современного переводчика JS, так что может сходить с ума.

+0

Я делаю 32 отдельных объекта (8 объекты пешки, 2 рыцарских объекта и т. д. для каждого игрока) или я делаю 6 объектов и использую их при необходимости? Второй вариант делает его сложным с точки зрения хранения позиций, но для первого варианта требуется 32 переменных ... – jebusayah

+0

Опять же, 32 переменных - это не большая проблема. Очевидно, не хранить их как отдельные переменные в глобальной области, иметь их в массиве, представляющем плату ... Пустые квадраты - это просто 'null', некоторые будут заполнены объектом, который вы можете перемещать/удалять и заменять другой, и т.п. –

+0

хорошо, спасибо! – jebusayah

0

2D-массив объектов, вероятно, будет лучшим выбором, поскольку вы можете хранить больше данных, чем массив из int. Например, вместо того, чтобы использовать числа 5 и 6 для представления черно-белых пешек, у вас может быть объект с свойством типа и свойство цвета.

0

По моему мнению, более удобно использовать массив объектов для представления платы, таким образом вы можете легко прикрепить каждый объект Piece и его графическое представление (класс CSS), в то время как использование чисел для представления части кажется мне более беспорядочный подход и определенно не OO.