День добрый всем!
Задача: Существует двухмерный массив, содержащий ячейки, в которых, в еще одной мерности - содержатся по три элемента(тождественно равных между собой). Т.е. получается трёхмерный массив. Для удобства, думаю, что все элементы будут - картинками.
Вот. Теперь необходимо случайным образом из 2мерного массива выбирать ячейку, первый элемент этой ячейки - как ключевой. Он отрисовывается во главе окошка. Остальные два элемента - отрисовываются ниже, и, для тренировки - рядом, отрисовываются еще подобные элементы, но только соответствующие другой ячейке. Т.е. нужно, нажимая на 1-й, 2-ой и 3-ий элементы(картинки) ПРАВИЛЬНО - угадать соответствие тождественоравных элементов.
Схематично это выглядит так:
0
111
222
,где 0 - ключевой элемент, 1 - вторые элементы, 2 - третие элементы.
Т.е. после прорисовки - необходимо правильно выбрать и нажать на второй и третий тождественноравные элементы - ключевому. Тогда загорится зеленая лампочка и можно будет заново повторить "угадывание".
Вопросы:
1. Как организовать такой массив?
2. Как в любой момент можно вызвать необходимую картинку в окошко(достать из массива и отрисовать в нужном месте, да еще и чтобы она была - нажимаемой)?
3. Как можно проверять совпадения тождественно равных элементов? И, чтобы при совпадении - загоралась "лампочка" зеленым.
4. Есть-ли подобные решения в других задачах?
5. Если можно - то по-подробнее и с примерами.
Сам рисовал программы в старом HiAsm. В новом - для меня принципы немного стали непонятны. В примерах-исходника я подобного не нашел пока. Вот и прошу вас помочь.
Этот топик читают: Гость
Ответов: 14
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 3655
Рейтинг: 69
|
|||
Чё то я ничего непонял .
Может картинки нарисуешь что с чем должно сравниваться. |
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
1. Видимо имеет смысл завести матрицу, значения ячеек которой будут являтся индексами к массиву строк/картинок/чисел(это зависит от того, как идентифицируются ваши элементы и много ли их)
2. Достать картинку из массива можно элементом ArrayRW, отрисовать с помощью Img_Bmp, для отлова нажатий использовать события onMouseUp, onMouseDown и выдаваемую ими координату точки проверять с помощью PointInRect. 3. По их ID. Конкретная схема реализации зависит от того, как эти элементы будут представленны в программе. 4. Вероятно если бы задача была описана более подробно нашлось бы совсем другое решение ![]() 5. Примеры ваши советы наши. ShedLog писал(а): Сам рисовал программы в старом HiAsm. В новом - для меня принципы немного стали непонятныПочему? Можно ли узнать какие изменения привели к непониманию принципов? Тем более, что основные принципы остались(и надеюсь останутся) неизменны с самой первой версии среды... |
|||
карма: 27 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Dilma писал(а): значения ячеек которой будут являтся индексами к массиву А не проще иметь массив утроенной ширины (или высоты) и хранить картинки в трёх соседних ячейках? |
|||
карма: 1 |
|
Ответов: 14
Рейтинг: 0
|
|||
Отлично! Уже кое-что прояснилось для меня.
По поводу непонятности: раньше я особо не баловался с потоками и пр. Видя элемент, содержащий в себе массив(в свойствах элемента), в котором нет входов, кроме как сброса элементов массива (картинок) и два потоковых выхода - чесно говоря вводят меня в ступор. Просто что-то упустил. И, на данный момент, не нашел подробного пояснения, как и что работает и как и что можно отлавливать. Сам я с программированием довольно-таки давно, но не особо. ![]() ![]() ![]() Подготовил поясняющую картинку. Как мне ее здесь вам показать? Как можно ее приаттачить к сообщению? |
|||
карма: 0 |
|
Ответов: 2060
Рейтинг: 28
|
|||
ShedLog, не надо забывать что в HiAsm есть OpenGL. Что ты пытаешься сделать на чистом HiAsm, то это может быть можно сделать на OpenGL и выглядеть будет это гораздо круче.
|
|||
карма: 1 |
|
Ответов: 14
Рейтинг: 0
|
|||
Эдик писал(а): ShedLog, не надо забывать что в HiAsm есть OpenGL. Что ты пытаешься сделать на чистом HiAsm, то это может быть можно сделать на OpenGL и выглядеть будет это гораздо круче.Спасибо, но на данный момент - мне нужно сохранить идею и эффективность тренажера. Не набивая его в "крутые" программы. А то что HiAsm теперь поддерживает и OpenGL - это просто великолепно! Сам очень обрадовался, когда, скачав последнюю версию HiAsm узнал об этом. Токмо вот мануальчик бы для рисования под OpenGL. ![]() |
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
ShedLog писал(а): Токмо вот мануальчик бы для рисования под OpenGLПодойдет любой мануал в интеренете. Однако почти все компоненты палитры есть в примерах пакета. Думаю назначение большинства из них можно понять по этим примерам. |
|||
карма: 27 |
|
Ответов: 14
Рейтинг: 0
|
|||
Поясняющая картинка:
![]() Желтым подсвечены правильные нажатия на картинки, и, как следствие - загорание зеленой лампочки справа. Ваши размышления!?:? |
|||
карма: 0 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Ну вот там, где написано "Элементы массива" вполне себе двумерная матрица, так и храни! Нафига тебе "Сам массив"?
|
|||
карма: 1 |
|
Ответов: 14
Рейтинг: 0
|
|||
Вопрос хранения картинок - пока что - да... Не совсем вопрос.
А вот вопрос реального массива - пусть с тремя картинками, указателем(целым) на одну из картинок и механизм вывода картинки в окошко по необходимым координатам. Это как? Тыкаюсь в HiAsm и ничего не получается. Не пойму механики. =( Объясните. |
|||
карма: 0 |
|
Разработчик
Ответов: 26305
Рейтинг: 2146
|
|||
Да никакой проблемы, тут даже двумерный массив не нужен. Все можно свести к одномерному линейному массиву целых чисел с поиском по имени, а не по индексу, где результирующие целое число есть индекс картинки в массиве картинок. Проще -- не придумаешь.
[size=-2]------ Добавлено в 17:21 Можно и по другому, применительно к примеру. Выбираешь картинку из списка картинок, она имеет вполне определенный индекс. Из массива целых чисел выбирается индекс по имени (или уже по клику посылается индекс, тогда массив и нафиг не нужен) и посылается на сравнение. Два результат сравниваются и если совпадают, то зажигается зеленая лампочка. Если сложно понять, то давай так. Сгенери картинк и затолкай их в массив картинок. Выложи массив на форум дальше -- дело техники. |
|||
карма: 22 |
|
Ответов: 2060
Рейтинг: 28
|
|||
ShedLog, к стате, а что пример то не выкладываешь свой? Я до сих пор не могу понять что именно нужно. Как я понял это тренажор для детсадников?
|
|||
карма: 1 |
|
Разработчик
Ответов: 26305
Рейтинг: 2146
|
|||
Что-то клиент приутих. Наверное, срочно клепает пример
![]() |
|||
карма: 22 |
|
Ответов: 14
Рейтинг: 0
|
|||
Эдик, важно то, что как будет функционировать программа по выше изложенному принципу (думаю, что уже без "белых пятен"). А картинки - могут быть - любые. Кажется, выше я писал, что это будет тренажер письменности с произношением(транскрипциями). Да что угодно можно будет туда нарисовать... ИМХО - не в картинках дело.
![]() Картинки в примере - специально сделал такими "простыми", чтобы не отвлекаться на сами картинки... Чтобы путанницы не возникло. nesco, спасибо! завтра нарежу картинок и выложу их в массиве на форум. |
|||
карма: 0 |
|