Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > MidletPascal


Автор: LordGuest 30.1.2006, 13:38
Привет.
Работаю с телефоном Siemens S65. Компилятор Midlet Pascal 2. Возникли вопросы.
Как работать с файловой системой: получить список файлов, загружать их, читать.

Автор: Dancer 30.1.2006, 15:18
перейти на Java. Поставить WTK, JSR-75

Автор: javastic 31.1.2006, 10:13
LordGuest, а что это за зверь такой midlet pascal ?

Автор: LordGuest 1.2.2006, 15:53
Это такой компилятор для разработки мидлетов. Все пишется на паскале, а компилятор преобразует все в байт-код на Java. В общем можно писать мидлеты для мобильных на удобном языке, правда возможности похоже ограничены MIDP 1/2.

Автор: Ozzя 1.2.2006, 16:14
On a computer, the data is saved to files which exist on a disk drive. Mobile phones don't have disks, so MIDlet applications need a different method of saving data. J2ME provides access to phone's flash memory through an interface called record store.

Автор: Dancer 1.2.2006, 18:15
Ozzя, есть у мобильника и файловая система, и приложения могут сними работать, просто необходима поддержка ряда API производителями аппаратов. (RMS конечно рульная штука, но я так понимаю вопрос был именно про файловую систему телефона, то есть смотрим в сторону JSR-75)
как с ним работать на более или менн примитивном уровне, я уже кажется описывал здесь где-то.
Если не поленюсь и время будет, но накатаю статейку как этим можно начать пользоваться, хотя всю инфу можно конечно найти на java.sun.com

Автор: Ozzя 1.2.2006, 18:20
Dancer
Я разве спорю ;)
Вопрос был про Midlet Pascal. У него нет такой возможности.

Автор: WGR 11.8.2006, 07:46
Продолжаем тему
http://midletpascal.com


______________
а то вроде форум программистов в про midletpascal не слова нет 


моё первое приложение на midlet pascal

Автор: javastic 11.8.2006, 10:02
WGR, симпатичный тетрис. Молодец! =)

Автор: skyboy 11.8.2006, 10:18
Цитата(Ozzя @  1.2.2006,  18:20 Найти цитируемый пост)
Вопрос был про Midlet Pascal. У него нет такой возможности. 

если я ничего не путаю, MidletPascal позволяет подключать "сторонние" библиотеки на Java как модули. Потому проблема состоит только в поиске библиотеки, реализующей нужные функции...
[offtop]
Проект, кстати, уже больше полгода не развивается... А жаль... Реализовали бы ещё динамические массивы, и расширили бы возможности записей - даже без объектов можно было бы обойтись... А так... smile
[/offtop]

Автор: WGR 11.8.2006, 12:01
Цитата

WGR, симпатичный тетрис. Молодец! =) 

ЭХХХХ как на душе хорошо когда тебя похвалили

А подключаемые библиотеки очень легко делать  (я смотрел)
найду инфу скину сюда

______
народ подтягиваитесь -есть много вопросов будем обсуждать
могу исходник тетриса выложить....

Добавлено @ 12:04 
Цитата

Потому проблема состоит только в поиске библиотеки,

НЕ надо ничего искать 
Человек знающий яву -легко напишет

Автор: skyboy 11.8.2006, 12:48
WGR, человек, знающий Java - будет писать на Java, а не пользоваться довольно ограниченным транслятором с Паскаля.

Автор: WGR 11.8.2006, 12:57
skyboy, НУ понятное дело 
я имел ввиду кому нужна библиотека попросит друга которыу напишет на яве библиотеку с нужными процедурами и функциии 
и скажет тому другу название функции и входные переменные 
и уСЁ 

Или можно ёщё самому пробовать писать библиотеки небольшие
для начального обучения явы в самый раз - для тех кто начинал в паскале

Добавлено @ 12:58 
skyboy, 


Цитата

а не пользоваться довольно ограниченным транслятором с Паскаля. 


и с библиотеками там нет ограничений

Автор: javastic 11.8.2006, 15:36
Интересно, а как выглядит исходный код на этом МидлетПаскале?  smile 
Кто-нибудь может привести пример? smile

Автор: W0LF 11.8.2006, 15:42
Да, я тож хо увидеть smile Правда код паскаля уже не видел 4 года smile))

Автор: Mayk 11.8.2006, 15:48
Взято с http://www.midletpascal.com/projects.php
Код

procedure welcomeScreen;
var
  textToDisplay : string;
  textXPos      : integer;
  textYPos      : integer;
  keyCode       : integer;
begin
    setColor(255, 255, 255);
  
  fillRect(0, 0, screenWidth, screenHeight);
  
  setColor(0, 0, 255);
  
  setFont(FONT_FACE_PROPORTIONAL, FONT_STYLE_BOLD, FONT_SIZE_LARGE);
  textToDisplay := 'Tetris';
  textXPos := (screenWidth - getStringWidth(textToDisplay)) div 2; 
  textYPos := (screenHeight - getStringHeight(textToDisplay)) / 2;
  drawText(textToDisplay, textXPos, textYPos);
  textYPos := textYPos + getStringHeight(textToDisplay);
  
  setColor(0, 0, 0);
  
  setFont(FONT_FACE_PROPORTIONAL, FONT_STYLE_PLAIN, FONT_SIZE_SMALL);  
  
  textToDisplay := 'Created with MIDletPascal';
  textXPos := (screenWidth - getStringWidth(textToDisplay)) div 2;
  drawText(textToDisplay, textXPos, textYPos);
  textYPos := textYPos + getStringHeight(textToDisplay);
  
  textToDisplay := 'Press any key';
  textXPos := (screenWidth - getStringWidth(textToDisplay)) div 2;
  drawText(textToDisplay, textXPos, textYPos);
   
  repaint;
  
  { wait until user presses any key }
  repeat
    keyCode := getKeyClicked;     
  until keyCode <> 0;

end;

Автор: W0LF 11.8.2006, 15:57
smile) Извращение smile

Автор: javastic 11.8.2006, 15:58
ВАУ!!!  smile Вот это прикол!!!!  smile 

Настоящий процедурный подход.

Явно с любовью к Паскалю написано! smile

Добавлено @ 15:59 
Особенно мне понравился цикл в самом конце проги! =)

Автор: skyboy 11.8.2006, 16:15
javastic, а в j2me можно отталкиваться от событий или тоже - так же, цикл с ожиданием?

Автор: W0LF 11.8.2006, 16:23
Там ожидание нажатия в отдельном системном потоке идет:
Код

public void keyPressed(int keyCode){
        switch(getGameAction(keyCode)){
            case Canvas.LEFT :
                ....
                break;
            case Canvas.RIGHT :
                ....
                break;

        }
        
    }


Добавлено @ 16:29 
http://www.realcoding.net/article/view/2473?ShmID=cf14af0ccefd0e16f210efc1a9ea4ce5 нормально написано

Автор: javastic 11.8.2006, 16:36
skyboy, а коммандные кнопки могут обрабатываться откуда угодно и из любого класса.
А если хочешь в текущем, то просто назначаешь интерфейс обработки нажатия кнопок как CommandListener
WOLF тебе правильно истолковал.


Давай, переходи на Джаву smile

Автор: W0LF 11.8.2006, 16:41
Да, JAVA РУЛИТ!

Добавлено @ 16:42 
smile

Автор: WGR 11.8.2006, 16:48
Исходник тетриса на мидлет паскаль

Автор: skyboy 11.8.2006, 16:51
отдельный поток - это хорошо. потому я и сказал, что этот интерпретатор сильно ограничен. А теперь ещё и развиваться перестал smile
Цитата(javastic @  11.8.2006,  16:36 Найти цитируемый пост)
Давай, переходи на Джаву

Перейду. Через полгода нырну...

Автор: WGR 11.8.2006, 16:55
уже на 90 процентов доделал 
универсальное приложение для мобильнык книг с рисунками

Автор: WGR 11.8.2006, 17:48
Простенький мидлет проигрывает wavку

program midi;
begin
    if not openPlayer('/windows.WAV', 'audio/x-wav') then halt;    
    if not setPlayerCount(-1) then halt; 
    if not startPlayer then halt; 
    delay(5000);     
end.
_____
А как это будет выглядеть в j2me ????????????

Автор: W0LF 12.8.2006, 17:52
Код

public void PlayWAV() {
        try {
         InputStream is = getClass().getResourceAsStream("/windows.WAV"); 
               Player player = Manager.createPlayer(is, "audio/X-wav");
               player.start();
        } catch (IOException ioe) {
        } catch (MediaException me) { 
        }
    }

Это один раз проиграет твой wav. Если же тебе надо с управлением и бесконечным проигрыванием, то смотри http://www.mobilab.ru/articles/78/

Автор: RacerDeXakep 9.4.2007, 19:39
Всем, здрасте!! 
Помогите решить трабл, не доходит до меня, как исправить!!
Вот код:

procedure on (st : string) ; 
begin 
setColor(255, 255, 255); 
fillRect(0, 0, GetWidth, GetHeight); 
setColor(255, 0, 0); 
setfont(FONT_FACE_SYSTEM , FONT_STYLE_BOLD, FONT_SIZE_LARGE); 
DrawText(st, (Getwidth) div 2, ((Getheight - 6) div 2) + 1); 
repaint; 
delay(1000); 
end; 

procedure menu; 
begin 
ShowMenu('Выберите действие', CH_IMPLICIT); //это заголовок меню 
igrat := MenuAppendString('Играть'); //это добавляются 3 пункта меню 
about := MenuAppendString('Автор'); 
vyhod := MenuAppendString('Выход'); 
play := CreateCommand('Выбрать', CM_SCREEN , 1); //тут добавляются команды, для 2 кнопок сразу под экраном 
AddCommand(play); 
exit := CreateCommand('Выход', CM_EXIT, 1); 
AddCommand(exit); 
repeat //запускаем цикл, пока игрок не нажал одну из 2 кнопок 
delay(100); 
clicked := getClickedCommand; 
until (clicked = play) or (clicked = exit); 
if clicked = exit then halt; //если выбрали выход, то... 
showCanvas; // "убираем" меню 
if menuGetSelectedIndex = igrat then igra; //смотрим, какой пункт выбрал игрок и в зависимости от этого вызываем нужную процедуру 
if menuGetSelectedIndex = about then ab; 
if menuGetSelectedIndex = vyhod then halt; 
menu; //опять вызываем меню 
end; 

type zp=record 
b : boolean; 
end; 

var a : array [0..20, 0..20] of zp;

if direction_y = up then y1 := y1 - speed; 
if direction_y = down then y1 := y1 + speed; 
if direction_x = left then x1 := x1 - speed; 
if direction_x = right then x1 := x1 + speed;

key := GetKeyPressed; 
if KeyToAction(key) = GA_UP then 
if y2<>0 then y2 := y2 - 3; 
if KeyToAction(key) = GA_DOWN then 
if y2<>(GetHeight - 5) then y2 := y2 + 3; 
if KeyToAction(key) = GA_LEFT then 
if x2<>0 then x2 := x2 - 3; 
if KeyToAction(key) = GA_RIGHT then 
if x2<>(GetWidth - 30) then x2 := x2 + 3;

procedure block; 
var i,k : integer; 
begin 
for i:=0 to (GetWidth div 10) - 1 do 
for k:=0 to (GetHeight div 10) - 1 do 
if a[i,k].b then 
begin 
SetColor(0, 0, 0); 
fillRect(i*10, k*10, 10, 10 ); 
SetColor(255, 255, 255); 
drawRect(i*10+2, k*10+2, 6, 6 ); 
end; 
end; 

for z:=0 to GetWidth div 10 do 
for d:=0 to GetHeight div 10 do 
if ( d < 5 ) and ( d > 0 ) and ( z > 0 ) and ( z < (GetWidth div 10) - 1) 
then a[z,d].b:=true else a[z,d].b:= false;

if (a[ x1 div 10, y1 div 10].b) or (a[ (x1+10) div 10, y1 div 10].b) or 
(a[ x1 div 10, (y1+10) div 10].b) or (a[ (x1+10) div 10, (y1+10) div 10].b) 
then 
begin 
if direction_y = down then direction_y := up else direction_y := down; 
if direction_x = left then direction_x := right else direction_x := left; 
if (a[ x1 div 10, y1 div 10].b) then 
a[ x1 div 10, y1 div 10].b:=false; 
if (a[ (x1+10) div 10, y1 div 10].b) then 
a[ (x1+10) div 10, y1 div 10].b:=false; 
if (a[ x1 div 10, (y1+10) div 10].b) then 
a[ x1 div 10, (y1+10) div 10].b:=false; 
if (a[ (x1+10) div 10, (y1+10) div 10].b) then 
a[ (x1+10) div 10, (y1+10) div 10].b:=false; 
end;

Ошибочка в строке 15 и 34:
" error, identefier 'igrat' is not procedure, function, variable or unit name"
"newproject.mpsrc:34: error, character '.' expected, 'type' found"


Заранее благодрен!!

Автор: Dancer 10.4.2007, 10:33
объяви кто у тебя такой igrat а так же avtor, vyxod, play.
Var igrat,vyhod,play: UserType; 
ну или какой-то определённый в MIDlet Pascal. я в нём не силён сорри. Но при описании процедуры то обязан описать переменные, которые будут в ней использоваться, либо эти перемнные уже должны быть глобально описаны у тебя где-то "выше"

Автор: RacerDeXakep 10.4.2007, 14:07
Dancer, 

Спасибо!!

Автор: kolja102 14.4.2008, 16:53
У меня вот такой вот вопрос,можно ли в MP написать игры типа dope wars?

Автор: vlad275 15.4.2008, 00:12
Я с этой игрой не знаком.

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

Автор: Bunya 5.5.2008, 20:07
Привет! Только начинаю писать на MidletPascal`e, поэтому еще не все разгребаю. smile 
Так вот. Пишу редактор расписания.Необходимо записывать данные в RecordStore. все хорошо, но русские буквы не распознает. Вот что получается.

http://ipicture.ru/Gallery/Viewfull/1689447.html

Как с этим бороться?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)