Штумоз : другие произведения.

Визуальное программирование на примере Скретч Книга первая

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:
  • Аннотация:
    Это Конец первой части книги,книга не дописана, но поскольку текстовый редактор не поддерживает такой обьем,То дальше будет выкладываться продолжение с часть вторая. И только когда обе части будут дописаны будут соединяться в одну книгу. Позднее будеть разработана еще одна книга,которая будет упрощенной версией первой книги и будет что то в виде Методички по программированию на Скретч. Данная книга изначально была черновиком. Это Черновик Автора книги который не имея знаний изучал самостоятельно визуальное программирование, Черновик рос в обьемах и дорос до книги. Это книга как имено не имея не каких знаний -Автор научился программировать . При этом это было настолько легко -что это стало книгой где пошагово описаны процесы изучения автором как он это сделал и как он к этому пришел .

  
  
  
  

  
 []
  
  
  
     
 []
  
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
 []
  
     
  
Лицензия CC BY - NC - ND IGO
  
Самиздат 2019 г. Штумоз™No
  
Оглавление
  
     
  
     
  
     Содержание
  
  
     Ведение.
  
  
     1. Что такое Программирование?
  
     2. Языки программирования .
  
     3. Авторское право.
  
     4.Приступая к работе .
  
  
     5. Притча о драгоценном кольце.
  
     6.Урок номер 1.Движение .
  
  
     7. Урок номер 2 Игровой контроллер.
  
     8. Взаимодействие спрайтов.
  
     9. Смена Фона.
  
     10. Создание блоков через Другие Блоки
  
  
     11. генератор чисел
  
     12.Движение по Кубику
  
     13.
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     Ведение
  
     Что такое Программирование? — это Заданная нами последовательность действий ,набор инструкций и команд для объекта, среды, в результате которых мы получим желаемый результат в виде выполненных действий объектом или средой , согласно заданного нами алгоритма программ или набором команд . Другими словами- это Реализация нашего сценария, путем манипулирования через действия, алгоритм, программу ,инструкцию в результате чего нами будет получен заданный результат, который мы задали или спрогнозировали и ожидали получить. Если сказать проще
  
     -Это когда мы объясняем машине что ей нужно сделать для нас, таким образом , что бы она поняла и могла выполнить наш запрос. То есть разговор с машиной, на понятном для ее языке
  
     Машинное программирование-это выполнения заданной программы машиной.
  
     Что такое программа?- это алгоритм. Алгоритм - это последовательность действий где мы линейно идем от одного действия к другому . Сценарий -это подробное описание действий и условий в которых совершаются действия.
  
     Допустим мы хотим что бы Шимпанзе нажала на кнопку, если она выполнит это действие -то получит банан для мотивации данного действия.
  
     Задача; запрограммировать Шимпанзе выполнить действие -нажать кнопку, путем вырабатывания у нее рефлекса, используя банан -как поощрение к действию.
  
     Сценарий действия . Шимпанзе выполняет действие нажать кнопку, после чего следует условие, если условие верно - это действие выполнено, то объект Шимпанзе получает банан.
  
     Другой пример
  
     Собака ,мы хотим что бы она пролаяла 5 раз когда мы покажем ей 5 пальцев , тогда дрессируем(программируем ) собаку на определенное действие ,закладываем в нее программу
  
     Пишем сценарий.
  
     Мы показываем собаке 5 пальцев, если это условие выполнено- то собака пролает 5 раз -это простейшая программа. Программа - это набор последовательности действий, условий, в результате которого достигается выполнение заданного вами действия ,сценария ,алгоритма.
  
     Программирование -возникло задолго до появления компьютеров, первое программирование выглядело иначе, и работало на других принципах; на механике, гидравлике, энергии ветра, воды или пара. Оно строилось на примитивных таймерах в виде песочных часов, на грузах, противовесах, ременных передачах.
  
     Две тысячи лет тому назад, Гeрoн открыл эпоху Механизации, он был прародителем первых машин и программ.
  
Штумоз™No
  
     
  
     он создавал разные машины, построил Театр — в котором декорации могли появляться на сцене и исчезать, когда это необходимо.
  
      Он первым изобрёл автоматические двери, программируемые устройства : вал со штырьками с намотанной на него верёвкой.
  
     Это можно рассматривать как первое программирование, через простые и сложные механизмы механики..
  
      Первое упоминание о часах с кукушкой восходит к 1629 году, когда аугсбургский аристократ Филипп Хайнхофер преподнёс подобные часы Августу, курфюрсту Саксонии.
  
     Часы с кукушкой это механическое программирование, где при условии что стрелки станут особым образом - кукушка выполнит программу и совершит какое то действие, то есть покажется и звуковым сигналом оповестить о времени на которое указывать стрелки часов .
  
     что является наглядным примером программирования
  
     
  
      Шарманка - музыкальная механическая машина , для воспроизведения музыки.
  
     запись программы выполнялась на специальные валики с кулачками, диски и
  
     ленты, первые перфокарты .Когда Шарманщик крутил ручку, крутился барабан, звучала запрограммированная мелодия которая записывалась на такой барабан в виде рядов колышков которые когда двигались цепляли зубья гребенки издавая звук . Музыкальные шкатулки существуют и в наше время.
  
     
 []
  
 []
  
 []
  
  
     Таким образом программирование возникло еще задолго до появления электронно-вычислительных устройств. Первым же счетным устройством считаются счеты и счетные палочки ,которые дошли до наших дней и все еще имеют область и сферу применений .
  
     
  
Штумоз™No
  
Языки Программирования.
  
      Что бы человек мог общаться с компьютером -нужно знать язык на котором общается машина . Точно так же как человек из одной страны не может понять человека из другой если у них разные языки, так и машина не может понять человека, поскольку она понимает только язык единиц и нулей ,который называется двоичный код.
  
     
  
     Все данные поступают в компьютер представлены в виде единиц и нулей, каждому из которых соответствует одно состояние электропровода: единицам - высокое напряжение, нулям - низкое или же единицам - наличие напряжения, нулям - его отсутствие. Преобразование данных в нули и единицы называется двоичной конверсией, а окончательное их обозначение - двоичным кодом.
  
     Когда двоичный код используется для обозначения букв алфавита или пунктуационных знаков, используют кодовые таблицы, в которых указано, какой код какому символу соответствует.
  
     
 []
  
  
     
  
     
  
     
  
Штумоз™No
  
      такие таблицы носят Название «ASCII» .Таблица была разработана и стандартизована в США, в 1963 году.
  
      Поскольку процесс вода данных в виде нулей и единиц очень трудоемкий и медленный, для упрощения этого процесса ,что бы человек и машина легче понимали друг друга и были созданы языки программирования .
  
     Человек который пишет программу пишет ее на языке понятным человеку, а потом программа-компилятор переводит все в машинный код, запуская работу программы на языке понятном компьютеру.
  
     Первый язык высокого уровня был Фортран создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Он предназначался для научных и технических расчетов. Это был достаточно простой и удобный язык ,который работал на первых БК-0010 , под управлением ANDOS .
  
     позднее было разработано много языков такие как Бейсик ,Turbo Pascal, C который был улучшен до С++, C# -си шарп ,на этом языке работают разработчики Unity- это бесплатный игровой движок на котором делают игры, Java , и другие языки...
  
     Время шло и появились более удобные языки программирование визуальные. Визуальное программирование— способ создания программы для ЭВМ путём манипулирования графическими объектами вместо написания её текста.
  
     Таких языков было так же много ,это App Inventor -среда визуальной разработки приложений, требующая от пользователя минимальных знаний программирования. Первоначально разработана в Google Labs, после закрытия этой лаборатории была передана Массачусетскому технологическому институту. Sketchware— Среда визуальной разработки приложений для Android. Дракон-схемы — графический язык программирования.
  
      Scratch -визуальная событийно-ориентированная среда . На базе этой среды мы и будем рассматривать программирование блоками.
  
     Есть целое движение которое называется Час кода -которое знакомит с визуальным программированием.
  
     Мной выбран язык Scratch ,он выбран потому что в отличие от всех других точно таких же по сути языков имеет перевод на 45 языков мира . Его программа бесплатна ,он более удобна чем другие по количеству инструментов, и в нем можно делать программы уже через несколько занятий. есть такой же язык tynker.
  
     Важно понять что мы должны не учиться программировать ,а понять принцип самого программирования, основы и ее суть. Программировать можно используя механику ,это не обязательно электронно-вычислительная среда. Поняв принцип -вы сможете программировать.
  
      Между программировать и делать конечный продукт вроде игр -есть большая разница.
  
     Так как это несколько профессий. Художник рисует, музыкант пишет музыку ,сценарист пишет сценарий ,а программист все это соединяет вместе -что бы картинка ожила и двигалась.
  
     
  
     
  
Штумоз™No
  
     
  
      Авторское право.
  
     
  
     Авторское право – это юридический термин, используемый для описания прав, которыми обладают авторы на свои литературные и художественные произведения. Авторское право распространяется на широкий круг произведений: книги, музыкальные произведения, произведения изобразительно искусства, скульптуру и кинофильмы, компьютерные программы, базы данных, рекламу, карты и технические чертежи.
  
      Почему это важно? потому что делая какую то игру ,программу -вы становитесь владельцем этой программы, следовательно обладаете всеми правами на результат своего творчества . Можете ее продать, подарить и распоряжаться по своему усмотрению.
  
      Зная свои права ,вам будет проще отстоять свое право собственности, которая защищается Законом.
  
     Авторское право на произведение возникает в результате факта его создания. Для возникновения и осуществления авторского права не требуется регистрация произведения или любое другое специальное его оформление, а также выполнение каких-либо других формальностей.
  
      Лицо, имеющее авторское право (автор произведения или любое другое лицо, которому на законных основаниях передано авторское имущественное право на это произведение), для оповещения о своих правах может использовать знак охраны авторского права. Этот знак состоит из следующих элементов:
  
     латинская буква "c", обведенная кругом, - (изображение символа No);
  
     имя лица, имеющего авторское право;
  
     год первой публикации произведения.
  
     Знак охраны авторского права проставляется на оригинале и каждом экземпляре произведения.
  
     Если произведение опубликовано анонимно или под псевдонимом (за исключением случая, когда псевдоним однозначно идентифицирует автора), издатель произведения (его имя или название должны быть указаны на произведении) считается представителем автора и имеет право защищать права последнего. Это положение действует до того времени, пока автор произведения не раскроет своего имени и не заявит о своем авторстве.
  
      Субъект авторского права для удостоверения авторства (авторского права) на обнародованное или не обнародованное произведение, факта и даты опубликования произведения или договоров, касающихся права автора на произведение, в любое время в течение срока охраны авторского права может зарегистрировать свое авторское право в соответствующих государственных реестрах.
  
     Важно так же отметить что вы должны иметь возможность доказать что именно вы являетесь автором данной программы или произведения, или другой работы вашей интеллектуальной собственности .
  
      Потому если вы делаете какую то программу, делайте ее изначально на бумаге , запишите в тетрадке, и только потом делайте в интернете ,или обще доступных ресурсах.
  
      Так как Экспертиза всегда может установить дату когда была сделана запись.
  
     Сам интернет -не может быть таким доказательством .Есть сайты которые без проблем поделывают дату размещения материала.
  
      Штумоз™No
  
     
  
     Важно понимать что при желание все ваши работы могут исчезнуть со всех сайтов ,для корпорации это нечто не стоит, и тогда у вас не будет доказательств.
  
      Потому материал и дата указанная в интернете -являются сомнительным доказательством, точно как и любую дату электронного документа легко подделать. Поскольку в суде легко это доказать-то доказательство даты указанной в интернете может быть не принято к рассмотрению, в веду того что оно не доказывает реальную дату создания .
  
      Потому всегда лучше делать любую программу на листике в тетрадке, так вы можете защитить свою работу - потому что вам будет легко сделать экспертизу. Свою работу можно защитить с помощью нотариуса, нотариально ее оформив.
  
      Простейшим способом защиты служит отправка этой работы самому себе почтой ,так как штамп почты ,и описание вложения содержимого конверта будут довольно убедительным доказательством, а штамп содержит дату .
  
      Что бы утвердить свое право вам нужно зарегистрировать свое право в Государственном реестре.
  
      Эта важно для того ,что бы кто то не добросовестный ,не обвинил вас в плагиате той работы -которая является результатом вашего творчества.
  
      Даже такие гиганты как Facebook, не брезгуют кражей вашей собственности, ваших персональных данных ,потому это действительно важно -мир не является чем то таким где все играют по правилам, где торжествует справедливость, правда, честность. Если ваша работа стоящая и стоить около 100 000 долларов, скорее всего ее попытаются присвоить бесплатно, а вас будут обвинять в краже.
  
      Потому это важно уметь отстоять свои права, а для этого вы их должны знать ,или знать хотя бы куда обратиться для их защиты.
  
      Потому вы должны быть готовы всегда отстаивать право своей собственности. Тут важно даже не столь право, как честность своего имени ,репутация.
  
      Репутация это то что нарабатывается годами и то что может рухнуть за один день репутация -это очень важный аспект если вы хотите вести сделки с другими людьми и иметь партнеров .
  
      Вот почему важно знать свои права, это не только авторское право, вы должны знать и свои гражданские права.
  
      Так же важно осознать и то что чужая работа -так же объект чего то права, и является чей то собственностью.
  
      То есть рисунок ,музыка, фотография , программа, книга - это может быть объектом чужого права и чужой собственности.
  
      Но существуют бесплатные лицензии, например фото банк https://pixabay.com. распространяющие работы по лицензии CC0 Creative Commons Бесплатно для коммерческого использования ,Указание авторства не требуется. Потому вы можете брать фотографии и рисунки бесплатно и использовать их в своих работах с такой лицензией. https://www.youtube.com/audiolibrary/music на этом ресурсе вы можете брать бесплатно музыку, выбирайте только ту ,в которой не требуется ссылка на автора.
  
      Человеку не так просто стать профессиональным художником, музыкантом, режиссером
  
     люди живут относительно не долго ,если потратить по 5 лет на учебу то в итоге мы затратим 20 лет жизни ,которые нельзя будет вернуть даже за все сокровище мира.
  
      Нужно принять во внимание что нам может быть не интересно учить что то другое и в этом нет надобности. Вы должны заниматься тем -что нравиться вам. Потому нам придется для наших задач или что то делать самим, или брать что то по свободной бесплатной лицензии или просить кого то или нанимать профессионалов за деньги, они сделают это намного лучше и быстрее, но мы должны научиться давать им задание ,что бы они могли это сделать .
  
      Штумоз™No
  
Приступая к работе
  
     
  
      Что бы начать творить, создавать вам нужны инструменты. Что бы начать рисовать вам нужен листик и ручка, если вы хотите играть вам нужен музыкальный инструмент .
  
     Что бы программировать вам нужна среда ,программа в которой можно это делать . На самом деле вам так же было бы достаточно листика и ручки, этого достаточно что бы написать программу, первые программы так и писались, но что бы работать с визуальной средой нам нужна программа. Скретч это проект группы Lifelong Kindergarten в MIT Media Lab. Среда распространяется бесплатно. Кроме среды вам не чего не нужно.
  
      Программу мы скачиваем по адресу. https://scratch.mit.edu/download на выбор Scratch 2.0 Desktop или версию 3.0 выбираете самостоятельно .
  
      подразумевается что компьютер у вас есть ,но вы можете программировать и на бумаге .
  
     Когда вы скачали и установили программу ,после того как вы ее запустите
  
     Версия 2.0 выглядит вот так
  
     
 []
  
  
     версия 3.0 вот так
  
     
 []
  
  
     каждый сам выбирает какая версия ему удобнее ,мне удобнее версия 2.0 ,но для меня нету разницы в какой версии работать . так как работая даже с одной версией вы сможете сделать все то же самое в другой . На сайте вам регистрироваться не нужно. Я объясню почему.
  
Штумоз™No
  
     Почему не нужно регистрироваться на сайте? Из за лицензии
  
     4.3 All user-generated content you submit to Scratch is licensed to and through Scratch under the Creative Commons Attribution-ShareAlike 2.0 license. This allows others to view and remix your content. This license also allows the Scratch Team to display, distribute, and reproduce your content on the Scratch website, through social media channels, and elsewhere. If you do not want to license your content under this license, then do not share it on Scratch.
  
     4.3 Весь пользовательский контент, который вы отправляете в Scratch, лицензируется для и через Scratch по лицензии Creative Commons Attribution-ShareAlike 2.0 такая лицензия требует от производного произведения быть свободным. Это позволяет другим просматривать и ремикшировать ваш контент. Эта лицензия также позволяет команде Scratch отображать, распространять и воспроизводить ваш контент на веб-сайте Scratch, в социальных сетях и в других местах. Если вы не хотите лицензировать свой контент по этой лицензии, не делитесь им с нуля.
  
      Это значит что Вас лишают ваших авторских прав ,договор написан на английском и не переведен на другие языки. Так же это спорный Пункт. Мной было выражено не согласие по этому пункту так как он напрямую нарушает Конституцию, и мои права. Потому мной эти условия были неприняты. Это одна из причин почему эта книга родилась на свет. Разногласия с МТИ. Мое мнение , нельзя учиться на чужом коде -не получив разъяснения что он делает ,лишь просматривая его , потому я считаю код должен быть закрыт ,вместо этого дать любому желающему сохранять свою работу в *. jad, ехе, apk , HTML5 и Flash сейчас используют формат *sb.2 *sb.3 и самостоятельно выбрать лицензию распространения. Позиция Института крайне сомнительна ,ведь все что они делают- это не дают свободно пользоваться программой ,а привязывают ее в Целях платного обучения рекламируя свой институт, в примерах нету описания что делает и как работает код.
  
      Вас просто лишают прав и за это формально в замен не чего не дают.
  
      На чужом коде ,без пояснения как работает этот код, что он делает вы не сможете не чему научиться ,если вы уже понимаете как он работает -то учиться уже не чему. Если вы будете смотреть как работает чужой код, то вы станете подражателем. Многие заявляют что перерисовав чужую картину можно научиться рисовать- это обман ,Если вы хотите научиться рисовать -нет смысла перерисовывать чужое ,так вы станете всего лишь подражателем. Во круг полно предметов которые можно рисовать. Рисуйте то- что видите.
  
      Каждый из Вас неповторимый Художник ,если вы можете провести карандашом по листу бумаги- это действительно так . У меня были сомнения ,но после знакомства с Квадрат Малевича, они были развеяны полностью. Вы можете нарисовать ромб? эта фигура более сложная, Вы превзошли великого Художника. Посмотрите фовизм, кубизм, футуризм, экспрессионизм, абстракционизм, сюрреализм, акционизм и вы сразу поймете что вы Непревзойденный художник.
  
      Вами пытаются манипулировать через общественное мнение, разместите вашу программу на сайте и если вы это сделаете - то получите одобрение окружающих .
  
     Очень сомнительная выгода. скорее всего вашу работу никто не увидит, так как сайт использует пару студий которые тоже пытаются заработать на том -что бы вам что то продать .Далее среди тех кто есть на сайте -нету истинных Экспертов .
  
     
  
     
  
Я расскажу вам притчу.
  
     
  
     
  
     
  
Штумоз™No
  
притча о драгоценном кольце
  
     
  
     Как-то раз молодой парень навестил Мудреца и сказал ему:
  
     - Мудрец, будь добр, помоги мне! Все вокруг говорят мне, что я ничтожество и недотепа, который ни на что не способен. Мне совершенно не хочется жить! Только ты можешь помочь мне!
  
     Мудрец посмотрел на парня и поспешно ответил ему:
  
     - Прости меня, но у меня есть одно важное дело и я никак не могу решить твою проблему сейчас. Поразмыслив несколько секунд, Мудрец добавил:
  
     - Но если ты окажешь мне свою помощь в моем деле, то я любезно помогу тебе с твоей проблемой.
  
     - Хорошо, с радостью, великий Мудрец, - невесело ответил юноша. Его смутило, что даже сам Мудрец отодвинул его на задний план.
  
     - Отлично, - возгласил Мудрец и быстренько снял маленькое колечко, на котором красовался яркий камень.
  
     - Возьми моего вороного коня и поспеши на рынок! Задание для тебя нелегкое. Мне нужно выплатить долг, поэтому продай мое кольцо. Но есть одно условие. Постарайся получить за него как можно больше и не отдавай его ниже, чем стоимость золотой монеты. Только поскорее возвращайся!
  
     Молодой парень взял кольцо и поскакал на рынок. Приехав на рынок, юноша стал предлагать потенциальным покупателям кольцо. Было много заинтересованных, но как только речь заходила о цене, все мигом теряли интерес. Некоторые даже пытались подшучивать над парнем. Один старый торговец сказал ему:
  
     - Золотая монета за такое кольцо - это слишком много! Бери за это кольцо медную, ну или уже на крайний случай серебряную монету.
  
     Ответ старца очень огорчил молодого человека, так как Мудрец велел ни в коем случае не опускать цену. Поздно вечером парень возвращался домой ни с чем. Сильно подавленный, он вошел в дом к Мудрецу и молвил:
  
     - Я не смог выполнить твое задание, Мудрец! На рынке мне сказали, что лучшее, что я мог бы получить за это кольцо - это серебряная монета. Это кольцо не стоит золотой монеты! Но я не мог продать его, так как ты приказал мне не соглашаться на такое предложение.
  
     - Только что ты произнес истину, сам того не понимая. Перед тем как продать кольцо, нужно узнать его настоящую стоимость. В этом тебе поможет только ювелир. Отправляйся к нему и спроси, сколько он готов предложить тебе за это кольцо с камнем. Но не вздумай отдавать ему его ни за какую сумму, а сразу возвращайся ко мне. Парень сел на коня и быстро поскакал к дому ювелира.
  
     Ювелир долго и внимательно рассматривал кольцо, а затем сказал:
  
     - Могу предложить только 57 золотых монет сейчас. Но если ты дашь мне две недели, я готов заплатить за него 70 монет.
  
     Юноша сильно удивился и радостно поскакал назад домой к Мудрецу, чтобы рассказать ему новость. После того как Мудрец послушал рассказ парня, он ответил:
  
     - Мой дорогой друг, присядь сюда! Пойми! Ты и есть то же самое дорогое кольцо! Оценить которое может только настоящий эксперт. Зачем же ты тогда ходишь по рынку и ожидаешь, что это сделает какой-нибудь скупой торговец?
  
     
  
     Этот сайт ,на нем такие же пользователи как и Вы -чего стоит их похвала? не важно одобряют они что ты делаешь или нет.
  
Штумоз™No
  
     
  
     Потому выгоды от регистрации нету, а вред есть .Мы теряем реальное авторское право, за чье то одобрение или не одобрение ,ради призрачной похвалы За личный успех или не удачу.
  
      Но это лишь мое мнение ,оно не может быть обязательным или не обязательным. Как знать может я преследую тоже какие то личные цели? Потому любое решение нужно принимать Самостоятельно ,подумав обдумав и приняв его, так как кроме Вас за принятое вами решение никто ответственности не несет.
  
     Программу можно и не устанавливать ,а работать напрямую с ней через сайт https://scratch.mit.edu/ и нажав кнопку исследуй вы попадете в саму программу.
  
     
  
      Урок номер 1.Движение
  
     
  
     Итак что такое движение?
  
     Механическое движение называют изменение положения тела в пространстве с течением времени относительно других тел. Исходя из определения, факт движения тела можно установить, сравнивая его положения в последовательные моменты времени с положением другого тела, которое называется телом отсчета. Так, наблюдая плывущие по небу облака, можно сказать, что они изменяют свое положение относительно наблюдателя, земли и других объектов, но есть теория относительности потому в определенной точке координат облака неподвижны.
  
      Зачем это нужно знать?
  
     для того что бы реализовать простую программу мы должны знать что такое система координат и что такое движение . Зная это мы можем создавать Иллюзию движения
  
     
 []
  
Штумоз™No
  
     
  
     поскольку движение это перемещение относительно какой то точки, потому объект может находиться и на месте, а окружение двигаться и относительно окружения объект будет передвигаться.
  
     СИСТЕМА КООРДИНАТ, система отсчета, используемая для определения положения точки в пространстве. Точку можно определить при помощи чисел, представляющих собой расстояния или углы, измеренные от точки до точек или прямых отсчета.
  
      имея представление об этом мы можем описывать действие , из какой точки и в какую должна переместиться точка.
  
     
  
     итак открываем программу scratch , начнем с того что удалим кота нажав на крестик спрайта.
  
     
 []
затем нажмем на иконку снизу, правый нижний угол ,и выведем панель инструментов ,выберем кисточку.
  
     при выборе инструмента у нас откроется вот такое меню. Теперь мы можем нарисовать
  
     
 []
  
  
     
  
     любую фигуру, рисунок ,который мы сможем использовать для наших манипуляций.
  
     
  
Штумоз™No
  
Я нарисую круг . и сделаю заливку. Размер шара можно уменьшить с помощью окошка .
  
     Можно сделать видимым его или скрыть нажав иконки глаз. Направление показывает в какую сторону смотрит шар: х,y показывают его место нахождение .
  
     
  
     
 []
  
  
     А теперь мы заставим шар переместиться .Для этого я установлю координаты х,y на ноль
  
     и перейду во вкладки в верхней левой стороне, выберу вкладку код.
  
     
 []
  
     слева вы видите операторы, каждый подписан за что он отвечает, посередине это рабочая область с кодом куда мы будем перемещать код .
  
Штумоз™No
  
     
  
      Первым идет Движение там находятся операторы которые отвечают за перемещения нашего спрайта. Спрайт это рисунок ,картинка которую мы загрузили или нарисовали.
  
     Внешний вид , там находятся операторы которые меняют наш спрайт на другой, отвечают за размер спрайта, и с их помощью можно задать диалоги. Звук- операторы отвечающие за взаимодействие со Звуком. События -все операции начинаются с события .Любое действие начинается с события Когда нажат флаг. Контроль, в этом разделе находятся условия при котором выполняется условие. Сенсоры, сенсоры- это взаимодействие с помощью мышь ,клавиатуры ,таймерами .
  
     Операторы, это математические функции по делению ,умножению сложению и другие. Переменные -Это создание функций с переменными. Другие Блоки созданы для удобства ,что бы действия можно было разбить на отельные блоки .
  
     
  
     Начинаем работать
  
     
 []
  
 []
  
 []
  
 []
  
  
     Выбираем оператор когда флаг нажат ,то идти 10 шагов ,поскольку спрайт повернут на 90 градусов то он переместиться вправо ,если мы поставим минус 10 то влево .Но это можно сделать другим способом . Задав координаты по оси Х ,10 это количество шагов на которые сместиться спрайт, это значение может быть любым. Х -это значение в оси координат .
  
     Если мы хотим что бы спрайт переместился верх и вниз ,то тогда изменить Y на 10 или минус 10 ,при положительном значении спрайт будет двигаться в верх, при отрицательном вниз.
  
     
 []
  
 []
,а вот при использование оператора идти 10 шагов, нужно действовать иначе, путем изменения направления, делается это через изменения угла направления ,так при угле в ноль градусов спрайт будет передвигаться верх, а при угле 180 градусов вниз.
  
     Но что делать если мы хотим что бы спрайт передвигался в заданном направлении всегда или до какого то условия? и что нужно сделать что бы спрайт при начале выполнения оказался всегда в заданной точке?
  
     Для того что бы спрайт при нажатие на флаг всегда был в той точке -которой мы хотим.
  
     Существует оператор перейти в х ;y;по умолчанию значения ноль ,если спрайт перетащить в области нахождения спрайта то выдаст значения место положения спрайта в текущий момент
  
Штумоз™No
  
     
  
     Здесь установлено значение спрайта формы шар , х -186 и y -144 что бы он находился
 []
  
  
     в нижнем левом углу.
  
     для условий существуют операторы Контроля
  
     
 []
  
     если мы возьмем оператор всегда, и поместим внутрь него идти 10 шагов то спрайт будет выполнять это условия всегда. Если выберем выполнить 10 раз, число может быть любым, то действие будет выполнено столько раз сколько указано . Если делать это через операторы повторять до того как - то мы можем задать действие ,например коснется края и если условие выполнено ,то операция будет прекращена. через оператор если то, мы можем поставить условие например если клавиша пробел нажата то идти 10 шагов, с условием повторять всегда, этот оператор помещается в оператор всегда.
  
     
 []
  
  
Штумоз™No
  
Игровой контроллер
  
     
  
     Игровой контроллер движений. На базе движения мы сейчас создадим простой джойстик управления нашим спрайтом.
  
     Существует несколько видов управления, мы рассмотрим несколько самых распространенных.
  
     
 []
  
     на рисунке показано движение по стрелке в верх, теперь нужно сделать движение вниз, вправо и влево.
  
      Что бы не перетаскивать блоки ,мы можем сделать дублирование тех блоков с которыми работаем через команду дублировать по клику левой кнопки мышки и изменить в них значение .Мы делаем дублирование 3 раза. после чего меняем значения, прописываем если стрелка нажата в верх то изменить значение y на 10,если стрелка нажата вниз то y на - 10 ,если стрелка нажата вправо то х на 10,если влево то на минус 10.
  
     
  
      Штумоз™No
  
     
 []
  
  
     
  
     так выглядит полностью рабочий игровой контролер ,если все сделано верно и без ошибок
  
     
 []
  
  
     значение Y отвечает за перемещение по y,а значение х по Х.это самый простой контролер управления, через значения системы координат для управления спрайтом .Это шаблон для любого контролера. Это один из самых распространенных.
  
      Штумоз™No
  
     
  
     рассмотрим следующий пример .
  
     Этот вариант подходить для управления техникой. Потому давайте нарисуем какое то подобие танка. Мы используем для этого просто квадраты вытянув их в прямоугольники и один круг , который будет башней.
  
     внутренний инструмент для рисования в программе Scratch 3.0 довольно не удобный потому лучше найти замену.
  
     Лично мне лень было рисовать гусеницы танка потому мной сделано так, создан спрайт в виде прямоугольника
  
     это действие было повторено 15 раз, каждый раз перемещаясь на один шаг вперед, создавался клон спрайта в результате вышла вот такая гусеница танка .Спрайт перемещался в верх, потому это сделано по оси координат y. Программа выглядит так ,когда влаг нажат, изменить положение спрайта на 20 шагов, сделать клон и повторить это 15 раз.
  
     
 []
  
  
     
 []
  
  
     после чего я сделала принт экрана через Print Screen кнопка на клавиатуре ,и вставила через буфер обмена в программу Paint в ней я дорисовала остальное ,поскольку программа более удобная для меня. Теперь наш рисунок нужно обратно поместить в программу scratch
  
Штумоз™No
  
     
 []
делаем мы это через загрузку спрайта, которая находиться справа внизу экрана .
  
     Теперь мы загрузили спрайт .Есть одна особенность при реализации данного способа ,так как мы делаем это не через ось координат ,а через оператор сделать шагов , то нам нужно развернуть дуло танка на 90 шагов ,что бы дуло танка смотрело в направление спрайта, а спрайт у нас развернут на 90 градусов.
  
     делаем это так выделяем танк и за управляющее поворачиваем его на 90 градусов, в направление движение спрайта. Получается вот таким образом. Начинаем писать код Когда влаг нажат то
  
     повернуть танк в направлении ноль ,что бы танк смотрел дулом в
 []
верх , переместить танк в координаты х-136,y-84. теперь оператор контроля всегда .и внутрь помещаем снова четыре оператора контроля если .Переходим в сенсоры .Выбираем сенсор когда клавиша пробел нажата, меняем ее на стрелка верх, и пишем идти 3 шагов ,потом в
  
     следующем операторе меняем на
 []
стрелка вниз и пишем идти шагов -1 так как это движение назад, и при нажатие на стрелку вниз спрайт танка будет двигаться назад.
  
     а вот поворот мы делаем через оператор повернуть.
  
     ставим условие если стрелка направо -то повернуть на 6 градусов направо ,если стрелка на лево -то повернуть на 6 градусов налево .
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     готовый код выглядит так ,если вы не сделали ошибок то танк будет перемещаться по всем направлениям.
  
     
  
 []
  
     
  
     теперь добавим звук ,создадим условие ,что если любая из клавиш нажата , то будет звук двигателя. мы можем выбрать готовый звук или загрузить свой.
  
     мы добавляем еще один если влаг нажат то ,оператор всегда и условие, если любая клавиша нажата то воспроизвести звук до конца. Теперь при нажатие любой клавиши будет шум двигателя, мы можем сделать что бы у каждой клавиши был свой звук. Это можно сделать теперь самостоятельно ,так как это делается идентично
  
     
 []
  
  
Штумоз™No
  
     
  
третий пример Управления .
  
     
  
     Третий вариант движения ,через направление.
  
     в этом примере спрайт движется через угол системы координат.
  
     
 []
  
  
     все очень похоже на оба предыдущие решения, но мы делаем это через угол системы координат, через движение повернуться в направление ,а затем идти определенное количество шагов ,в нашем случае 5 шагов ,от количества шагов зависит скорость передвижение спрайта, потому скорость подбирается экспериментально.
  
     согласно оси координат движение в верх будет через угол равен нулю, движение вниз через угол 180 градусов, движение вправо 90 градусов, и влево минус 90 градусов .
  
     Это было три стандартных примера контролера. Так они выглядят ,это готовые шаблоны ,в 80 % случаев управление спрайтом выполняется по одному из них, их можно просто запомнить , большинство игр на самом деле можно делать без знания программирования, по готовым шаблонам, все что нужно просто создать библиотеку готовых шаблонов. Можно создать библиотеку даже не обладая навыками программирования, сделав это через простые гиперссылки. Например сделав готовый шаблон, можно назвать его котроллер управление ,разбить их по видам и классам управления их не так и много ,после чего по клику на шаблон у вас будет всплывать готовый шаблон который вы можете даже не водить, а через плагин подставить значение. Будущее-это программирование шаблонами, вместо блоков.
  
Взаимодействие спрайтов
  
     В этой главе я покажу взаимодействие спрайтов. начнем с простого примера когда спрайт падает вниз и касается другого спрайта.
  
Штумоз™No
  
     
  
     Я создам два шара, один размещу снизу, второй будет падать на него с верху.
  
     
 []
  
 []
  
  
     нижний шар переименован в нижний, он желтоватого цвета и я разместила его по х =27, y= -117 , теперь когда влаг будет нажат ,наш спрайт переместиться в эту точку. Второй спрайт переименован в верхний ,ему задано место положение над нижним шаром х=25, y= 145 .
  
     Что нужно сделать что бы шар начал двигаться вниз? задать минус значение по оси Y,что бы двигался постоянно вниз ,ставим переменную всегда. Теперь если нажать на влаг ,то шар начнет падать вниз на нижний шар спрайт.
  
      теперь давайте создадим взаимодействие, поставим условие что если шар коснется нижнего шара -то что то произойдет, зададим условие что если коснется нижнего спрайта- то шар исчезнет.
  
     Создаем условие через переменную если, если касается спрайта нижний- то берем из раздела внешний вид оператор спрятаться. Теперь если верхний спрайт коснется нижнего спрайта-то он исчезнет. И если нажать снова влаг то он будет не видимый.Потому теперь
  
     
 []
 []
  
  
     Вначале строки после того, когда Если влаг нажат ,мы берем внешний вид и применяем оператор показаться. Теперь при каждом нажатие влага ,шар будет падать вниз, и когда будет касаться нижнего шара, то будет прятаться.
  
      где взять сам оператор Касается Спрайта? он находиться в разделах сенсоры, но на нем написано касается указателя мыши, мы меняем это через щелочек мышкой левой кнопки на выпадающем меню, выбираем касается и название спрайта.
  
     
  
     
  
     
  
Штумоз™No
  
      Давайте сделаем что бы шар говорил, для этого из внешнего вида мы берем оператор говорить
  
     
 []
  
  
     2 секунды , и редактируем его ,пишем например Ой упал, пропал. и задаем время 1 секунда.
  
     Теперь шар прежде чем исчезнуть ,на время 1 секунда выведет текст который мы в ввели ,Ой упал. пропал. Давайте добавим еще звук. Вставим внутри условия если касается спрайта -то
  
     играет звук ,который мы выбрали по выпадающему меню ,в нашем варианте это Boing теперь выбираем звук и ставим его перед оператором говорить. Теперь при падении шар будет издавать Звук Boing ,потом говорить Ой упал, пропал и исчезать.
  
      Давайте теперь сделаем наоборот. Пусть теперь исчезнет нижний шар .
  
     Когда верхний шар его коснется -пусть нижний шар исчезнет.
  
     
 []
  
  
Штумоз™No
  
     
  
     для этого мы создаем переменную событие передать и пишем создать новое событие
  
     
 []
  
     я назвала событие коснуться, теперь внутри события размещаем условие ,если спрайт шар коснется, то передать. Передать когда коснется.
  
     теперь когда наш спрайт коснется то все спрайты с этим названием могут получить это сообщение.
  
     Переходим на второй спрайт -желтый шар . И пишем условие. Событие когда я получу
  
     
 []
  
     коснуться ,то внешний вид - спрятаться. И добавляем внешний вид Когда влаг нажат- показаться.
  
     теперь когда шар упадет сверху, то нижний шар исчезнет. Давайте добавим что бы он перед этим что то сказал. Перед спрятаться ставим внешний вид говорить Я исчезаю 1 сек.
  
     
 []
  
  
Штумоз™No
  
     теперь шар будет говорить Я исчезаю? после чего исчезать. Давайте сделаем вот так .
  
     Вместо оператора передать, поставим оператор передать и ждать
  
     
 []
  
  
     теперь верхний шар после того как передаст сообщение будет ждать ,когда второй спрайт выполнить свое действие , и после этого продолжит выполнять команду и будет падать дальше, после того как исчезнет нижний спрайт.
  
      Давайте добавим условие. Если коснется края- то исчезнет.
  
     
 []
  
  
     код будет выгладить так . Теперь при падении, когда нижний спрайт исчезнет ,шар продолжит свое падение , коснется края и тоже исчезнет.
  
Штумоз™No
  
     
  
      умея делать контроллер и зная взаимодействие спрайтов ,зная как управлять движением и перемещением- этого уже достаточно что бы делать простые игры.
  
      Теперь давайте рассмотрим смену фона ...
  
     Можно создать машину, или выбрать из библиотеки спрайтов автобус. По привычке мной создан собственный спрайт -пародия на летающий объект. Загрузим несколько фонов из библиотеки или с ПК- персональный компьютер ,далее просто ПК. Можно создать свои.
  
     я Создам свой.
  
     
 []
  
  
     
  
      Итак мной создано вот таких два примитивных фона ,и пародия на летающий объект.
  
     зададим ему движение слева на право ,для это переходим в спрайт для удобства переименуем в тарелку ,и напишем программу. Когда влаг нажат, то движение перейти в х -152, y -156.
  
     что бы тарелка двигалась постоянно берем контроль оператор всегда ,и задаем движение по Х ,пусть будет х=3, что бы картинка была не столь статична , пусть она поднимается чуть верх, а через какое то время опускается вниз .
  
     
 []
  
Штумоз™No
  
     потому я одним оператором когда влаг нажат задаю постоянно изменить х на 3 ,для движения вправо ,а вторым оператором когда влаг нажат устанавливаю место положение объекта через перейти х= -152,y=-156 создаю цикл ставлю оператор выполнять всегда, а после чего изменяю y= 0.7 вы можете поставить =1 например и ставлю условия повторить 20 раз ,это нужно для плавности ,так как можно написать просто перейти y=20 но эффект будет резкое движение верх ,а так у вас будет движение в верх на 1 шаг повторенное 20 раз что создаст плавное передвижение объекта . после чего на такое же количество вниз . в результате у вас объект при нажатие на влаг будет двигаться верх и вниз относительно плавно, и одновременно с этим по направлению вправо на Х= количество шагов. Теперь давайте напишем условие для смены фона.
  
     
 []
  
  
     для этого создаем условие если касается край, то следующий фон и перейти в точку начала, у нас это х= -152,y=-156 ,это что бы визуально казалось что мы летим или движемся постоянно .У нас сейчас два фона но мы можем добавить несколько. Если мы хотим что бы была определенная последовательность то мы можем пронумеровать фоны и они будут чередоваться в расположенной последовательности. для того что бы первый фон был всегда первый, давайте создадим условие. Перейдем на вкладку фон ,выберем первый и пишем программу. Когда влаг нажат ,сменить фон ,установить фон 1,на тот что идет первым. Теперь по нажатию флага ,этот фон всегда будет установлен первым, и меняться фоны будут по очереди от него .
  
     
 []
  
  
Штумоз™No
  
     Еще один пример смены фона.
  
     Я не нахожу его удобным ,тем не менее чем больше приемов мы знаем тем больше у нас выбор и для каких то случаев это может подойти .
  
     
 []
  
  
     Мы берем стандартный контролер который ранее уже описан ,через управление углом.
  
     Для примера создан спрайт ящерицы. Все стандартно если угол ноль то при условии клавиша в верх нажата повернуться на угол=0 и двигаться 1 шаг ,соответственно угол 180 то вниз, если угол 90 градусов то вправо и если угол -90 то влево. Для создания видимости движения спрайту через второй влаг через оператор контроля всегда ,делаем смену костюма каждые 0.5 секунды. Теперь допустим я хочу что бы когда я коснусь края что бы костюм менялся в строну направления, в ту сторону которую движется спрайт, то есть туда куда он смотрит. Для этого мне нужно что бы система отслеживала направление движения спрайта.
  
     как это сделать? это можно сделать создав переменную. Для удобство создаем переменную
  
     
 []
  
  
     направление , и теперь задаем значение равное углу поворота. И устанавливаем его внутри условия ,если стрелка нажата, то угол поворота, идти шагов и задать направление.
  
     
  
Штумоз™No
  
     
 []
  
  
     если угол ноль то направление ноль, если угол 180 то направление 180,если угол 90 то угол 90,и если угол-90 то минус 90. Теперь когда вы управляете стрелками то направление меняется на то, в каком направлении вы движетесь. Если поставить галочку- то оно будет видимым. Теперь мы можем отслеживать наше направления.
  
      Создаем еще одно условие.
  
     
 []
Условие если, Сенсор если касается края, то
  
     передать Создать условие смена фона.
  
     
 []
  
  
      все, с этим спрайтом мы закончили, контролер подключили, и условия задали.
  
     Теперь переходим к Фонам. Создаем четыре фона, по количеству направлений сторон .
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     Любые четыре фона, для удобства переименовываем их на названия Верх, вниз, Влево, вправо
  
     
 []
  
  
     и переходим во вкладку код , Подготовим операторы и Пишем условие.
  
     
 []
  
 []
  
  
     Событие когда я получу смена фона, то создаем Условие если направление=0 .теперь из Вкладки переменная берем переменную которую мы создали направление. Из вкладки Операторы берем Знак равенства. И помещаем наше направление в круг. Задаем равно ноль и теперь если направление равно нулю, то внутри этого условия размещаем сменить фон на название фона верх.
  
Штумоз™No
  
     
  
     получиться вот так. Теперь дублируем, и меняем направление согласно направления движения. То есть , если направление ноль то сменить фон на верх, если направление 180, то сменить фон на низ, если 90 то сменить фон на фон вправо, и точно так же если минус 90 то на влево.
  
     
 []
  
 []
  
  
     теперь если нажать флаг, то
  
     передвигая спрайт и касаясь края
  
     будет меняться Фон согласно
  
     вашего направления. Но есть не
  
     достаток, он меняется при любом
  
     касании.
  
     Давайте это исправим.
  
      давайте на воне добавим круги в
  
     местах, где будут переходы.
  
     и создадим новое условие .
  
     Если касается края и цвета .
  
     Так мы получим более надежное
  
     срабатывание более каретное,
  
     теперь условие будет работать
  
     если спрайт касается
  
     одновременно края и нашего круга
  
     с нужным цветом, вместо любого места края...Теперь можно создать что то вроде порталов .
  
     
 []
  
  
     такой код чуть стабильнее, поскольку нужно что бы выполнено два условия касание цвета и края. если рассчитать расстояние спрайта то вход будет правильный только в момент перекрытия спрайтом обеих точек .Есть еще один вариант решения сделать направляющие стенки тогда спрайт не сможет повернутся ,и при таком решение будет работать корректно всегда, насколько это возможно, давайте добавим еще одно условие. Создадим направляющие фиолетового цвета и допишем если касается фиолетового то идти - 1
  
     
 []
таким образом, спрайт не сможет развернуться и будет всегда в нужном нам направление под нужным углом. Тогда код будет работать коретно
  
     и выглядеть будет так Штумоз™No
  
     
 []
  
  
     мы рассмотрели смену фона когда касается края, когда касается края и цвета, давайте рассмотрим еще смену фона через спрайт и начнем мы с Создания Другие блоки .
  
     Чем больше наш проект ,тем более длинный код программы, и понять что она делает сложно, можно забыть что мы делали до этого ,потому если код достаточно большой можно делить его на более мелкие составляющие и подписывать что они делают
  
     Перейдем во вкладку Другие блоки и создаем блоки в том виде который нам удобно для запоминания
  
     
 []
  
  
Штумоз™No
  
     Я подписываю их по направлению движения: Идем верх, Идем вниз, Идем вправо ,Идем Влево
  
     каждый блок будет отвечать за то что в нем описано. Допустим вот кода нашего спрайта
  
     
 []
  
  
Штумоз™No
  
     
  
     Он достаточно большой и при его сборке можно сделать ошибку, а если код еще больше?
  
     Потому мы сейчас сделаем точно такой же код ,но на базе операторов Другие блоки, где каждый блок подпишем для нашего удобства .
  
     
 []
  
  
     теперь каждый блок отвечает за отдельно взятую функцию. за движение верх, вниз вправо и влево .Это удобно потому что если мы где то сделали ошибку -нам легче ее найти.
  
     но мы можем сделать например весь предыдущий код блоком где назовем его управление спрайтом и это будет шаблон управления.
  
     мы создали два условия в каждом блоке первое условие когда кнопка нажата то произойдет передвижение по оси Х или Y,второе условие касание ,если касается цвета -черный цвет ,то меняем движение на противоположное ,таким образом скорость при сложении равна нулю, и спрайт не двигается.
  
     Теперь если спрайт коснется черного цвета то его скорость упадет до нуля, и он не сможет двигаться в сторону черного цвета ,так же мы задали внешность говорить 1 секунду если он коснется данного цвета. Теперь когда влаг нажат то мы ставим условие показаться, перейти в заданную точку по оси х-92,y -110 ставим условие повторять всегда что бы ПК отслеживал нажата клавиша или нет ,и ставим наши 4 блока направления.
  
     Котроллер управления спрайтом готов, теперь наш спрайт может перемещаться и если касается цвета, то цвет выполнить роль препятствия . давайте добавим еще два условия. что бы игра была чуть похожа на игру Мы добавим еще пять спрайтов.
  
Штумоз™No
  
     Вначале спрайт самого поля. и спрайты перемещаемых объектов,
  
     
 []
  
  
     Наш герой будет шариком коричневатого цвета ,противники красноватого ,а зеленый квадрат будет выполнять роль двери.
  
     потому добавим управляемому шарику еще два условия, когда он касается препятствия мы уже задали ему все значения, теперь выполним условия для когда он касается спрайтов .
  
     Создаем еще два блока ,так как мы делали это ранее .
  
     
 []
  
  
     Называем для удобства касается дверь ,тогда код будет иметь вот такие условия и выглядеть так, если наш спрайт, касается спрайта дверь, то он передаст сообщение спрайтам с названием дверь и переходить в точку х -180,y -86 это нужно что бы при смене спрайта, наш спрайт находился в нужной точке, у меня она в этой точке.
  
     Создание условие предать управление спрайтам с названием Дверь ,делаем это через
  
     
 []
событие создав сообщение Дверь. Делаем новое сообщение называем его дверь. Когда спрайт передаст сообщение то дальше будет происходить линейное выполнение кода в переданных сообщениях, в спрайтах с таким именем.
  
     Задаем условие что спрятаться, можно задать любое другое условие . Штумоз™No
  
     Зависит полностью от вас ,вы можете переместить его начало лабиринта можете сделать еще один лабиринт и так далее...
  
     Теперь создаем условие для условно спрайты враги ,называем когда касается спрайта враги
  
     то будет происходить следующее.
  
     Шар скажет Безобразие снова сначала все делать. и перенесется в ту точку с которой он начал движение .
  
     Выглядит это будет так .
  
     Действие условие если шар касается спрайт 2,3,4 делаем мы это через операторы
  
     
 []
  
     или, создаем блок условие что когда спрайт касается то будет выполняться условие что когда касается спрайта с номером 2,3,4, то будет происходить событие .Наш управляемый шар будет переходить в точку начальной позиции -условно на место желтого круга стартовая площадка, и менять внешний вид на говорить
  
     Безобразие снова сначала все делать . После чего мы в код Когда касается влага добавляем эти условия ,когда касается флага , то после предыдущих действий добавляем еще два условия ,Касается двери и касается спрайт враги.
  
     Вот и все мы повторили тот же самый код что был вначале ,но сделали его разбив код на составляющие, через оператор Другие Блоки.
  
     теперь Запрограммируем поведение врагов. Сделаем это через Движение плыть количество секунд в точку х,y. Вначале через внешний вид Делаем спрайт условного врага видимым, потом задаем ему место положение через х,y.Место положение мы можем узнать перемещая
  
     шар по рабочей области
 []
, справа внизу они указываются.
 []
  
  
     . Штумоз™No
  
     ставим размер 50% от того что есть, что бы он помещался в лабиринте, и задаем постоянное перемещение нужные нам точки, через контроля оператор всегда.
  
     и так делаем со спрайтами 2,3,4. Самостоятельно определив в какой точке вы хотите что бы условные враги находились и задав любое направление перемещения.
  
     Осталось только написать код двери.
  
     Поскольку мы сделали передачу кода через Дверь то событие видят все спрайты, что очень удобно . Так по этому событию мы прячем Условные спрайты врагов, им же пишем условия для спрайта дверь. Спрятаться что бы не было видно на следующем фоне, и показаться при старте. А также задаем смену фона.
  
     
 []
  
 []
  
  
     Мы переходим в спрайт который выполняет роль лабиринта и пишем условие. При если влаг нажат ,то перейти в указанное положение ,можем добавить размер и пишем изменить на фон ,название фона когда дверь открылась.
  
     Вот и все...Если все сделано правильно у вас уже готовая игра по прохождению лабиринта ,вы можете сделать 10 уровней и усложнять их .
  
     Теперь мы можем двигаться и менять фоны и спрайты, делать простые игры вроде лабиринта .
  
     Теперь изучим генератор чисел, на базе броска кубиков.
  
     
  
     Что такое генератор чисел? Генератор чисел создаёт нужное количество случайных чисел в заданном интервале, то есть он создает числа ,а потом выдает нам случайный результат ,который каждый раз может быть разным. Рандомайзер позволяет использовать генератор чисел, то есть применимо во всем -что связано с рандомом. Что такое Рандом? все что связано с шансом, шанс заточки в играх, улучшение вещей и так далее. то есть Генератор чисел - это вероятность. если одним словом то это Шанс. Визуально понятным примером является подброшенная монета, которая является простевшим генератором чисел, от 1 до 2,более сложным примером есть игральный кубик с гранями от одного до 30.
  
      Наиболее легкой реализацией является монета, у меня есть такая. Которая иметь два варианта Да или нет.
  
     
 []
  
  
     
  
     и игральные кубики. Но мы сделаем шар предсказаний ,это тот же самый кубик но каждому ответу соответствует определение действия, другими словами это кубик на 20 граней.
  
     В настольном варианте -это выглядело бы так вы делаете 20 карт с ответами, и нумеруете рубашку ответа, и бросаете кубик на 20 граней .После чего тянете карту на которую указало выпавшее число.
  
Штумоз™No
  
     Как видите Игру можно сделать без ПК, в виде настольной игры имея всего лишь один генератор чисел в виде кубика .Это кубики D20 -имеют 20 граней и например колоду карт на 20 карт
  
     
 []
  
 []
  
  
     Каждую карту подписываем вот так :
  
     1. Мало шансов
  
     2. Да
  
     3. Нет
  
     4. Абсолютно точно
  
     5. Не надейтесь
  
     6. Очень вероятно
  
     7. Спросите позже
  
     8. Звезды говорят, нет
  
     9. Мне кажется да
  
     10. Не похоже
  
     11. Ответ нет
  
     12. Вряд ли
  
     13. Духи говорят да
  
     14. Без сомнений
  
     15. Безусловно
  
     16. Должно быть так
  
     17. Не могу сказать
  
     18. Ответ не ясен
  
     19. Похоже, что да
  
     20. Спросите снова
  
     Вот и все у вас готовая настольная игра ,Предсказание Судьбы например.
  
     Теперь сделаем то же самое ,но программу.
  
     
  
      Начнем как всегда с спрайтов, начнем с Шара.
  
     Рисуем простой круг и делаем заливку. Сразу делаем шар по центру экрана через команду ,когда флаг нажать перейти в точку и указываем те координаты, которые делать ваш шар в центре экрана .
  
     
 []
  
  
     
  
     Теперь создаем 20 спрайтов ответов. Делаем это через команду дублировать
  
Штумоз™No
  
     
  
     
 []
  
  
     рисуем одну картинку и дублируем 21 раз, после чего спрайты нумеруем по номерам называем их 1,2,3 и так далее 20 раз , а 21 шар круг называем Заставка. она нужна что бы написать на ней хочешь что то спросить? нажми на меня.
  
     Устанавливаем сразу точку центра, и после чего дублируем.У меня получилось вот так.
  
     
 []
  
  
      Теперь У нас есть 20 вариантов ответов и один фон заставки.
  
     Мы подписываем наш рисунок фон таким вопросом. Хочешь Получить ответ?
  
     Нажми на меня. После чего каждый спрайт подписываем вариантами ответами данными выше по тексту.
  
     У меня это выгладить так .
  
     
 []
  
  
Штумоз™No
  
     При желании мы можем добавить анимацию ,через задержку. Или через эффекты увеличения или уменьшения спрайта.
  
     
  
     
  
     Итак начнем с создания броска кубика -генератора ,для этого давайте создадим блок ,
  
     Переходим в другие блоки , и пишем нажимаем кнопку создать и пишем бросок кубика.
  
     И давайте с вами создадим переменную кубика .Переходим в переменные, жмем создать переменную называем кубик. Другие блоки нужны что бы всегда видеть что мы делаем.
  
     мы точно знаем что этот блок у нас будет отвечать за действия бросок кубика. А переменная кубик нужна для того что бы задать значения переменой .Тогда блок будет строиться так.
  
     Определить бросок кубика, Задать Значения кубика ноль, и вот в это значение ноль мы устанавливаем рандом, то есть генератор от 1 до 20 по количеству ответов. Такой вариант идентичный кубику на 20 граней.
  
     
 []
  
  
     перетаскиваем оператор выдать случайное число от 1 до 20 и задаем значение кубика.
  
     таким образом значения кубика будет случайным в диапазоне чисел от 1 до 20.
  
      Теперь так как у нас костюмы идут с номерами от 1 до 20 ти ,то мы можем не прописывать смену костюма под каждое значение, а подставить значение костюма через кубик.
  
     Если кубик выдал число 2 - то это сменить костюм на 2. Поскольку все они пронумерованы мы можем задать условия что изменить костюм на значения кубика, тогда костюмы кубика будут показываться пот тем номером что выпал у нас на кубике.
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     Код выглядит так . Теперь давайте сделаем так что бы Шар взаимодействовал с нами.
  
     
 []
  
  
     мы можем сделать как всегда через кнопку по нажатию, например пробел.
  
     Но давайте сделаем это через нажатия мышкой.
  
     Все делается точно так же как раньше
  
     Мы берем оператор Всегда из раздела Контроль, и устанавливаем его после того ,как влаг нажат, наш спрайт выполнит движение и переместиться в центр шара
  
     который находиться в системе координат
  
     
  
     х=36,y=28 .Внешний вид изменим на Заставка -так мы назвали 21 спрайт в разделе костюмы. После чего помещаем в условие всегда, если мышь нажата. Таким образом оператор всегда будет опрашивать мышь и сравнивать нажата она или нет, и если она нажата, то выполнить действие внутри нашего оператора ,Запустить наш блок Бросить кубик.
  
     
 []
Вот так выгладить наш код .Он рабочий и им можно пользоваться. Но иногда вариант ответа происходить слишком быстро, потому что машина очень быстро обрабатывает запросы.
  
     Потому иногда костюмы меняются слишком быстро. так как пока мы держим мышку нажатой ПК делает бросок кубика.
  
     потому давайте поставим задержку на бросок кубика. Мы добавим Контроль и установим задержку 0.5 секунды ,разделение чисел всегда через запятую. И добавим задержку, после бросить кубик.
  
     
 []
  
  
     
  
     
  
Штумоз™No
  
     но при таком коде мы будем получать ответ последовательно и линейно. Давайте сделаем еще один фон, и назовем его продолжение диалога?
  
     И напишем на нем, Хотите задать вопрос? нажмите снова. И давайте изменим время на 3 секунды. Этого достаточно что бы прочитать ответ .и давайте сделаем еще одно условие что если мышка нажата и наведена на шар .Что бы Шар работал когда на него наведут и нажмут на нем.
  
     
 []
  
  
     
  
     Вот теперь это рабочая программа, можно добавить Звуковые Эффекты и анимацию.
  
     
 []
  
  
     для этого мы берем в библиотеке Звук и добавляем звук броска кубику. А второй как фоновая композиция.
  
Штумоз™No
  
     Мы можем загрузить свои звуки или выбрать готовые. Для фона используем Контроль всегда и помещаем в его играть до конца. Это нужно что бы когда песня закончиться она играла снова. А звук Кубика, помещаем в наш блок бросок кубика .
  
     На базе этого кода можно создать много игр ,просто меняя сценарий и меняя графику и дизайн сцен. Вы можете сделать Заставку что вы входите в комнату, в этой комнате находиться колдунья ,задать любой диалог и тогда у вас получиться новая игра по вашему сценарию, Например игра Гадалка. Где гадалка будет гадать вам по такому шару. Можно сделать так что она будет раскладывать на столе карты ,просить задать Вам вопрос и будет показывать вам карту предсказаний, можете использовать для этого карты Таро ,
  
     например у меня есть Колдовское Таро Эллен Дуган -мне понравились художники которые его рисовали.
  
     
 []
  
  
     -все будет работать на тех же принципах, можно усложнить игру допустим сделать эту игру по мотивам Джуманджи. Видоизменив ее.
  
     
 []
  
  
     Вам предложат задать вопрос, после чего будет условный бросок кубика и вы попадете в игру , сразитесь с монстром и узнаете ответ, это может работать так вы бросаете кубик ,но каждая клеточка будет равна ответу вопроса, пронумеровав клетки вас будет переносить на эту клетку где будет сцена для каждой игровой клетки. То есть на этом простом действие можно построить много игр ,большинство игр представляют собой бросок кубика и поле ,но можно пойти нестандартно, можно сделать даже такую игру как Герои три имея всего два поля и несколько игровых кубиков, важен лишь сценарий и набор правил.
  
      Давайте что бы закрепить ,сделаем программу на бросок монеты. Что бы понять что мы делаем нам нужно рассмотреть наиболее простые действия ,большая игра- это много простых действий, что бы понять как это работает -нам нужно изучить как можно больше простых действий. Очень сложно чему то научиться на сложных играх. Понять как что работает можно лишь раздробив большой код на много меленьких, на кусочки кода.
  
     Потому что бы понять как что работает, важно понимать за что отвечает тот или иной кусочек кода.
  
      потому и вернемся к более простой игре -просто бросок монеты.
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     Все начинается со спрайта, рисуем лицевую и оборотные стороны монет. Теперь
  
     
 []
  
  
     Рисуем спрайт вращение монеты. Через оператор другие блоки создаем бросок кубика, Вращение монеты. Так же создаем событие Подкинуть монету и переменную кубик.
  
      как и прошлый раз бросок кубика будет
  
     
 []
Задать кубик случайное число от 1 до 3 где вариант три равен ребру монеты.
  
     Через событие мы передаем управлению блоку событию подкинуть монету.
  
     ,далее запускаем блок Вращение монеты.
  
     так как спрайт слишком большой по размеру то устанавливаем ему размер 1/3 от размера 35% и точно так же пронумеровав костюмы 1,2,3 задаем значение костюма подставляя значения кубика.
  
     
 []
через События передаем управление блоком события общее время вращения монет 15 секунд потому делим на 2 получаем плыть верх 7,5 секунд и плыть вниз 7,5 секунд. Делаем это мы через операторы движения плыть в точку верх через Y на 80 единиц ,после чего вернуться в исходную точку через Y минус 80 единиц.
  
     
  
Штумоз™No
  
     
  
     
 []
Вращение монеты задаем через смену костюмов
  
     Мной названы они следующим образом ,вращение 1,2,3,4,5.
  
     Размер устанавливаем что бы увеличить размер спрайта до какого то значения.
  
     Я хочу что бы вращение выполнилось 10 раз.
  
     Тут важно что бы время вращения совпало с временем подкинуть монету, это важно для визуального эффекта
  
     расчет простой время 0,3 секунды *5 количество смен костюма и *10 повторений =15 секунд.
  
     данный блок отвечает за визуальный эффект вращение монеты .
  
     Событие отвечает за эффект броска ,как будто наша монета подброшена в воздух.
  
     Мы задали кубик, эффект вращения и эффект броска.
  
     Теперь нам нужно так ,что бы это все запускалось от нашего воздействия, например через нажатие клавиша пробел.
  
     Делается это просто, Когда флаг нажат ,действие переход в точку ноль по икс и игрек.
  
     
 []
  
  
     Условие всегда спрашивать нажата ли клавиша пробел? и если да то бросить кубик ,и задаем паузу 1 секунда что бы не было слишком быстрого срабатывания.
  
     Вот и все, теперь если запустить программу, то клавиша пробел будет подбрасывать монету.
  
     теперь после броска кубика в конце нужно установить значение- установить ноль.
  
     
 []
Если этого не сделать то программа оставляет предыдущее Значение и добавляет к нему новое значение, Мы можем сделать чуть иначе. например использовать строку вначале установить Значение ноль, потом изменить значение
  
     
 []
  
  
     
  
     Штумоз™No
  
     
  
     Давайте сделаем простую настольную игру с кубиком.
  
     Самая простая игра это Драконий покер , эта игра была использована в первой версии Ведьмак ,но задолго до ведьмака описывалась в многих книгах.
  
     Покер на костях довольно прост. Есть всего две фазы, в одной из которых мы бросаем кубики, а в другой – записываем результат. В первой фазе есть всего три попытки бросить кости. В каждый из бросков мы можем оставить любое количество костей на столе, не перебрасывая их в дальнейшем и, тем самым, постараться набрать наиболее выигрышную комбинацию.
  
     Второй этап диктует свои правила, и игрокам необходимо формировать такие сочетания:
  
     
  
      пара – две кости с идентичным рангом;
  
      2 пары – 2 кубика одного номинала и 2 – другого (пример: две тройки и пара шестерок);
  
      сет в покере – 3 кости с идентичным достоинством;
  
      малый стрит в покере – упорядоченный номинал на 4-х костях (от одного до четырех);
  
      большой straight– 5 костей с достоинством по порядку;
  
      чет – пять кубиков с четным количеством точек;
  
      нечет – 5 костей с нечетным числом точек;
  
      фулхаус – «пара» + «сет»;
  
      каре в покере – 4 кубика с одинаковым номиналом;
  
      покер – 5 костей с идентичным числом точек;
  
      шанс – пять кубиков, все с отличающимся номиналом.
  
     Все очень просто ,нужно собрать лучшую игровую комбинацию.
  
      Давайте нарисуем поле , у нас по 5 кубиков, 5 у вас и 5 у противника
  
     
 []
Вы можете нарисовать игровую доску как вам удобно.
  
     Теперь как и раньше рисуем костюм кубика.
  
     6 сторон кубика ,6 костюмов.
  
      Теперь переходим к коду кубика.
  
     Он остался точно таким как и был ,
  
     Мы создаем блок бросить кубик из Другие блоки, и задаем действия кубика.
  
     Вначале задаем значение ноль ,что бы при старте кубик был равен нулю.
  
     Затем переменой Кубик которую мы создали из оператора Переменные, переименовав ее в кубик, задаем значение изменить на и из операторов берем генератор и задаем от 1 до 6 ти по количеству граней кубика.
  
     После чего пишем изменить внешность ,и что бы не устанавливать значения для каждой внешности подставляем через кубик. Предварительно сделав названия костюма с цифрами 1,2,3,4,5,6, где каждая цифра равна костюму с соответствующим значением.
  
     
  
     
  
Штумоз™No
  
     
  
     теперь сам код .Когда влаг нажат, то переход в точку где должен стоять кубик, для каждого кубика она своя. Потом точно так же создаем условия ,установить размер спрайта, условия проверять всегда нажатия клавиши в нашем случае пробел -может быть любая, и если нажата, выполнения условия бросить кубик. Так же мной добавлено звук кубика при броске.
  
     
  
     
 []
  
  
     и время ожидание пол секунды.
  
     далее ,мы просто дублируем наш кубик 4 раза, и каждому кубику меняем место положение.
  
     Наша сторона кубиков готова.
  
     Теперь делаем еще одну копию и раскрашиваем кубик в цвет кубиков противника ,и так же дублируем их 5 раз.
  
     В этой версии бросок всех кубиков выполниться по нажатию клавиши пробел .
  
     Это уже готовая игра .
  
     Но ее можно попробовать сделать более приятной для восприятия.
  
     Например сделать так что бы противник бросал кубики после нас.
  
     Например установив кубикам противника более большее время ожидания ,через таймер задержки.
  
     или через передачу хода.
  
     Если все сделано верно у вас будет вот такой код ,и все кубики будут работать по клавише пробел.
  
      Вы можете в игру добавить еще противника ,сделать набор очков, сделать что бы противник если проигрывает совершал какие то действия ,то есть вы можете сделать любое количество игр -всего лишь на одном и том же коде .Это равноценно тому как если бы вы знали 6 -14 гитарных аккордов, да этого мало для виртуоза, тем не менее вы можете сыграть все песни Цоя или Земфиры зная всего 14 аккордов, Так и в программирование , на одном и том же коде , можно создать более 100-300 игр , если у вас богатая фантазия и воображение .
  
     Давайте рассмотрим еще два примера использования кубика.
  
     Например часто в играх используют колесо фортуны, это по сути тот же кубик, но на 8 граней. Такую схему можно легко реализовать несколькими способами. Можно точно так как мы делали раньше, а можно поступить иначе.
  
      Давайте нарисуем круг. Но сделаем это программно. Нам нужно получить круг -разделенный на 8 равных частей. Как сделать это на практике? Что такое круг? плоская геометрическая фигура, являющаяся местом точек, расположенных на одинаковом расстоянии от некоторой точки (центра). А как его нарисовать? это линия от центра до края, нарисованная 360 раз с шагом 1 градус, то есть каждая линия после того как ее рисуют делает поворот на 1 градус ,круг иметь 360 градусов.
  
     То есть если мы хотим разбить круг на 8 частей то мы делим 360 на 8 раз =45 градусов.
  
     то есть 8 равных частей это угол в 45 градусов.
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     
  
     Давайте теперь напишем простую программу для рисования круга и разобьем круг на 8 частей.
  
     создадим блок Другие блоки для удобства блок называем 1/8 круга пусть диаметр круга будет 120 шагов, угол 45 градусов это 45 поворотов на 1 градус, тогда это будет идти 120
  
     
 []
  
  
     
  
     шагов, затем вернуться и повернуть на 1 градус, и повторить 45 раз. Теперь когда флаг нажат , мы переходим в центр координаты икс и игрек равны ноль. Теперь добавим новый оператор
  
     в версии 2.0 это раздел Перо, в версии три их вынесли в другие операторы.
  
     Потому мы добавим этот оператор заходим в расширения через нижний левый край экрана
  
     
 []
  
  
     
 []
и выбираем Перо. Добавляем оператор.
  
     Далее Устанавливаем перо в направление ноль И опускаем перо. Устанавливаем перу любой цвет.
  
     после подставляем наш блок. и делаем это 8 раз. И у нас получается круг разбитый на 8 одинаковых разноцветных частей.
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     Этот круг мы будем использовать как игральный кубик на 8 граней. Мы копируем его ,
  
     
 []
А теперь загружаем обратно в программу . Почему мы делали это программно? допустим нам нужно получить круг разбитый на 80 одинаковых частей, не всегда есть готовое решение и бесплатно. А мы можем сделать программу которая сделает это за 4 минуты, и составление такой программы не займет больше 10-15 минут времени. Возможно кто то и может вручную нарисовать спрайт так же быстро, но можно сделать и так.
  
     теперь сделаем указатель .
  
     Рисуем треугольник. Мной сделано вот так .Так как рисовать я не умею, то делаю рисунок простыми формами, в виде кругов.
  
     Хотя утверждение не верно, любой может рисовать если способен провести линию пишущим предметом по бумаге или иной поверхности где она оставит след, даже если это палочка по мокрому песку, Каждый художник видит свое
 []
творение иначе, например я не понимаю кубизм, но кому то он нравиться потому это лишь оценка восприятия.
  
     Все кубик у нас есть указатель тоже .Теперь соберем нашу конструкцию.
  
     Начнем писать код.
  
     Размещаем наш указатель над колесом.
  
     
 []
  
  
     после чего переходим к спрайту колесо и пишем.
  
     
 []
  
  
     Определить создаем блок Поворот колеса, где наш кубик будет выглядеть так рандом от 1 до 8 * на 45 градусов где 45 градусов это угол поворота .Тогда если выпадет 2*45
  
     =45 поворот 90 градусов. если 8 то *45 = 360 минимальное значение 45 максимальное 360
  
     всего 8 положений.
  
     кубик есть, сделаем теперь анимацию вращения . Давайте ее для начала рассчитаем.
  
     Пусть вращение будет с углом 12 градусов. тогда полный круг будет 360/12=30
  
     Таким образом один поворот колеса составляет 30 циклов что бы он всегда был равен исходной точке. Поскольку первый блок у нас определяет положение. то второй блок должен лишь создать видимость эффекта.
  
      1 поворота мало, потому делаем четыре цикла ,тогда 30 *4 =120.Теперь переходим к написанию куда вращения. Разворачиваем в направлении ноль, что бы колесо всегда смотрело в верх. далее пишем повторить поворот с углом 12 градусов 120 раз. Таким образом
  
     колесо выполнит 4 цикла поворота ,и будет в той же точке отсчета -с которой оно начало крутиться .Теперь соединяем все вместе. Когда влаг нажат ,то всегда выполняется условия проверяется нажата ли кнопка пробел? и если нажата идет выполнение условия Вращение, и поворот колеса. При желание можно добавить звуки и визуальные эффекты.
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     
  
     Вот что у нас получилось .Если ошибок нету, то при нажатие на кнопку будет вращаться колесо.
  
     
  
     
 []
  
  
     
  
     давайте сделаем еще одну игру .Во многих играх встречается такой рандом как Заточка оружия, брони, доспехов. Или нужна мини игра. В основе каждой такой игры лежит базовый принцип игрового автомата Однорукий Бандит. Суть игры если все три значения совпадают -то игрок выигрывает -удачный шанс заточки или крафта брони ,оружия, рецептов.
  
     А если нет- то вещь может уничтожиться. Сделаем такой простой автомат.
  
     
  
 []
  
     Делаем снова блок бросок кубика, точно так как делали ранее Другие блоки Бросок Кубика, Делаем . Переменную Кубик .Переменные Создать Переменную кубик. Операторы Выдать случайное число. Ставим от 1 до 3 .Делаем три костюма любые рисунки у меня это Условно
  
     
  
Штумоз™No
  
     
  
     Вишенка, Слива и желтый овощ. Номеруем спрайты для удобства на 1,2,3 .Размещаем их по порядку что бы костюм шел в том же порядке что мы прономеровали иначе не будет правильно работать. После броска кубика Внешний вид изменить на костюм кубика. Но можно сделать иначе например если кубик = 1 то костюм будет =1, если кубик = 2 то костюм будет =2, если кубик = 3 то костюм будет =3. Вы можете сделать любым образом.
  
     Далее устанавливаем звук броска кубика через Звук. Мы рисуем два фона в одном положении ручка Верх во втором вниз. Фон называем ручка верх и ручка вниз для нашего удобства. Потому прописываем положение ручки ручка вниз таймер ждать 0.3 секунды и вернуть фон обратно, для визуального эффекта движения ручки нашего автомата.
  
     
 []
  
  
     теперь пишем вторую половину кода для выполнения и запуска нашей программы.
  
     когда влаг нажат ,то нужно перейти нашему спрайту в окошка автомата . так как это первый спрайт то в первое окошко . Делаем через движение перейти икс -70 ,а игрек 55.Теперь задаем условие. Проверять всегда нажата ли клавиша пробел?
  
     Контроль оператор всегда ,и если нажата ,сенсоры ,клавиша пробел нажата? то созданный оператор бросок кубика. После чего делаем событие проверка результата.
  
     Это нужно что бы сравнивать результат броска кубика и если он равен тому -чему мы хотим то создать наше собственное условие .Наше условие если все три кубика выпали с одинаковым значением.
  
     но для этого нам нужно создать еще два кубика. потому переходим в переменные и делаем еще 2 кубика .И у нас получиться Кубик 1,Кубик 2 ,Кубик 3. Дублируем наш спрайт.
  
     и в Первом спрайте наше значение кубика рассчитываться по Кубик 1. Во тором по Кубику 2. В последнем по кубику 3.
  
     
  
     Можно сделать иначе, и передать через событие- бросок всем кубикам. Потому решений может быть всегда больше чем одно.
  
     Почему реализация такая? ну потому что так легче, и решение менее затратное по времени.
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     Итак Во втором и третьем спрайте мы изменили значение кубика на кубик два и три .
  
     у нас есть три разных значения.
  
     Теперь мы можем создать для них условие. ниже на рисунке как выглядит код спрайта 2,3
  
     
 []
  
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
 []
Для удобства Мной сделан спрайт в виде черты, так и называем черта. Размещаем по центру барабана, И создаем для нее условие.
  
     
  
     для начала перейти в координаты х минус 9
  
     игрек 57 ,у вас они могут быть другими, главное что бы черта была по центру .
  
     потом задаем внешний вид идти в передний слой. Это нужно что бы черта была сверху над остальными спрайтами.
  
     ну а теперь создаем условия.
  
     Когда я получу Проверка результата. Сразу после броска кубика мы получим из первого спрайта это сообщения.
  
     то если кубик 1=1 и кубик 2=1 и кубик 3 =1
  
      то Мной сделала еще одна переменная для спрайта выигрыша ,то передать сообщение Выигрыш ,выбираем любой звук играть звук который мы выбрали из Звука. через играть звук. Внешность, задаем любую фразу .Мной прописано Невероятная Удача, Вы выиграли. Испытай Удачу еще раз. Любую фразу. И повторяем точно так же еще два раза но задаем кубикам 1,2,3
  
     равно два, а потом каждый если равно 3.
  
     Делаем еще один спрайт .Квадрат который изображает горку монет.
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     
 []
И задаем условие Если Мы получим сообщение выиграешь -то показаться, ждать 4 секунды и спрятаться. Когда влаг нажат, то спрятаться и перейти в указанную точку в этом примере -5 по иксу, и минус 63 по игрек. Все ,если все сделано правильно без ошибок, то при нажатие на пробел и у Вас кубик 1,2,3 сгенерируют каждый свое значение от 1 до 3. Если кубик 1,2,3 одновременно будут равны 1 ,2 или 3 то сработает условие каждому условию вы можете задать свое.В нашем случае Поздравляем вы выиграли ,попробуйте еще.
  
     
  
     Это были распространенные генераторы применяемые в играх.
  
     Давайте рассмотрим пример Выбор игрока.
  
      Это простая программа будет делать выбор игрока. Допустим вам нужно разыграть кто ходить первым кто вторым, на данном примере мы рассмотрим как это реализовать .
  
     
 []
  
  
     
  
     Мной нарисованы условно пусть Снеговик игрок номер 1 и пусть сова условно игрок 2. Каждый из вас может нарисовать своих игроков. Колобка например, внука и внучку колобка или солнышко и луну.
  
     Итак у нас есть два игрока.
  
     Пропишем теперь условия. Когда мы щелкнем по флагу то игрок 1 перейдет в свое местоположение ,а игрок два в свое.
  
     Теперь создадим переменную выбор. И установим его значение равно нулю. Теперь если Клавиша пробел нажата, можно любая другая клавиша, то Изменить выбор игрока на оператор выдать случайное число от 1 до 2 ,поскольку у нас два игрока. И делаем событие передать выбор игрока После чего можно сделать стоп этот скрип так как он больше не нужен, но мы сделаем что бы по пробелу выбирать игрока по очереди. потому пишем Ждать 3 секунды ,иначе числа будут очень быстро меняться, И задать выбор равно ноль то есть вернуть его в изначальное положение.
  
     Теперь создаем следующее условие. Когда я получу выбор игрока, то произойдет следующее,
  
     поскольку игрока только два ,то всего два значения Если одно один то второе всегда два, потому я использую оператор Если то, иначе если первое событие верно то выполняется событие то что верное, в противном случае выполняется событие два. То есть если Наше значение выбор равно один -то будет выполнено событие первое, если любое значение которое не равно единицы, то выполняется блок события иначе.
  
     потому в первое событие условие Если выбор равно один ,то создать сообщение для игрок 1.И создаем сообщение Ход игроку 1.Если условие не выполнено, то создаем сообщение Передать ход игроку 2. Если игроков больше например три или четыре то каждому игроку прописывается значение где цифра равна игроку, а в выборе ставиться количество от 1 до х где х количество игроков.
  
Штумоз™No
  
     
  
     
  
     
  
     У вас должен был получиться вот такой код. Теперь Зададим действия когда какой то из игроков получит свой ход. Первому игроку когда я получу Ход игроку 1 то говорить
  
     
 []
  
  
     
  
     Выпало 1,Хожу я. А второму игроку ,когда я получу Ход игроку 2,то говорить Выпало 2,Хожу Я. Это простой пример как разыграть ход вначале игры если у вас несколько игроков и как им передать ход.
  
     
  
     
 []
  
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     Следующий урок
  
     Это движение по кубику.
  
  
Движение по кубику.
  
     Почти 70% игр базируются на кубике и игровом поле по которому двигается пешка . Потому мы можем создать любую настольную игру ,верно так же и обратное что игры для ПК так же можно сделать настольными.
  
      Потому очень важно уметь делать движение объекта по броску кубика. Но начнем мы с того что вспомним базовые движения .
  
     Движения могут быть через оператор Движение: шагов, через управление оси координат икс или игрек. Мы можем перемещать игрока по указанным нами координатам. Можем использовать перемещение в случайное положение, или плыть из одной точку в другую.
  
     А так же передвигаться через угол поворота -это как стрелка в часах, когда точка передвигается за счет поворота стрелки часов.
  
     Давайте прежде чем делать движение по кубику сделаем движение без кубика что бы понять как это работает ,а потом повторим с кубиком.
  
     Для начала сделаем движение по периметру экрана .Давайте сделаем это через шаги.
  
     Движение через шаги по периметру экрана .
  
  
     Простейшее движение будет идти количество шагов. Когда влаг нажат , переместиться в точку с которой начнем движение и идти количество шагов. Если использовать оператор всегда, то 10 шагов будет повторяться постоянно, если через повторить 10 раз, где можно установить количество шагов- то количество шагов установленное нами.
  
     Давайте используем оператор всегда.
  
     
 []
если изменить количество шагов на 1- то спрайт будет плыть очень медленно ,если на 50 то очень быстро. После чего упрется в край экрана, а нам нужно что бы он изменил свое движение на движение верх. Как это сделать? можно сделать условия когда касается края экрана то 1.отступить назад повернуть на угол 90 .
  
     
 []
  
  
     Важные детали, при когда мы используем движение через шаги -желательно указывать поворот, в какую сторону наш спрайт должен начать движение
  
     Мы задаем условие ,оператор всегда опрашивает касается ли края наш спрайт? и если да - то выполнение условий в скобках сделать движение назад на минус шагов равных шагам вперед. Если это 10 шагов, то минус 10, если 5 то минус 5.после чего сделать поворот спрайта на угол экрана то есть 90 градусов. Теперь наш спрайт всегда двигается по периметру, когда он касается края, он отступает от него и делает поворот. Можно использовать другую систему.
  
     Через смену направления. Давайте теперь сделаем то же самое ,но через идти шагов. Размер моего спрайта 38 на 38
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     
  
     значить шаг моего спрайта будет 40 шагов .при 11 шагов он упирается в край, тогда поворот мы делаем через 10 шагов
  
     
 []
  
  
     
 []
теперь нам нужно пройти какое то количество шагов в верх. В моем случае это 7 шагов, и снова нужно сделать поворот ,но уже на угол в направление -90 .и повторить 10 шагов, затем еще один поворот на угол 180 градусов , и снова повторить 7 раз и сделать поворот на 90 градусов и полный круг закончен. После чего поставить оператор всегда. Теперь по нажатию так же будет движение спрайта по периметру.
  
     
  
     Давайте рассмотрим следующий пример ,движение через ось координат. Их можно реализовать несколько способами. Итак первый способ движение через ось координат.
  
     
 []
  
  
     
  
     мы так же как и ранее делаем после оператора ,когда флаг нажат, условия выполнять всегда, и прописываем, что по оси икс изменить на 40 шагов
  
     и повторить это 10 раз, после чего мы меняем наши координаты на игрек и выполняем повторение 7 раз.
  
     после чего меняем движение не обратное то есть минус икс, повторяем
  
     10 раз, и движение вниз меняем игрек на минус 40 и делаем 7 раз 40 шагов по игрек вниз. От нуля оси координат движение по х вправо это положительное значение, а влево -отрицательное .Точно так же по игрек это движение верх если положительное и вниз ,если отрицательное.
  
     теперь сделаем перемещение через плыть в точку икс и игрек.
  
     Для этого мы перемещаем спрайт на рабочем окне и смотрим снизу точку координат. Или точка координат сама измениться при перемещения спрайта и мы можем просто подождать изменение значения и выбрать его.
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     У нас 4 угла, потому 4 значения перехода. и мы прорисуем из какой точки в какую может плыть наш спрайт.
  
     
 []
В моем случае это
  
     х= 201 y=-155
  
     х= 195 y=129
  
     х= -196 y=144
  
     х= -197 y=-142
  
     после чего пишем перемещать всегда и спрайт так же будет ходить по периметру.
  
     давайте рассмотрим еще один способ.
  
     вместо плыть мы используем просто переход по координатам.
  
     
 []
для это мы создадим маленькое поле на 9 клеточек. На этом примере я покажу вам переход по координатам и иллюзию движения, которая применяется в анимации.
  
     итак вначале наш спрайт поместим в клеточку с номером один ,запишем ее координаты, после чего в клеточку два и запишем координаты, и так сделаем 8 раз после чего спрайт вернется в исходную позицию. первую клетку
  
     наша таблица будет такой.
  
     Номер клеточки нашего поля
  
     Значение по оси Х
  
     Значение по оси Y
  
     
  
     1
  
     -140
  
     -105
  
     2
  
     -48
  
     -109
  
     3
  
     53
  
     -106
  
     4
  
     56
  
     -24
  
     5
  
     58
  
     57
  
     6
  
     -31
  
     56
  
     7
  
     -133
  
     60
  
     8
  
     -138
  
     -23
  
     9
  
     -138
  
     -101
  
     Поскольку движение происходить очень быстро ,мы его просто не увидим если не сделаем задержку. потому после каждой смены координат мы ставим задержку 1 секунда.
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     
 []
Вот так выглядит наш код ,если ошибок нет ,то если флаг нажат у вас будет движение точно по клеточкам по кругу. Это очень важное движение .поскольку в отличие от других движений наиболее точное. Часто бывает что спрайт не всегда срабатывает или срабатывает не всегда корректно когда касается цвета, или другого спрайта. Движение по координатам дает вам возможность перемещаться в любом направлении и любом порядке. В отличие от движение клонами. или через коллайдер.
  
     Я покажу их после следующего способа. Итак в чем суть движение спрайтами? в этом способе у нас не передвигается объект, у нас создается видимость движения
  
     
 []
Давайте нарисуем 8 фонов на 9 клеточек. Получиться вот так ,каждый следующий рисунок мы смещаем наш условный спрайт на 1 шаг .
  
     теперь напишем код для нашей программы. Он будет очень простым. Когда флаг нажат, Сменить фон на рисунок 1,где пешка на первой клеточке. Реализовать этот код можно несколько способами. Один из них вручную установить смену нашего фона на следующий шаг пешки ,что бы смена шла в том порядке в котором идут фона и создавалась видимость движения . Но поскольку в данном случае поскольку каждый фон выставлен в правильном порядке и идет последовательно друг за другом мы можем использовать просто команду смена фона на следующий. и код будет таким . Когда флаг нажат ,сменить фон на 1 там где у нас условно пешка на 1 клеточке ,после чего ждать 1 секунду,
  
     
 []
это сделано для того что бы визуально мы успели заметить нахождение фона в этом положение, иначе фон смениться и мы увидим лишь следующий фон ,после чего мы задаем команду сменить фон на следующий и ставим условия делать это всегда и так же ставим интервал 1 секунда.
  
     У нас создаться видимость движения по клеточкам как и в предпоследнем случае. Этот способ так же удобен ,поскольку так же позволяет создать видимость движения в любом направления, и сменой фонов легко управлять .Мы можем создать спрайт и управлять им через смену костюма эффект будет точно таким же .
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     Рассмотрим еще одно важное движение через угол поворота, и одновременно рассмотрим движение через клон.
  
     Чем интересно движение через угол поворота? оно всегда идет в одном направление, в отличие от других видов движения вы делаете поворот на какой то угол ,в одну или другую сторону.
  
     Как сделать движение через угол градусов? давайте нарисуем круг .
  
     Давайте нарисуем его с помощью клона.
  
     
 []
  
 []
  
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     сделаем два спрайта, один будет нашим циферблатом, а второй стрелкой.
  
     рисуем вот такую стрелку главное что бы ее один конец был точно по центру рисунка. Это будет условно наша стрелка часов или пусть это будет секундная стрелка. И второй спрайт это наш будущий циферблат. Теперь напишем код для циферблата.
  
     
 []
  
  
     становим икс и игрек в ноль ,так как нам нужно точное совпадение центра, и поворачиваем нашу стрелку на ноль .после каждого поворота делаем клон стрелки, затем создадим условие ,наш круг равен 360 градусов, тогда при угле в 6 градусов, шаг будет равен 360/6=60 ,первоначальное положение уже есть следовательно нужно 59 поворотов. Задаем после каждого поворота таймер 0,1-0,3 секунды что бы клон смог себя оставить . И у нас получиться круг разбитый на 60 равных частей, который мы создали клонированием одного спрайта.
  
     
  
Штумоз™No
  
     
  
     теперь перейдем к шагу стрелки.
  
     Если у вас круг не вышел с первого раза увеличьте длину вашей стрелки. можете посмотреть как меняется рисунок в зависимости от длины. А теперь к стрелке.
  
     
 []
  
  
     
  
     
 []
Когда Флаг нажат , то у меня стрелка выступала, потому установить размер 85% от текучего размера ,перейти в координаты икс и игрек равно в ноль. что бы центры совпали, после чего что бы не было накладок спрайт на спрайт ,мы внешний вид спрайта переводим в передний план ,перейти в передний слой, разворачиваем в верх повернуться в направлении ноль, поскольку у нас круг рисуется не сразу ,задаем время для отрисовки круга 10 секунд, после чего пишем код секундомера, мы используем повернуть всегда, но можем использовать например условие если не, или повторить количество раз. и делаем шаг равный 1 секунда. теперь каждую секунду наша стрелка будет двигаться на 6 градусов. Это простой секундомер. Давайте его доработаем. Давайте ведем переменную секунда, контроль создать переменная секунда ,у меня название шаг. Зададим
  
     
 []
  
  
     
  
     Значение секунда и минута при старте равно ноль. И пишем проверять всегда условие равно ли количество секунд 60? и если да, передать сообщение ,создаем сообщение передать минута и установить значение секунда снова ноль. После каждого шага стрелки мы задаем условие изменить секунду на 1.Все это теперь готовый секундомер.
  
Штумоз™No
  
     при желании мы можем просто скопировать наше поле ,убрать код и стрелку которая создает циферблат и прописать условие .когда клавиша пробел нажата , то стрелка начнет ход.
  
      Давайте заменим шаг стрелки вместо постоянного хода, на повторить несколько раз .
  
     для начала скопируем наш Циферблат и удалим второй спрайт ,он нам больше не нужен .
  
     
 []
  
     А дальше работаем только со стрелкой. Вначале создадим оператор шаг ,зададим шаг равно ноль. Установим размер стрелки что бы она совпала с циферблатом у меня 80%,перейдем в точку ноль координат, повернем в направлении ноль. Теперь повернем стрелку 10 раз .для этого вместо значения всегда мы используем оператор контроля повторить какое то значение раз, а дальше оставляем как было угол поворота 6, ждать 1 секунду и изменить шаг на равно 1. Теперь походив 10 раз мы увидим что количество шагов так же изменилось на 10 раз.
  
     
  
     Давайте ведем новую переменную. Кубик. И сделаем бросок кубика по клавише пробел.
  
     после чего сделаем так что бы стрелка повернулась на значение кубика. Для этого в другие блоки создадим блок
  
     бросок кубика. И ведем переменную изменить кубик
  
     на оператор от 1 до 6.и сообщение создать- передать шаг
  
     
 []
  
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     таймер 1 секунда от случайных срабатываний. И возвращаем кубику значение ноль после каждого броска. Теперь сделаем блок для хода стрелки. Когда я получу шаг ,то через оператор повторить количество шагов, меняем значение на кубик шагов. далее повернуть нашу стрелку на 6 градусов ждать 1 секунду изменить значение шаг на 1.
  
     И водим сенсор, когда пробел нажат? то выполняется блок бросок кубика после чего ждать 1 секунду. Если все собрано правильно то ваша стрелка будет делать ровно столько шагов сколько выпало на кубике. Давайте добавим еще одно условие. изменим код кубика. Сделаем условие если значения шага меньше 60 повторить кубик раз повернуть спрайт на угол 6 градусов
  
     
 []
ждать 1 секунду, изменить шаг на 1, а если шаг больше или шаг равен 60 то старт звука, и внешний вид говорить Пройден первый круг.
  
     При таком условии как только количество шагов достигнет 60 или более кубик бросать станет нельзя. так как все значения больше 60 шагов обрабатывает второй код.
  
     Это было движение спрайта по кругу через угол по броску кубика.
  
     Давайте рассмотрим еще одно движение спрайта по периметру, но через коллайдер.
  
     Нарисуем любой спрайт пусть будет шар. И сделаем еще точно такой же шар. можно чуть большего диаметра.
  
     Пусть коллайдер будет желтого цвета ,а пешка Желтого. Далее вместо коллайдер буду писать радар. Пишем код для пешки. Когда флаг нажат, всегда ждать 0,8 секунд и перейти в спрайт который мы переименовали радар .
  
     
 []
  
  
     
  
     
  
Штумоз™No
  
     Это очень важное движение....его можно применять очень разнообразно.
  
     1. это основное движение для использования в играх выстрела.
  
     2.Это важное движение для использования его как датчик стен.
  
     Давайте рассмотрим два варианта
  
     
 []
Давайте посмотрим как использовать его ну пусть как бросить условно снежку.
  
     В этот раз использую клавишу мыши. Тогда пусть радар это наш игрок, а второй спрайт будет снежка. тогда Если флаг
  
     нажат то второй спрайт переходить в спрайт радар, и поворачивается в сторону мышки.
  
     Если мышь нажата то выполнить условие повторить 10 шагов пока не касается края
  
     
 []
.Как только спрайт достигнет края ,он снова вернется в спрайт.
  
     А можно сделать иначе? что бы не ждать когда спрайт достигнет края? Да можно сделать через клон . Делаем тогда другое условие. Всегда Перейти в спрайт, я выбираю повернуться в направлении мышки что бы снаряд летел в сторону указателя мышки, И если мышка нажата, то создать клон самого себя. И таймер 0.3 секунды. Теперь каждый раз когда мышка нажата, будет создаваться клон спрайта. с задержкой 0.3 секунды. И условие для клона, каждый раз когда я начинаю как клон , Всегда идти 10 шагов. В этом варианте мы не зависим от того коснется ли спрайт края или нет , так как каждый раз будет создаваться клон.
  
     
 []
Но нам нужно что бы клон исчезал если касается края, тогда пишем повторять пока не касается края, и условие если касается края ,то удалить этот клон. Теперь мы можем делать выстрелы с любым интервалом, не ожидая пока спрайт вернется. Можно делать любым способом. Какой вам удобнее. Это мы рассмотрели пример когда спрайт выступает условным снарядом.
  
     ну и рассмотрим теперь второй вариант, когда он выступает датчиком движения .В обеих случаях движение начинается с перейти в спрайт. Разница лишь в дальнейшем использовании.
  
Штумоз™No
  
     возвращаемся к тому что создаем два спрайта . Один будет нашим игроком, второй условно датчиком.
  
     
 []
Напишем код для нашего радара. Когда флаг нажат , то внешность, установить эффект Призрак . Если выбрать ноль-то спрайт будет видимый, если 100% то не видимым. Если 50% то будет полу прозрачным. Давайте выставим 80. Затем развернем наш спрайт в направлении 90 градусов что бы он начал движение на право. и перейдем в нижний левый угол по оси координат икс -200 игрек -150. Оператор всегда Задаем движение 30 шагов. Устанавливаем таймер задержки 1 секунда. и условие если коснется край, то идти минус шагов равное количеству шагов, у нас шаг 30 ,потому минус 30.После чего поворот на 90 градусов. Если мы запустим спрайт он начнет все время идти по периметру и когда касается края то вернется в исходную точку и повернет на 90 градусов.
  
     
 []
Давайте напишем код игроку.
  
     Когда флаг нажат -всегда перейти в спрайт имя спрайта-то как мы его назвали, у нас это радар. Перейти в радар.
  
     и задержка 1 секунда.
  
     Теперь когда радар делает шаг ,наш игрок с задержкой 1 секунда перемещается в положение где до этого был радар. Теперь мы можем задать радару призрак 100 процентов. И у нас будет видно только пешку игрока. Что это дает? пешка переходить в положение радара там-де радар был 1 секунду назад. Время может быть любым. Таким образом визуально мы видим только ход пешки, это дает возможность как бы прощупывать расстояние на 1 шаг до того как пешка походить. Мы можем задать условие когда касается спрайта, тогда пешку можно научить обходить препятствие.
  
     Мы рассмотрели большинство примеров того как может передвигаться спрайт. У каждого примера есть свои плюсы и недостатки.
  
     Когда мы водим значение кубик, мы лишь произвольно генерируем цифровое значение которое можно приравнять к какому то значению. Если мы ходим что бы наш спрайт двигался на значение которое указывает кубик, Мы создаем значение переменой кубик и подставляем в количество ходов- значение кубик. Тогда каждый раз когда кубик генерирует значение, наш спрайт передвигается на количество ходов Указанных на кубике.
  
     
 []
Выглядит это так .когда флаг нажат, создали переменную кубик и установили значение равное ноль, после чего мы меняем значение кубика на произвольное число от 1 до 10 и делаем количество шагов через команду повторить- кубик шагов раз, то значение которое выпало на кубике. и сделать 10 шагов. То есть если на кубике выпало к примеру 3,то кубик сделает 3 хода по 10 шагов.
  
     Штумоз™No
  
     
  
     Давайте создадим игровое поле. Любое поле на любое количество клеточек.
  
     Мной создано такое , на 20 клеточек. Давайте пропишем условия нашему спрайту. У меня это просто шар. Когда я нажму флаг моя пешка перейдет в клетку старт .
  
     А теперь
 []
давайте каждой клеточке назначим значение по оси координат.
  
     Для начала создадим Переменную шаг .
  
     И сообщение В событиях.
  
     Передать шаг. Для чего это нужно? клеточек у нас 20 ,таким образом задав каждой клеточке значения место положения мы присваиваем этому положению порядковый номер. и допустим значение кубика равно 3.Задав переменную Шаг изменить на 1 единичку после каждого шага мы можем переместить пешку на нужное количество шагов.
  
     
  
     
  
     
 []
  
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     Для начала нужно проверить что бы мы негде не ошиблись и каждая ячейка соответствует
  
     порядковому номеру, Пишем когда флаг нажат задать кубик ноль, шаг ноль и передать шаг пешки .Теперь меняем шаг на 1 и жмем флаг проверяем переместилась ли клетка в нужную точку.
 []
,после 2,3,4,5 и так 20 раз, после чего водим 21 и смотрим стоить ли пешка на клеточке один.
  
     Если ошибок нет переходим дальше, если есть то исправляем.Проверяем что везде стоить именно когда шаг равен и что мы меняем значение шаг.
  
     
 []
  
  
     
  
     
  
     
  
     теперь зададим значения игрального кубика. Создадим спрайт кубика. Поскольку поле маленькое ,пусть значение будет от 1 до 3.Рисуем костюм любой произвольный
  
     располагаем в строгом порядке. Или можем создать условия что если кубик равно 1,то сменить костюм на 1, если кубик равно 2, то костюм на 2, если кубик = 3 то сменить внешний вид на костюм 3. И если мы получим сообщение Бросить кубик, то изменить кубик на случайное значение от 1 до 3.
  
     Изменить внешний вид кубика на кубик, далее Используем оператор повторить 10 раз и меняем его значение на кубик. После чего прописываем условие изменить Наш пешки на 1,передать шаг пешки ждать 1 секунду. Вернуть кубику значение ноль.
  
     Что мы сделали? когда кубик равен пусть два, кубик изменить значение на 2 то есть кубик равен два, тогда если костюм у нас второй то он покажет нам внешний вид костюма под номером два, потом если кубик два, то он выполнит условие изменить два раза значение шаг пешки на 1 -два раза. где таймер у нас делает задержку между каждым ходом, если изменить это значение то пешка будет ходить быстрее или медленнее. После чего кубик станет равен ноль.
  
     У нас есть поле, есть кубик. Есть пешка. Мы полностью закончили код кубика и разбили значение поля. Теперь пешка будет ходить по полю на значение кубика.
  
     Осталось лишь сделать что бы пешка ходила по нажатию клавиши. Создаем условие.
  
     Когда флаг нажат, то перейти в левый нижний угол на точку старт у меня это икс -57 игрек -13.Задать кубик ноль, шаг пешки равно ноль. Далее если клавиша пробел нажата? то передать бросок кубика и ждать ,на всякий случай для стабильности зададим тайминг 1 секунда.
  
     теперь всегда если клавиша пробел нажата то будет сделана передача бросок кубика, после чего когда в спрайте кубик мы получим сообщение бросить кубик, кубик рандомно задаст значение от 1 до 3, и после чего передаст его ход игроку. после чего согласно этого значения пешка переместиться в заданную точку по нашим координатам.
  
     
  
     
  
     
  
Штумоз™No
  
     
 []
Вот так выглядит наш код .Теперь по пробелу наша пешка будет перемещаться.
  
     Давайте добавим два условия. если пешка остановиться на клетке под номером
  
     4 то пусть она переместиться на клетку 12,и если остановиться на клетке 15 пусть вернется на клетку 8.
  
     Это очень легко сделать.
  
     
  
     
 []
  
  
     
  
     Задаем два условия кубику.
  
     Если значения Шаг пешки равно 4,то
  
     Задать значение шага 12 передать шаг пешки. Если значение шаг равно 15 то задать шаг пешки значение 8передать шаг пешки.
  
     Что мы делаем? каждый раз бросая кубик ,кубик меняет значение на 1 шаг. Условие работает только если значение равно данному значению. Например если выпадет кубик два ,а потом три то значение будет равно 5 ,и условие не будет соблюдено поскольку у нас значение должно быть равно 4. А вот если кубик пусть будет один, потом 3 сумма равно 4,таким образом когда значение будет 4,мы меняем значение пешки сразу на 12 и пешка у нас вместо клетки 4 получит значение 12 и перейдет на значение 12. Точно также за счет линейности движения если значение шагов =15,то мы меняем его на значение 8 .
  
      У нас полностью рабочая игра ,мы можем задать любые переходы по клеткам. в любом направлении. Все это будет выглядеть визуально синхронно и не иметь проблем не срабатывания системы или не корректная работы. В отличие от других способов.
  
     Давайте изменим нижнюю строку кода .Создадим другое условие. если шаг пешки больше 20 то перейти в точку которая у нас условно финишная точка, создать сообщение конец игры ,передать его и Создаем условие когда я получу конец игры стоп другие крипты этого спрайта. Перейдем в спрайт 3 наше поле и зададим условие если я получу конец игры ,то старт любого звука ,и внешность говорить конец игры 8 секунд. Можно добавить оператор стоп все, после тог как говорит конец игры.
  
Штумоз™No
  
     
  
     Теперь когда пешка пройдет круг и если все работает корректно, то у нас вышла готовая игра. Так же мы заходим в кубик и когда мы получим конец игры то тоже стоп все скрипты этого спрайта. Мы можем добавить в игру еще одну пешку. Для этого мы можем создать
  
     дубль спрайта пешки. Но нужно добавить так же дубль кубика ,а так же создать для каждого кубика и пешки свой шаг.
  
     
 []
  
  
     тогда у нас будет два условия когда я получу значение кубик 1 и второе когда я получу значение два.
  
     Первый кубик после того как выполнит свой скрипт, передает ход кубику номер два и ждет .
  
     Если ошибок нету и у вас все значения правильно изменены ,то у первого кубика будет когда я получу значение кубик 1,то изменить кубик 1 и передать шаг 1,после выполнения кода передать значение кубику два. и ждать. Когда кубик два получает ход, то бросок Кубика значение 2 и изменить шаг 2.
  
     если игрока три то создаете три значения кубика и 3 значения шага, а так же три сообщения когда я получу значение кубика один ,два или три.
  
     
  
     И так столько раз- сколько игроков у вас в игре. У вас будет равное количество кубиков, сообщений по количеству игроков. Вы можете задавать ход кубика в любой очередности.
  
     
  
     
  
     
 []
  
  
     
  
     у вас значение будут кубик один и два что бы не запутаться.
  
Штумоз™No
  
     
  
     
  
     Если что то не получается. Уменьшите поле до 9 клеточек. Заделайте все вначале еще раз на 1 кубике, пока не получиться и только потом водите вторую пешку. всегда проверяйте какое значение у вашего хода и кубика. У кубика 1 должны быть все значение 1,у второго все значения кубик 2 , шаг 2 когда я получу сообщение кубик 2. Если все верно все будет работать. Если что то не понятно- сделайте клеточки в одну плоскость.
  
     Давайте сделаем это на примере 3 клетки.
  
     
 []
  
  
     это будет пешка номер один мы оставили только три клетки. Код пешки .когда я получу флаг, перейти в точку икс -157 игрек 5.Задать кубик 1 =0 , шаг 1=0 всегда когда клавиша пробел нажата передать сообщение бросить кубик 1 и ждать до конца и еще тайминг ждать 1 секунда. Когда я получу шаг 1,то если шаг 1 = 1 то перейти в х -126,у -74, если шаг 1=2 то перейти х -72 у-76, если шаг 1=3 то перейти х -36, н -76 . И еще одно условие если ша1 больше 3 то перейти на финиш точка х-7 у-75 передать конец игры. ели я получу конец игры стоп другие скрипты этого спрайта. Когда флаг нажат перейти в точку х-7 у - 3, Когда я получу бросок кубика 1,задать кубик 1 значение от 1 до 3. Изменить костюм на кубик 1,повторить кубик 1 раз изменить шаг 1 ,передать шаг 1 ,звук движения, ждать 1 секунду.
  
     и если у нас есть второй кубик то передать и ждать сообщение кубику два.
  
     Если что то не получается уберите кубик еще раз проверьте как работает просто движение, потом подставе вместо него значение кубика. Кубик два делается точно таким же но значение везде кубик два и шаг два. Начинается с сообщения когда я получу сообщение кубик 2. А в дубле пешки два, меняем значение на шаг два и когда я получу шаг два.
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     Давайте сделаем движение по кубику до конца края и когда мы его достигнем то сменим фон на другой. Мы можем сделать движение игрока в любую сторону, или менять его в любом направлении верх ,вниз ,но мы сделаем в одну сторону слева направо.
  
     
  
     
 []
  
  
     
  
     
  
     Вначале мы создадим клетки , это делается путем создания спрайта и создание его копий.
  
     Когда флаг нажат ,то показаться перейти в точку х-199 у-157 потом повторить количество раз у меня 7 что бы клетки равномерно распределились ,создать клон самого себя и идти 67 шагов
  
     после чего спрятаться и остановить скрипт так как он свою задачу выполнил и дальше не нужен . В результате у нас получиться 7 клеток игрового поля.
  
     
 []
  
     
  
     Теперь сам скрипт спрайта который выполняет роль пешки .Мы делаем два условия когда флаг нажат .Это делается для того что бы не было задержки по переходу и смены фона
  
     
  
     
  
Штумоз™No
  
     Когда флаг нажат ,то первое условие если , когда коснется края перейти в изначальную точку на первую клеточку. х -200 y-124 и сменить на следующий фон .
  
     потом прописываем второе условие . Когда флаг нажат перейти х-199 у-157 ,после чего условие если клавиша пробел нажата? то выполнить блок шаги и ждать 1 секунду.
  
     проверять всегда. Теперь через оператор другие блоки прорисуем определить шаги.
  
     Что бы не делать отдельно кубик Мы создаем Переменную кубик шагов.
  
     И ставим условие Изменить кубик шагов на выдать случайное число от 1 до 3.
  
     после чего повторить количество раз ,где подставляем значение кубика -кубик раз , итди 67 шагов и задаем задержку шагу 1 секунда.
  
     делаем после выполнение блока задержку 1 секунда и изменить значение кубика на ноль -вернуть в исходное значение ноль. Добавить любые фоны что бы их было больше одного.
  
      Если ошибок нет, спрайт будет передвигаться по клеткам и касаясь фона менять фон наследующий. Если что то не так проверьте касается ли ваш спрайт края ?
  
     Теперь вам доступны практически любые передвижения по игровому полю как по кубику так и без него .
  
      Это конец первой части книги
  
     Вторая будет выкладываться по мере написания и потом объединяться в одну
  
      _____________________________________________________________________________
  
     
 []
  
     
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     Комментарий от автора .
  
     Данная книга ,изначально не когда не планировалась как книга. Как она возникла?.
  
     Все началось с Желания автора делать игры . В один прекрасный день пришло понимания что игр которых бы хотелось- их нет. Тогда автор книги задался вопросом как делаются игры?
  
     В поиске ответа были найдены первые ответы и Автор приступил к важному выбору-выбор игрового движка. Были испробованы все что есть Unity, Unreal Engine 4 , CryEngine,
  
     Некоторые движки были отброшены из за высоких требований к ресурсам машины. Другие из за сложности пользования, так был выбран единственно понятный игровой движок Unity
  
     Плюсы- Это самый легкий движок касательно создания игрового окружения ,таких как террейн, в нем самый легкий и удобный инструмент касательно префабов, достаточно много видео уроков.
  
     Из минусов С# и отсутствие векторной графики. Нет перевода на русский язык.
  
     во всем остальном он подошел.
  
     В процессе изучения пришло понимание что бы делать игры ,Нужно обладать знаниями Сценариста, Художника , Аниматора, Дизайнера локаций и сцен ,и навыки программирования. Прикинув теоретически сколько нужно времени что бы хотя бы поверхностно все изучить - результат был не очень хорошим.
  
     Тем не мене игры делают разработчики -а не все эти люди поддельности, то есть те -кто нанимает всех этих людей. А значить шанс был. Автор очень ленивый. Я не знаю человека более ленивого чем автор, и лень это уважительная причина. потому естественно Автор стал искать решение. Люди живут ничтожно мало ,в среднем на активную жизнь это промежуток между 18 лет и 50 лет диапазон всего 30 лет . 30 лет это очень, очень мало. А для получения знаний требуется около 15-20 лет .Этот вариант был отброшен сразу в сторону .Нету у автора лишних лет жизни что бы тратить почти всю -на обучению всего 7 специальности которые могут устареть . Потому принято решение ускорить процесс, найти замену и программные решения что бы человек без навыка рисования, программирования -мог делать программы и игры. Для начало было найдено программное обеспечение по 3 д моделированию это была программа Fuse и сайт Mixamo .Это очень сократило время, Вместо тратить время на учебу за 3 дня были сделаны террейн и 3 д модель.
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     
  
     
  
     
 []
  
  
     
 []
  
  
     
  
     Это был Успех ,всего три дня и у автора была локация и игрок который мог бы по ней бегать .
  
     Но прежде чем бегать , оказалось нужно еще много чего.
  
     Сам сценарий игры ,что бы не просто бегать, понимание как происходят бои, осознание что же хочется получить на выходе? После чего стояла задача
  
Штумоз™No
  
     
  
     
  
     
  
      ,а как теперь одеть то игрока? Игра планировалась как выживание, с системой крафта. О том что бы программировать не думалось ...Задачи первой важности стояли Как одеть? И это была серьезная проблема...
  
     Потому что Дизайн одежды -проблема куда как сложнее оказалось , чем создать целый мир, создать диалоги, написать сценарий, а главное из более чем 12 программ для пошива одежды не подошла не одна.
  
      Это была серьезная проблема. Без пошива одежды -делать игру на базе крафта этой самой одежды -проблема. Решения было не решаемым. Так как программ для пошива одежды нет, таких что бы работать с ними сразу. Потому было решено сменить платформу. с 3 д ,на 2 д..
  
     Поскольку нарисовать в 2 Д реакторе намного проще чем сделать трех мерную одежду.
  
     И вот тут стал вопрос смены игрового движка. Так как Юнити не очень годиться для 2 игр .Слишком много кнопок, слишком много лишнего . И вставал еще один вопрос программирования. Как сказано ранее даже 5-7 лет жизни мне жалко тратить на учебу. Тем более еще и платить за нее. При этом старые способы программирования очень плохо воспринимаются ..Мне нужен был Фортран -но в современном стиле. или что то более современное . Вначале был найден такой инструмент как Kodu Game Lab Это было оно, то что искалось. Всего за три дня инструмент был полностью освоен. И созданы простые игры.
  
     Но в этом инструменте не хватало операторов. Без проблем можно делать квесты, уровни
  
     
 []
  
  
     даже Доту 2. но сделать крафт ,смену брони тут сделать было нельзя, как и реализовать пошаговые бои.
  
  
     
  
     
  
     
  
     
  
Штумоз™No
  
     
  
     
  
     
  
     Поиск не прекращался . Был даже план создать базу гипер ссылок что бы не учить язык программирование ,а подставлять готовое значение.
  
     
 []
  
  
     речь шла вот о чем. Любой код можно представить как визуальное значение. Потому была идея сделать переводчик с визуальных значков на код путем подставления гиперссылки...
  
     И вот случайно автор нашел какой то сайт который звучал как Час кода .Это было достаточно близко к тому что хотелось получить. Просмотрев несколько уроков .Был изменен поиск и Автор стал искать визуальное программирование.
  
     И вот около месяц где то тому назад или два , было найдено искомое...
  
     Это был Scratch.
  
     блочное программирование. Около недели понадобилось что бы разобраться в этом самостоятельно . И начать работать с этой программой.
  
     ,Но шок был от того что оказывается то что искалось больше года было впервые выпущено и сделано еще в далеком 2008 году. Такие Языки как дракон, Алиса. А сам Скретч был выпущен в 2010 .Еще больший шок что эта программа есть в школьной программе в учебниках 4 класса. Делая целенаправленный поиск Автор не мог найти этого -это был шок.
  
     Когда Автор размещал статью о переводе с помощью гипер ссылок с одного языка на другой ,даже в голову не приходило что есть уже почти готовые программы. Любопытно и то что Гугл не разу не вывел патенты круглых телефонов при целенаправленном поиске. Когда мной был разработан дизайн такого телефона. Тогда было решено поискать почему гугл не Ищет. И да Гугл не ищет, найдено более сотни подтверждений этому, я планирую написать книгу касательно рекламы и она будет называться Гугл не ищет .
  
     Самое интересное что мой не получена поддержка сайта https://scratch.mit.edu Первый конфликт возник из за отказа принять оферту сайта, потому что прося не указывать личных данных сайт прямым текстом писал о их сборе и не законом хранении. А вторым пунктом лишал каждого автора, авторского права на сценарий и идею игр, и саму игру. Разрешая брать Авторский проект всем желающим. Потому было предложено купить программу- но автору было отказано потому что бесплатно. Так же сайт оказался почти пустым, и там нет не кого кто мог бы поделиться знаниями. Как оказалось в продаже этих знаний и есть основной доход, потому делиться ими никто не планирует. Изначально эта книга был просто черновик -самоучитель, сюда записывалось что автор делал. как учил. Потом Пришла идея а почему не написать книгу? по сути это тоже самое что писать на стенах в соц сетях. но при этом это более удобно. Даже когда интернет вдруг пропадет -книгой можно будет поделиться .Так появилась на свет Первая часть книги. Разделить ее пришлось на две половины потому что
  
     первый файл повредился и теперь нужно снова писать 40 страниц заново. потому принято решение ,книгу разделить на части. Это Первая часть. Потом будет дописана вторая
  
     
  
автор Штумоз™No
  
  
 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"