Есть среди наших программистов умельцы сделать под мобильный прогу(игру)?
Под какой мобильный? Какую прогу/игру?
Цитата: timelimit от 01-11-2011, 19:16:33
Есть среди наших программистов умельцы сделать под мобильный прогу(игру)?
как в анегдоте: -
Бортмеханик -
прибор7!!! :o
что
7!? >:(
а что
прибор? ::)
Цитата: Sasha от 01-11-2011, 19:25:17
Под какой мобильный? Какую прогу/игру?
Ну, для универсальности программки думаю наверно java me подойдет...
Можно под симбиан, кто может...
Ну и под WM тоже пойдет... ))
Программа (или игра, как посмотреть) как мне кажется не сильно сложная...
Может конечно заморочная...
Есть такая игра на тренировку памяти, когда надо найти два одинаковых элемента при переворачивании карт или плиток...
Так вот, вместо картинок есть другая идея... текстовая
Кто может реализовать такую прогу(игру)?
Идеально конечно сделать редактор для добавления своих вариантов одинаковых элементов... ))
Забудь про Windows Media и Symbian. Может лучше уже под какой-нибудь смартфон? Но тебе виднее.
Я в принципе никогда таким не занимался, думаю на такую задачу у меня уйдет около суток и в принципе если тебе не срочно я могу помочь, но в ближайшие пару месяцев я врядли смогу позволить себе выделить целый свободный день на это, если тебе очень нужно, могу дать контакты хороших студентов, которые за небольшую плату сделают тебе все в лучшем виде.
Есть еще вариант, попробуй сделать сам, а если будут возникать сложности можешь обращаться ко мне, я постараюсь помочь.
Цитата: Sasha от 02-11-2011, 14:03:05
Забудь про Windows Media и Symbian. Может лучше уже под какой-нибудь смартфон?
У меня в основном смарт на симбе... ))
И что значит под какой-нибудь, это под андроид? Других вариантов не вижу... ))
Цитата: Sasha от 02-11-2011, 14:03:37
Есть еще вариант, попробуй сделать сам, а если будут возникать сложности можешь обращаться ко мне, я постараюсь помочь.
Начну с вопроса, на чем легче сделать такую прогу, именно для мобильного?
Цитата: 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)
Нравиться мне название Кто может под мобильный сделать?. т.е. Без мобильника Это уже сделать НИЗЯ. :help01:
Цитата: 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)
Спасибо за подсказку, сейчас как раз просматриваю информацию про это вариант...
Цитата: Catcatcat от 02-11-2011, 18:15:52
Нравиться мне название Кто может под мобильный сделать?. т.е. Без мобильника Это уже сделать НИЗЯ. :help01:
Не пойму что то... мне нужна программка, которая бы работала на мобильнике, а не на ПК, поэтому без мобильника никак (если я правильно понял фразу.... )
Без обид, но считаю вариант Пройдохи плохим.
Юзай джаву, а я помогу советом и литературой. Скачиваешь среду Eclipse(есть альтернативные варианты), и вперед.
По поводу смартфонов. Под Android пишется тоже на джаве. Есть еще iOs (айфон), там свой язык objective C. Я с ним лично не знаком. Ну и до сих пор не особо популярный Windows Phone 7, под него пишут на шарпе, точнее на специфическом сильверлайте.
Цитата: Sasha от 02-11-2011, 21:01:40
Без обид, но считаю вариант Пройдохи плохим.
Юзай джаву, а я помогу советом и литературой. Скачиваешь среду Eclipse(есть альтернативные варианты), и вперед.
По поводу смартфонов. Под Android пишется тоже на джаве. Есть еще iOs (айфон), там свой язык objective C. Я с ним лично не знаком. Ну и до сих пор не особо популярный Windows Phone 7, под него пишут на шарпе, точнее на специфическом сильверлайте.
Вариант Пройдохи легкий(относительно конечно), но сильно ограниченный в возможностях...
А по j2me у меня есть книга Горнакова... и этот, NetBeans который, и Wireless Toolkit... хотел просто чтоб не сильно напрягаться... но видно не суждено... ))
Попробую конечно в очередной раз понять что к чему... ))
Ну нетбинс наверное по-проще эклипса будет для новичка, но в эклипсе есть огромнейшее количество надстроек, которые можно устанавливать.
Цитата: Sasha от 02-11-2011, 21:01:40
Без обид, но считаю вариант Пройдохи плохим.
Не обижаюсь. Так и есть.
Но, честно-честно, вгрызться в мобильную джаву сходу, как по мне, непросто. Я остановился где-то на разворачивании нетбинсов и вайрлесс тулкитов и их настройке (в 2009-ом году). И нету гайдов "Пишем мобильный апплет. Руководство для дауна".
В отличие от. Где разворачивается примитивная до горя среда и в пару строк можно получить запускабельный с одной кнопки результат.
Цитата: timelimit от 02-11-2011, 21:28:59
но сильно ограниченный в возможностях...
К нему подключаются библиотеки, написанные на джаве, если такая необходимость есть. Например мидлетпаскаль криво работал с прозрачностью, но кто-то на коленке сделал модуль, который, подключаясь, решал эту проблему. Извращения!
Если мне память не изменяет, то ты чтото путаешь, аплет - это программа, запускаемая в браузере.
Я вспомнил в студии когда-то от скуки писать червячка под WM. Вроде на эмуляторе работал, но развернуть негде было.
Цитата: Sasha от 03-11-2011, 17:36:10
Если мне память не изменяет, то ты чтото путаешь, аплет - это программа, запускаемая в браузере.
Я имел ввиду, конечно же, мидлет.
Но и с аплетами у меня дружбы не вышло : )
Эх, в результате все равно пришли к популярнейшему ответу на многих форумах - Хочешь программку(игру) - сделай сам... :-[
Цитата: timelimit от 03-11-2011, 18:32:08
Эх, в результате все равно пришли к популярнейшему ответу на многих форумах - Хочешь программку(игру) - сделай сам... :-[
Я, честно говоря, не понял ТЗ.
Нужны карточки со словами, их надо переворачивать и находить пары?
Цитата: Proydoha от 04-11-2011, 00:24:32
Я, честно говоря, не понял ТЗ.
Нужны карточки со словами, их надо переворачивать и находить пары?
Да, как игра с картинками где нужно на память вспомнить что было на перевернутых карточках(плитках или как там они называются), и две одинаковых исчезают например.
Только вместо картинок текст.
Ну я могу завтра попробовать сделать чтото простенькое без касивой графики и анимации.
Цитата: Sasha от 04-11-2011, 11:52:28
Ну я могу завтра попробовать сделать чтото простенькое без касивой графики и анимации.
Собственно мне красота не нужна, главное чтоб на мобильном пошло и я мог сам (через редактор или в коде) добавлять варианты таких карточек со словами...
Заранее большое спасибо за участие...
С меня плюсик... ))
Ну если будет свободное время скачаю эклипс и попробую.
Цитата: Sasha от 04-11-2011, 18:34:07
Ну если будет свободное время скачаю эклипс и попробую.
Конечно, мне не к спеху...
Буду ждать...(пытаясь сам что нить соорудить конечно))
Еще раз спасибо...
Маленькое дополнение, слова для сравнения разного языка (русский-английский), если это повлияет на код...
Цитата: timelimit от 04-11-2011, 19:20:23
Маленькое дополнение, слова для сравнения разного языка (русский-английский), если это повлияет на код...
В пару к русскому слову надо найти английское?
Что за телефон, кстати. Если ещё точнее, то каких размеров экран у него. Мне просто сдаётся, что писать слова на карточках эквивалентно четырём карточкам на экране. Или двум.
И пока мне так кажется, я бы сделал символическое поле из маленьких прямоугольничков, а при нажатии на один из них - показывать слово просто в центре экрана, над полем, и помечать соответствующий ему прямоугольничек, как перевёрнутый. Как-то так.
Было бы неплохо аналог посмотреть.
Цитата: Sasha от 05-11-2011, 17:04:31
Было бы неплохо аналог посмотреть.
Я так понял, что что-то подобное: http://www.min2win.ru/gm.php?id=209 (http://www.min2win.ru/gm.php?id=209)
Цитата: Proydoha от 05-11-2011, 17:10:35
Я так понял, что что-то подобное: http://www.min2win.ru/gm.php?id=209 (http://www.min2win.ru/gm.php?id=209)
В принципе что то подобное...
Насчет размера экрана, задумался...
А цель программки собственно банальна изучать английские слова, подумал что в такой форме, как плитки, будет интересно...
Цитата: timelimit от 05-11-2011, 18:17:56
А цель программки собственно банальна изучать английские слова, подумал что в такой форме, как плитки, будет интересно...
Цитата: Proydoha от 05-11-2011, 16:58:09
В пару к русскому слову надо найти английское?
Цитата: Proydoha от 05-11-2011, 18:20:10
Цитата: timelimit от 05-11-2011, 18:17:56
А цель программки собственно банальна изучать английские слова, подумал что в такой форме, как плитки, будет интересно...
Цитата: Proydoha от 05-11-2011, 16:58:09
В пару к русскому слову надо найти английское?
В чем ошибка? ))
Или к английскому слову найти русское... ))
Цитата: timelimit от 05-11-2011, 18:42:47
В чем ошибка? ))
Или к английскому слову найти русское... ))
"Да" или "Нет"?
Я понять не могу что надо делать : )
Ну раз изучать английский, то думаю что к английскому найти русское... ))
Цитата: timelimit от 05-11-2011, 19:37:52
Ну раз изучать английский, то думаю что к английскому найти русское... ))
Договорились : )
Цитата: Proydoha от 05-11-2011, 21:36:23
Цитата: timelimit от 05-11-2011, 19:37:52
Ну раз изучать английский, то думаю что к английскому найти русское... ))
Договорились : )
Спасибо... ))
Рассмотрю варианты как сделать удобнее отображение на экране.... ))
Я делаю вот так:
(http://daewl.narod.ru/Real_Deal/sjboy.png)
(http://daewl.narod.ru/Real_Deal/sjboy_1.png)
Кстати почему-то на один столбец и одну строку больше чем надо создаёт, это я не доглядел.
Как-то так (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]
Проверил на своём телефоне.
Главное меню тормозит адово, но всё остальное работает нормально.
А тормозит, наверное, потому, что открывает и прочитывает текстовый файл ~340 раз в секунду. Это, очевидно, было не лучшей моей идеей.
Посмотри в инете буферизацию в память.
Цитата: Sasha от 06-11-2011, 15:17:44
Посмотри в инете буферизацию в память.
Да надо было, наверное, просто в строковый массив его засунуть, чем каждый раз открывать и прочитывать.
Или даже в массив букв.
На сенсорном телефоне не работает, даже на физической клавиатуре (нокия N97).
На нокии N73 не переключается кол-во столбцов и строк.
Сильно маленький размер шрифта, плохо видно...
Я правильно понял, определяется соответствие слов по порядку в файле?
Т.е. 10-е по порядку слово соответствует 10-му слову в другом файле?
Пока такие замечания...
И есть другое задание(практически конкурс по программированию )))...
Цитата: 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-му слову в другом файле?
Так точно. Хотя я, честно говоря, не знаю захватывается ли первое и последнее слова в файле и что будет, если создать больше ячеек, чем там есть слов.
Почти понял последний ответ... ))
Но все равно спасибо за проявленный интерес...
Может там Саша что нить придумает, когда время будет... ))