Ну хорошо, дпустим у меня массив [x][y][z]. Z у меня будет постоянен, X буду пересчитывать, а вот Y при разных X ,будет разным. Конечно могу нулями заполнить, но...
В общем я обрисую задачу:
Суть такова - человек касается пальцем экрана, получаются координаты X и Y. В идеале хочу получить индивидуальный номер кнопки на которую нажали, плюс информацию о том, что по нажатию этой кнопки делать (типа кода операции). Вся проблема в том, что у меня как бы несколько "рабочих столов" и анализировать коориднаты нажатия нужно в зависимости от номера рабочего стола, а номера у них имеются.
В принципе, как сделать чтобы хотя бы работало, я знаю, но хочется получить удобный для дальнейшего развития программы массив данных, ибо я пока только скелет строю, а потом придет заказчик и будем "мясо" наращивать. КРоме того, я понимаю, что изобретаю велосипед, и наверняка более рациональные чем я сейчас могу придумать, решения существуют.
Пока у меня два варианта - 3-хмерный массив типа
Код
/// кн№1 кн№2 кн№3
unsigned char MAP [5][3][4]={ { {0,0,10,10},{0,0,10,10},{0,0,10,10} }, // Рабочий стол №1
{ {0,0,10,10},{0,0,10,10},{0,0,10,10} }, // Рабочий стол №2
{ {0,0,10,10},{0,0,10,10},{0,0,10,10} }, // Рабочий стол №3
{ {0,0,10,10},{0,0,10,10},{0,0,10,10} }, // Рабочий стол №4
{ {0,0,10,10},{0,0,10,10},{0,0,10,10} } // Рабочий стол №5
};
В функции хочу передавать координаты нажатия и номер рабочего стола Dsk, чтобы функция сравнивала не находится ли X,Y в пределах массива координат, записанного в MAP[Dsk][0..n]. А код операции сделаю пятым элементом массива координат кнопки.
Другой вариант - создать тип данных типа Button c полями x,y,x1,y1,opCode, далее массив Desktop состоящий из Button, массив ProgramData состоящий из Desktop.
Как лучше, рациональнее для компилятора (у меня AVR на 16 МГц, а не Core i7), да и памяти оперативной 2кб.
Или есть более рациональный наработанный способ?
Сообщение отредактировал zheka - Jan 5 2011, 12:56