Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 27.11.2011, 14:18   #16
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Работа музыки и ресурсных файлов

Сообщение от bormotan Посмотреть сообщение
program pr1;
var 
bool:boolean;
    
i,b:integer;
begin
showform
;
bool:=false;
 
repeat
 
if getkeyclicked=ke_key0 then i:=formaddstring('0');
 if 
getkeyclicked=ke_key1 then i:=formaddstring('1');
 if 
getkeyclicked=ke_key2 then i:=formaddstring('2');
 if 
getkeyclicked=ke_key3 then i:=formaddstring('3');
 if 
getkeyclicked=ke_key4 then i:=formaddstring('4');
 if 
getkeyclicked=ke_key5 then i:=formaddstring('5');
 if 
getkeyclicked=ke_key6 then i:=formaddstring('6');
 if 
getkeyclicked=ke_key7 then i:=formaddstring('7');
 if 
getkeyclicked=ke_key8 then i:=formaddstring('8');
 if 
getkeyclicked=ke_key9 then i:=formaddstring('9');
 if 
getkeyclicked=ke_none then i:=formaddstring('ни одна клавиша не нажата');
 
 if 
keytoaction(getkeyclicked)=ga_none   then b:=formaddstring('ни одна');
 if 
keytoaction(getkeyclicked)=ga_up     then b:=formaddstring('вверх');
 if 
keytoaction(getkeyclicked)=ga_down   then b:=formaddstring('вниз');
 if 
keytoaction(getkeyclicked)=ga_left   then b:=formaddstring('лево');
 if 
keytoaction(getkeyclicked)=ga_right  then b:=formaddstring('право');
 if 
keytoaction(getkeyclicked)=ga_fire   then b:=formaddstring('огонь');
 if 
keytoaction(getkeyclicked)=ga_gamea  then b:=formaddstring('A');
 if 
keytoaction(getkeyclicked)=ga_gameb  then b:=formaddstring('B');
 if 
keytoaction(getkeyclicked)=ga_gamec  then b:=formaddstring('C');
 if 
keytoaction(getkeyclicked)=ga_gamed  then b:=formaddstring('D');
 
repaint;
 
delay(100);
 
clearform;
 
until bool;
 

end
у меня теперь еще и getkeyclicked и getkeypressed слепые . выдают ke_none , чтобы я ни делал с клавой . на эмуле и телефоне
Забей на getkeyclicked, он какой-то багнутый. Юзай GetKeyPressed, а что бы повторное нажатие срабатывало, после того, как отпустил кнопку, сделай булеву переменную press, и вот пример:

press:boolean;
key:integer;
................................
key:=GetKeyPressed;
if 
key=KE_NONE then press:=false;

if (
KeyToAction(key)=GA_UP) and (press=falsethen
begin
press
:=true;
// тут всяческие действия
end
key тут используется для оптимизации, нажатую клавишу можно запомнить 1 раз, а не вычислять заного.

И вообще, держись подальше от форм, с ними одно мучение.
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 14:26   #17
Dj_Alex
ПроЭктировщик
 
Аватар для Dj_Alex
 
Регистрация: 08.03.2009
Адрес: Saransk
Сообщений: 143
Написано 25 полезных сообщений
(для 45 пользователей)
Ответ: Работа музыки и ресурсных файлов

repaint при showform не нужен
__________________
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 20:38   #18
bormotan
Оператор ЭВМ
 
Регистрация: 12.10.2011
Адрес: Воронеж
Сообщений: 46
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Работа музыки и ресурсных файлов

я человек ленивый , поленился писать новый код
program pr1;
var 
bool:boolean;
    
i,b,getkeyclicked1:integer;
begin
showform
;
bool:=false;
 
repeat
 getkeyclicked1
:=getkeypressed;
 if 
getkeyclicked1=ke_key0 then i:=formaddstring('0');
 if 
getkeyclicked1=ke_key1 then i:=formaddstring('1');
 if 
getkeyclicked1=ke_key2 then i:=formaddstring('2');
 if 
getkeyclicked1=ke_key3 then i:=formaddstring('3');
 if 
getkeyclicked1=ke_key4 then i:=formaddstring('4');
 if 
getkeyclicked1=ke_key5 then i:=formaddstring('5');
 if 
getkeyclicked1=ke_key6 then i:=formaddstring('6');
 if 
getkeyclicked1=ke_key7 then i:=formaddstring('7');
 if 
getkeyclicked1=ke_key8 then i:=formaddstring('8');
 if 
getkeyclicked1=ke_key9 then i:=formaddstring('9');
 if 
getkeyclicked1=ke_none then i:=formaddstring('ни одна клавиша не нажата');
 
 if 
keytoaction(getkeyclicked1)=ga_none   then b:=formaddstring('ни одна');
 if 
keytoaction(getkeyclicked1)=ga_up     then b:=formaddstring('вверх');
 if 
keytoaction(getkeyclicked1)=ga_down   then b:=formaddstring('вниз');
 if 
keytoaction(getkeyclicked1)=ga_left   then b:=formaddstring('лево');
 if 
keytoaction(getkeyclicked1)=ga_right  then b:=formaddstring('право');
 if 
keytoaction(getkeyclicked1)=ga_fire   then b:=formaddstring('огонь');
 if 
keytoaction(getkeyclicked1)=ga_gamea  then b:=formaddstring('A');
 if 
keytoaction(getkeyclicked1)=ga_gameb  then b:=formaddstring('B');
 if 
keytoaction(getkeyclicked1)=ga_gamec  then b:=formaddstring('C');
 if 
keytoaction(getkeyclicked1)=ga_gamed  then b:=formaddstring('D');
 
repaint;
 
delay(100);
 
clearform;
 
until bool;
 

end
GetKeyPressed тоже слепой

как вы вообще можете достучаться до клавы ?????
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 20:50   #19
bormotan
Оператор ЭВМ
 
Регистрация: 12.10.2011
Адрес: Воронеж
Сообщений: 46
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Работа музыки и ресурсных файлов

простите , в режиме canvas этот GetKeyPressed работает
может кому пригодится ерундовая процедурка

procedure clrscr;
var r,g,b:integer;
begin
   r:=getColorRed;
   g:=getColorGreen;
   b:=getColorBlue;
   setcolor(255,255,255);
   fillrect(0,0,getwidth,getheight);
   setcolor(r,g,b);
   repaint;
end;
(Offline)
 
Ответить с цитированием
Старый 18.12.2011, 07:08   #20
bormotan
Оператор ЭВМ
 
Регистрация: 12.10.2011
Адрес: Воронеж
Сообщений: 46
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Работа музыки и ресурсных файлов

а насчет музыки никто ничего не скажет ?? просто влом лезть в Sound Forge не зная точно поможет ли. у кого уже получалось вшивать в игры какую-либо музыку ??? поделитесь опытом

заодно и напишу список вопросов интересующих меня. увы,я не настолько терпеливый чтобы самостоятельно отвечать на них на ВСЕ СРАЗУ.

1. Какой средний размер опер.памяти телефона ? сколько и каких переменных я могу себе позволить для хорошей работы почти на любом телефоне ?? сколько памяти отъедает каждая переменная типа integer например?? этого нема в учебниках и справках по мидлетпаскалю , а хотелось бы там видеть
2. Какие пределы и возможности у хранилищ кроме записи строк? сколько инфы я могу туда накачать в одно хранилище ? сколько их может быть всего , и т.д и т.п.
3.Подскажите какие-нить декомпиляторы поудобнее и попроще в использовании
4.Где-то тут на булке видел сообщение что java-платформа работает не как процессор. по типу - "нашел эту команду- выполнил" . или что-то вроде того. поясните
5.Где-то тут же на булке видел что для некоторых телефонов для пикселя есть параметр "прозрачность". Как в MP можно задать этот параметр или только на java ?
6.Посоветуйте книжки/учебники по java . не сильно замудреные, понятные . если не сильно испугаюсь сложности , буду изучать легендарный и (как говорят) один из самых сложных языков.
7.Какие штуки умеют замерять скорость работы алгоритмов ( я имею ввиду другие алгоритмы или что-нибудь еще , а не эмуль) , ФПС (FPS) телефона??
9.Есть ли какой-нибудь список оптимальных алгоритмов , которым можно было бы пользоваться хотя бы для стандартных случаев ??? уж для отдельных случаев придется подбирать
10.Есть ли программы читающие файл побайтово ? чтобы все что прочитал вывел на экран . у блокнота например есть такая шняга - первый один или несколько файлов у него обозначение кодировки ( не помню как называется этот байт ). то есть уже не все что прочитал - вывел на экран. Хотелось бы видеть абсолютно все из файла чтобы например подбирать к незнакомой кодировке способ её прочесть
11.Слыхал я про сборщик мусора . Что считается мусором в памяти телефона ??? переменные к которым давно не обращались ??
12. У меня на телефоне иногда вылетает сообщение - "Недостаточно свободного места - освободите память" . Это при том что на самом деле 1 Мб есть ( у меня всего 10 Мб под пользовательские файлы ). фигли он жалуется , раз место есть ???


в довершение покажу одну прогу-книжку которую заметил случайно . представьте себе, что вам нужно создать тему на телефон с помощью телефона. почитайте книжку, найдите нужные программы в интернете ...
лично мне хватило только прочтения книжки . представив сколько на это уйдет терпения , забросил в самый дальний угол . На какой такой крайний случай темы придется лепить на телефоне ?? конечно полезно знать как слеплена каждая тема в архив , но лучше с помощью компа
Вложения
Тип файла: exe spravochnik-po-sozdaniyu-tem-dlya-nokia.exe (260.1 Кб, 838 просмотров)
(Offline)
 
Ответить с цитированием
Старый 22.12.2011, 01:09   #21
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Работа музыки и ресурсных файлов

Со звуками вообще проблемы редко бывают, либо регистр в имени не соблюден, либо файл поврежденный, так обычно все воспроизводится, даже из ФС (соответствующей библиотекой).

Что касается памяти - это сугубо индивидуально для разных аппаратов, от сотен КБ до нескольких МБ. То же самое и с хранилищем (на сколько мне известно). Занимаемую оперативку надо не по размерам переменных считать, а мониторить под эмулятором или даже лучше прямо в телефоне.
Декомпилятор можно использовать DJ Java Decompiler.
Java это виртуальная машина, то есть код выполняется не процессором напрямую, а программным модулем ОС телефона.
Прозрачность можно задавать только в объекте Image, для этого его нужно преобразовать в ARGB, установить прозрачность и преобразовать ARGB обратно в Image. Работает не на всех телефонах.
Чтобы читать все байты файла любого формата, нужно использовать любой HEX-редактор.
Сборщик мусора работает довольно хитро, я сам не вникал, главное, что "полезные" данные он точно не уничтожит.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
bormotan (22.12.2011)
Старый 22.12.2011, 20:22   #22
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Работа музыки и ресурсных файлов

Ну тоже внесу свою лепту в дискуссию.

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

1. Создаем некий графический массив (около 500 элементов)

2. Создаем цикл, который загружает изображение (что угодно) размером 120х120 в массив, и выводит цифру УЖЕ загруженных в память изображений.

3. Ждем, пока телефон не сдохнет. Следует запомнить последнюю цифру

4. С учетом того, что обычно 1 пиксель занимает 4 байта, 1 изображение кушает 120*120*4=57600 байт. Умножаем на количество успешно загруженных изображений.

Да, это тупо способ, однако даёт весьма точную оценку общей памяти.

Можно даже запеживать эту процедуру прямо в приложение, и вызывать его, скажем, кнопкой 7, чтобы быть в курсе - сколько еще данных можно запихнуть в память без вреда приложению.

Насчет того, сколько занимает переменные:
Integer - 4 байта
Real - незнаю, честно. надо погуглить :В
String - по 2 байта каждый символ (ибо ява юзает Юникод, таки да)
Char - 1 байт
Boolean - 1 бит (что какбэ очевидно)

К сожалению, автор, видимо решил, что такой тип как Byte никому не нужен, и он отсутствует в мидлет паскале. А зря.


Насчет вместимости хранилища - туда можно записать до фига всего. Лишь бы памяти на телефоне хватило.


"5.Где-то тут же на булке видел что для некоторых телефонов для пикселя есть параметр "прозрачность". "
Сейчас прозрачность есть практически в любом телефоне.
Любое изображение, вне зависимости, если там хоть 1 прозрачный пиксель, будет иметь альфа канал, описывающий прозрачность каждого пикселя. Средствами самого мидлетпаскаля нельзя работать с альфа каналом, но зато можно с помощью библиотек.

"6.Посоветуйте книжки/учебники по java . не сильно замудреные, понятные."
Я и сам такие ищу. Как найду - сообщу :В

"7.Какие штуки умеют замерять скорость работы алгоритмов"
Можно просто взять, изамерить время (в миллисекундах) на выполнение алгоритма Оо. Стандартные функции МП:
  
   a:=GetRelativeTimeMs;
.....некий алгоритм.......
   b:=GetRelativeTimeMs;
   c:=b-a;
c - это и есть время выполнения.

"9.Есть ли какой-нибудь список оптимальных алгоритмов , которым можно было бы пользоваться хотя бы для стандартных случаев ??? "

Ну тебе может пригодиться алгоритм "сортировки-прорисовки" (не знаю, как это правильно называется), чтобы первыми прорисовывались те объекты, которые находятся выше (а не так, чтобы солнце затмевало тучу, и так, что бы камень, стоящий за деревом, прорисовывался позади него, а не поверх). Если интересно, могу раскрыть по подробнее эту тему.

Потом еще может понадобится алгоритм сжатия информации, для пущей оптимизации. Хотя он нужен довольно редко.

Ну и может быть какие нибудь алгоритмы шифрования (а лучше изобрети свой :В), чтобы спрятать некоторые ресурсы от сильно очумелых ручек (от модеров, например, если ты конечно не против, чтобы твое приложение ковыряли и модифицировали)


"12. У меня на телефоне иногда вылетает сообщение - "Недостаточно свободного места - освободите память" . Это при том что на самом деле 1 Мб есть ( у меня всего 10 Мб под пользовательские файлы ). фигли он жалуется , раз место есть ???" скорее всего имеется ввиду оперативная память. А может, просто телефон тупит. "Попробуй выключить и снова включить"(с), так как мой телефон таким образом лечиться.
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
bormotan (22.12.2011)
Старый 22.12.2011, 20:32   #23
bormotan
Оператор ЭВМ
 
Регистрация: 12.10.2011
Адрес: Воронеж
Сообщений: 46
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Работа музыки и ресурсных файлов

пардон . некоторые ответы как-то сильно очевидные , мог бы и сам додуматься
(Offline)
 
Ответить с цитированием
Старый 22.12.2011, 20:37   #24
bormotan
Оператор ЭВМ
 
Регистрация: 12.10.2011
Адрес: Воронеж
Сообщений: 46
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Работа музыки и ресурсных файлов

эмм . а про шифрование (я знаком с основами и простейшими шифрами) . никакой шифр наверно не спасет он декомпилятора. короче если сильно уметь ковырятся , можно залезть и расшифровать любой ресурс и хранку
(Offline)
 
Ответить с цитированием
Старый 22.12.2011, 21:43   #25
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Работа музыки и ресурсных файлов

Ну да, даже если зашифровать ресурсы, народные умельцы просто возьмут и подсмотрят алгоритм расшифровки, дизассемблировав ява класс.

Хотя можно потанцевать с бубном насчет запутывания кода. Но это уже отдельная тема.
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 22.12.2011, 22:45   #26
bormotan
Оператор ЭВМ
 
Регистрация: 12.10.2011
Адрес: Воронеж
Сообщений: 46
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Работа музыки и ресурсных файлов

хотя есть наверно способ. надобно теорию по алгоритмам с открытым ключом почитать. там вроде алгоритм зашифровки и проверки подлинности шифра просты, зато расшифровка жутко сложная.
чет я замахнулся сильно ))) такая безопасность информации в редких случаях нужна
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 23:35.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com