Статьи, хитрости и советы по Mobile Basic
seva(28.02.2010/21:03)
Здесь рассказываем о том что интересного знаем о Mobile Basic.
Вопросы пишем в тему "вопросы по mobile basic"
seva(28.02.2010/21:05)
Вот совет:если хотите удалить строку в коде ,
введите номер строки еще раз, и нажмите ввод.
Phantom(28.02.2010/22:48)
Если синус и косинус выдают не то что надо, разместите гдето раньше строку содержащую команду DEG
[red]aNNiMON: Ппц, ну ты и сказал...
seva:если программа выдает не то что вам надо ,выпрямте руки и напрягите моск.
[/red]
seva(07.03.2010/19:57)
Сравнения можно не только с помощью if использовать, а и напрямую тоесть,вместо [php] 10 if a%>b% then a%=6 [/php]
можно сделать просто
[php] a%=6*(a%>b%)
[/php]
Dmitriy(07.03.2010/20:45)
Чтобы SE не останавливалал прогу по причине бездействия с клавиатуры нужно: периодически нажимать кнопку или свернуть программу (замедлиться в 3 раза), или сделать ALERT в ней через каждые дцать секунд, или что то поменять в манифесте...
Dmitriy(25.03.2010/14:41)
Функция RND(0) генерирует псевдослучайные целые числа в диапазоне -2147483648..2147483647. Чтобы задать свой диапазон значений A..B надо ввести так:
var%=A+ABS(MOD(RND(0),B-A+1))
Dmitriy(26.03.2010/06:59)
Недостатки формулы A+MOD(RND(0),A):
1)Т.к. Остаток всегда меньше A хотябы на 1, диапазон будет равен A-(A-1)..A*2-1, т.е. крайние числа множества всегда будут нечётными.
2)Вероятность выпадения A в два раза выше остальных. Почему сами догадайтесь.
В формулe в вeрхнeм постe этих нeдостaтков нeту
kiriman(27.03.2010/09:30)
"Шифр"
Каждый из вас хочет создать свой MIDlet так,чтоб какой-нибудь крякер не имел доступа не к ресурсам,не к коду.
Т.к. соо о бейсике,придется скрывать файл генерируемый им - /autorun.bas
Прежде всего введем такое понятие как "обфусцировать" - сделать код нечитабельным,но исполняемым в собранном приложении.
Где же нам взять сам обфускатор?Для этого проходим по ссылке:
mbteam.ru/bas/?sid=::sid::b6b5ae309fd02d2635f229fefd8b7
Пишем ссылку на /autorun.bas.Когда ты получишь новый файл - то запакуй его в готовое приложение с ресурсами.
Предупреждаю,скрипт сырой,лично не тестил.
Одно дело сделано,но как же зашифровать нам ресурсы?
Итак,мы люди умные и если нам наше творение не безразлично,то первым делом стираем все расширения у ресурсов.
Например:
muz.mid - muz
kursor.png - kursor
А еще лучше,если все имена будут обыкновенными цифрами.Расширения меняем до запаковки))для нуберов.
Неопытных людей такой подход собъет с толку,ну а иных,не совсем,ибо узнать расширение можно любым текстовым редактором(это опустим).
Ну чтож,пойдем дальше...
Попробуем "зашифровать" текстовый файл.Во-первых,надо создать свою программу "шифровчика" и принцип "дешифровчика",чтоб как-то иметь доступ к своему творению.
Я покажу простейший метод шифра(по моему способу,не нравится - думайте сами).
Во-втрорых,стоит отметить,что чтение текстовых файлов являет собой последовательное чтение байтов,которые представляют код символов.
1 байт - 1 символ.
"Шифровать" будем файл в кодировке Win1251.Есть спец.код чтоб его прочитать(не зашифрованный файл):
1 tex$=""
2 open #1,"file:///c:/other/win1251.txt","input"
3 trap 8
4 get #1,bait%
5 if bait%<0 then bait%=bait%+1104
6 tex$=tex$+chr$(bait%)
7 goto 4
8 close #1
В строке 5 мы прибавили к некоторым байтам 1104,для того чтобы правильно записать русские буквы в переменную tex$.
Гг,а теперь очень хорошо подумаем и придумаем,что можно с этими знаниями сотворить...
А вот что))Возьмем нормальный текстовый файл и...я сначала напишу код зашифровки):
10 open #0,"file:///c:/other/win1251.txt","input"
40 open #1,"file:///c:/other/new.txt","output"
60 trap 140
80 get #0,bait%
90 a%=a%+1000
100 bait%=bait%+a%
120 put #1,bait%
130 goto 80
140 close #0:close #1
Теперь для уверенности можете открыть новый файл и увидеть нечитаемые символы.
Т.к. зашифровали текстовый файл,который был создан в кодировке win1251,то принцип открытия не изменится,добавим лишь одну строчку.
Принцип открытия:
1 tex$=""
2 open #1,"file:///c:/other/win1251.txt","input"
3 trap 8
4 get #1,bait%
5 a%=a%+1000
6 bait%=bait%-a%
7 if bait%<0 then bait%=bait%+1104
8 tex$=tex$+chr$(bait%)
9 goto 4
10 close #1
Вот все,конечно можно придумать что-то хитрее,но и этого вполне достаточно,даже более чем.
Другие файлы аналогично.
З.Ы. Надеюсь чем-то помог!
Автор: kiriman
Это я давно писал,сильно не бейте.
kiriman(01.07.2010/12:56)
Существует довольно простой алгоритм вычисления дня недели для любой даты григорианского календаря позднее 1583 года.
Григорианский календарь начал действовать в 1582 -
после 4 октября сразу настало 15 октября..
day% - день
mon% - месяц
year% - год
Реализация:
10 a% = ((14 - mon%)/12)
20 y% = year% - a%
30 m% = mon% + 12 * a% - 2
40 d% = 7000 + (day% + y% + y%/4 - y%/100 + y%/400 + (31 * m%)/12)
50 data% = mod(d%,7)
60 print data%
Результат:
0 - воскресенье
1 - понедельник и т.д.
minatik(03.10.2010/08:43)
Есть такая команда: OR. Она используеться между IF И THEN, значит
она "или" задает значение для: пример IF 0>A% OR 0>B% THEN PRINT "OK". Поясняю: Если 0>А% или 0>В% значит писать "Ок". Комбинируеться с командой And
kiriman(03.10.2010/09:32)
Есть такая команда: NOT. Она используеться между IF И THEN, значит
она условное "НЕ"
10 if not inkey(o) then a%=1
10 если не нажата ни одна клавиша(т.е. отпущена) то a%=1
LPzhelud(03.10.2010/12:30)
Есть такая команда: AND. Она используеться между IF И THEN, значит
она условное "И"
10 if inkey(0)=48 AND %variable=1 then a%=1
10 если нажата клавиша 0 и переменная равна единице то a%=1
Dabann(04.10.2010/00:51)
Цитата:{LPzhelud (03.10.2010/12:30)
Есть такая команда: AND. Она используеться между IF И THEN, значитона условное "И"10 if inkey(0)=48 AND inkey(0)=53 then a%=110 если нажата клавиша 0 и 5 то a%=1}-Ответ:Логично, но работать не будет - звонильный бейсик считывает только нажатие одной клавиши!
Поэтому, в данном случае "AND" будет работать как "OR":-D
Kiq(16.10.2010/16:38)
Чтобы бейсик не выдавал ошибку при ПЕРЕзаписывании существующего файла(ну бывает такое у некоторых, у меня например), следует перед open #0,"filename","output" написать
trap ...
open #0,"filename","input"
close #0
delete "filename"
minatik(27.11.2010/13:12)
Эээ... Знаете, как проверить игру на бейсике? Во время игры нажмите кнопку С, вверху появиться квадрат. Если он появился, значит игра зделана на бейсике! Работает и в проге TextCompiler! :-)
Dabann(27.11.2010/16:47)
minatik, Запусти любую мою игру или программу на МБ(кроме самой первой, скейтера) - там такого нету:)