9 клас (березень-квітень 2021)

Для виконання практичних завдань, тобі знадобиться середовище Python:

1. Онлайн середовище

2. Mu (як у класі)

Завдання на 29.04.2021

Тема уроку: "Події в ігровому середовищі. Гра "Космічні атаки"

1.  Вітаю! Cьогодні продовжуємо працювати із PyGameZero. Як я вказала на минулому уроці, сьогодні маємо виконати ще один тест за матеріалом минулого уроку

Опитування

2. Уважно прочитай наступний матеріал, якщо є можливість спробуй виконати. На попередньому уроці є відео, де покроково пояснено роботу

Додамо до проекту фігуру (корабель прибульців), котра буде рухатись за вказівником миші

WIDTH = 500
HEIGHT = 500
alien = Actor("alien")
alien.pos = 100, 56
a = 2

def draw():
    screen.clear()
    alien.draw()

def update():
    global a
    alien.left += a
    if alien.left > WIDTH - 50 or alien.left < 0:
        a = a * (-1)

Всі події (Interrupt Events), котрі відбуваються на ігровому полі, фіксуються (Event Listener) середовищем Рygame. Настання події може зумовити виконання певного коду, обробника цієї події Event Handler.


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

Координати вказівника миші ми отримуємо у вигляді так званого масиву. До окремих елементів цього масиву (координата X та координата Y) можна отримати доступ за їхнім індексом. Ці координати можна використати для розміщення, наприклад, корабля прибульців:

def on_mouse_move(pos):

    ship.left = pos[0]

    ship.top = 450

Не забудьте, що ship попередньо необхідно створити у програмі як окремий ігровий об'єкт (Actor).

Доповнення 1

Додамо функцію пострілу: якщо натиснуто кнопку миші, то з корабля прибульців робиться "постріл" кулькою, що летить вгору.

Для програмування використаємо подію 

def on_mouse_down(pos):

У ній потрібно зобразити кульку в координатах корабля прибульців.

Далі слід доповнити  функцію update, адже кулька має постійно рухатись вгору.

Для коректної роботи програми задайте початкове положення кульки за межами екрану.

Доповнення 2

Додайте до проекту перевірку зіткнення двох об'єктів - кульки з корабля прибульців та початкового персонажа гри. При зіткненні вони повинні зникати.

Перевірка зіткнення виконується командою alien.colliderect(ball) якщо її результатом є True, то зіткнення відбулося.

Доповнення 3

Додайте підрахунок очок, які потрібно виводити командою:

screen.draw.text(str(points), (10, 10), color=(200, 200, 200))

у функції draw()

________________________________________

Завдання на 22.04.2021

Тема уроку: "Перший ігровий проект ("Прибульці")"

1.  Вітаю! Cьогодні почнемо розглядати PyGameZero. 

2. Бібліотека pygame zero входить у пакет редактора: https://codewith.mu/

PyGameZero - це обгортка навколо потужної бібліотеки PyGame для написання відеоігор за допомогою Python для новачків.  За допомогою PyGameZero написати розважальну гру надзвичайно просто, буквально за декілька рядків коду. 

Для запуску проекту потрібно натиснути Play (для зупинки - Stop, яка замінює Play під час роботи проекту). Доступ до папок із мультимедійними об'єктами забезпечується кнопками Images, Fonts, Sounds, Music.

Підключивши цю бібліотеку, можемо програмувати графічні ігрові програми.

Команди:

WIDTH = 500

HEIGHT = 500

визначають розмір ігрового екрану.


Блок 

def draw():
screen.fill((128, 0, 0))
означає, що ігровий простір зафарбовується суцільним кольором з кодом 128,0,0

Кодування кольорів відбувається у форматі Red,Green,Blue.

Розмістимо зображення кульки за допомогою команди:

screen.draw.circle((50,100), 25, (255, 0, 0))

(50,100) - координати розміщення 

25 - радіус

(255, 0, 0) - колір

Звертайте увагу на дужки!


Прямокутник будується наступною командою:

screen.draw.rect(Rect((20, 20), (100, 100)), (255, 0, 0))

Rect((20, 20), (100, 100)) - координати діагоналі прямокутника (20,20) - початок діагоналі, (100,100) - кінець діагоналі. Зверніть увагу на написання команди Rect з великої літери!

(255, 0, 0) - колір.


Замість геометричних фігур можна використовувати спрайти із зображеннями. Наприклад,

alien = Actor('alien')

підключає до проекту файл alien.png (він має бути розміщений у каталозі Images середовища програмування)

Команда

alien.pos = 100, 56

задає координати розміщення цього спрайту.

Додавши команду:

alien.draw() 

у функцію def draw(): побачимо відповідне зображення у вказаних координатах

def draw():

    screen.clear()

    alien.draw()


Для того, щоб спрайт рухався, існує функція update():

def update():

    alien.left += 2

    if alien.left > WIDTH:

        alien.right = 0

У ній вказано, що спрайт має рухатись праворуч (збільшувати відстань від лівого краю сцени на 2 пікселі). Коли (якщо) він досягне правої межі сцени, має переміститись за її лівий край.

Як змусити спрайт натомість "відбитись" від межі?

Потрібна змінна а, яка буде визначати напрямок зміни відстані від лівого краю: якщо є рух праворуч, то потрібно додавати додатнє значення, якщо ліворуч - додавати вже від'ємне значення.

def update():

    global a

    alien.left += a

    if alien.left > WIDTH:

        a = a*(-1)

Зверніть увагу, що для можливості зміни значення змінної a всередині функції update(), потрібно зазначити, що ця змінна є глобальною.

https://pygame-zero.readthedocs.io/en/stable/introduction.html

3. Завдання: 

  • законспектуй попередній пункт
  • уважно переглянь наступне відео
  • виконай опитування
  • ! на наступному уроці буде ДЕТАЛЬНА перевірка матеріалу

Завдання на 15.04.2021

Тема уроку: "Корисні модулі в мові Python (частина 2)"

1.  Вітаю! Cьогодні пригадаємо корисні модулі в мові Python та детальніше розглянемо ті, що пропустили. 

2. Найпоширенішими модулями є:

1) Copy

2) Keyword

3) Random

  • randint
  • choice
  • shuffle
4) Sys

  • exit
  • stdin
  • stdout
5) Time

  • asctime
  • localtime
  • sleep
6) Pickle

На минулому уроці ми не розлянули модулі sys, time, pickle.
3. Законспектуй!!!
4) Модуль sys ми розглядали 01.04, коли знайомились із модулями. Цей модуль містить системні функції, якими можна скористатись для керування самою системою Python, зокрема інтерактивною оболонкою.
  • Вихід із оболонки за допомогою функції exit
Функція exit - це спосіб зупинити оболонку або консоль Python. Якщо ввести поданий нижче код, то з'явиться діалогове вікно з питанням, чи хочеш ти вийти. Клацни на Yes й оболонка закриється.
В залежності від версії, можна отримати повідомлення про помилку

В такому випадку треба скористатись вбудованою функцією exit(), яка доступна без додаткових модулів.
  • Читання з об'єктом stdin.
Об'єкт stdin у модулі sys запитує у користувача інформацію, щоб прочитати її й застосувати у програмі. Його робота схожа на роботу функції input, яку ми з вами використовуємо:
Одна із відмінностей між функціями input та readline полягає в тому, що через readline можна передати певну кількість знаків, яка буде читатись

  • Писання з об'єктом stdout.
На відміну від stdin, stdout можна застосовувати для виведення повідомлень в оболонку (або консоль), замість їх прочитання. У деякому сенсі це те ж саме, що і print, але stdout  - це файловий об'єкт

5) Модуль time використовується для операцій з часом. 
Розглянемо на прикладі. Нехай треба визначити, скільки знадобиться часу, щоб надрукувати всі числа від 0 до 999.

  • Конвертування дати за допомогою asctime
Дана функція бере дату у вигляді кортежу й конвертує її у зрозуміліший формат. 
  • Як дізнатися дату і час за допомогою localtime
На відміну від asctime, функція localtime повертає поточну дату й час як об'єкт, зі значеннями у приблизно такому порядку, як і asctime.  

Щоб надрукувати поточний рік та місяць, ти можеш скористатись їхніми індексами. 
  • Розтягування часу за допомогою функції sleep
Дана функція корисна, коли треба уповільнити роботу або відтермінувати запуск програми. Наприклад, щоб друкувати кожну секунду від 1 до 61, ми можемо скористатись таким циклом:

6) Модуль pickle викориcтовується для зберігання інформації.
Даний модуль може стати у пригоді, якщо ти пишеш гру й хочеш зберігати інформацію про те, як далеко зайшов гравець.

Результатом є створення на робочому столі файлу з назвою 'save.dat'. Файл можна відновити об'єкти, які записали у файл.

3. Завдання

_________________________________________

Завдання на 08.04.2021

Тема уроку: "Корисні модулі в мові Python"

1.  Вітаю! Cьогодні розглянемо найкорисніші модулі і розглянемо способи застосування їх функцій.

2.  Законспектуй!!!

Найпоширенішими модулями є:

1) Copy

2) Keyword

3) Random

  • randint
  • choice
  • shuffle
4) Sys

  • exit
  • stdin
  • stdout
5) Time

  • asctime
  • localtime
  • sleep
6) Pickle

Розглянемо детальніше. 

1) Модуль copy містить функції для створення копій об'єктів.

2) Модуль keyword 

Ключове слово (keyword) Python - це будь-яке слово, яке є частиною самої мови, наприклад, if, else, for... Модуль містить функцію iskeyword та змінну kwlist.

Функція повертає True, якщо стрічка є ключовим словом у мові Python. 

Змінна  kwlist повертає список усіх ключових слів у мові Python. 

Наприклад,

True отримали у результаті, оскільки if є ключовим словом у цій мові програмування

False отримали у результаті, оскільки ozwald не є ключовим словом у цій мові програмування


Результатом став перелік ВСІХ ключових слів

3) Модуль random

Даний модуль містить кілька функцій, які можна використовувати для генерування випадкових чисел. Найкориснішими є randint,choice,shuffle.

  • Функція randint вибирає випадкове число із заданого діапазону. Наприклад, 
Також цю функцію можна використати для створення простої гри на вгадування, застосувавши while-цикл:


  • Функція choice використовується для вибору випадкового елемента зі списку. Наприклад, тобі хочеться, щоб Python замість тебе обрав десерт. 


  • Функція shuffle використовується для перемішування списку

!Інші модулі розглянемо через тиждень

3. Виконай тест на перевірку.

******************

 Завдання на 01.04.2021

Тема уроку: "Застосування модулів"

1.  Вітаю! Пригадаймо, яку тему ми опрацювали на попередньому уроці? Ми вивчали функції, а також створили програми для виведення на екран пісеньки "Happy birthday" та для обрахунку ваги на різних планетах та Місяці.

2. Сьогодні ми познайомимось з модулями. 

!!! Занотуй основне!!!

Модулі застосовуються для групування функцій, змінних та інших елементів мови програмування у більші, потужніші програми. 

Деякі модулі вбудовані у Python, а деякі ти можеш завантажити окремо. Ти знайдеш модулі, які допоможуть писати ігри (наприклад, tkinter - вбудований, а PyGame- ні), модулі для маніпулювання зображеннями (наприклад, Pillow) та модулі для малювання тривимірної графіки (як-от Panda 3D). 

Приклади модулів:

  • Модулями можна користуватися для цілої низки корисних речей. Скажімо, ти пишеш гру - симуляцію і хочеш, щоб світ у грі змінювався реалістично, ти можеш вирахувати поточну дату і час, застосувавши вбудований модуль, який називається time (час):


Функція   asctime - це частина модуля time, яка повертає поточну дату й час у вигляді стрічки.
_________
  • Модуль sys містить засоби для спілкування із самою системою Python
Всередині модуля sys є спеціальний об'єкт, який називається stdin (скорочення від - standart input - стандартний ввід), що надає досить корисну функцію під назвою readline (прочитати рядок). Функція readline використовується для читання рядка тексту, який ти набираєш на клавіатурі, до того, як ти натиснеш ENTER.
3. Приклад задачі з використанням модуля:
4. Охарактеризуй наступні модулі: 

os
string
smtplib




2 коментарі: