Ненормальное программирование

индекс
287,20

Деревянные игрушки или Как я писал мобильные игры с телефона

Когда-то, когда деревья были большими, а мобильники — ещё совсем дикими, и не существовало единых стандартов и Винды для телефонов, я был счастливым обладателем Siemens C72 — одного из немногих телефонов, позволяющих полноценно работать с файловой системой (на других телефонах в то время доступ к ФС был либо сильно ограничен, либо полностью отсутствовал).

Так уж вышло, что ПК к тому времени у меня ещё не было, а окунуться в увлекательный мир программирования уже хотелось. Так я поставил и родилась идея — начать кодить на мобильнике. Жесть, скажете вы? Оренбургские программисты настолько суровы, что мы пишут мобильные приложения на самих мобильных. Да, именно так, и я решил написать свою первую статью на Хабр, основываясь на своём опыте, т.к. в рунете подобные темы ещё не поднимались.

Итак, с чего все начиналось?

Конечно, с популярной мобильной платформы — java. (До джавы была еще одна мобильная платформа — Mophun, но так как она была рассчитана в основном на игры — с этой задачей она полностью справлялась — игры на Mophun отличались зрелищной 3D-графикой, быстродействием даже на самых слабеньких девайсах; зачастую такие игры поддерживали сетевую игру через Bluetooth/Internet, — но что касается приложений — платформа Mophun не предоставляла даже элементарного доступа к ФС, какое тут может быть программирование?

Значит — java. Буду кодить на мобильной клавиатуре, с экраном 130x130 и оперативой 1,5 — 2 мб. Запускаю миниоперу, провожу не один час в поисках какого либо способа программирования, и вот наконец нахожу — mobile basic.

imageimage

Приложение не позволяло компилировать код программы в исполняемый файл, оно было по сути интерпретатором — пиши, запускай, сохраняй текст программы, но не более. Выбора не было — пришлось осваивать язык. Так как бейсик изначально очень легким языком, то недели две спустя я навострился писать уже достаточно неплохие приложения.

Но мне хотелось прогресса — работы с графикой, создания простейших игр. К счастью, к тому времени на нашем форуме-таки нашли способ создавать отдельные джава приложения с помощью мобильного бейсика. Он заключался в следующем: написать непосредственно код программы, сохранить его в текстовой файл, далее воспользоваться областью памяти, где у мобильников хранятся файлы, создаваемые приложениями (например сейвы в играх хранятся именно там). Необходимо было вытащить этот файл с помощью специальной программки, запаковать в zip с файлом исходника, со всеми ресурсами и непосредственно с самим мобильным бейсиком. Таким образом я наконец получал готовое java-приложение.

И я начал писать игру. Игрушка была простая — управляешь рыбкой, поедаешь более мелких сотоварищей, и убегаешь от более крупных – выживаешь, короче :) Нужна была графика, но с этим проблем не было — к тому времени существовал графический редактор PaintCAD, который по функционалу оставляет виндовый пейнт (не тот, который написан на .NET, конечно :-) далеко позади.

image

Набросал пару несложных моделек, запаковал их в архив с бейсиком (чтобы ресурсы были доступны при написании игры) и принялся уже собственно за написание кода. Через пару дней игра была готова. Работала она конечно не без багов, но со временем все поправил.

imageimageimage

Вот участок кода этой игры:

520 GELLOAD "f4","f4.bmp":SPRITEGEL "f4","f4"
521 GELLOAD "f5","f5.bmp":SPRITEGEL "f5","f5"
522 X5%=-50:Y5%=110
530 X%=65:Y%=65
531 GELLOAD "f7","f7.bmp":SPRITEGEL "f7","f7"
532 X7%=-20:Y7%=0
537 XF1%=XF1%+1:YF1%=60+MOD(RND(0),60):SPRITEMOVE "f1",XF1%,YF1%
538 SETCOLOR 0,250,0
539 XF1%=XF1%+1:YF1%=60+MOD(RND(0),60):SPRITEMOVE "f1",XF1%,YF1%
540 IF LEFT(0) THEN X%=X%-1
541 XF%=XF%-1:SPRITEMOVE "f",XF%,YF%
542 IF XF%<=0 THEN XF%=580+MOD(RND(0),50):YF%=60+MOD(RND(0),60):SPRITEMOVE "f",XF%,YF%
545 IF UP(0) THEN Y%=Y%-1
546 IF SPRITEHIT("f4","f") THEN CLS:O%=O%+1:GOTO 1000
547 DRAWSTRING CHR$(1086)+CHR$(1095)+CHR$(1082)+CHR$(1086)+CHR$(1074)+":"+STR$(O%),30,2
548 SETCOLOR 0,250,0
549 XF1%=XF1%+2:SPRITEMOVE "f1",XF1%,YF1%
550 IF RIGHT(0) THEN X%=X%+1
552 IF XF1%>=130 THEN XF1%=-300+MOD(RND(0),50):YF1%=60+MOD(RND(0),60)
553 SPRITEMOVE "f1",XF1%,YF1%
554 IF SPRITEHIT("f4","f1") THEN GOTO 2000
555 IF DOWN(0) THEN Y%=Y%+1


К слову, именно по причине открытости сименсовских устройств, программированием на мобильном бейсике в то время занимались только сименсоводы. Позднее для этого появились многочисленные приложения — такие как mobile pascal, jasmin, а затем и полноценные джава-компиляторы.

Но к тому времени у меня уже было устройство на windows mobile, пришедшее на смену старику-сименсу (у того уже кнопки отваливались от кодинга :-).

Тут выбор, конечно, гораздо круче. Порт GCC (компилятор C++), Pocket C# (со своей IDE), Basic4PPC, Python, Perl, Tcl/tk, Mortscript, Turbo Pascal (на Эмуляторе DOS'а) — это лишь некоторые из них.

Basic4PPC:

imageimage

CEdit:

image

Turbo Pascal:

image

Вот процесс создания приложений на Pocket GCC: пишем код, например, на CEdit (редактор с подсветкой синтаксиса), сохраняем готовый *.cpp файл, далее кликаем на батник (в нём прописаны пути к компилятору, и к файлу *.cpp), и спустя пару минут забираем свежеиспеченный .exe файл программы.
Для этого процесса вовсе не требуется мощное устройство: хватит процессора с частотой 200 мгц и свободной оперативки 15-20 мб — а такими характеристиками обладают даже самые бюджетные устройства на WM.

Подумайте, ведь это так хорошо иметь в кармане полноценный программатор, и на досуге, вдали от ПК всегда можно написать небольшую программку и насладится ее работой прямо на КПК :)

***
PS Мопед не мой, я просто разместил маляву предоставил трибуну и выступил в качестве редактора. Автор — Artemzr, прошу любить и жаловать.
PS2 По совету ilya_compman перенёс в «Ненормальное программирование».
+121
1 февраля 2010, 15:01
20

комментарии (77)

НЛО прилетело и опубликовало эту надпись здесь
+18
andorro #
Вы так говорите, как будто это что-то плохое :)
+1
aLexusPro #
Хорошего в этом тоже мало.
+19
mace #
Скорее Леопольда Захер фон Мазоха :)
+1
wildhedgehog #
Именно. Причём то, что после «Леопольда» — это вопрос)
+7
rubyman #
Наверное, подойдет блог «Ненормальное программирование».
Кстати, для Windows Mobile есть еще один интересный вариант программировать прям на устройстве — среда разработки для языка J из семейства APL-подобных языков. В журнале по ссылке есть еще несколько постов и про сам язык, и про особенности приграммирования на карманных компьютерах.
+2
Artemzr #
Да, я есть еще немало языков программирования под мобильные устройства, будет время, обязательно напишу статьи.
0
NikitaG #
а чегонибудь подобного под андроид нету?
С большим удовольствие разминал бы моск по дороге на работу…
0
KKS #
python? :)
0
NikitaG #
как его там пользовать просветите?
0
KKS #
Поставить интерпретатор (или он там уже установлен, я не в курсе), написать скриптик с расширением .py, открыть :) Прошу прощения, я только на эмуляторе андроид видел, видел там ряд подобных скриптиков, поэтому я в данной теме не спец.
+1
motiv #
я года 4 назад на КПК дописывал сетевой сервер на нем(питоне). Ноута тогда не было и находился в деревне. Нормально=)
0
Shark #
Ну и раз уж такая пьянка… А под айфон/айпод есть что нибудь такое без джейлбрекинга? Порой Питона капец как не хватает. Привык во время учебы писать программки для мелких вычислений на S60.
0
Artemzr #
www.python.org/download/other/
Вот тут есть
0
aLexusPro #
Интересно, но безыдейно.

И мне всегда казалось, что сначала люди покупают и осваивают ПК, а уж потом созревают приобрести КПК. Оказалось, что бывает и наоборот.
0
Artemzr #
Мне кажется, что если бы у меня и был бы пк, я бы все равно кодил на мобильнике:-)
НЛО прилетело и опубликовало эту надпись здесь
0
Artemzr #
Да, да, помню. Именно она и подтолкнула на создание такой игрушки.
0
iNight #
Разве на С350? Может на С380 и С650?
(у них разрешение экрана разное, а игрушка была на 128х128)
И называлась она HungryFish.
НЛО прилетело и опубликовало эту надпись здесь
+22
ilya_compman #
+4
andorro #
Если ваш коммент соберёт больше трёх плюсов, перенесу туда ;)
+4
Mixail #
Судя по плюсам прошлого коммента, Вам стоит перенести блог именно туда ;)
+4
andorro #
Done.
+3
tyr #
цель игры — набрать как можно больше очей <- ?? %)
+1
Artemzr #
А какова может быть еще цель такой незатейливой игрушки :-)
+5
tyr #
либо персонаж игры должен собирать глазки съеденных рыбок, либо вы не совсем понимаете разницу между очами и очками =)
+2
MegafonUral #
он имел в виду что «очей» и «очков» это два разных слова))
+1
petrovi4 #
Это просто вынесло мне мозг.
Молодчага. Успехов!
+2
Artemzr #
Спасибо, постараюсь написать еще много интересных статей:-)
0
kot9lpa #
да-да а еще мы сравнивали с другом производительность кпк-шников с другом на турбо-паскаль с эмулятора dos :) но то что вы творили на мобильнике — это жесть — уважаю и завидую
+9
YasonBy #
Напомнили мне о долгих субботних лекциях религоведения…
Которые были очень продуктивны, благодаря палмовскому OnBoardC :)

OnBoardC
НЛО прилетело и опубликовало эту надпись здесь
+3
Shark #
Сам начинал программировать для мобильных платформ на Сименсе М55. К слову, Сименсы — офигенные телефоны были. Я в свое время превратил 1,5 Мб памяти в нем в 5 с чем-то, вроде. Ява там работала просто прелестно, доступ к ФС и внутренностям телефона — великолепный. Сименсы того времени среди других телефонов — это как Линукс среди других ОС ;) Я сильно расстроился, когда его украли, до сих пор подумываю купить себе такой ещё раз, ибо последующие Нокии такого фана не доставляли, не смотря на то, что смартфоны :)
+3
Artemzr #
Да, сименсы это легенда. С помощью прямых рук и кабеля dca-510 можно было сделать многое — многозадачность, оформление как на кпк…
0
Recluse #
У меня до сих пор хранится самопальный DCA-510 (:
0
Artemzr #
У меня и кабель, и сименс остался, правда его надо подремонтировать немного :-)
0
Liter #
А я, например, сильнол расстроился, когда был создан альянс benq-siemens, а потом когда siemens совсем закрыл мобильное подразделение.
О, а ещё, помню, переименовывал *.jar (джава-приложение) в *.amr(диктофонная запись), и слушал щелчки и скрипы через динамик.
+1
Shark #
Да уж, Benq убила Siemens нафик. А какие бы они смогли телефоны сейчас выпустить…
P.S. А ещё был когда-то конвертор для винампа из wav в amr. И можно было увеличить память а потом залить 6-7 песен целиком :) И это когда 2 Мб памяти было круто, а об мп3 в телефоне ещё никто и не думал :)
0
Recluse #
Потом elf'ами и mp3 реализовали в 55-65й серии (:
0
Virusmater #
crack_c72 — очень знакомый ник, на forum.s-c.ru видел давным давно, когда у самого с72 был)
+2
Virusmater #
хотел зайти на форум, поностальгировать, а его уже и нету((
+1
Artemzr #
Хм. Спасибо тебе за портированные патчи и эльфпаки для с72 :-)Вот уж не ожидал увидеть тебя здесь:-)
0
Virusmater #
да, было время. сейчас уже нет ни одного сименса в округе
все равно на патчи тянет. на днях предлагали е71 за 1.5к, даже подумывал взять, но надо кабель старый искать и переделывать + skey покупать + винду ставить…
+1
Artemzr #
хм..e71 мечтой был:-) Жаль я так и не нашел его, сейчас может быть им и пользовался бы
НЛО прилетело и опубликовало эту надпись здесь
0
Artemzr #
Сименс е71 а не нокия)
+1
mechmind #
Эх, времена сименсов…
PaintCAD, TextEditor (поддержка 100500 кодировок, многооконность и прочие вкусности...), двухпанельный фтп-клиент, многооконная опера мини, icq-, irc-, jabber-, ssh-клиенты, мобильные сайты, сделанные с мобильного… Ностальгия…
0
jkeks #
удобнее всего писать на e63. ФС — должна быть в инете, я искал как писать php код ОТОФСЮДУ
0
Sk8er #
Ахренеть :)
Пристыдили, да. А я всё не могу начать учить хоть какой нить язык, мотивируя недостатком хорошего материала)
+1
eeexception #
Напомнило далекие-далекие времена, когда мобильные телефоны только начали появляться, а компьютеры были не у каждого. Тогда приходилось программировать на бумаге, как и заниматься отладкой, а набирать сам код и компилировать, уже добравшись до любого компьютера.
0
Shark #
Эх, я тоже первые программы писал на листике в клеточку, сидя на скучных уроках в 6-м классе :) А когда добирался до компьютера лишь набирал их :)
0
Chikey #
ну ты даешь… Я когда то на пхп кодил на телефоне, но ЭТО… crazy
–8
sha1dy #
мда, молодец конечно, но это очень напоминает «понты, но без трусов», когда в начале нулевых школьники мечтали о мобилке, и комп им нафиг не нужен был — перед сверстниками не попанутешся же.
+4
Shark #
Причём здесь понты-то? Может, не было возможности приобрести комп, а программировать охота? Наверняка ведь большинство сверстников не понимало человека, который уткнувшись носом в мобильник творил :) Зато (я почти в этом уверен), он может за пояс заткнуть многих из тех, кто учился и начинал программировать на компе, со всеми удобными и настроенными ИДЕ, автокомплитом, средствами автоматизации и пр.
–1
sha1dy #
пиздец — а сотовый тогда, особенно старшие сименсы с явой, был дешевле компьютера? программировать можно было вообще на 486 133 компе очень сносно в 98 винде. не порите чушь.
+3
Shark #
Хм. Такой сотовый стоил раза в два-три дешевле нормального компьютера. А покупать б/у-шное чёрти-что за бесценок — это не выход, ИМХО.
+4
Artemzr #
Точно, да и мобильник изначально покупался не с целью программирования
+4
Artemzr #
Не знаю, сименс я приобрел за 3 тысячи.
Жил я не в городе, возможности не было.
+2
GooR #
Надо быть суппер крутым фанатиком, чтобы кодить на телефоне =)) респект, это действительно круто =)
+1
serafims #
Даа… мне это напомнило одну программку… не впомню уже, какую, на Sie CF62 позволяла на языке наподобие бейсика писать консольные программы… я себе их делал для всяких расчетов в школе…
Рисовал немного простенького… Но больше всего нравилась идея telnet-клиента для управления компьютером…

Сколько же денег было потрачено на мобильный интернет?
0
vaskas #
От нечего делать прогал на Ruby на iPhone (с jailbreak'ом, естественно), даже Rails как-то запустил, без базы данных, правда. Теперь программирую на том же Ruby на HTC Dream, благо имеется клавиатура.
Автору респект :)
0
kiruri #
Вы программируете на НТС «на отдыхе» или в основное время вместо компьютера? Если вместо компьютера — было бы очень интересно узнать, как преодолевались сложности маленького дисплея, какой IDE/текстовый редактор используется и т.п.

Мне почему-то кажется, что, например разработка web-проектов на Rails возможна на Nokia n900 — Maemo 5 основана на Debian, значит можно работать в VIM со всеми плагинами, использовать sqlite и т.п. Особенно это интересно, если веб-проект для мобильного веба.

Кстати, в определенных кругах разработка НА мобильном устройстве считается не просто актуальной, а очень перспективной темой.
0
vaskas #
Программирую на устройстве в свободное время, пишу небольшие полезные скрипты для себя, изучаю особенности языка. Для более серьезной разработки использую обычный компьютер, все-таки на телефоне:
— мало оперативной памяти: программы постоянно вытесняют друг друга из памяти, как на iPhone (просто переключиться между текстовым редактором и браузером не получится, приходится ждать, пока программа восстановится)
— маленькое разрешение экрана, 320х480: приходится постоянно изменять масштаб страницы в браузере
— процессор оставляет желать лучшего, все происходит достаточно медленно
Вот такие pinch points. В общем и целом, программировать можно, но чем сложнее проект, тем сложнее это делать.

Пользуюсь установленным в chroot Ubuntu 9.04, vim с несколькими плагинами, bash, ruby 1.8.7 для arm ;)
На N900 все должно быть еще лучше: процессор, память, экран превосходят таковые у Dream. Только вот клавиатура там в 3 ряда.

Еще интереснее — Pandora. По характеристикам она совпадает с N900, но у нее намного лучше устройства ввода, физически больше экран. Она очень похожа на супер-маленький субноутбук :)
0
kiruri #
Прошу прощения за поздний ответ, вот эта Pandora? en.wikipedia.org/wiki/Pandora_(console)
0
vaskas #
Да, это она самая. Красавица.

Я сейчас обзавелся MID SmartQ V5, подключаю к нему HTC Dream через RemoteDroid в качестве клавиатуры, тачпэда и EDGE/3G-модема :)
На устройстве имеются 256Мб памяти, полноценная Ubuntu/ARM со всем актуальным софтом, USB и HDMI порты. Недавно появились сборки Google Chrome. Веб-разработка вполне возможна.
0
AirLight #
нет, блог «ненормальные» — это для дураков, тут нужен блог «я упорный»
0
andorro #
Просто русское слово «ненормальный» в данном случае не совсем точное. Блог называется crazydev, а быть crazy можно и в хорошем смысле.
0
kurumpa #
обоже. впрочем, я когда-то на кпк Кассио на бейсике тоже что-то вырисовывал )
–1
epik #
зачот!
0
killerdesign #
Жесть, конечно)

У меня, правда, тоже был отдалённо похожий опыт. В прошлом году поехал я отдохнуть в Крым на пару деньков. Сняли с девушкой номер в гостинице с громадным балконом с видом на море… и тут мне звонит заказчик, мол надо срочно наполнить сайт контентом (сайт телеканала, телепрограмма на неделю). Благо, CMS-ка позволяла воспользоваться штатным нокиевским браузером, а .doc без труда открылся на моём Nokia E50.

В итоге три часа трудов и пыхтений под прохлаждающие напитки, и грязное дело было сделано :)

–1
Sketch_Turner #
»В итоге три часа трудов и пыхтений под прохлаждающие напитки, и грязное дело было сделано :)

Интересно, только я после прочтения этой фразы подумал, что с девушкой вы вовсе не программированием в тот момент занимались?; )
0
elmm #
Я для покета даже миниклаву купил, но всё равно это было сродни чистки квартиры зубной счёткой — моя психика не выдержала и девайс в основном стал асечным клиентом.
Я горжусь вышим терпением и целеустремлённостью.
+1
roodz #
Гвозди бы делать из этих людей!
НЛО прилетело и опубликовало эту надпись здесь
0
Artemzr #
А что было еще делать? Был бы пк, может бы и не извращался так
0
kAIST #
эх… Я программировать начинал именно на телефоне (смартфон nokia). Было одно время, когда компьютера под рукой не было (был в армии), там и научился программированию на питоне. Пару известных проектов даже было на то время.
Со смартфона тогда писал программу, упаковывал в sis, создал даже wap сайт, с помощью написанного мною же ftp клиента :)
Иногда ко мне обращаются за консультации люди, которые находятся в местах, не столь отдаленных. Представляете, и там сидят люди, которые пытаются осваивать (иногда успешно) программирование. Всего то нужно — любой смартфон, пусть даже и старенький.

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