Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.10.2013, 19:16
ndiezel вне форума Посмотреть профиль Отправить личное сообщение для ndiezel Посетить домашнюю страницу ndiezel Найти все сообщения от ndiezel
  № 1  
Ответить с цитированием
ndiezel
 
Аватар для ndiezel

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
По умолчанию Движок для игры "линии"

Всем привет.

Делаю сейчас игру, по типу "линий". Это когда собираешь три или больше кубика одного цвета в ряд - они исчезают. Ну, типа такой игры.
И вот, собственно, у меня вопрос - как лучше всего сделать движок для этой игры? Учитывая что новые блоки могут появляться с разных сторон и соответственно - будут двигать ряды или столбцы. Все или выборочно.
Я, поначалу, думал что легко сделаю эту игру, но как взялся за реализацию, понял что не всё тут просто.

Я сделал так. Создаю стартовый массив:
Код AS3:
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"]
		];
Заполняю на его основе экран блоками, запускаю саму игру:
Код AS3:
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);
		}
Ну и дальше там уже перемещаю их, удаляю и т.д.
Подскажите, может есть более простые способы реализации подобной игры? Чтоб можно было легко отслеживать положение блока на экране и не терять его связь с данными в массиве?
Ато что-то мне кажется что что-то я намудрил... Сложная какая-то конструкция получается.

Старый 03.10.2013, 19:25
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Я бы для начала использова вместо blank и startingPosition , 0 и 1, ну или тру / фэлсе.
А вообще конечно я бы использовал box2D и методом "сканирования" линий убивал не нужны. Тогда вообще не нужно было б знать что, где и куда ложить. Всё само б собиралось и рассыпалось.
__________________
return this...

Старый 03.10.2013, 19:59
ndiezel вне форума Посмотреть профиль Отправить личное сообщение для ndiezel Посетить домашнюю страницу ndiezel Найти все сообщения от ndiezel
  № 3  
Ответить с цитированием
ndiezel
 
Аватар для ndiezel

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
Я бы для начала использова вместо blank и startingPosition , 0 и 1, ну или тру / фэлсе.
А вообще конечно я бы использовал box2D и методом "сканирования" линий убивал не нужны. Тогда вообще не нужно было б знать что, где и куда ложить. Всё само б собиралось и рассыпалось.
Я бы тоже использовал box2D но он у меня не хочет запускаться. Пробовал и на Flash Develop и на Flash cs 6. Несколько часов на него убил, потом плюнул и решил сам всё писать.

Старый 03.10.2013, 20:38
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 4  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
ndiezel хм...
Вложения
Тип файла: rar Box2D-1.rar (353.6 Кб, 25 просмотров)
__________________
return this...

Старый 03.10.2013, 20:48
ndiezel вне форума Посмотреть профиль Отправить личное сообщение для ndiezel Посетить домашнюю страницу ndiezel Найти все сообщения от ndiezel
  № 5  
Ответить с цитированием
ndiezel
 
Аватар для ndiezel

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
ndiezel хм...
Скачал.
Тогда можно про вот это поподробней:
Цитата:
А вообще конечно я бы использовал box2D и методом "сканирования" линий убивал не нужны. Тогда вообще не нужно было б знать что, где и куда ложить. Всё само б собиралось и рассыпалось.
?

Это функция, которая будет находить от трёх и больше в одну линию? Или есть какая-то похожая в box2D?

Старый 04.10.2013, 00:09
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 6  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Не надо бокс2Д, это оверкил.
Посмотрите пример PiratePigs который в пакете демо проектов с OpenFL идет, там все просто сделано
тут гайд по ковырянию в openFL
Заметьте, я не предлагаю делать на Haxe, я предлагаю посмотреть реализацию (синтаксис языка очень похож на AS3, а openFL апи вообще почти копирует стандартный флешевсий)

Старый 04.10.2013, 01:05
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 7  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Эммммм.....
Бокс для лайнсов?
Может пока не поздно курьером пойти работать и нуевонафиг это программирование?

Добавлено через 3 минуты
делаешь шаблоны вида:

Код:
0, 0, 1
0, 1, 0
1, 0, 0
Код:
1, 1, 1
Код:
1
1
1
Код:
1, 0, 0
0, 1, 0
0, 0, 1
Прикладываешь штамп к своему большому полю, получаешь пересечение со штампом.
Это как самое очевидное и простое решение.
Если мозги включить то можно и что-то поизящнее придумать. Мне сейчас этим заниматься не охота.
И да. В любом случае или 0, 1 или тру/фолс.
Но у тебя там скорее всего будут шарики разноцветные, так что тру фолс наверное нет, а вот номер цвета вполне может быть.

Добавлено через 7 минут
Еще одно простое решение - пройтись по всем ячейкам и посмотреть на +/- одну в каждую сторону от нее.
если и + и - будут такими же как исходная - можно убирать.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 04.10.2013, 01:17
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Простого прохода по столбцам и по строкам хватит за уши. Прикручивать что-то левое для такой задачи очень мощный изврат.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 04.10.2013, 03:34
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 9  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Я тут подумал.
Всё-таки склоняюсь к реализации через flex DataGrid + ItemRenderer.
Метода лучше - для этой задачи не найти.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 04.10.2013, 15:27
ndiezel вне форума Посмотреть профиль Отправить личное сообщение для ndiezel Посетить домашнюю страницу ndiezel Найти все сообщения от ndiezel
  № 10  
Ответить с цитированием
ndiezel
 
Аватар для ndiezel

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
Эммммм.....
Бокс для лайнсов?
Может пока не поздно курьером пойти работать и нуевонафиг это программирование?
Поздно )
Уже лет 7 как.

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:09.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.