Что у нас есть
1 Flash игра с полем 6*6
2 Массив в котором хранятся значения , поля игры Скрин ↓↓↓
Задача состоит в том что бы воссоздать алгоритм игры , или написать (ниже описанные)алгоритмы что на мой взгляд намного проще.
Видео с игрой (алгоритм)
Общая задача такая Функция (Подсчет,Удаление) → Функция(Всплытие) →Функция (Поиск,[list type=decimal]
[*]ДА → Функция (Подсчет,Удаление) → Функция(Всплытие)
[*]НЕТ → Стоп, следующий вариант
[/list]
ПУНКТ 1 Исходный массив
[box title=TitleBox]
|5|3|2|5|1|4
|5|4|1|5|3|5
|4|1|2|1|5|4
|4|5|3|5|2|4
|2|3|4|4|3|3
|5|5|4|2|5|1[/box]
ПУНКТ 2 Выделяем удаляемую область (в донном случае крест)
Есть идеи как сделать чтобы для каждого варианта (всего 30) писать не от руки, а функция которая выделяла крест и потом просто подставить значение центрального квадрата
[box title=TitleBox]|5|3|2|5|1|4
|5|4|1|5|3|5
|4|1|2|1|5|4
|4|5|3|5|2|4
|2|3|4|4|3|3
|5|5|4|2|5|1
[/box]
ПУНКТ 3 Здесь надо записать значения выделенной области таким образом
Все 1 сложить и записать в переменную допустим $Summa_1
Все 2 сложить и записать в переменную допустим $Summa_2
И так далее до 5.
ПУНКТ 4 Заменить (удаление) ранее выделенную область на 0 (ну тут всё просто)
[box title=TitleBox]|5|3|0|5|1|4
|5|4|0|5|3|5
|0|0|0|0|0|4
|4|5|0|5|2|4
|2|3|0|4|3|3
|5|5|4|2|5|1[/box]
ПУНКТ 5 Следующий шаг в том что 0 "всплывают" ну или значения "падают"
[box title=Было]|5|3|0|5|1|4
|5|4|0|5|3|5
|0|0|0|0|0|4
|4|5|0|5|2|4
|2|3|0|4|3|3
|5|5|4|2|5|1[/box]
[box title=Стало]|0|0|0|0|0|4
|5|3|0|5|1|5
|5|4|0|5|3|4
|4|5|0|5|2|4
|2|3|0|4|3|3
|5|5|4|2|5|1[/box]
ПУНКТ 6 Ну вот мы подошли к самому трудному (по моему мнению)
Поиск по вертикали И по горизонтали (Одновременно*, опишу это чуть ниже) в ряд одинаковых значений
в нашем случае это 5 добавление этих значений в $Summa_5 И самое главное ради этого прога надо подсчитать сколько в ряд (горизонтали) удаляем и записать максимальное значение в $переменную
$переменную = наш вариант 1
Здесь момент как в ПУНКТе 4 только удаляем 5
[box title=TitleBox]|0|0|0|0|0|4
|5|3|0|5|1|5
|5|4|0|5|3|4
|4|5|0|5|2|4
|2|3|0|4|3|3
|5|5|4|2|5|1[/box]
ну а дальше начиная с ПУНКТа 5
Если в ПУНКТе 6 не нашлось 3 и более в ряд (до 6)
Делаем следующий вариант
*Одновременно потому что могут быть такие варианты (пример от руки)
|5 4 1 5 6 4|
|4 8 8 8 2 1|
|6 8 2 5 6 7|
|3 8 5 8 7 9|
Взял лопату , куда ↨↔ копать?
Поделитесь основными идеями.
1 Flash игра с полем 6*6
2 Массив в котором хранятся значения , поля игры Скрин ↓↓↓
http://img-fotki.yandex.ru/get/5808/38920702.0/0_78f37_99378b4a_L.jpg" width="" />
Задача состоит в том что бы воссоздать алгоритм игры , или написать (ниже описанные)алгоритмы что на мой взгляд намного проще.
Видео с игрой (алгоритм)
http://www.youtube.com/watch?v=y49usxUMEno
Общая задача такая Функция (Подсчет,Удаление) → Функция(Всплытие) →Функция (Поиск,[list type=decimal]
[*]ДА → Функция (Подсчет,Удаление) → Функция(Всплытие)
[*]НЕТ → Стоп, следующий вариант
[/list]
ПУНКТ 1 Исходный массив
[box title=TitleBox]
|5|3|2|5|1|4
|5|4|1|5|3|5
|4|1|2|1|5|4
|4|5|3|5|2|4
|2|3|4|4|3|3
|5|5|4|2|5|1[/box]
ПУНКТ 2 Выделяем удаляемую область (в донном случае крест)
Есть идеи как сделать чтобы для каждого варианта (всего 30) писать не от руки, а функция которая выделяла крест и потом просто подставить значение центрального квадрата
[box title=TitleBox]|5|3|2|5|1|4
|5|4|1|5|3|5
|4|1|2|1|5|4
|4|5|3|5|2|4
|2|3|4|4|3|3
|5|5|4|2|5|1
[/box]
ПУНКТ 3 Здесь надо записать значения выделенной области таким образом
Все 1 сложить и записать в переменную допустим $Summa_1
Все 2 сложить и записать в переменную допустим $Summa_2
И так далее до 5.
ПУНКТ 4 Заменить (удаление) ранее выделенную область на 0 (ну тут всё просто)
[box title=TitleBox]|5|3|0|5|1|4
|5|4|0|5|3|5
|0|0|0|0|0|4
|4|5|0|5|2|4
|2|3|0|4|3|3
|5|5|4|2|5|1[/box]
ПУНКТ 5 Следующий шаг в том что 0 "всплывают" ну или значения "падают"
[box title=Было]|5|3|0|5|1|4
|5|4|0|5|3|5
|0|0|0|0|0|4
|4|5|0|5|2|4
|2|3|0|4|3|3
|5|5|4|2|5|1[/box]
[box title=Стало]|0|0|0|0|0|4
|5|3|0|5|1|5
|5|4|0|5|3|4
|4|5|0|5|2|4
|2|3|0|4|3|3
|5|5|4|2|5|1[/box]
ПУНКТ 6 Ну вот мы подошли к самому трудному (по моему мнению)
Поиск по вертикали И по горизонтали (Одновременно*, опишу это чуть ниже) в ряд одинаковых значений
в нашем случае это 5 добавление этих значений в $Summa_5 И самое главное ради этого прога надо подсчитать сколько в ряд (горизонтали) удаляем и записать максимальное значение в $переменную
$переменную = наш вариант 1
Здесь момент как в ПУНКТе 4 только удаляем 5
[box title=TitleBox]|0|0|0|0|0|4
|5|3|0|5|1|5
|5|4|0|5|3|4
|4|5|0|5|2|4
|2|3|0|4|3|3
|5|5|4|2|5|1[/box]
ну а дальше начиная с ПУНКТа 5
Если в ПУНКТе 6 не нашлось 3 и более в ряд (до 6)
Делаем следующий вариант
*Одновременно потому что могут быть такие варианты (пример от руки)
|5 4 1 5 6 4|
|4 8 8 8 2 1|
|6 8 2 5 6 7|
|3 8 5 8 7 9|
Взял лопату , куда ↨↔ копать?
Поделитесь основными идеями.