Учебные скрипты (Страница 1) — Программрование на m — Форум mShell

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Материалы, размещаемые на форуме, носят только ознакомительный характер. Все данные были найдены в свободном распространении в сети и размещены на сайте пользователями. Администрация форума не несет ответственности за их содержание.

Поиск



Показывать результаты как

Наши друзья

MaemoWorld - самая свежая информация об устройствах на базе Maemo (Nokia N900...)
Форум Nokia 5800 - все о смартфонах Symbian S60v5

Статистика

Добро пожаловать!
Пожалуйста, авторизуйтесь.

Имя пользователя
Пароль
Еще не зарегистрировались?
Забыли свой пароль?


Страницы 1

Чтобы отправить ответ, вы должны вход или регистрация

RSS

Сообщений [ 9 ]



1

Тема: Учебные скрипты

Простые примеры, которые показывают возможности mShell.

Карандаш
Для сенсорных телефонов. Можно рисовать, касаясь экрана.

use ui, graph as g // используемые модули

ui.ptr(false);
prev = ["x":0, "y":0, "buttons":0]; // предыдущая позиция - не нажато
while true do // бесконечный цикл
  c = ui.cmd(); // описание команды
  if c["buttons"]=0 then // если нет нажатия
    prev["buttons"] = 0; // позиция - не нажато
  else
    if prev["buttons"] = 1 then // если было нажато
      // рисуем линию из старой позиции в новую
      g.line(prev["x"], prev["y"], c["x"], c["y"]);
    end;
    prev = c; // запоминаем позицию
  end;
  g.show(); // отображаем
end;

Акселерометр
Для телефонов с акселерометром. Двигает кружочек по экрану под действием силы тяжести.

use accel, graph as g, ui // используемые модули

x = 100; // начальная горизонтальная координата
y = 100; // начальная вертикальная координата
d = 10; // диаметр кружочка
g.brush(g.black); // выбираем цвет
g.circle(x, y, d); // рисуем кружок
g.show(); // отображаем кружок
ui.mode(1); // фиксируем портретный режим экрана
while true do // бесконечный цикл
  v = accel.new(1); // получаем состояние акселерометра
  g.brush(g.white); // выбираем белый цвет
  g.circle(x, y, d); // закрашиваем кружочек белым
  x = x - v["x"]/10; // изменение горизонтальной координаты
  y = y + v["y"]/10; // изменение гвертикальной координаты
  if x < 10 then x = 10 end; // левее 10 границы не уходим
  if x > 350 then x = 350 end; // правее 350 не уходим
  if y < 10 then y = 10 end; // выше 10 не уходим
  if y > 500 then y = 500 end; // ниже 500 не уходим
  g.brush(g.black); // черный цвет
  g.circle(x, y, d); // рисуем крожочек
  g.show(); // jnj,hf;ftv
end;

Гитарный тюнер
Пример работы с меню. Программа воспроизводит звуки выбранной тональности.

use ui, audio, array

// соответствие имен струн и их номеров в массивах с частотами
names = ["Первая":0, "Вторая":1, "Третья":2, "Четвертая":3, "Пятая":4, "Шестая":5];

// частоты каждой струны для разных способов настройки
tones = [
  "standard":[330, 247, 196, 147, 110, 82],
  "A Tuning":[330, 220, 196, 147, 110, 82],
  "Dropped D":[349, 262, 208, 156, 117, 78],
  "Open D":[311, 223, 196, 156, 117, 78],
  "Open G":[311, 262, 208, 156, 104, 78]
];

cls(); // очищаем вывод
audio.volume(500); // громкость звуков
// генерируем основное меню: сначала название, потом массив с именами пунктов
ui.menu("Струна", array.concat(["Пауза"], keys(names), ["Шаблон"], [ "Выход"]), false);
pattern = "standard"; // шаблон настройки
play = false; // проигрывать ли звук в данный момент
tone = 0; // настраиваем первую струну
while true do // бесконечный цикл
  c = ui.cmd(1000); // ждем команду от меню (в с пропишется имя пункта)
  if c = "Выход" then
    break; // прекращаем цикл
  elsif c = "Пауза" then
    if play then // если были не на паузе
      play =  false; // указываем, что не нужно проигрывать звук
      print "Пауза"; // выводим, что перешли на паузу
    end;
  elsif c = "Шаблон" then
    if play then // если были не на паузе
      play = false; // указываем, что не нужно проигрывать звук
      print "Пауза"; // выводим, что перешли на паузу
    end;
    // вызываем список из имен tones, в котором нельзя выбирать больше одного
    // элемента, изначально выбран нулевой, называем список "Выбор шаблона"
    // в select запишется массив с номерами выбранных элементов
    select = ui.list(keys(tones), false, [0], "Выбор шаблона");
    if select#null then // если не нажали на отмену
      pattern = keys(tones)[select[0]]; // новое имя шаблона
    end;
  elsif c#null then // если выбрали одно из имен из струн
    play = true; // нужно будет проигрывать звук
    tone = tones[pattern][names[c]] *4; // частоту звука берем из таблицы tones
    print pattern, c, tone; // выводим имя шаблона, имя струны и частоту
  end;
  if play then // если нужно проигрывать звук
    while audio.busy() do end; // ждем пока освободится устройство проигрывания
    audio.beep(tone, 1000); // играем сигнал
  end;
end;


2

Re: Учебные скрипты

Спасибо за скрипты, только очень мало, выкладывайте больше))

Добавлено: 2009-10-08 18:24:11

И еще хотел сказать топик форума в мозиле не корректно отображается, страдает выравнивание по высоте))



3

Re: Учебные скрипты

rain2 пишет:

Спасибо за скрипты, только очень мало, выкладывайте больше))

А какие примеры нужны?

rain2 пишет:

И еще хотел сказать топик форума в мозиле не корректно отображается, страдает выравнивание по высоте))

Из-за длины одной строки в коде такое было. Не влезало все сразу. Исправил.



4

Re: Учебные скрипты

Примеры работы с итерфейсом, формами, работа с файлами, с базой данных, та чем больше тем лучше, а за исправление спасибо, оперативно)



5

Re: Учебные скрипты

Пятая опера такая кака

Использую для набивки текста в нарисованные формы.



Так. Если скрипт (прикрепил его файлом) претендует на роль учебного, то его нужно отформатировать (длинные строчки не читабельны и не отображаются корректно) и прокомментировать.
KiRiK

Добавлено: 2009-10-09 12:51:38

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

Post's attachments

temp.m 8.63 kb, 11 загрузок с 2009-10-09 

У Вас недостаточно прав для загрузки файлов, прикрепленных к этому сообщению.


6

Re: Учебные скрипты

Прямо в коде прокомментировать что как устроено.
Сейчас нужно вникать, разбираться.
А это не здорово для учебного скрипта.



7

Re: Учебные скрипты

Даже так спасибо, выкладывайте еще.

Добавлено: 2009-10-11 14:29:22

Очень нужны примеры работы с сенсорным экраном, массивами и созданием интерфейса!!



8

Re: Учебные скрипты

Пример работы с сенсорным экраном - Карандаш в первом сообщении.
Про массивы довольно подробно в документации:
http://wiki.m-shell.ru/index.php/M_Mobi … age:Arrays*
http://www.m-shell.net/Documentation/li … html#qqs40*
http://www.m-shell.net/Documentation/tu … html#qqs22*
http://www.m-shell.net/Documentation/tu … html#qqs23*
Если нужно что-то другое или подробнее, пиши что именно.
С интерфейсом все сложно, потому как есть несколько подходов к его созданию.
Либо старый, функциями ui, который подробно описан тут*, либо новыми модулями от airbit*. Вообще, я сейчас пишу модуль для создания интерфейсов, аналогично Qt и java.



9

Re: Учебные скрипты

здраствуйте уважаемые, меня вот интересуют такие вопросы:
1) мне нужно получить файл из интернета.как это делать я разобрался,воспользовался офф библиотекой abhttp. а теперь вопрос-можно ли както сделать,чтобы программа неспрашивала каждый раз точку доступа?как установить точку поумолчанию?
2)сталкивался ли ктонибуть с работой с зип архивами?нужна только распаковка в указанную лерикторию
3)можно ли както "открыть" файл тобеш есть например текстовый файл.нужно чтобы  запустилась ассоциированная с ним программа и в ней он открылся.
как тут сделать слиип? тобеш есть цикл и нужно чтобы этот цикл "засыпал" на указанное время.

Сообщений [ 9 ]

Страницы 1

Чтобы отправить ответ, вы должны вход или регистрация



Currently installed 14 official extensions. Copyright © 2003–2009 PunBB.

[ Сгенерировано за 0,207 секунд(ы), выполнено 10 запросов ]