Вверх ↑
Этот топик читают: Гость
Ответов: 14
Рейтинг: 0
#1: 2007-06-14 13:15:03 ЛС | профиль | цитата
День добрый всем!
Задача: Существует двухмерный массив, содержащий ячейки, в которых, в еще одной мерности - содержатся по три элемента(тождественно равных между собой). Т.е. получается трёхмерный массив. Для удобства, думаю, что все элементы будут - картинками.
Вот. Теперь необходимо случайным образом из 2мерного массива выбирать ячейку, первый элемент этой ячейки - как ключевой. Он отрисовывается во главе окошка. Остальные два элемента - отрисовываются ниже, и, для тренировки - рядом, отрисовываются еще подобные элементы, но только соответствующие другой ячейке. Т.е. нужно, нажимая на 1-й, 2-ой и 3-ий элементы(картинки) ПРАВИЛЬНО - угадать соответствие тождественоравных элементов.
Схематично это выглядит так:

0
111
222

,где 0 - ключевой элемент, 1 - вторые элементы, 2 - третие элементы.
Т.е. после прорисовки - необходимо правильно выбрать и нажать на второй и третий тождественноравные элементы - ключевому. Тогда загорится зеленая лампочка и можно будет заново повторить "угадывание".
Вопросы:
1. Как организовать такой массив?
2. Как в любой момент можно вызвать необходимую картинку в окошко(достать из массива и отрисовать в нужном месте, да еще и чтобы она была - нажимаемой)?
3. Как можно проверять совпадения тождественно равных элементов? И, чтобы при совпадении - загоралась "лампочка" зеленым.
4. Есть-ли подобные решения в других задачах?
5. Если можно - то по-подробнее и с примерами.

Сам рисовал программы в старом HiAsm. В новом - для меня принципы немного стали непонятны. В примерах-исходника я подобного не нашел пока. Вот и прошу вас помочь.
карма: 0

0
Ответов: 3655
Рейтинг: 69
#2: 2007-06-14 14:01:11 ЛС | профиль | цитата
Чё то я ничего непонял .
Может картинки нарисуешь что с чем должно сравниваться.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2007-06-14 14:02:24 ЛС | профиль | цитата
1. Видимо имеет смысл завести матрицу, значения ячеек которой будут являтся индексами к массиву строк/картинок/чисел(это зависит от того, как идентифицируются ваши элементы и много ли их)
2. Достать картинку из массива можно элементом ArrayRW, отрисовать с помощью Img_Bmp, для отлова нажатий использовать события onMouseUp, onMouseDown и выдаваемую ими координату точки проверять с помощью PointInRect.
3. По их ID. Конкретная схема реализации зависит от того, как эти элементы будут представленны в программе.
4. Вероятно если бы задача была описана более подробно нашлось бы совсем другое решение
5. Примеры ваши советы наши.

ShedLog писал(а):
Сам рисовал программы в старом HiAsm. В новом - для меня принципы немного стали непонятны

Почему? Можно ли узнать какие изменения привели к непониманию принципов? Тем более, что основные принципы остались(и надеюсь останутся) неизменны с самой первой версии среды...
карма: 27
0
Ответов: 2125
Рейтинг: 159
#4: 2007-06-14 15:08:43 ЛС | профиль | цитата
Dilma писал(а):
значения ячеек которой будут являтся индексами к массиву

А не проще иметь массив утроенной ширины (или высоты) и хранить картинки в трёх соседних ячейках?
карма: 1

0
Ответов: 14
Рейтинг: 0
#5: 2007-06-14 15:18:19 ЛС | профиль | цитата
Отлично! Уже кое-что прояснилось для меня.
По поводу непонятности: раньше я особо не баловался с потоками и пр. Видя элемент, содержащий в себе массив(в свойствах элемента), в котором нет входов, кроме как сброса элементов массива (картинок) и два потоковых выхода - чесно говоря вводят меня в ступор. Просто что-то упустил. И, на данный момент, не нашел подробного пояснения, как и что работает и как и что можно отлавливать. Сам я с программированием довольно-таки давно, но не особо. В детстве писал что-то на Бейсике... Не СМЕШНО!!! )) Вот. А на самом деле я писал на Ассемблере под процессор ZX80 (ZX Spectrum 48K, Scorpion ZS256 - может кто и слышал). Позже - писал на С++. В основном мне нравилось строить всякие трёхмерности и отрисовывать их... Т.е., считаю, что с программированием маленько знаком. HiAsm же считаю очень удобным, но теперь - более требующим программирования, нежели рисования. Поймите правильно. Может и ошибаюсь...
Подготовил поясняющую картинку. Как мне ее здесь вам показать? Как можно ее приаттачить к сообщению?
карма: 0

0
Ответов: 2060
Рейтинг: 28
#6: 2007-06-14 15:25:00 ЛС | профиль | цитата
ShedLog, не надо забывать что в HiAsm есть OpenGL. Что ты пытаешься сделать на чистом HiAsm, то это может быть можно сделать на OpenGL и выглядеть будет это гораздо круче.
карма: 1

0
Ответов: 14
Рейтинг: 0
#7: 2007-06-14 15:30:09 ЛС | профиль | цитата
Эдик писал(а):
ShedLog, не надо забывать что в HiAsm есть OpenGL. Что ты пытаешься сделать на чистом HiAsm, то это может быть можно сделать на OpenGL и выглядеть будет это гораздо круче.

Спасибо, но на данный момент - мне нужно сохранить идею и эффективность тренажера. Не набивая его в "крутые" программы.
А то что HiAsm теперь поддерживает и OpenGL - это просто великолепно! Сам очень обрадовался, когда, скачав последнюю версию HiAsm узнал об этом. Токмо вот мануальчик бы для рисования под OpenGL.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2007-06-14 15:40:45 ЛС | профиль | цитата
ShedLog писал(а):
Токмо вот мануальчик бы для рисования под OpenGL

Подойдет любой мануал в интеренете. Однако почти все компоненты палитры есть в примерах пакета. Думаю назначение большинства из них можно понять по этим примерам.
карма: 27
0
Ответов: 14
Рейтинг: 0
#9: 2007-06-14 16:00:03 ЛС | профиль | цитата
Поясняющая картинка:

Желтым подсвечены правильные нажатия на картинки, и, как следствие - загорание зеленой лампочки справа.

Ваши размышления!?:?
карма: 0

0
Ответов: 2125
Рейтинг: 159
#10: 2007-06-14 16:45:27 ЛС | профиль | цитата
Ну вот там, где написано "Элементы массива" вполне себе двумерная матрица, так и храни! Нафига тебе "Сам массив"?
карма: 1

0
Ответов: 14
Рейтинг: 0
#11: 2007-06-14 16:51:09 ЛС | профиль | цитата
Вопрос хранения картинок - пока что - да... Не совсем вопрос.
А вот вопрос реального массива - пусть с тремя картинками, указателем(целым) на одну из картинок и механизм вывода картинки в окошко по необходимым координатам. Это как? Тыкаюсь в HiAsm и ничего не получается. Не пойму механики. =(
Объясните.
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#12: 2007-06-14 17:21:43 ЛС | профиль | цитата
Да никакой проблемы, тут даже двумерный массив не нужен. Все можно свести к одномерному линейному массиву целых чисел с поиском по имени, а не по индексу, где результирующие целое число есть индекс картинки в массиве картинок. Проще -- не придумаешь.

[size=-2]------ Добавлено в 17:21
Можно и по другому, применительно к примеру. Выбираешь картинку из списка картинок, она имеет вполне определенный индекс. Из массива целых чисел выбирается индекс по имени (или уже по клику посылается индекс, тогда массив и нафиг не нужен) и посылается на сравнение. Два результат сравниваются и если совпадают, то зажигается зеленая лампочка. Если сложно понять, то давай так. Сгенери картинк и затолкай их в массив картинок. Выложи массив на форум дальше -- дело техники.
карма: 22

0
Ответов: 2060
Рейтинг: 28
#13: 2007-06-14 17:50:10 ЛС | профиль | цитата
ShedLog, к стате, а что пример то не выкладываешь свой? Я до сих пор не могу понять что именно нужно. Как я понял это тренажор для детсадников?
карма: 1

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#14: 2007-06-14 23:02:13 ЛС | профиль | цитата
Что-то клиент приутих. Наверное, срочно клепает пример
карма: 22

0
Ответов: 14
Рейтинг: 0
#15: 2007-06-14 23:12:02 ЛС | профиль | цитата
Эдик, важно то, что как будет функционировать программа по выше изложенному принципу (думаю, что уже без "белых пятен"). А картинки - могут быть - любые. Кажется, выше я писал, что это будет тренажер письменности с произношением(транскрипциями). Да что угодно можно будет туда нарисовать... ИМХО - не в картинках дело.
Картинки в примере - специально сделал такими "простыми", чтобы не отвлекаться на сами картинки... Чтобы путанницы не возникло.
nesco, спасибо! завтра нарежу картинок и выложу их в массиве на форум.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)