Глава
3. Лекции для углубленного изучения
Тема
1. Работа с текстовыми окнами с помощью команд ЛОГО
1. 1. Создание
текстовых окон. Изменение размеров текстового окна и его местоположения
1. 2. Ввод
текста в текстовые окна, форматирование шрифта
1. 2. 2.
Команда «сотри текст»
1. 2. 4.
Команда «новый размер шрифта»
1. 2. 5.
Команда «новый стиль»
1. 2. 6.
Команда «новый цвет текста»
Тема
3. Среда ЛОГО как оболочка для тестирующих программ
3.1. Команда
СПРОСИ и датчик ОТВЕТ.
3. 2. Два
способа построения диалоговых программ
3. 2. 1.
Первый способ построения тестовой диалоговой программы.
3. 2. 2.
Второй способ построения тестовой программы
3. 3.
Оформление теста. Применение музыкального редактора.
Тема
4. Импорт и экспорт графических объектов
4. 1. 1.
Команда возьми
рисунок
4. 2. 1.
Команда новый размер проекта.
4. 4. Создание
проекта «Собери картинку»
4. 4. 1.
Команды НОВ_Х и НОВ_У
Тема
5. Работа с несколькими листами
5.1.6. Порядок
листов в проекте
5.2.
Создание многостраничного проекта
5.2.1. Игра
«мины» - 1 уровень
5.2.2. Игра «ЛАБИРИНТ» - 2 уровень
5.2.3. Игра
«собери мозаику» - 3 уровень.
Текстовое окно это один из основных объектов Лого Миров. Оно служит для вывода текста. Создать текстовое окно можно двумя способами.
Первый способ очень наглядный. На панели инструментов есть специальная кнопка, которая отвечает за создание текстового окна. . При активизации этой кнопки и при щелчке по проекту появляется текстовое окно с мигающим курсором. Если при создании текстового окна растянуть по проекту прямоугольник окна, то оно появится такого размера, какой был заказан. Если просто щелкнуть на экран, то окно будет стандартного размера.
Второй способ создания текстового окна – с помощью команды. Специальная команда
нов_текст (нт)
имя [х у] [длина ширина]
создает новое текстовое окно с заданным именем (первый параметр) в заданной позиции (второй параметр). [х у] - это координаты левого верхнего угла окна. Максимальные размеры окна (длина и ширина ) соответствуют размерам листа в проекте.
Пример:
нов_текст "информ [100 100] [ 50 50]
(сокращение команды – нт)
После создания текстового окна можно поменять его свойства. Для этого тоже можно использовать два способа.
Первый способ более наглядный. Характеристики меняются с помощью диалогового окна. Оно открывается либо при последовательном нажатии знака текста «А» и нужного окна, либо при последовательном нажатии на кнопку «Глаз» и текстового окна. Диалоговое окно содержит основные свойства окна: имя, переключатель, позволяющий снимать наличие бирки с именем у окна, переключатель, делающий окно невидимым, и переключатель, делающий окно прозрачным. Устанавливая маркеры в нужные окошки, можно изменять свойства окна.
Второй способ командный. Для смены свойств можно использовать команду установи:
установи
объект свойство значение
Названному свойству названного объекта приписывает названное значение. Первый входной параметр - имя объекта. Второй входной параметр - имя свойства. Третий параметр - значение. С помощью этой команды можно менять следующие параметры окна: место, размер, видимость (свойство «видно?»), наличие имени ( с именем?), содержимое (текст), прозрачность (прозрачный?).
Например, если есть текстовое окно “текст1, то убрать бирку с именем можно командой
установи “текст1
“с_именем? “нет
В этом примере текст1 – имя окна, с_именем – свойство окна, нет – значение свойства.
Прозрачность можно поменять и командами прозрачный и непрозрачный. Например,
прозрачный “текст1
непрозрачный
“текст1
Ввод текста, так же как и создание текстовых окон, может осуществляться как непосредственно в текстовое окно, так и с помощью команд.
Чтобы напечатать текст в текстовом окне, щелкните на окно. Появится мигающий курсор. После этого печатайте текст.
В тексте можно изменить шрифт, стиль и/или размер букв. Для этого необходимо выделить нужную часть текста и заказать новые параметры в диалоговом окне «шрифт» меню «текст». Например, текст может выглядеть так:
В этом текстовом окне сочетаются разные начертания, цвет шрифта и его размер. Удобнее сначала набрать весь текст сказки, а потом отформатировать шрифт, выделяя мышкой нужные части текста.
пиши слово-или-список 1
параметр
Печатает слово-или-список в активном текстовом окне. Текст сопровождается возвратом каретки. Например,
пиши [Меня зовут Таня]
По этой команда в текстовое окно введется указанная строка.
сотри_текст (ст) без параметров
Стирает текст в активном текстовом окне.
Пример:
пиши "хелло
ст
Текстовое окно станет пустым.
Команда удаляет объект или свойство
удали имя имя
–1 параметр
Пример: удали “текст1
нов_размер_шрифта (нрш) число 1 параметр
Устанавливает размер шрифта для активного текстового окна. Если в окне нет выделенного текста, то выбранный размер будет использоваться при дальнейшем наборе текста. Максимальный размер шрифта – 1638 ст
нрш 12
пиши [Проба пера]
нов_стиль (нс) слово-или-список 1 параметр
Устанавливает стиль шрифта для текущего текстового окна. Входной параметр должен быть именем стиля (простой, жирный, курсив, подчеркнутый, рельефный, ...). Если нет выделенного текста, то указанный стиль будет использоваться при дальнейшей печати. Стили можно комбинировать: для этого названия стилей нужно объединить в список.
Пример:
нов_стиль "жирный
пиши "Меня зовут Таня
нов_цвет_текста (нцт)
имя-или-число 1 параметр
Изменяет цвет текста в активном текстовом окне. Если входной параметр имя, то перед ним обязательна кавычка. Примеры:
нов_цвет_текста "красный
нцт 12
Во втором примере цвет текста заказан с помощью номера цвета. Номер можно узнать в графическом редакторе, который включается кнопкой с кисточкой.
вставь слово-или-список 1 параметр
Печатает входной параметр в позиции курсора в активном текстовом окне. Курсор не переходит на следующую строку.
Примеры:
вставь "Привет
вставь символ 32 Вставляет пробел.
пиши "всем
Привет всем
Текст программы по печатанию текста сказки может выглядеть приблизительно так:
это
сказка
вставь
[Снесла курочка]
нрш 14
нс "жирный
вставь
[ яичко]
нрш 12
нс "простой
вставь
[, да не простое, а ]
нцт 45
нрш 14
вставь[
золотое]
конец
Недостаток такой
печати в том, что при вставке не пропускаются пробелы. Их можно добавить
командой «вставь символ 32».
На листе программ напишите программу, создающую окно с текстом вашей любимой сказки. Командами вставь и пиши заполните окно текстом. Для шрифтового оформления текста примените команды нцт, нрш и нс. Текстовое окно должно содержать не менее 50 слов. Шрифт отформатируйте так, чтобы было не менее 5 его различных видов. С помощью команд ЛОГО сделайте это окно прозрачным, без имени. Учтите, что в прозрачном окне текст ни дописать, ни изменить нельзя.
Два других окна должны содержать названия сказки и имя автора. Оформите текст в этих окнах.
Вызов процедуры поместите в кнопку. Создать кнопку можно с помощью инструмента . При щелчке по инструменту, а затем по проекту, открывается диалоговое окно кнопки как на рисунке.
В поле ИНСТРУКЦИЯ напишите имя созданной вами процедуры и щелкните ОК. Созданные вами окна должны появляться при щелчке по кнопке «Печать».
Для удобства создайте процедуру, стирающую окна с текстом. Назовите ее «Убрать». Используйте в ней команду удали. Поместите вызов этой процедуры в другую кнопку.
Примерный вид проекта показан на рисунке.
пусть слово слово-или-список 2 параметра
Создает переменную с именем слово и присваивает ей значение слово-или-список. Переменные не исчезают при закрытии проекта
Пример:
пусть “подруга “Марина - переменной с именем “подруга присваивается значение Марина
Аналогична этой - команда назови:
назови слово-или-список слово 2 параметра
Параметры те же, только указаны в обратном порядке.
Это переменная, которая содержит символы (буквы, цифры, знаки), не содержит пробелов и начинается с кавычек.
Словом может стать и несколько слов в обычном понимании, если они заключены в вертикальные скобки (в английской раскладке shift+ \).
Например, “мама; “|мама мыла раму |.
Для того чтобы убедиться в правильности работы со словами, можно использовать команду покажи.
покажи слово-или-список 1 параметр
Печатает слово-или-список в Поле команд.
Примеры:
пусть “хелло “Привет!
покажи :хелло
Привет!
пусть “строка “|Очей очарованье…|
покажи :строка
Очей очарованье ...
Замечание. При использовании переменных надо учитывать, что кавычка перед ее именем обозначает, что используется именно имя переменной, а двоеточие, что используется ее значение. Например, если бы мы набрали строку покажи “пр, то появилось бы вместо Привет! - пр.
Списком называется произвольная последовательность
элементов списка; элементом списка может быть или слово или список.
Списки записываются в виде: [<элемент1>....<элементN>].
Например
пусть “имена [Оля Петя Коля]
В этом примере создается список с именем имена, у которого
элементами являются имена девочки и мальчиков.
Элементы списка аналогичны элементам массива, каждый элемент которого
может быть либо словом, либо другим символьным массивом. Получается древовидная
вложенная структура.
Служит для вывода какого либо элемента существующего списка или буквы слова.
элемент число слово-или-список 2 параметра
Сообщает элемент слова-или-списка с номером число. Первый входной параметр должен быть не меньше единицы и не больше количества элементов в слове (списке).
Примеры:
покажи элемент 2 "Привет!
р
пусть “мальчики [Ваня Илья Денис]
покажи элемент 3 :мальчики
Денис
покажи элемент 3 “мальчики
л
Используется для выдачи первого элемента списка или слова.
первый слово-или-список 1 параметр
Сообщает первый элемент слова-или-списка. Имеет сокращенную форму – прв.
Примеры:
1) покажи прв "хелло
х
2) покажи прв [Гонимы вешними лучами]
Гонимы
3) В этом примере список состоит из разных по природе элементов. То, что записано в вертикальных скобках, является словом, а то что в квадратных скобках – списком:
пусть "имена [|Оля Иванова|
[Петя Миронов] |Коля Юшкин|]
Если напечатать весь список “имена, то разницу в природе его элементов трудно почувствовать. А вот если рассмотреть их первые элементы, то разница сразу ощущается:
покажи прв элемент 3 :имена
К
покажи прв элемент 2 :имена
Петя
Хочется отметить разницу между записями “имена и :имена. В первом случае идет указание на имя объекта, а во втором – на его значение.
сл_элемент слово-или-список 1
параметр
Сообщает выбранный наугад элемент из слова или списка. Элементом слова
является символ, элементом списка является слово или список.
Примеры:
1)
пусть “кошки [Мурка Дуська Васька Тимка]
покажи сл_элемент
:кошки
Васька
покажи сл_элемент
:кошки
Мурка
2) пусть “т1 “|А у вас молоко убежало!|
покажи сл_элемент :т1
у
покажи сл_элемент :т1
!
Startup – это особое имя для процедуры, которая позволяет произвести то или иное действие в момент открытия проекта. Процедура startup не может иметь входных параметров.
Например, в нижеприведенной процедуре при загрузке проекта разными цветами будет мигать поле проекта 7 раз (в качестве цветного салюта).
это
startup
пусть
"ц 5
повтори
7[нц
:ц крась пусть "ц :ц + 10 жди 4 ]
нц
0 крась нц 9
конец
Процедуру startup можно вызывать также как и другие процедуры по желанию.
В первом задании по этой теме вам предстоит создать процедуру startup, которая выдавала бы одно, выбранное случайно, приветствие из созданного списка приветствий при открытии проекта и помещала бы его в специально созданное текстовое окно.
Хорошо бы сделать текст в этом окне побольше и пожирнее. Окно должно быть без имени.
В качестве списка приветствий можно взять, например, такой:
пусть “привет [Хелло! |Приветствую Вас!| Здравствуйте! Привет! |Добрый день!|]
сколько слово-или-список 1 параметр
Сообщает количество элементов в слове-или-списке.
Примеры:
покажи сколько "хелло
5
покажи сколько [0 1 2 3]
4
разбери слово 1 параметр
Превращает символьную цепочку в список. Содержащиеся в символьной цепочке пробелы и возвраты каретки становятся разделителями элементов списка. Разбери может использоваться для превращения длинных слов (цепочек символов, содержащих пробелы) в списки слов, в частности, для считывания содержимого текстовых окон.
Пример1: Пусть имеется текстовое окно с именем текст1, содержащее слова «Сбежали мутными ручьями».
покажи текст1
Сбежали мутными ручьями
покажи сколько текст1
23 Слово из 23 символов, включая пробелы.
покажи сколько разбери текст1
3 Список из 3 слов.
Пример 2: Пусть имеется текстовое окно текст1 с именами мальчиков: «Ваня Миша Сергей»
пусть "мальчики разбери текст1
покажи элемент 1 :мальчики
Ваня
Пусть имеется текстовое окно текст1 с именами членов вашей команды, разделенными пробелами или написанными в столбик. Ваша задача будет состоять в создании еще двух окон. Одно из них должно содержать имена мальчиков, начинающихся на букву А, а если таких имен в списке нет, то надпись «Имен на букву А нет». Используйте при решении этой задачи команду если (см. справку), датчик прв (см. выше), команду много раз (см. справку) и список имен.
Второе окно должно содержать имена, длина которых не превышает 5 символов. Используйте датчик сколько, команды если и много_раз. Работу своих программ оформите в виде процедур на листе программ и сделайте кнопки, управляющие их работой.
Пример вида выполненного проекта приведен на рисунке.
Вам понадобиться при программировании еще несколько команд.
Служит для организации перебора значений из диапазона и выполнения с этими значениями команд из списка инструкций:
много_раз [диапазон] [список-инструкций]
Выполняет список-инструкций для каждого значения из диапазона. Первый входной параметр - это список, состоящий из имени временной переменной и числа, являющегося верхней границей диапазона (нижней границей диапазона является 0). Второй входной параметр - это список инструкций.
Пример1: В нижеследующем примере инструкция нов_цвет устанавливает цвет черепашки для каждого значения к, от 1 до 9. (Цвет черепашки не может равняться 0).
много_раз [ к 8] [ нов_цвет :к + 1 жди 5]
Пример2: следующая инструкция печатает числа 0, 1, 2, ..., 9 в текстовом окне.
много_раз [ к 9] [ вставь :к]
если логическое-значение список-инструкций 2 параметра
Выполняет список-инструкций только в том случае, если условие (первый входной параметр) сообщает да. См. если_иначе.
Примеры:
если цп = 115 стоп
эта команда вызовет остановку, когда черепашка будет стоять на поле фиолетового цвета (цвет поля 115)
если прв :имя = “К пиши “Да
эта команда сравнивает первую букву переменной “имя с буквой К и если она действительно окажется таковой, пишет слово Да в текстовое окно.
если_иначе логическое-значение список-инструкций1 список-инструкций2
(3 параметра)
Выполняет список-инструкций1, если первый входной параметр равен да. Выполняет список-инструкций2, если первый входной параметр равен нет. См. если.
Пример:
если_иначе цп = 15 [вп 50] [нд 50]
В этом примере если черепашка попадет на поле красного цвета (15), то она продвинется вперед, а если цвет будет другим, она будет пятиться назад.
Примитивы
спроси и ответ позволяют Вам открыть диалоговое окно, в котором Вы
можете задать вопрос, и использовать напечатанный ответ. После того как вопрос
был задан и ответ введен, датчик ответ сообщает напечатанный в диалоговом окне
ответ. Сообщаемая датчиком ответ информация не изменится, до тех пор, пока не
будет выполнена новая команда спроси.
Пример:
спроси [Сколько Вам лет?]
Напечатайте
ответ в диалоговом окне. Щелкните на ОК. Теперь Вы можете многократно
использовать ответ. Например:
покажи ответ
11
Текст,
введенный отвечающим в диалоговое окно, открытое командой спроси,
рассматривается Лого Мирами просто как последовательность (цепочка) символов,
или, другими словами, как данное типа слово.
спроси [Как погодка?]
покажи ответ
очень
холодно
Часто
задают такие вопросы, на которые надо ответить "да" или
"нет". Например, на вопрос "Будем продолжать?" пользователь
может напечатать "да" или букву "д" или оставить пробел
после "да". В этом случае разумнее, при проверке ответа, использовать
датчик входит?, а не = . Следующая инструкция будет работать,
только если ответ - слово "да" без пробелов:
если ответ = "да [начинай]
Следующая
инструкция будет работать, если в ответе содержится буква "д":
если входит? "д ответ [начинай]
Для
получения навыков использования новых команд организуйте диалоговую программу
по проверке знаний таблицы умножения.
Пример
программы:
это
проверка
нт
“т1 [-200 100] [400 200]
нрш
18
пусть
“рез 0
спроси
[ Сколько получиться при умножении 6 на 7?]
если_иначе
ответ = 42 [ст пиши [правильно!] пусть “рез 1 + :рез] [ст пиши [неверно!]]
спроси
[Чему равно произведение 8 и 4?]
если_иначе
ответ = 32 [ст пиши [правильно!] пусть “рез 1 + :рез] [ст пиши [неверно!]]
спроси
[Сколько будет 7 умножить на 4?]
если_иначе
ответ = 21 [ст пиши [правильно!] пусть “рез 1 + :рез] [ст пиши [неверно!]]
спроси
[Чему равно 8 умножить на 7?]
если_иначе
ответ = 56 [ст пиши [правильно!] пусть “рез 1 + :рез] [ст пиши [неверно!]]
спроси
[Сколько получится при умножении 9 на 8?]
если_иначе ответ = 72 [ст пиши [правильно!] пусть “рез
1 + :рез] [ст пиши [неверно!]]
ст пиши [Ваш результат - ] пиши :рез пиши [Из 5
возможных]
конец
Структура этой программы проста, но отражает все особенности тестовых
диалоговых программ.
1-ая часть – организация поля деятельности – диалогового окна, и
обнуление счетчика очков “рез.
2-ая часть – опрос пользователя и обработка его ответов
3-я часть – сообщение результатов опроса.
Для выполнения зачетного упражнения составьте тест из 10 вопросов и в
конце теста оцените качество ответов по пятибалльной системе.
Он связан с использованием множества окон, каждое из которых содержит
очередной вопрос тестовой программы. Процесс создания самих окон лучше
осуществлять в режиме непосредственного, без командного общения с окном. С
помощью инструмента текстовых окон создать текстовое окно, ввести в него текст
вопроса и возможные ответы, отформатировать текст. Все текстовые окна лучше
после редакции сделать невидимыми, записав варианты правильных ответов. На этом
подготовительный этап программы закончен.
На втором этапе нужно использовать созданные окна для организации
диалога. Нужно запрограммировать «проявление» окна, организацию опроса и
обработку ответа. Этот процесс может выглядеть приблизительно так
Модуль «проявления» вопроса и получения ответа (:о –
правильный ответ)
это вопр :о
покажи_текст
спроси [укажите правильный ответ]
если_иначе
ответ = :о [верно] [неверно]
спрячь_текст
конец
Главный модуль, управляет последовательностью
задавания вопросов. “рез – кол-во правильных ответов.
это тест
нт “результат [100 100] [100 100]
пусть “рез 0
текст1,
вопр “а
текст2, вопр “б
…
оценка
конец
Вспомогательный модуль для обработки правильного
ответа
это верно
пусть
“рез 1 + :рез
результат, ст пиши [Верно!]
конец
Вспомогательный модуль для обработки неправильного
ответа аналогичен предыдущему, только баллы не добавляются.
это неверно
результат, ст пиши [Неверно!]
конец
Вспомогательный модуль для оценки ответа пользователя
это оценка
результат, ст пиши [Ваш результат -]
пиши :рез вставь [правильных ответов из 5.]
конец
Попробуйте создать тест по описанной методике. Включите в тест не менее 5 вопросов по любой теме.
Этот способ основан на применении новой конструкции – списка.
Как вы уже знаете, списки записываются в виде:
[<элемент1>....<элементN>].
Например:
пусть “вопр [|Сколько будет 5х7?| |Чему равно 8х4?|…]
В этом примере создается список с именем вопр, у которого
элементами являются вопросы.
Аналогично можно определить списки с вариантами ответов.
Конструкция второй программы отличается от первой тем, что для вывода
вопросов применяется не множество текстовых окон, а только одно окно, в которое
выводятся элементы списков.
На первом этапе дети должны создать в процедурах необходимые списки
вопросов и ответов.
Второй этап – создание программы.
Она может выглядеть приблизительно так.
Главный модуль. В нем определяются списки и
последовательность вопросов
это
тест
нт “текст [-250 150][500 300]
пусть “рез 0
пусть “вопр [|вопрос1| |вопрос2| … ]
пусть “отва [|ответ1| |ответ2| … ]
пусть “отвб [|ответ1| |ответ2| … ]
пусть “отвв [|ответ1| |ответ2| … ]
ст вопрос 1 “а
ст вопрос 2 “б
…
оценка
конец
Модуль, в котором задаются вопросы и получаются
ответы, :н – номер элемента списков, :о – правильный ответ
это вопрос :н :о
пиши элемент :н :вопр
пиши элемент :н :отва
пиши элемент :н :отвб
пиши элемент :н :отвв
спроси [Правильный ответ?]
если_иначе ответ = :о [правильно] [неправильно]
жди 10 ст
конец
Вспомогательные модули для обработки правильных и
неправильных ответов
это правильно
ст пиши [Верно!]
пусть “рез 1 + :рез
конец
это неправильно
ст пиши [Неправильно!]
конец
Вспомогательный модуль для итоговой оценки ответа
пользователя
это оценка
ст пиши [Ваш результат -]
пиши :рез вставь [правильных ответов из 5 возможных]
конец
Оформите тест по теме, отличной от той, которую уже рассмотрели в упражнении 1. Примените вторую методику со списками. В тест включите не менее 5 вопросов.
В Лого Мирах есть возможность создавать и редактировать свои собственные мелодии.
Для этого нужно открыть меню музыкального редактора с помощью кнопки . Нужно щелкнуть по этой кнопке, а потом – по листу проекта. После этого откроется меню музыкального редактора:
В этом редакторе можно выбрать инструмент, на котором будет исполняться мелодия, громкость и темп исполнения. Над клавиатурой имеется цветовая палитра, в которой над каждой клавишей есть цветные квадратики. Каждый цвет соответствует определенной высоте звучания. Длительности звучания меняются при выборе нужной длительности в меню длительностей справа над клавиатурой. Чтобы поменять длительности уже записанных в мелодии нот, выделите их мышкой и щелкните на нужную длительность.
Мелодия может содержать не более 150 нот. При ее составлении можно использовать сочетания клавиш Ctrl+C и Ctrl+V для копирования и вставки выделенных нот. Чтобы прослушать всю мелодию, щелкните на начало мелодии и нажмите кнопку воспроизведения. Если нужно прослушать фрагмент мелодии, выделите его мышкой и нажмите на кнопку воспроизведения.
Для того, чтобы можно было использовать созданную вами мелодию, нужно назвать ее. Имя мелодии должно содержать только одно слово. Если нужно больше одного слова, соединяйте их знаками «-» и « _».
В окне редактора есть еще два окошка переключателей, которые регулируют внешний вид пиктограммы мелодии на листе проекта. Если поставить галочку в окошке «С именем», то под знаком мелодии будет написано ее название. Если поставить галочку в окно «Видимый», то этот значок будет виден на проекте. При щелчке по этому значку вы будете слушать созданную мелодию.
Мелодию можно проиграть и написав ее имя в качестве команды для черепашки в поле команд или диалоговом окне, или в окне кнопки.
Если вы захотите отредактировать созданную и записанную мелодию, нажмите на пиктограмму глаза, а потом на музыкальный объект. При этом откроется диалоговое окно музыкального редактора вашей мелодии.
Одновременно может проигрываться не более одной мелодии.
Оформите тест из упражнения 3 музыкальными вставками при неправильном и правильном ответе. Для этого создайте две мелодии: одну в минорном настрое, другую – в мажорном. Вставьте их проигрывание в модули оценки ответа тестируемого.
По окончании тестирования можно проигрывать что-нибудь жизнеутверждающее.
Не забудьте о шрифтовом оформление текстов.
С помощью команды меню Файл - Возьми, можно импортировать рисунки, сделанные с помощью различных прикладных программ в проект ЛогоМиров. Кроме того, можно экспортировать картинки, созданные в ЛогоМирах, с помощью команды помни_рис.
Можно загрузить графический файл, созданный в каком либо графическом редакторе, на лист ЛогоМиров в качестве фона листа. ЛогоМиры могут загрузить графику в следующих форматах: BMP, JPEG, GIF, PCX и Targa.
1. Создайте картинку с помощью прикладной программы.
2. Сохраните ее в формате, который может быть прочитан ЛогоМирами.
3. Затем, в ЛогоМирах выберите команду Возьми - Рисунок в меню Файл.
Служит для загрузки рисунка на лист проекта.
возьми_рис (вр) путь-доступа 1 параметр
Загружает рисунок на текущий лист. Входной параметр - имя графического файла (созданного командой помни_рис или с помощью другой прикладной программы) в текущей папке, или полный путь доступа. Путь доступа начинается с имени жесткого диска. Обратные косые черточки используются для разделения имен каталогов, подкаталогов и файлов.
Примеры:
возьми_рис "картинка
возьми_рис "c:\проекты\картинка
Если хотя бы один из элементов пути доступа включает пробелы, весь путь нужно заключить в вертикальные скобки:
возьми_рис "|c:\проекты\моя картинка|
Другой метод состоит в использовании Буфера обмена Windows. Скопируйте рисунок в графической программе, перейдите в ЛогоМиры, щелкните на листе и выберите команду Верни в меню Редактор.
Вы можете сохранить графические изображения с листа ЛогоМиров с помощью команды помни_рис.
помни_рис имя-файла 1 параметр
По умолчанию, ЛогоМиры сохраняют графику в BMP-формате, если Вы хотите сохранить графическое изображение в другом формате (из допустимых ЛогоМирами), добавьте расширение к имени файла, например:
помни_рис "пейзаж.jpg
Сохраняет графическое изображение текущего листа в виде графического файла. Черепашки, кнопки, текстовые окна (даже прозрачные) и другие объекты не являются частью графического изображения . Штампованные формы и тексты, а также надписи являются частью графики. Напомню, что для получения штампа нужно нажать на черепашку инструментом штамп ( ).Входной параметр - имя файла (файл запишется в текущую папку).
Вы можете сохранить рисунок в любой папке компьютера, для этого нужно указать путь доступа. Путь доступа начинается с имени жесткого диска. Обратные косые черточки используются для разделения имен каталогов, подкаталогов и файлов.
Примеры:
помни_рис "картинка
помни_рис "c:\проекты\картинка
помни_рис "картинка.jpg
помни_рис "c:\проекты\картинка.jpg
Если хотя бы один из элементов пути доступа включает пробелы, весь путь нужно заключить в вертикальные скобки:
помни_рис "|c:\проекты\мои рисунки\картинка|
Попробуйте загрузить в качестве фона проекта картинку под названием «Домик» из сборника рисунков ЛогоМиров. Они находятся в папке
«Program Files\ИНТ\Логомиры 2.0\ Мультимедиа\ Рисунки». Дополните картинку штампами стандартных форм ЛогоМиров и сохраните картинку в формате JPG. Пришлите созданную картинку вместе с остальными заданиями.
Было: Стало:
При выполнении упражнения 1 вы, наверное, заметили, что загружаемый файл может не совпадать по размерам с полем проекта, в результате чего часть картинки может не поместится. Это легко можно исправить, если изменить размер проекта.
Служит для изменения размера листа проекта в пикселях (точках).
нов_размер_проекта (нрпр) список-чисел
Устанавливает размер для последующих проектов. Входной параметр - слово стандартный или список из двух чисел, задающих ширину и высоту проекта (листа) в пикселях. Чтобы команда нов_размер_проекта сработала, проект на экране должен быть абсолютно пустым. Минимальный размер проекта - 40 на 40 пикселей, максимальный размер проекта зависит от разрешения экрана (размера Рабочего стола). Стандартный размер проекта равен 744 на 426 пикселей при разрешении 800 х 600 и 592 на 322 пикселей при разрешении 640 на 480.
Примеры:
Выберите команду Новый Проект в меню Файл так, чтобы на экране был абсолютно пустой проект.
нрпр [300 300]
нов_размер_проекта "стандартный
Таким образом, чтобы поместить всю картинку из упражнения 1 на свой проект, надо было дать команду нрпр [640 480] , т.к. именно такой размер в пикселях имеет графический файл «Домик». Чтобы узнать количество пикселей на картинке можно открыть ее в любом графическом редакторе и посмотреть свойства изображения (image size).
Для создания новых форм можно использовать и уже готовые картинки. В ЛогоМирах можно импортировать любую картинку в формате BMP, JPEG, GIF, PCX и Targa.
Вы можете загрузить графический файл, созданный в какой-либо программе, в форму черепашки. Для этого нужно выполнить следующие действия:
1. Создайте картинку с помощью прикладной программы.
2. Сохраните ее в формате, который может быть прочитан ЛогоМирами.
3 Выполните команду загрузи_форму, указав в качестве первого входного параметра имя загружаемого файла с изображением, в качестве второго параметра – номер формы, в коорую будет загружен указанный рисунок. Например:
загрузи_форму "дракон 16
Другой метод состоит в использовании Буфера обмена Windows. Скопируйте нужный рисунок в прикладной программе, перейдите в ЛогоМиры, откройте меню форм, щелкните по форме которую нужно изменить и выберите команду Копируй в меню Файл.
Аналогично можно и экспортировать формы. Можно сохранить форму черепашки с помощью команды помни_форму. Узнайте номер формы, которую Вы хотите сохранить и в Поле команд напечатайте команду, аналогичную следующей:
помни_форму "луна 1
По этой команде в файл с именем «Луна» запишется рисунок формы номер1.
По умолчанию, ЛогоМиры сохраняют форму в BMP-формате, если Вы хотите сохранить ее в другом формате (из поддерживаемых ЛогоМирами), добавьте расширение к имени файла:
помни_форму "луна.jpg 1
Другой метод состоит в использовании Буфера обмена Windows. Щелкните на форме, выберите команду Копируй в меню Файл, перейдите в графическую программу и вставьте содержимое Буфера обмена.
Итак, мы познакомились со следующими командами:
Команда |
Параметр |
Дйствие |
Сокращенная форма |
примеры |
загрузи_форму |
Имя файла и номер
формы |
В указанную форму загружается картинка из файла |
- |
Загрузи_форму
“мяч 40 |
помни_форму |
Имя файла и номер
формы |
Картинка из формы сохраняется в файле |
- |
Помни_форму “сова 42 |
При загрузке форм необходимо помнить, что стандартный размер картинки формы – 40х40 точек (пикселей). Можно делать формы, содержащие большее количество точек, но это сильно увеличивает объем файла проекта ЛогоМиров. Поэтому большой рисунок необходимо сначала уменьшить до приемлемого размера, а потом загружать в форму.
Для увеличения количества точек можно нажимать кнопки, регулирующие ширину и высоту формы в диалоговом окне формы.
Если в форму загружается рисунок, то размер формы автоматически становится равным размеру этого рисунка.
В любой коллекции картинок найдите файлы с изображениями рыбок. Можно использовать картинки, хранящиеся на приложенном диске. Обработайте эти файлы в каком-либо графическом редакторе, уменьшив их размер, и сохраните в папку ЛогоМиров в нужном формате. Импортируйте изображения рыбок и черепашек в ЛогоМиры в виде новых форм. Для того чтобы не мешал фон, сделайте его белым или сотрите ластиком. Тогда он станет прозрачным при отображении на проекте. В качестве фона проекта возьмите подходящий рисунок из коллекции ваших рисунков (можно поискать в Интернете). Измените при этом размер проекта в соответствии с размерами картинки фона. Оформите фон проекта новыми рыбками из коллекции присланных рыб. Должно получиться что-то в таком роде:
Этот проект будет заключаться в следующем.
С помощью команд Лого на свой проект нужно загрузить какую-нибудь картинку, затем установить на нее черепашек определенным образом и загрузить форму. После этого можно использовать новые формы для того, чтобы собирать рассыпанную картинку (что-то типа мозаики).
Выбор и обработка картинки для игры. Нужно подобрать картинку так, чтобы в ее размер можно было бы вписать определенное количество черепашьих форм. Например, если размер картинки 320 на 240 точек, то в такой картинке поместится 8 форм по горизонтали и 4 формы по вертикали, т.е. 32 формы (стандартный размер формы – 40х40 точек). Всего ЛогоМиры предусматривают 64 формы. Поэтому для такой картинки хватит стандартных форм. Если размер картинки намного больше, то придется увеличивать размер картинок в точках, что в свою очередь увеличит объем файла проекта ЛогоМиров.
Загрузка графического файла на лист проекта (размер проекта должен соответствовать размеру картинки).
Загрузка форм с помощью загруженной картинки.
Для этого надо по очереди устанавливать черепашку, превращенную в загружаемую форму в определенное место картинки, и загружать форму с помощью команды возьми_форму.
возьми_форму без параметров
Часть фона, которую покрывает черепашка, становится текущей формой черепашки. Команду возьми_форму нельзя использовать, если черепашка имеет исходную форму (0). Черепашка должна быть видна целиком на листе. Если вы хотите с помощью команды возьми_форму заменить пустую форму в наборе форм, установите у черепашки пустую форму до выполнения команды возьми_форму.
Пример:
Поставьте черепашку на фрагмент экрана, который Вы хотите скопировать.
нов_форма 43
возьми_форму
Если теперь сдвинуть черепашку, то можно увидеть, что она стала кусочком фона.
Для загрузки нужных форм, сначала очистите формы в меню форм. Для этого двойным щелчком по форме откройте диалоговое окно формы, а затем два раза нажмите на ластик в графическом меню. После этого все содержимое окна формы сотрется. Подготовьте таким образом для себя формы, например с 33 по 64.
После этого подготовительного этапа создайте процедуру, в которой организуйте цикл, выполняющий для каждой формы следующие действия:
Например, для маленькой картинки размером 200х120 точек текст процедуры может выглядеть так:
пусть "ф 33
пусть "х -100
пусть "у -60
повтори 3 [повтори 5 [ нов_х :х
нов_у :у нф :ф возьми_форму
пусть "к :к + 1 пусть "х
:х + 40 пусть “ф :ф + 1]
пусть "у :у + 40 пусть "х -200 ]
Предполагалось, что размер форм стандартный – 40х40 точек.
нов_у число 1 параметр
Изменяет У-координату активной черепашки. Х-координата не изменяется.
Примеры:
нов_у 100
нов_у -100
нов_у у_коор – 10
нов_х число 1 параметр
Изменяет Х-координату активной черепашки. У-координата не изменяется.
Примеры:
нов_х 100
нов_х -100
нов_х х_коор – 10
После того, как ваша программа загрузки форм проработает, в меню форм вы должны увидеть новые формы, являющиеся кусочками картинки.
Для этого сначала нужно наделать новых черепах в достаточном количестве с помощью инструмента . Затем создать список черепашек в процедуре, который пригодится для сборки рисунка. Например, так:
пусть "спчер [ч1 ч2 ч3 ч4 ч5
ч6 ч7 ч8 ч9 ч10]
После этих приготовлений можно превращать наших черепах в кусочки мозаики с помощью команды повтори и нф. К конкретной черепашке можно обратится так:
для
элемент :к :спчер
Здесь к – номер
элемента списка.
Теперь можно дать команду сг, чтобы стереть загруженную картинку с проекта. На проекте останутся ваши черепашки, превращенные в кусочки картинки.
Картинку уже можно собирать. Игра почти готова. На всякий случай предусмотрите еще две процедуры: одна будет собирать картинку из черепашек, а вторая – разбрасывать черепашек по проекту в случайном порядке. Например, так:
это россыпь
каждая [ нов_х -250 + 60 * сл 10 нов_у -150 + 60 * сл 50]
конец
Для сбора черепах повторите прием из этапа 3.
Черепахи в собранном и разобранном виде
Как только ЛогоМиры начинают свою работу, открывается новый лист с именем лист1. Именно на нем разворачиваются все действия проекта и живут черепашки. При желании можно создать проект, содержащий не один лист, а несколько. Для добавления нового листа можно либо воспользоваться пунктом ЛИСТЫ – НОВЫЙ ЛИСТ главного меню, либо дать команду НОВЫЙ ЛИСТ.
нов_лист (сокращенная
форма – нл)
Открывает новый лист. Текущий лист остается частью проекта и не сохраняется, пока не будет сделана попытка закрыть или сохранить проект. Листы, содержащиеся в проекте, перечислены в конце меню Листы. Чтобы перейти на другой лист, достаточно щелкнуть мышкой на нужный пункт в меню ЛИСТЫ.
Все листы при создании получают стандартные имена: первый – лист1, второй – лист2 и т.д. Но каждый лист в вашем проекте может носить какую-то смысловую нагрузку. Поэтому хотелось бы иметь возможность присвоить листу какое-то смысловое имя. Это можно сделать либо с помощью пункта Листы – Назови лист главного меню ЛогоМиров, либо с помощью команды НАЗОВИ ЛИСТ.
назови_лист “имя.
Например,
назови_лист “пещера
назови_лист “тридевятое_царство
Следует не забывать, что имя листа должно составлять единое слово. Применяйте символ подчеркивания, чтобы соединить слова, если название листа состоит более чем из одного слова.
Имя текущего листа отражается в первой строке листа проекта ЛогоМиров. Перейти на другой лист можно либо с помощью пункта меню ЛИСТЫ, либо командой
возьми_лист (вл) “имя-листа
Показывает на экране лист. Входной параметр – имя листа в
активном проекте. Для загрузки листа можно просто напечатать его имя.
Пример:
вл «разное
Появится содержимое листа “разное. Такое же действие
совершиться, если в качестве команды просто написать имя листа: разное.
При создании сложных многостраничных проектов работу над листами могут вести разные авторы в разных проектах. Собрать листы из разных проектов можно с помощью команды добавь.
добавь имя-проекта слово-или-список
Копирует в текущий проект листы, процедуры или формы из других проектов. Первый входной параметр – имя проекта в текущей папке. Это проект, из которого вы хотите что-то скопировать.
Чтобы изменить текущую папку, выберите Сохрани проект под именем … из меню Файл, найдите папку, в которой лежит проект с нужными листами, формами или процедурами и щелкните на Отмена.
Второй параметр может быть именем листа или списком листов, которые хотите скопировать. Если нужно добавить в проект все объекты одного типа, то второй входной параметр должен быть словом листы, программы или формы. Если вы добавляете в проект лист, названый так же, как один из листов текущего проекта, то добавленный лист получит порядковый номер (например, лист3).
Примеры:
добавь «старт «программы
Добавляет в текущий проект все процедуры проекта «старт».
Добавь «старт «листы
Добавляет в текущий проект все листы проекта «старт».
Добавь «старт «формы
Заменяет формы текущего проекта набором форм из проекта «старт».
Добавь «проект1 [лист1 лист2 ]
Добавляет отдельные листы.
Чтобы удалить лист из проекта, выполните из поля команд строку:
удали «имя листа
Внимание: Если вы удалили лист, его можно восстановить лишь в том случае, если проект сохранялся до этого. Выберите команду Открой проект в меню Файл. Когда появится окно Сохранение изменений до закрытия, щелкните на Нет.
Порядок, в котором появляются листы при повторном открытии проекта зависит от двух моментов:
Можно также написать процедуру startup, которая будет открывать любой нужный Вам лист. Эта процедура выполняется безусловно при загрузке проекта, а правила ее оформления такие же как и у других процедур. Надо только правильно написать ее имя. Пусть, например, в вашем проекте действия должны начинаться с листа «Мины». Тогда процедура startup будет выглядеть так:
это startup
вл “мины
конец
Наш будущий проект это игра, созданная в среде ЛогоМиры. Пусть в игре будет несколько уровней, но не менее 3-х. Каждый новый уровень оформлен на новом листе. Играющий должен пройти уровень, и только после этого он сможет перейти на следующий лист-уровень.
Игра будет состоять в следующем. На листе проекта вы должны нарисовать «минное поле», где будут спрятаны мины-черепашки. Спрятать их можно очень просто – поменять их цвет на цвет фона. Главный герой должен пройти по полю, не взорвавшись. Взрыв происходит, если он «наступит» на черепашку-мину. Когда герой дойдет до безопасного места, программа должна поздравить игрока и перейти на следующий уровень.
Для создания этой игры создайте в листе программ несколько процедур.
Назначение
этой процедуры – создание списка черепашек-мин и их расстановка по полю. В
лекции 4 уже обсуждался вопрос о «разбрасывании» случайным образом черепашек. В
этом проекте нужно сделать все тк же, только учесть, что черепашки
разбрасываются не по всему проекту, а только в средней его части (параметры
команд нов_х и нов_у). В этой же процедуре главный герой
появляется перед минным полем (команда нм и нф). Задача играющего
угадать, в какое место установить героя перед минным полем, чтобы он при
движении не попал на мину. Для большей зрелищности в команде нф можно
указать не одну форму будущего героя, а несколько (в виде списка). Тогда при
выполнении команд движения, черепашка будет менять формы по очереди из этого
списка. Например, если указать команду нф [19 20 21], то по полю будет скакать лошадь.
В этой процедуре будет осуществляться движение главного героя по минному полю. При этом нужно постоянно контролировать, не попал ли герой на мину. Это можно сделать с помощью датчика КОСНУЛИСЬ?
Служит для индикации касания двух черепах
коснулись? черепаха1 черепаха2 2 параметра
Сообщает да при соприкосновении двух указанных черепашек. Сообщает нет, если черепашки не соприкоснулись или одна из них невидима
Примеры:
покажи коснулись? "ч1 "ч2
да
жди_пока [коснулись? "ч1 "ч2]
Для нашего случая лучше применить команду ЕСЛИ с датчиком КОСНУЛИСЬ?, чтобы определить момент касания. Для удобства в процедуре можно использовать и команду МНОГО РАЗ.
много_раз диапазон список-инструкций
Выполняет список-инструкций для каждого значения из диапазона. Первый входной параметр - это список, состоящий из имени временной переменной и числа, являющегося верхней границе диапазона (нижней границей диапазона является 0). Второй входной параметр - это список инструкций, который использует переменную, входящую в первый параметр. В нижеследующем примере инструкция нов_цвет устанавливает цвет для каждого значения к от 0 до 7.
Примеры:
много_раз [ к 8] [ нов_цвет :к жди 5]
Следующая инструкция печатает числа 0, 1, 2, ..., 9 в Поле команд.
много_раз [к 10] [ покажи :к]
0
1
2
...
Эту команду можно применить, например, для проверки касания черепашек, используя их список, созданный в процедуре СБРОС. Например, так:
много_раз [к 4] [если коснулись? "ч1
элемент 1 + :к :череп [взрыв останов]]]
При выполнении этой строки будет проверяться касание главного героя (черепашка ч1) с минами (элементы списка “череп). Если касание происходит, то вызывается специальная процедура – взрыв и затем все процессы останавливаются. Для того, чтобы не считать, сколько шагов должна сделать черепашка, прежде, чем доберется до безопасного места, можно нашу процедуру сделать рекурсивной. Она может, например, выглядеть так:
это игра
ч1, вп 2 жди 1
много_раз [к 4]
[если коснулись? "ч1 элемент 1 + :к :череп [взрыв останов]]
игра
конец
В этой процедуре все наши черепашки должны поменять форму. Главный герой – погибнуть, а мины – проявиться. После этих превращений пользователь должен прочитать сообщение (команда сообщи) о том, что он подорвался на мине.
Эта процедура создается для программирования цвета. Правая часть проекта будет иметь какой-то основной цвет фона. Вот это цвет и надо запрограммировать. Для этого щелкните два раза по нужному цвету в меню графического редактора. При этом появится диалоговое окно программирования цвета:
При программировании цвета щелчок_мышки представляет собой список инструкций, который выполняется, когда Вы щелкаете на цвете мышкой. Правило_черепашки - это список инструкций, который начинает работать, если черепашка "наступит" на данный цвет. Режим ("при смене" или "постоянно") касается только правила_черепашки.
Если Вы запрограммировали тот или иной цвет, то автоматически программируются таким же образом все цвета данного ряда (оттенки). Например, программирование красного цвета (номер 15) автоматически программирует все цвета от 10 до 19.
В нашем случае в поле для черепашки мы должны задать название процедуры, срабатывающей при касании черепашки зеленого цвета – ПРОШЕЛ.
Не забудьте в этой процедуре сообщить игроку, что он прошел данный уровень и остановить процессы. Игрок также должен переместиться на другой уровень игры (следующий лист).
Эта процедура будет выглядеть приблизительно так:
это прошел
сообщи [Вы прошли первый уровень! Поздравляю!]
жди 5
вл "лабиринт
останов
конец
Игру этого уровня попробуйте создать самостоятельно, используя материал лекции 3 для средней группы. Смысл игры – используя заранее оговоренные кнопки управления черепашкой, пройти по узкому ходу лабиринта, не коснувшись стен. Иначе включится сигнализация, и выход из лабиринта закроется. Для того, чтобы играющие знали, какие кнопки использовать, напечатайте инструкцию. Для индикации прохождения лабиринта используйте черепашку в виде ворот «выход». Условием прохождения уровня будет касание героя игры этой черепашки-ворот. При касании героя «стен» предусмотрите сигнал тревоги (звуковой файл) и надпись, сообщающую, что произошло. Это можно сделать программированием цвета, в который окрашены стены.
При касании черепашки-индикатора предусмотрите поздравление игроку и выход на третий уровень.
Эта игра построена на основе мозаики из лекции 4. Вам надо немного дополнить свои программы.
Соберите мозаику и ограничьте область ее построения прямоугольником, чтобы игрок знал, куда устанавливать кусочки мозаики. Теперь при разбрасывании кусочков можно определить, где их собирать.
При ручном сборе мозаики трудно поставить кусочки совершенно точно. Поэтому предусмотрите процедуру «равнять». Цель этой процедуры – выровнять координаты черепашек по целым величинам. Для этого лучше использовать команду округли.
округли число 1 параметр
Сообщает результат округления числа. Числа, оканчивающиеся на 5, округляются до большего числа.
Примеры:
покажи округли 3.3333
3
покажи округли 3.5
4
Эта процедура может выглядеть примерно так:
это равнять
каждая [
нов_х 20 * округли х_коор / 20
нов_у 20 * округли у_коор / 20]
конец
Для проверки правильности сбора мозаики создайте процедуру «верно?». Цель этой процедуры – проверить правильность установки кусочков мозаики. Так как у каждой черепашки-кусочка есть свое точно определенное место, то для проверки правильности их расстановки нужно проверить координаты каждой из них. Если хотя бы одна координата неверная, значит собрали мозаику неправильно. В ниже приведенном примере сверяются координаты черепашек, расположенных в прямоугольнике с координатами (–200 –100) - (40 –40). При этом размеры черепашек-кусочков – 60х60 точек. Для индикации ошибки служит переменная “ф. Если все верно, то после просмотра координат черепашек она не поменяет своего значения и будет равна 0. Если что-то не так, то ее значение станет равным 1.
это верно?
пусть "ф 0
пусть "х -200 пусть "у -100
много_раз [к 4] [для элемент :к + 1 :спчер
если или не х_коор = :х не у_коор = :у [пусть "ф 1] пусть "х :х + 60]
пусть "х -200 пусть "у -40
много_раз [к 4] [для элемент :к + 6 :спчер
если или не х_коор = :х не у_коор = :у [пусть "ф 1] пусть "х :х + 60]
если :ф = 1 [сообщи [Вы собрали мозаику
неверно!]]
если :ф = 0 [сообщи [Вы собрали мозаику
верно!]]
конец
В этой процедуре считается, что ранее уже создали список черепашек “спчер.
Для облегчения общения с программой создайте кнопки «россыпь», «равнять» и «верно?».
Замечание.
Прежде, чем проверять правильность сбора мозаики, нужно подравнять черепашек (процедура РАВНЯТЬ)!