Форум сети D-Lan

Электроника => Персональный компьютер => Программирование => Тема начата: timelimit от 01-11-2011, 19:16:33

Название: Кто может под мобильный сделать?
Отправлено: timelimit от 01-11-2011, 19:16:33
Есть среди наших программистов умельцы сделать под мобильный прогу(игру)?
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 01-11-2011, 19:25:17
Под какой мобильный? Какую прогу/игру?
Название: Re: Кто может под мобильный сделать?
Отправлено: Catcatcat от 01-11-2011, 19:38:26
Цитата: timelimit от 01-11-2011, 19:16:33
Есть среди наших программистов умельцы сделать под мобильный прогу(игру)?

как в анегдоте: -

Бортмеханик - прибор

7!!! :o

что 7!? >:(

а что прибор? ::)
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 01-11-2011, 19:45:04
Цитата: Sasha от 01-11-2011, 19:25:17
Под какой мобильный? Какую прогу/игру?
Ну, для универсальности программки думаю наверно java me подойдет...
Можно под симбиан, кто может...
Ну и под WM тоже пойдет... ))
Программа (или игра, как посмотреть) как мне кажется не сильно сложная...
Может конечно заморочная...
Есть такая игра на тренировку памяти, когда надо найти два одинаковых элемента при переворачивании карт или плиток...
Так вот, вместо картинок есть другая идея... текстовая
Кто может реализовать такую прогу(игру)?
Идеально конечно сделать редактор для добавления своих вариантов одинаковых элементов... ))
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 02-11-2011, 14:03:05
Забудь про Windows Media и Symbian. Может лучше уже под какой-нибудь смартфон? Но тебе виднее.
Я в принципе никогда таким не занимался, думаю на такую задачу у меня уйдет около суток и в принципе если тебе не срочно я могу помочь, но в ближайшие пару месяцев я врядли смогу позволить себе выделить целый свободный день на это, если тебе очень нужно, могу дать контакты хороших студентов, которые за небольшую плату сделают тебе все в лучшем виде.
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 02-11-2011, 14:03:37
Есть еще вариант, попробуй сделать сам, а если будут возникать сложности можешь обращаться ко мне, я постараюсь помочь.
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 02-11-2011, 17:44:28
Цитата: Sasha от 02-11-2011, 14:03:05
Забудь про Windows Media и Symbian. Может лучше уже под какой-нибудь смартфон?
У меня в основном смарт на симбе... ))
И что значит под какой-нибудь, это под андроид? Других вариантов не вижу... ))
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 02-11-2011, 17:45:13
Цитата: Sasha от 02-11-2011, 14:03:37
Есть еще вариант, попробуй сделать сам, а если будут возникать сложности можешь обращаться ко мне, я постараюсь помочь.
Начну с вопроса, на чем легче сделать такую прогу, именно для мобильного?
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 02-11-2011, 18:03:38
Цитата: timelimit от 01-11-2011, 19:45:04
думаю наверно java me подойдет...

Цитата: timelimit от 02-11-2011, 17:45:13
Цитата: Sasha от 02-11-2011, 14:03:37
Есть еще вариант, попробуй сделать сам, а если будут возникать сложности можешь обращаться ко мне, я постараюсь помочь.
Начну с вопроса, на чем легче сделать такую прогу, именно для мобильного?

Если с Паскалем трудностей нет, то попробуй MidletPascal. Лично мне силы воли на жаву не хватило, а МидлетПаскаль легко и быстро сделал мне работающие мидлеты для моего Ц75-го семёна.

Ознакомиться можно тут: http://forum.boolean.name/forumdisplay.php?f=46 (http://forum.boolean.name/forumdisplay.php?f=46)
Название: Re: Кто может под мобильный сделать?
Отправлено: Catcatcat от 02-11-2011, 18:15:52
Нравиться мне название Кто может под мобильный сделать?. т.е. Без мобильника Это уже сделать НИЗЯ. :help01:
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 02-11-2011, 18:25:53
Цитата: Proydoha от 02-11-2011, 18:03:38

Если с Паскалем трудностей нет, то попробуй MidletPascal. Лично мне силы воли на жаву не хватило, а МидлетПаскаль легко и быстро сделал мне работающие мидлеты для моего Ц75-го семёна.

Ознакомиться можно тут: http://forum.boolean.name/forumdisplay.php?f=46 (http://forum.boolean.name/forumdisplay.php?f=46)
Спасибо за подсказку, сейчас как раз просматриваю информацию про это вариант...
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 02-11-2011, 18:27:33
Цитата: Catcatcat от 02-11-2011, 18:15:52
Нравиться мне название Кто может под мобильный сделать?. т.е. Без мобильника Это уже сделать НИЗЯ. :help01:
Не пойму что то... мне нужна программка, которая бы работала на мобильнике, а не на ПК, поэтому без мобильника никак (если я правильно понял фразу.... )
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 02-11-2011, 21:01:40
Без обид, но считаю вариант Пройдохи плохим.
Юзай джаву, а я помогу советом и литературой. Скачиваешь среду Eclipse(есть альтернативные варианты), и вперед.
По поводу смартфонов. Под Android пишется тоже на джаве. Есть еще iOs (айфон), там свой язык objective C. Я с ним лично не знаком. Ну и до сих пор не особо популярный Windows Phone 7, под него пишут на шарпе, точнее на специфическом сильверлайте.
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 02-11-2011, 21:28:59
Цитата: Sasha от 02-11-2011, 21:01:40
Без обид, но считаю вариант Пройдохи плохим.
Юзай джаву, а я помогу советом и литературой. Скачиваешь среду Eclipse(есть альтернативные варианты), и вперед.
По поводу смартфонов. Под Android пишется тоже на джаве. Есть еще iOs (айфон), там свой язык objective C. Я с ним лично не знаком. Ну и до сих пор не особо популярный Windows Phone 7, под него пишут на шарпе, точнее на специфическом сильверлайте.
Вариант Пройдохи легкий(относительно конечно), но сильно ограниченный в возможностях...
А по j2me у меня есть книга Горнакова... и этот, NetBeans который, и Wireless Toolkit... хотел просто чтоб не сильно напрягаться... но видно не суждено... ))
Попробую конечно в очередной раз понять что к чему... ))
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 02-11-2011, 22:22:07
Ну нетбинс наверное по-проще эклипса будет для новичка, но в эклипсе есть огромнейшее количество надстроек, которые можно устанавливать.
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 03-11-2011, 00:11:19
Цитата: Sasha от 02-11-2011, 21:01:40
Без обид, но считаю вариант Пройдохи плохим.

Не обижаюсь. Так и есть.

Но, честно-честно, вгрызться в мобильную джаву сходу, как по мне, непросто. Я остановился где-то на разворачивании нетбинсов и вайрлесс тулкитов и их настройке (в 2009-ом году). И нету гайдов "Пишем мобильный апплет. Руководство для дауна".

В отличие от. Где разворачивается примитивная до горя среда и в пару строк можно получить запускабельный с одной кнопки результат.

Цитата: timelimit от 02-11-2011, 21:28:59
но сильно ограниченный в возможностях...

К нему подключаются библиотеки, написанные на джаве, если такая необходимость есть. Например мидлетпаскаль криво работал с прозрачностью, но кто-то на коленке сделал модуль, который, подключаясь, решал эту проблему. Извращения!
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 03-11-2011, 17:36:10
Если мне память не изменяет, то ты чтото путаешь, аплет - это программа, запускаемая в браузере.
Я вспомнил в студии когда-то от скуки писать червячка под WM. Вроде на эмуляторе работал, но развернуть негде было.
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 03-11-2011, 17:43:14
Цитата: Sasha от 03-11-2011, 17:36:10
Если мне память не изменяет, то ты чтото путаешь, аплет - это программа, запускаемая в браузере.

Я имел ввиду, конечно же, мидлет.

Но и с аплетами у меня дружбы не вышло : )
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 03-11-2011, 18:32:08
Эх, в результате все равно пришли к популярнейшему ответу на многих форумах - Хочешь программку(игру) - сделай сам... :-[
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 04-11-2011, 00:24:32
Цитата: timelimit от 03-11-2011, 18:32:08
Эх, в результате все равно пришли к популярнейшему ответу на многих форумах - Хочешь программку(игру) - сделай сам... :-[

Я, честно говоря, не понял ТЗ.

Нужны карточки со словами, их надо переворачивать и находить пары?
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 04-11-2011, 11:32:27
Цитата: Proydoha от 04-11-2011, 00:24:32
Я, честно говоря, не понял ТЗ.

Нужны карточки со словами, их надо переворачивать и находить пары?
Да, как игра с картинками где нужно на память вспомнить что было на перевернутых карточках(плитках или как там они называются), и две одинаковых исчезают например.
Только вместо картинок текст.
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 04-11-2011, 11:52:28
Ну я могу завтра попробовать сделать чтото простенькое без касивой графики и анимации.
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 04-11-2011, 18:14:12
Цитата: Sasha от 04-11-2011, 11:52:28
Ну я могу завтра попробовать сделать чтото простенькое без касивой графики и анимации.
Собственно мне красота не нужна, главное чтоб на мобильном пошло и я мог сам (через редактор или в коде) добавлять варианты таких карточек со словами...
Заранее большое спасибо за участие...
С меня плюсик... ))
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 04-11-2011, 18:34:07
Ну если будет свободное время скачаю эклипс и попробую.
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 04-11-2011, 19:20:23
Цитата: Sasha от 04-11-2011, 18:34:07
Ну если будет свободное время скачаю эклипс и попробую.
Конечно, мне не к спеху...
Буду ждать...(пытаясь сам что нить соорудить конечно))
Еще раз спасибо...
Маленькое дополнение, слова для сравнения разного языка (русский-английский), если это повлияет на код...
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 05-11-2011, 16:58:09
Цитата: timelimit от 04-11-2011, 19:20:23
Маленькое дополнение, слова для сравнения разного языка (русский-английский), если это повлияет на код...

В пару к русскому слову надо найти английское?

Что за телефон, кстати. Если ещё точнее, то каких размеров экран у него. Мне просто сдаётся, что писать слова на карточках эквивалентно четырём карточкам на экране. Или двум.

И пока мне так кажется, я бы сделал символическое поле из маленьких прямоугольничков, а при нажатии на один из них - показывать слово просто в центре экрана, над полем, и помечать соответствующий ему прямоугольничек, как перевёрнутый. Как-то так.
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 05-11-2011, 17:04:31
Было бы неплохо аналог посмотреть.
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 05-11-2011, 17:10:35
Цитата: Sasha от 05-11-2011, 17:04:31
Было бы неплохо аналог посмотреть.

Я так понял, что что-то подобное: http://www.min2win.ru/gm.php?id=209 (http://www.min2win.ru/gm.php?id=209)
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 05-11-2011, 18:17:56
Цитата: Proydoha от 05-11-2011, 17:10:35
Я так понял, что что-то подобное: http://www.min2win.ru/gm.php?id=209 (http://www.min2win.ru/gm.php?id=209)
В принципе что то подобное...
Насчет размера экрана, задумался...
А цель программки собственно банальна изучать английские слова, подумал что в такой форме, как плитки, будет интересно...
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 05-11-2011, 18:20:10
Цитата: timelimit от 05-11-2011, 18:17:56
А цель программки собственно банальна изучать английские слова, подумал что в такой форме, как плитки, будет интересно...

Цитата: Proydoha от 05-11-2011, 16:58:09
В пару к русскому слову надо найти английское?
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 05-11-2011, 18:42:47
Цитата: Proydoha от 05-11-2011, 18:20:10
Цитата: timelimit от 05-11-2011, 18:17:56
А цель программки собственно банальна изучать английские слова, подумал что в такой форме, как плитки, будет интересно...

Цитата: Proydoha от 05-11-2011, 16:58:09
В пару к русскому слову надо найти английское?
В чем ошибка? ))
Или к английскому слову найти русское... ))
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 05-11-2011, 19:08:45
Цитата: timelimit от 05-11-2011, 18:42:47
В чем ошибка? ))
Или к английскому слову найти русское... ))

"Да" или "Нет"?

Я понять не могу что надо делать : )
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 05-11-2011, 19:37:52
Ну раз изучать английский, то думаю что к английскому найти русское... ))
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 05-11-2011, 21:36:23
Цитата: timelimit от 05-11-2011, 19:37:52
Ну раз изучать английский, то думаю что к английскому найти русское... ))

Договорились : )
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 05-11-2011, 21:47:05
Цитата: Proydoha от 05-11-2011, 21:36:23
Цитата: timelimit от 05-11-2011, 19:37:52
Ну раз изучать английский, то думаю что к английскому найти русское... ))

Договорились : )
Спасибо... ))
Рассмотрю варианты как сделать удобнее отображение на экране.... ))
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 05-11-2011, 22:31:43
Я делаю вот так:
(http://daewl.narod.ru/Real_Deal/sjboy.png)

(http://daewl.narod.ru/Real_Deal/sjboy_1.png)

Кстати почему-то на один столбец и одну строку больше чем надо создаёт, это я не доглядел.
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 06-11-2011, 03:13:03
Как-то так (http://daewl.narod.ru/Real_Deal/timelimit.rar).

В папке bin файлы для мобильного, всё остальное - насоздавал MidletPascal 3.4 (http://sourceforge.net/projects/midletpascal/).

В эмуляторе работает нормально : )

2,8,4,6 - навигация
5 - действие
0 - выход в главное меню, если ты в игре

Если открыть винраром файл таймлимит.жар, то можно увидеть файлы Russian.txt и English.txt. Это базы со словами.
Если их изменить, то изменится размер файла .жар
Умные телефоны, такие как мой прекрасный сименс ц75, проигнорируют это.
Глупые скажут:"АХТУНГ! БЕДА! РАЗМЕР .ЖАР-ФАЙЛА НЕ СОВПАДАЕТ С ИНФОРМАЦИЕЙ, ЗАПИСАННОЙ В ФАЙЛЕ .ЖАД!!!"

Если открыть блокнотом таймлимит.жад, то можно увидеть "MIDlet-Jar-Size: 16207"
Это оно.

Код:
[spoiler]program timelimit;
type  card_info = record
      num  : integer;
      word : string;
      end;
const card_w = 10; //Ширина карточки
      card_h = 5;  //Высота карточки
var mode,i,k : integer;
//    s        : string;
    res      : resource;               //Когда мне надо будет открыть текстовый файл, я воспользуюсь этой переменной
    font_img : image;                  //Картинка со шрифтом
    font_img2: image;                  //Картинка с золотым шрифтом
    letter   : image;                  //Промежуточная картинка, в которую записывается буква перед тем, как её нарисуют
    menu     : array [0..5] of string; //Пункты меню
    rows     : integer;                //Количество строк
    columns  : integer;                //Количество столбцов
    cursor_x : integer;                //Положение курсора на игровом поле
    cursor_y : integer;                //Положение курсора на игровом поле
    cursor_c : integer;                //Цвет курсора. От 0 до 255.
    cursor_b : boolean;                //В какую сторону изменяется цвет курсора.
    board    : array [0..30,0..30] of card_info; //Игровое поле. Нету динамических массивов, надо брать с запасом.
    memo_x   : integer;                //Координаты "открытой" карточки
    memo_y   : integer;                //Координаты "открытой" карточки
    popup    : boolean;                //Показывается ли окошко со словом?
    gameover : boolean;                //Все карточки открыты?

function findchar(ch:string): integer; //Функция, ищущая нужный символ в моей импровизированной кодировке и возвращающая его номер.
var font_desc:resource;
    line:string;
    num:integer;
begin
num := 0;
font_desc := openResource('/VN_RU_EN_FONT.txt');
if (resourceAvailable(font_desc)) then
repeat
  line := readLine(font_desc);
  num  := StringToInteger(readLine(font_desc));
{
  setColor(0, 0, 0);
  if line = ch then
  drawText(integertostring(num)+': '+line+' == '+ch, 50, 50);
  if line <> ch then
  drawText(integertostring(num)+': '+line+' <> '+ch, 50, 50);
  repaint;
  delay(1000);
  setColor(255, 255, 255);
  fillRect(0, 0, getWidth, getHeight);
}
  if ch = line then break;
until line='EOF'; //Сверху кусок закомментирован, потому что я написал "until line<>EOF" и рвал волосы:"ПОЧЕМУ ОНО НЕ ИЩЕТ БУКВЫ?!?!?!"
closeResource(font_desc);
findchar := num;
end;

procedure drawstring(s1:string;x,y:integer;font:image); //Процедура, выводящая строку. В ней появилась нужда из-за того, что MP3.4 не дружит с русскими буквами.
var j,num:integer;                                      //Хорошо, что я нарисовал свой шрифт два года назад.
begin
for j:=0 to length(s1) do
begin
  num:=findchar(getChar(s1,j));
  letter := ImageFromImage(font,(num-1)*8,0,8,8);
  drawImage(letter, x+j*8, y);
end;
end;

procedure GameSetup;  //Процедура, подготавливающая игровое поле
var line  : string;
    num   : integer;  //В этих переменных будут храниться разные числа с разными значениями
    num2  : integer;  //Чёрт ногу сломит в моём коду
    nums  : array [0..450] of integer; //Взял с запасом: (30*30)/2
    no_co : boolean;  //Нету совпадений и "на первый-второй рассчитайсь!"
    safety: integer;  //Противостоятор бесконечному циклу
    temp  : card_info;//Буду перемешивать массив - использую
begin
randomize; //Самая любимая процедура в Паскале
cursor_x := 0;
cursor_y := 0;
cursor_c := 255;
cursor_b := true;
memo_x   := -1;
memo_y   := -1;
popup    := false;

safety := 0; //Противостоятор бесконечному циклу
num := 0;    //Собираем номера строк в файлах со словами, которые будут использованы на игровом поле
res := openResource('/English.txt'); //Для этого нужно сперва узнать сколько слов в файлах со словами
if (resourceAvailable(res)) then
repeat
  num  := num+1;
  line := readline(res);
until line = 'EOF'; //Пересчитали. Всего их num.
if (resourceAvailable(res)) then

for i:=0 to (((columns)*(rows))/2) do nums[i]:=0;     //Теперь выберем те из них, которые будут использованы.

for i:=0 to (((columns)*(rows))/2) do                 //Их должно быть (строки * столбцы)/2
begin
  no_co := true;                                       //И не должно быть совпадений
  repeat
   num2:=random(num)+1;
   for k:=0 to ((columns-1)*(rows-1)) do
   if num2 = nums[k] then no_co := false;
   safety := safety+1;
   if safety>600 then break;                           //Противостоятор бесконечному циклу
  until no_co = true;                                  //Бесконечный цикл, если слов меньше, чем карточек
nums[i]:=num2;
end;                                                  //С этого момента в массиве nums у нас есть номера слов. Теперь их надо нанести на игровое поле.
                                                       //По два экземпляра каждого.

no_co:=true;                                          //"на первый-второй рассчитайсь!"
num2 :=0;
for i:=0 to (columns-1) do
  for k:=0 to (rows-1) do
  begin
   if no_co = true  then                               //"Первый!"
   begin
    res := openResource('/Russian.txt');
   end;
   if no_co = false then                               //"Второй!"
   begin
    res := openResource('/English.txt');
   end;
   if (resourceAvailable(res)) then
   for num:=0 to nums[num2] do line := readline(res);
   if (resourceAvailable(res)) then closeResource(res);
   board[i,k].num  := nums[num2];
   board[i,k].word := line;
   no_co := not no_co;
   if no_co = true then num2:=num2+1;
  end;                                                 //Массив заполнен, теперь его надо перемешать.

for i:=0 to (columns-1) do
  for k:=0 to (rows-1) do
  begin
   num :=random(columns);
   num2:=random(rows);
   temp            := board[i,k];
   board[i,k]      := board[num,num2];
   board[num,num2] := temp;
  end;                                                 //Массив перемешан.
i:=0; //Вот это, называется, идиотина использовала переменную-итератор, что бы обозначать выбранные пункты меню, а потом удивлялась:"Почему на один столбец больше создаётся?"
end;

procedure drawcard(x,y:integer);
begin
setColor(200, 200, 200);
fillRect(x, y, card_w, card_h);
setColor(0, 0, 0);
drawRect(x, y, card_w, card_h);
end;

procedure drawcard2(x,y:integer);
begin
setColor(255, 255, 255);
fillRect(x, y, card_w, card_h);
setColor(0, 0, 0);
drawRect(x, y, card_w, card_h);
end;
procedure drawcard3(x,y:integer);
begin
setColor(255, 255, 255);
fillRect(x, y, card_w+1, card_h+1);
end;

procedure drawcursor;
begin
setColor(cursor_c, cursor_c, 0);          //Цвет курсора
if cursor_b then cursor_c := cursor_c - 17 else cursor_c := cursor_c + 17; //"Мигание" курсора
if cursor_c = 255 then cursor_b := true;  //Изменение направления "мигания"
if cursor_c = 0   then cursor_b := false; //Изменение направления "мигания"
drawRect(getWidth/2 - (columns*(card_w+4))/2 - 1 + cursor_x*(card_w+4), getHeight/2 - (rows*(card_h+4))/2 - 1 + cursor_y*(card_h+4), card_w+2, card_h+2); //Рисуем прямоугольник курсора
end;

begin
i        := 0; //Итератор?
mode     := 1; //Режимы игры: 1 - главное меню, 2 - игра, 3 - выход, 4 - game over screen, 5 - экран "паузы". При запуске устанавливаем в еденицу.
rows     := 2; //Количество строк с карточками
columns  := 2; //Количество столбцов с карточками
font_img := loadImage('/VN_RU_EN_FONT.png');      //Шрифт
font_img2:= loadImage('/VN_RU_EN_FONT_GOLD.png'); //Золотой шрифт

res := openResource('/Menu.txt');
if (resourceAvailable(res)) then
begin
  menu[0] := readLine(res);
  menu[1] := readLine(res);
  menu[2] := readLine(res);
  menu[3] := readLine(res);
  menu[4] := readLine(res);
  menu[5] := readLine(res);
  closeResource(res);
end;

repeat

setColor(255, 255, 255);             //Выбрать белый цвет
fillRect(0, 0, getWidth, getHeight); //И зарисовать им экран

if mode = 1 then //Если мы в главном меню
begin

  setColor(0, 0, 0); //Выбрать чёрный цвет и рисовать главное меню средствами, совсем не относящимися к выбору цвета.
  if i = 0 then drawstring(menu[0],getWidth/2-40,10,font_img2) else
  drawstring(menu[0],getWidth/2-40,10,font_img);
  if i = 1 then begin drawstring(menu[1],getWidth/2-40,20,font_img2); drawstring(integertostring(rows),getWidth/2-40+56,20,font_img2); end else
  begin drawstring(menu[1],getWidth/2-40,20,font_img); drawstring(integertostring(rows),getWidth/2-40+56,20,font_img); end;
  if i = 2 then begin drawstring(menu[2],getWidth/2-40,30,font_img2); drawstring(integertostring(columns),getWidth/2-40+80,30,font_img2); end else
  begin drawstring(menu[2],getWidth/2-40,30,font_img); drawstring(integertostring(columns),getWidth/2-40+80,30,font_img); end;
  if i = 3 then drawstring(menu[3],getWidth/2-40,40,font_img2) else
  drawstring(menu[3],getWidth/2-40,40,font_img);
  //drawText('New Game', 10, 10);
  //drawText(IntegerToString(trunc(getHeight/(card_h+2))), 10, 60);
  //drawText(IntegerToString(rows+2), 10, 70);
  //drawText(IntegerToString(rows), 10, 70);
  //drawText(IntegerToString(columns), 10, 80);

  //Обработка нажатий на клавиши:
  if getkeypressed = KE_KEY8 then begin i := i+1; if i>3 then i:=0; end; //Если нажата двойка - перемещаемся на один пункт меню вниз  (В ТЕЛЕФОНАХ КНОПКИ РАСПОЛОЖЕНЫ НЕ ТАК КАК НА НУМПАДЕ!!!)
  if getkeypressed = KE_KEY2 then begin i := i-1; if i<0 then i:=3; end; //Если восьмёрка     - перемещаемся на один пункт меню вверх (В ТЕЛЕФОНАХ КНОПКИ РАСПОЛОЖЕНЫ НЕ ТАК КАК НА НУМПАДЕ!!!)

  //trunc(getWidth /(card_w+2))
  //trunc(getHeight/(card_h+2))

  if getKeyClicked = KE_KEY5 then //Если нажата пятёрка - события в зависимости от выбранного пункта меню
  begin
   if i = 0 then begin GameSetup; mode := 2; end;       //Если выбрана "Новая игра" - создаём игровое поле и переходим во второй режим
   if i = 1 then                                        //Если устанавливаем количество строк, то суммарное количество карточек должно быть чётным и
   begin                                                //количество строк с карточками не должно вылазить за границы экрана
    if odd(columns) then
    begin
     if (rows+2) < (trunc(getHeight/(card_h+4))) then
     rows := rows + 2 else rows := 2;
    end else
    begin
     if (rows+1) < (trunc(getHeight/(card_h+4))) then
     rows := rows + 1 else rows := 1;
    end;
   end;
   if i = 2 then                                         //Та же фигня и с количеством столбцов
   begin
    if odd(rows) then
    begin
     if (columns+2) < (trunc(getWidth/(card_w+4))) then
     columns := columns + 2 else columns := 2;
    end else
    begin
     if (columns+1) < (trunc(getWidth/(card_w+4))) then
     columns := columns + 1 else columns := 1;
    end;
   end;
   if i = 3 then mode := 3;                              //Выход - выход
  end;

end; //Конец событий, происходящих в главном меню

if mode = 2 then //События, происходящие на игровом поле
begin
  for i:=0 to (columns-1) do
   for k:=0 to (rows-1) do
   begin
    drawcard(getWidth/2 - (columns*(card_w+4))/2 + i*(card_w+4),getHeight/2 - (rows*(card_h+4))/2 + k*(card_h+4));
    if (i = memo_x) and (k = memo_y) then drawcard2(getWidth/2 - (columns*(card_w+4))/2 + i*(card_w+4),getHeight/2 - (rows*(card_h+4))/2 + k*(card_h+4));
    if (board[i,k].num = -1) then drawcard3(getWidth/2 - (columns*(card_w+4))/2 + i*(card_w+4),getHeight/2 - (rows*(card_h+4))/2 + k*(card_h+4));
   end;
  drawcursor;
  setColor(0, 0, 0); //Снова чёрный цвет, и снова весь код, связанный с ним, закомментирован.
  //drawText(IntegerToString(rows), 10, 70);
  //drawText(IntegerToString(columns), 10, 80);
  //drawText(IntegerToString(board[cursor_x,cursor_y].num)+' : '+board[cursor_x,cursor_y].word, 10, 70);

  //getWidth/2 - (length(board[cursor_x,cursor_y].word)*8)/2 - 8
  if popup then
  begin
   setColor(255, 255, 255);
   fillRect(getWidth/2 - (length(board[cursor_x,cursor_y].word)*8)/2 - 8, getHeight/2 - 16, length(board[cursor_x,cursor_y].word)*8 + 16, 24);
   setColor(0, 0, 0);
   drawRect(getWidth/2 - (length(board[cursor_x,cursor_y].word)*8)/2 - 8, getHeight/2 - 16, length(board[cursor_x,cursor_y].word)*8 + 16, 24);
   drawstring(board[cursor_x,cursor_y].word,getWidth/2 - (length(board[cursor_x,cursor_y].word)*8)/2,getHeight/2 - 8,font_img);
  end;

  if popup = false then //Если мы смотрим на карточку, то двигаться по полю нельзя
  begin
   if getkeypressed = KE_KEY8 then begin cursor_y := cursor_y + 1; if cursor_y > (rows-1)    then cursor_y := 0;         end; //Вот эти четыре (В ТЕЛЕФОНАХ КНОПКИ РАСПОЛОЖЕНЫ НЕ ТАК КАК НА НУМПАДЕ!!!)
   if getkeypressed = KE_KEY2 then begin cursor_y := cursor_y - 1; if cursor_y < 0           then cursor_y := rows-1;    end; //строки - это   (В ТЕЛЕФОНАХ КНОПКИ РАСПОЛОЖЕНЫ НЕ ТАК КАК НА НУМПАДЕ!!!)
   if getkeypressed = KE_KEY6 then begin cursor_x := cursor_x + 1; if cursor_x > (columns-1) then cursor_x := 0;         end; //навигация по игровому
   if getkeypressed = KE_KEY4 then begin cursor_x := cursor_x - 1; if cursor_x < 0           then cursor_x := columns-1; end; //полю
  end;
  if getkeypressed = KE_KEY0 then begin mode := 5; i:=0; end;
  if getKeyClicked = KE_KEY5 then //Обрабатываем нажатие на самую главную кнопку
  begin
   IF (BOARD[CURSOR_X,CURSOR_Y].NUM <> -1) THEN
   BEGIN
    if popup then popup := false else
    begin
     if (memo_x = -1) and (board[cursor_x,cursor_y].num <> -1) then
     begin
      memo_x := cursor_x;
      memo_y := cursor_y;
      popup  := true;
     end else
     if (memo_x = cursor_x) and (memo_y = cursor_y) then popup := true else
     if board[memo_x,memo_y].num = board[cursor_x,cursor_y].num then
     begin
      popup := true;
      board[memo_x,memo_y].num     := -1;
      board[cursor_x,cursor_y].num := -1;
      memo_x:=-1;
      memo_y:=-1;
     end else
     begin
      memo_x:=-1;
      memo_y:=-1;
      popup := true;
     end;
    end;
   END else if popup then popup:=false;
  end;

  gameover := true;
  for i:=0 to (columns-1) do
   for k:=0 to (rows-1) do
   begin
    if board[i,k].num <> -1 then gameover := false;
   end;
  if gameover and (popup = false) then mode := 4;
  i:=0;
end; //Конец событий, происходящие на игровом поле

if mode = 4 then //Игра окончена
begin
  drawstring(menu[4],getWidth/2-length(menu[4])*4,10,font_img); //"Игра окончена"
  if getKeyClicked = KE_KEY5 then begin mode := 1; i:=0; end;   //Пятёрка, что бы попасть в главное меню
end; //Конец экрана конца игры

if mode = 5 then //Экран "паузы"
begin
  if i = 0 then drawstring(menu[5],getWidth/2-40,10,font_img2) else
  drawstring(menu[5],getWidth/2-40,10,font_img);
  if i = 1 then drawstring(menu[3],getWidth/2-40,20,font_img2) else
  drawstring(menu[3],getWidth/2-40,20,font_img);

  if getkeypressed = KE_KEY8 then begin i := i+1; if i>1 then i:=0; end; //Если нажата двойка - перемещаемся на один пункт меню вниз  (В ТЕЛЕФОНАХ КНОПКИ РАСПОЛОЖЕНЫ НЕ ТАК КАК НА НУМПАДЕ!!!)
  if getkeypressed = KE_KEY2 then begin i := i-1; if i<0 then i:=1; end; //Если восьмёрка     - перемещаемся на один пункт меню вверх (В ТЕЛЕФОНАХ КНОПКИ РАСПОЛОЖЕНЫ НЕ ТАК КАК НА НУМПАДЕ!!!)
  if getKeyClicked = KE_KEY5 then
  begin
   if i = 0 then begin mode := 2;         end;
   if i = 1 then begin mode := 1; i := 0; end;
  end;
end; //Конец экрана "паузы"

{if getkeypressed = KE_KEY0 then mode := 3;} //Это аварийный выход, не зависящий от режима игры. Его надо закомментировать после того, как программа будет дописана.

repaint;    //Нарисовать на экране всё то, что было нарисовано в задний буфер
delay(100); //Подождать 100 милисекунд

until mode = 3; //Программа выполняется пока режим не установится в положение "3".

end.
[/spoiler]
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 06-11-2011, 14:36:21
Проверил на своём телефоне.

Главное меню тормозит адово, но всё остальное работает нормально.

А тормозит, наверное, потому, что открывает и прочитывает текстовый файл ~340 раз в секунду. Это, очевидно, было не лучшей моей идеей.
Название: Re: Кто может под мобильный сделать?
Отправлено: Sasha от 06-11-2011, 15:17:44
Посмотри в инете буферизацию в память.
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 06-11-2011, 15:20:29
Цитата: Sasha от 06-11-2011, 15:17:44
Посмотри в инете буферизацию в память.

Да надо было, наверное, просто в строковый массив его засунуть, чем каждый раз открывать и прочитывать.

Или даже в массив букв.
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 07-11-2011, 20:45:44
На сенсорном телефоне не работает, даже на физической клавиатуре (нокия N97).
На нокии N73 не переключается кол-во столбцов и строк.
Сильно маленький размер шрифта, плохо видно...
Я правильно понял, определяется соответствие слов по порядку в файле?
Т.е. 10-е по порядку слово соответствует 10-му слову в другом файле?
Пока такие замечания...
И есть другое задание(практически конкурс по программированию )))...
Название: Re: Кто может под мобильный сделать?
Отправлено: Proydoha от 07-11-2011, 22:52:00
Цитата: timelimit от 07-11-2011, 20:45:44
На сенсорном телефоне не работает, даже на физической клавиатуре (нокия N97).
На нокии N73 не переключается кол-во столбцов и строк.

Лэтц фигер ит аут тугезэр
Для "Keypad Access" используется три функции:
GetKeyClicked - возвращает code of the last clicked key on the keypad, or KE_NONE if no key is pressed.
GetKeyPressed - возвращает code of the key that is currently pressed, or KE_NONE if no key is pressed.
И KeyToAction. Он загадочный, я не понимаю как он работает.

ЦитироватьDifferent devices have different key mappings. For example, one device may have FIRE key return key code 100, and the other device may have its FIRE key return key code 120. To avoid this problem, you can use the keyToAction function that translates the key code into mapped game actions.

Я сперва отслеживание нажатия на кнопки повесил на ГетКейПрессд. В итоге, нажимая на новую игру, он заодно ещё и успевал клацнуть по карточке. И после геймовера проклацивал геймовер скрин, главное меню и начинал игру заново. Это было не очень хорошо и для осознавания нажимания на пятёрку я стал использовать ГетКейКликед.

Перемещение осталось на ГетКейПрессед потому что если я заменял все ГетКейПрессед на ГетКейКликед, то он (почему-то) отлавливал нажатие только на одну из кнопок. Например только восьмёрку: по пунктам меню прыгать могу, а больше ничего не могу.

Это в эмуляторе.

ЦитироватьСильно маленький размер шрифта, плохо видно...

Убогий МидлетПаскаль создавался нерусскими дядьками и с русским языком не дружен. При попытке запуска мидлета, в коде которого есть присвоение строковым переменным русских букв, эмулятор тупо вылетает. Я проверил что будет, если прочитать файлы с русскими буквами: он прочитал их в виде каракулей. Мне этого было достаточно, что бы осознавать соответственно какой каракуле какую картинку выводить. Шрифт 8х8 пикселей я из нездорового интереса нарисовал ещё два года назад. Более крупных его вариаций у меня нет

: (

ЦитироватьЯ правильно понял, определяется соответствие слов по порядку в файле?
Т.е. 10-е по порядку слово соответствует 10-му слову в другом файле?

Так точно. Хотя я, честно говоря, не знаю захватывается ли первое и последнее слова в файле и что будет, если создать больше ячеек, чем там есть слов.
Название: Re: Кто может под мобильный сделать?
Отправлено: timelimit от 08-11-2011, 17:37:58
Почти понял последний ответ... ))
Но все равно спасибо за проявленный интерес...
Может там Саша что нить придумает, когда время будет... ))