Pull to refresh

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

Abnormal programming *
Когда-то, когда деревья были большими, а мобильники — ещё совсем дикими, и не существовало единых стандартов и Винды для телефонов, я был счастливым обладателем 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 перенёс в «Ненормальное программирование».
Tags:
Hubs:
Total votes 135: ↑128 and ↓7 +121
Views 8.8K
Comments Comments 77