Урок 1. Ти хто, Lazarus? Давай знайомитись!



В мережі існує безліч інформації про те, як вивчити ту чи іншу мову програмування, причому в самих різних форматах - у вигляді книг, окремих безкоштовних уроків і навіть дорогих спеціалізованих онлайн курсів з отриманням сертифікатів - достатньо лише ввести запит в пошукову систему! Але здебільшого їх усіх поєднує одноманітне викладення матеріалу і нецікаві малокорисні програми-приклади. Аналогічно побудований і шкільний курс інформатики, де в якості прикладів програм розглядають вирішення математичних задач.

Я спробую тобі довести що вчитись програмуванню цікаво. Саме тому цей курс побудований на прикладах розробки відеоігор! Адже що може бути цікавіше і веселіше, ніж захоплива розробка власної гри з багатьма яскравими картинками та анімацією! При цьому програмний код розбирається практично по кожній команді з детальними поясненнями для чого це потрібно! Це зовсім не те ж саме, що вирішувати математичні задачі засобами мови програмування! 
Перш за все потрібно зрозуміти, що програмування — це лише навик, такий самий, як читання чи письмо. Кожен може навчитись програмувати, варто лише знайти потрібну мотивацію. Я пропоную в якості такої мотивації навчитись робити власні ігри. Лише уяви собі реакцію своїх рідних, друзів чи знайомих, коли ти покажеш власноруч написану відеогру!
Щоб освоїти матеріал моїх уроків, тобі зовсім не обов'язково мати якийсь досвід в програмуванні. Потрібно лише впевнено користуватись комп’ютером та мати базові навички роботи в операційній системі, яка в тебе встановлена. Це необхідно для того, щоб тобі встановити необхідні інструменти, правильно зберегти проект та впевнено працювати з файлами і папками. Звичайно, якщо є досвід програмування — це лише плюс, але його відсутність не має тебе турбувати. Уроки орієнтовані все-таки на новачків в програмуванні, хоча також можуть бути матеріали, корисні і для досвідчених гуру.
Також усі уроки з програмування потрібно вивчати сидячи за комп’ютером, оскільки 80% успіху при навчанні залежить від практичних навичок, тому чим більше ти будеш практикуватись, тим краще засвоїш матеріал. Програмний код теж найкраще набирати власноруч в середовищі розробки - так краще запам'ятовується матеріал і покращуються навички роботи з інструментами розробки.
Хоча ми будемо вивчати програмування саме на прикладі ігор, ще не означає, що процес навчання буде легким. Коли будуть виникати складні моменти, я буду намагатись детально їх розібрати, приводячи конкретні приклади реальних програм. Якщо тобі щось буде незрозумілим, пиши в коментарях під відео або на сайті в кінці уроку, я спробую допомогти розібратись в складних моментах.
Історично склалось так, що для навчання програмуванню використовують мову програмування Pascal. Ще зовсім недавно в школах досить часто використовували морально застаріле середовище розробки та компілятор Turbo Pascal 7.0, які були досить популярними на початку 90-х років минулого століття. Зараз поступово ситуація змінюється в кращу сторону, для навчання використовують більш сучасні інструменти. Найчастіше можна зустріти:
Delphi - комерційне середовище розробки, в якому можна писати програми для різних операційних систем. Працює лише в ОС Windows. Колись також використовувалось середовище розробки Kylix для ОС Linux, яке дозволяло перенести проекти Delphi та скомпілювати їх для цієї ОС, але воно досить дано застаріло і більше не підтримується.
☑ PascalABC.NET — це мова програмування Pascal нового покоління, що включає класичний Pascal, більшість можливостей мови Delphi, а також ряд власних розширень. Він реалізований на платформі Microsoft.NET і містить всі сучасні мовні засоби: класи, перевантаження операцій, інтерфейси, обробку винятків, узагальнені класи та підпрограми, збірку сміття, лямбда-вирази, засоби паралельного програмування. Безкоштовне середовище розробки дозволяє розробляти повноцінні програми для ОС Windows.
Free Pascal Compiler та середовища розробки Lazarus IDE (або його розширений дистрибутив CodeTyphon IDE) - повністю безкоштовні інструменти, які дозволяють вести розробку під велику кількість операційних систем та процесорів, працюють в ОС Windows, Linux та OS X. Дозволяють імпортувати проекти Delphi і є головним безкоштовним конкурентом цього платного інструмента. В своїй роботі я використовую CodeTyphon, а для навчання ми будемо використовувати Lazarus. Тож якщо в тебе ще немає його встановлено, відвідай офіційний сайт lazarus-ide.org і скачай необхідий для твоєї операційної системи дистрибутив - в наступному відео ми почнемо перше знайомство!
Більш детально про усі перелічені інструменти можна прочитати у Вікіпедії (усі посилання знаходяться на моєму каналі в описі під відео).

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Якщо тобі потрібна допомога при встановленні інструментів для розробки в твоїй ОС, пиши в коментарях під відео на каналі або на сайті під уроком.

Приклад встановлення в ОС Windows

Приклад встановлення в Linux Mint/Ubuntu та усіх похідних дистрибутивах
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Сьогодні я хочу тебе познайомити з інструментами, якими ми будемо користуватись в процесі навчання. Сподіваюсь, ти вже встановив собі Lazarus? Якщо ні, відвідай офіційний сайт (посилання в описі під відео) і завантаж дистрибутив для своєї операційної системи. Якщо тобі потрібна допомога при встановленні, пиши в коментарях під відео, я спробую допомогти.
Що ж, вважаємо, що ти вже маєш встановлений Lazarus, тож запускай його і будемо знайомитись.
Після заставки, яка відображається декілька секунд відразу після запуску середовища, на екрані з'являється саме середовище, яке виглядає так, як на рис. 1. Лазарус складається з декількох вікон, кожне з яких можна розмістити на екрані так, як тобі подобається, але перед тим як це робити, тобі потрібно знати яке вікно за що відповідає.
Рис. 1. Lazarus після запуску.

Саме головне вікно (на рис. 1 під №1) - основне вікно Лазаруса. Якщо його закрити, відбувається вихід з середовища розробки. Це вікно умовно можна розділити на три частини: Головне меню (список команд у верхній частині вікна), Панель інструментів (кнопки в лівій частині вікна) та Палітра компонентів (частина вікна з багатьма вкладками, на яких розміщені компоненти). Команди головного меню ми будемо розглядати по мірі потреби, щоб не перевантажувати уроки надлишковою інформацією, а ось частину кнопок на панелі інструментів варто запам'ятати. Напевно, найголовніша кнопка - з зеленим трикутником, яка дозволяє скомпілювати і виконати програму (швидкий виклик з клавіатури - клавіша <F9>). Також наступні за нею кнопки призупинити та перервати виконання програми. Якщо ти уважно подивишся на ці кнопки, то прослідковується аналогія з будь-яким плеєром, тому запам'ятати їх не буде важко. І, нарешті, Палітра компонентів - напевно, найважливіша деталь при візуальній розробці програм, оскільки саме за її допомогою неначе з конструктора Лего можна побудувати зовнішній вигляд більшості програм. Компоненти розміщені у вигляді кнопок на різних вкладках, кожна з яких має певну групу компонентів. Більш детально про компоненти я розповім трошки пізніше, коли ми будемо створювати нашу першу гру.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Швидкі клавіші, які я згадую, краще запам'ятати і використовувати в роботі.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Інспектор об'єктів (вікно№2 на рис. 1) безпосередньо пов'язаний з Палітрою компонентів, оскільки саме за його допомогою можна налаштовувати зовнішній вигляд та поведінку будь-якого компоненту з палітри. Вікно Інспектора об'єктів теж можна умовно розділити на три частини: верхня частина показує ієрархію компонентів на формі у вигляді дерева; середня частина безпосередньо відповідає за налаштування вибраного компонента і містить декілька вкладок, основні з них - Властивості та Події; нижня частина містить за наявності підказку за що саме відповідає вибрана властивість або метод компонента. Якщо Інспектора об'єктів на екрані немає (або він може бути схований за іншими вікнами), на нього завжди можна переключитись за допомогою швидкої клавіші <F11>.
Нарешті, під №3 на рис. 1 знаходиться вікно форми. Саме на ній можна розміщувати компоненти з Палітри компонентів, просто клацнувши мишкою по необхідному компоненті а потім у потрібному місці на формі, і - вуаля! - твоя форма вже містить потрібну тобі кнопку, напис або будь-який інший елемент керування! І тобі лише потрібно за допомогою Інспектора об'єктів налаштувати як це буде виглядати, при цьому зовсім не пишучи програмний код! Саме така технологія називається “візуальним програмуванням”.
Але візуальне програмування - це ще не все. За допомогою цієї технології можна лише швидко спроектувати зовнішній вигляд майбутньої програми, а щоб програма могла щось виконувати - тут вже потрібно написати програмний код. Для того, щоб з програмним кодом було зручно працювати, Лазарус має Редактор тексту (вікно №4 на рис. 1). Цей редактор розроблений таким чином, щоб допомагати програмісту зручно і швидко писати програмний код. Для цього він має такі спеціальні можливості, як підсвітка синтаксису мови програмування, автодоповнення програмного коду та багато іншого, про що ми будемо дізнаватись по мірі потреби. Переключатись між віном форми і редактором коду можна за допомогою клавіші <F12>.
І останнє вікно (при першому запуску середовища воно може не відображатись, щоб його побачити, потрібно вибрати через головне меню пункт “Вигляд>Повідомлення”) допомагає побачити виведення повідомлень компілятора. На рис. 1 воно знаходиться під №5. За допомогою повідомлень, які виводить компілятор, можна побачити в якому місці програми допущено помилку з описом що саме зроблено не так, і швидко перейти в це місце щоб зробити виправлення. З часом я навчу як ним правильно користуватись.
Проект, який створюється автоматично, вже має вікно форми з заголовком та кнопками згортання, розгортання і закриття вікна. Щоб перевірити, що вони дійсно відразу виконують свої функції, запустимо програму на виконання. Для цього можна натиснути кнопку з зеленим трикутником (схожу на кнопку “Play”) або на клавіатурі клавішу <F9>. Після цього з'явиться (якщо ще не було) вікно повідомлень компілятора, де будуть виводитись повідомлення по ходу зборки проекту, і через декілька секунд з'явиться готова форма, яка буде реагувати на натискання кнопок в заголовку. Після натиснення на кнопку закриття вікна програма завершить роботу.
          Фактично, Lazarus замість нас створив повністю робоче вікно, в яке нам лишилось додати власний функціонал, а ми для цього не написали жодного рядка програмного коду!
Як я й обіцяв, ми напишемо свою першу програму вже в першому уроці. Але, оскільки ми ще нічого не знаємо про мову програмування, спробуємо просто за допомогою Інспектора об'єктів змінити деякі властивості форми, створеної автоматично. Традиційно, завжди перша програма виводить повідомлення на екран на зразок “Привіт, світ!”. Але ж ми орієнтуємось на розробку ігор, тому трошки відійдемо від традиційної фрази і виведемо повідомлення “Game over!” - це більш в ігровому стилі.
Знайдемо в Інспекторі об'єктів рядок “Caption” на вкладці “Властивості”. Змінимо текст “Form1” на "Game over!" і натиснимо <Enter> - у вікні форми відразу побачимо як змінився заголовок. Знову ж, ми не написали жодного рядка коду, лише змінили одну з властивостей. Можна теж запустити програму на виконання, все буде працювати, і текст заголовку буде саме той, який ми задали в Інспекторі об'єктів.
Що ж, це добре, але добре - це ще не все :). Продовжимо досліджувати, що ще можна зробити за допомогою Інспектора об'єктів.
Наприклад, змінимо колір форми. Знайдемо трошки нижче рядок “Color” і далі можемо поступити дмома способами: або вибрати колір з випадаючого списку, або натиснути збоку від нього кнопку з трьома крапками і вибрати колір з повної палітри. На відео я вибрав жовтий колір з палітри.
Зміна кольору це ще теж досить мало, спробуємо задати також прозорість для вікна. За це в Інспекторі об'єктів відповідають відразу дві властивості - “AlphaBlend” і “AlphaBlendValue”. Перша з них просто включає або відключає за допомогою “галочки” режим прозорості, а друга при включеній прозорості задає значення від 0 до 255, при цьому чим більша цифра, тим менша прозорість. Встановимо це значення на половину (цифра 128). Фікно форми при цьому не змінилось, але коли запустити програму на виконання, з'явиться напівпрозора форма жовтого кольору з заголовком “Game over!”. При цьому все, що знаходиться під самою формою, теж буде видно, а сама форма буде схожою на привида :-0.
Що ще ми можемо покращити? Пропоную розміщення форми змінити так, щоб вона завжди була точно в центрі екрану. Для цього в Інспекторі об'єктів прокрутимо ще нижче аж до властивості “Position”. По замовчуванню там значення “poDesigned”, що означає, що наша форма при запуску буде розміщуватись точно там, де вона знаходилась під час розробки. Якщо вибрати з випадаючого списку значення “poScreenCenter”, після запуску програми вікно буде розміщене точно по центру поточного монітору. Можете поекспериментувати з цими значеннями, щоб подивитись які вони дають результати.
Пропоную також змінити вигляд курсору мишки, коли він буде знаходитись над формою. Для цього потрібно вибрати одне зі значень в списку “Cursor”. На відео вказано значення “crHandpoint” - курсор у вигляді руки з вказівним пальцем, як в браузері при наведенні на посилання.
Ще є багато інших властивостей, які можна встановити через Інспектор об'єктів, якщо буде цікаво про них дізнатись, пишіть коментарі під відео або під цим уроком - я підготую відповідний матеріал.
Як для знайомства, інформації в цьому уроці вже достатньо, тож ти повинен отримати уяву чим і як ми будемо користуватись. А в наступному уроці ми напишемо заготовку для нашої першої гри. Тобі цікаво, яку саме? Підписуйся на мій канал YouTube, і ти завжи будеш в курсі нових уроків (відео на каналі з'являється раніше, ніж урок на сайті)!

Немає коментарів:

Дописати коментар