|
|
|||||
Движок для игры "линии"
Всем привет.
Делаю сейчас игру, по типу "линий". Это когда собираешь три или больше кубика одного цвета в ряд - они исчезают. Ну, типа такой игры. И вот, собственно, у меня вопрос - как лучше всего сделать движок для этой игры? Учитывая что новые блоки могут появляться с разных сторон и соответственно - будут двигать ряды или столбцы. Все или выборочно. Я, поначалу, думал что легко сделаю эту игру, но как взялся за реализацию, понял что не всё тут просто. Я сделал так. Создаю стартовый массив: private var blocks:Array = [ ["blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","blank"], ["blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","blank"], ["blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","startingPosition","blank","blank"], ["blank","blank","blank","blank","blank","blank","blank","blank","startingPosition","startingPosition","startingPosition","blank","blank"], ["blank","blank","blank","blank","blank","blank","blank","startingPosition","startingPosition","startingPosition","startingPosition","blank","blank"], ["blank","blank","blank","blank","blank","blank","startingPosition","startingPosition","startingPosition","startingPosition","startingPosition","blank","blank"], ["blank","blank","blank","blank","blank","startingPosition","startingPosition","startingPosition","startingPosition","startingPosition","startingPosition","blank","blank"], ["blank","blank","blank","blank","startingPosition","startingPosition","startingPosition","startingPosition","startingPosition","startingPosition","startingPosition","blank","blank"], ["blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","blank","blank"] ]; private function placeBlocksOnLevel():void { addChild(blocksSloi); for (var line:int=8; line>-1; line--) { for (var column:int = 12; column>-1; column--) { var bv:int = 0; if (blocks[line][column] == "startingPosition") { bv = 1 + Math.random() * 7; } createBlock(line,column,bv); } } addEventListener(Event.ENTER_FRAME,MainEnterFrame); } Подскажите, может есть более простые способы реализации подобной игры? Чтоб можно было легко отслеживать положение блока на экране и не терять его связь с данными в массиве? Ато что-то мне кажется что что-то я намудрил... Сложная какая-то конструкция получается. |
|
|||||
Я бы для начала использова вместо blank и startingPosition , 0 и 1, ну или тру / фэлсе.
А вообще конечно я бы использовал box2D и методом "сканирования" линий убивал не нужны. Тогда вообще не нужно было б знать что, где и куда ложить. Всё само б собиралось и рассыпалось.
__________________
return this... |
|
|||||
Цитата:
|
|
|||||
Скачал.
Тогда можно про вот это поподробней: Цитата:
Это функция, которая будет находить от трёх и больше в одну линию? Или есть какая-то похожая в box2D? |
|
|||||
Не надо бокс2Д, это оверкил.
Посмотрите пример PiratePigs который в пакете демо проектов с OpenFL идет, там все просто сделано тут гайд по ковырянию в openFL Заметьте, я не предлагаю делать на Haxe, я предлагаю посмотреть реализацию (синтаксис языка очень похож на AS3, а openFL апи вообще почти копирует стандартный флешевсий) |
|
|||||
Эммммм.....
Бокс для лайнсов? Может пока не поздно курьером пойти работать и нуевонафиг это программирование? Добавлено через 3 минуты делаешь шаблоны вида: Прикладываешь штамп к своему большому полю, получаешь пересечение со штампом. Это как самое очевидное и простое решение. Если мозги включить то можно и что-то поизящнее придумать. Мне сейчас этим заниматься не охота. И да. В любом случае или 0, 1 или тру/фолс. Но у тебя там скорее всего будут шарики разноцветные, так что тру фолс наверное нет, а вот номер цвета вполне может быть. Добавлено через 7 минут Еще одно простое решение - пройтись по всем ячейкам и посмотреть на +/- одну в каждую сторону от нее. если и + и - будут такими же как исходная - можно убирать.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Цитата:
Уже лет 7 как. |
Часовой пояс GMT +4, время: 16:09. |
|
« Предыдущая тема | Следующая тема » |
|
|