Я работаю над игрой tic-tac-toe, и мне нужна помощь. Вот как моя плата устанавливается:Нужна помощь в получении имени класса через массив
[a1] [a2] [a3]
[b1] [b2] [b3]
[c1] [c2] [c3]
Эти значения являются классы, которые я присвоенные эти конкретные пробелы. В JQuery, я поставил эти классы равные к значению массива, например, так:
var spacesArray = [
"a1", "a2", "a3",
"b1", "b2", "b3",
"c1", "c2", "c3"
]
Так spacesArray [0] равно в левом верхнем пространстве, spacesArray [4] равно среднему пространства, и так на.
Я пытаюсь создать функцию, которая определяет, когда три пробела выровнены в строке или столбце. Чтобы сделать это, я включил переменную для последнего щелкнутого пространства, которое я назвал lastClickedElement.
В идеале, что бы мне хотелось, чтобы эта функция выполнялась, это нечто подобное. В этом примере сделайте вид, что последнее место, на которое я нажал, - это среднее пространство (b2).
- Сравнит lastClickedElement (b2), чтобы увидеть, если его класс соответствует значению массива
- Если это совпадение, проверьте элементы, находящиеся выше и ниже его на доске, чтобы увидеть, если они были выбраны тот же игрок. В этом случае это будет либо a2, либо c2, либо b1 и b3.
- Если три пространства выстраиваются вертикально или горизонтально, игра заканчивается и игрок выигрывает.
Я знаю, что это не объяснило бы диагональные победы, но я могу разобраться с этим отдельно.
Мой вопрос: Как мне получить доступ к именам классов и значениям массива вместе? Я пытаюсь понять, как это сказать, поэтому я сожалею, если это звучит как тарабарщина.
Я хочу сделать что-то вроде этого (простите, пожалуйста, любой неправильный синтаксис):
- я нажимаю на пространстве b2, что делает его lastClickedElement.
- Я хочу проверить его класс (.b2) на его позицию в массиве (spacesArray [4]).
- После подтверждения того, что .b2 - это то же самое, что и spaceArray [4], я хочу проверить пробелы выше и ниже, поэтому я предполагаю, что он проверит что-то вроде spacesArray [4 + 3] и spacesArray [4-3].
- Тогда он будет проверять пробелы в стороне от него, spaceArray [4 + 1] и spacesArray [4-1].
- После того, как щелкнули пробел, он добавит класс «spaceTakenPlayer1» или «spaceTakenPlayer2» в зависимости от того, на чьем пути он был, поэтому он будет проверять один из этих классов.
Опять же, я не знал точно, как это фразы, и я сожалею, если это сбивает с толку.
Вот jsFiddle для тех, кто хотел бы лучше рассмотреть:
Для этого jsFiddle, то IMG слева является X и IMG на справа O. Как только игра будет запущена, пространства игрока 1 превратятся в помидоры, а пространство игрока 2 станет голубым.
Благодарим вас за помощь и помощь.
Да, похоже, что это будет трюк. Могу ли я по-прежнему манипулировать этим числом, чтобы проверить его на наличие других пробелов? Например: 'if ($ (this) .attr ('data-index'). HasClass ('spaceTakenPlayer1') && $ (this) .attr ('data-index' + 3) .hasClass ('spaceTakenPlayer1') && $ (this) .attr ('data-index' - 3) .hasClass ('spaceTakenPlayer1')) ' – ClaytonAlanKinder
просто просто нарисуйте строки как числа, иначе вы получите что-то вроде« data-index3 »: $ (this) .attr (+ 'data-index' + 3). – manishie