5.3 Създаване на проект със Скрач, 1 част, сценарий и декомпозиране | Creating a project with Scratch, script and decomposition

ТУК ЩЕ НАУЧИТЕ КАК:
- създаване на сценарий на образователен проект по тема от предоставен списък;
- декомпозиране на сценарий на програмно изпълними дейности с изучаван блоков език за програмиране.

Игра "Грижа за дърво"
Ще участвате в състезание по природни науки и трябва да направите проект, който илюстрира важността на светлината и водата за растенията. Измислете сценарий и го декомпозирайте на подзадачи, които да решите чрез подпрограми.

Откъде да започнете?
Припомнете си кои са основните въпроси, на които трябва да отговорите при създаването на сценария на проекта:
- Игра или анимация – игровият елемент в проекта ще го направи по-интересен и по-привлекателен – можете да давате точки при поливане и достатъчно светлина и да отнемате при недостатъчно количество вода и светлина.
- Какви са правилата на играта – опишете ги точно и ясно – целта на играта е възможно най-дълго време играчът да се грижи за дървото, без да го преполее или без то да изсъхне, като го полива и му
осигурява необходимата светлина.
- Какви герои и сцени са необходими – изберете или създайте подходящи герои и сцени. Можете да използвате примерния проект Грижа за дърво в студиото към учебника.
Колко са героите в примерния проект?
Стартирайте проекта и открийте колко герои има.
Начално състояние на героите
Определете какво е началното състояние на героите при стартиране на играта – например лейката е пълна, облакът не закрива слънцето, дървото е зелено.
Променливи
Основните параметри – вoда, светлина, закриване на слънцето, време на живот на дървото, зависят от действията на потребителя. За проследяване на стойностите им ще са необходими променливи. Определете колко променливи са необходими и дали се отнасят за всички герои, или само за някои.

Точки за поливане, светлина, време
- Определете начални стойности на точките при стартиране на нова игра.
- Задайте при какви стойности на точките за поливане и светлина дървото ще бъде преполято или ще изсъхне, ще изгори или му липсва светлина и играта ще свърши:
- светлина: под 0 точки – липса на светлина, над 100 точки – прегаряне
- вода: под 0 точки – изсъхване, над 100 точки – преполиване

Трик за професионалисти
Опишете какво прави всеки герой по време на играта и как неговите действия се отразяват на хода на играта. Помислете с какви блокове ще реализирате сценария му и ако е необходимо, помислете за кои действия трябва да дефинирате собствени блокове.

Сценарий на героя Sun
По време на играта слънцето е статично и не извършва никакви действия.

Сценарий на героя Cloud
При стартиране на играта облакът се намира на определено място и се прави проверка дали не е върху слънцето. Ако не е върху слънцето и потребителят го докосне с мишката, той се премества върху слънцето и се намаляват точките за светлина. След това се връща на първоначалното си място.

Сценарий на героя Leika
При стартиране на играта лейката е пълна и се намира на определено място. При влачене с мишката и докосване на дървото се имитира поливане, като водата в нея се излива. Точките за вода се увеличават с 10, чашата се връща на началното си място и отново е пълна.
Сценарий на героя Tree
Ако дървото не е полято (точките за вода са под 0), казва „Пресъхнах“. 
Ако е преполято (точките са над 100), казва „Удавих се“. 
Ако няма достатъчно светлина (точките за светлина са под 0), казва „Нямам светлина“. 
Ако има прекалено много светлина (точките са над 100), казва „Изгорях“. 
При всички тези случаи дървото си сменя костюма с подходящ и играта свършва.
Проверка за събитие
Много често в програмирането се използва допълнителна променлива, чрез която се предава информация дали някакво събитие е настъпило или не. Променливата има само две стойности – „Да“ или 1, ако събитието се е случило и „Не“ или 0, ако не се е случило.
Например в играта е важно да знаете дали потребителят „държи“ чашата с вода, дали облакът е върху слънцето. Ако събитието не е настъпило, например потребителят не е натиснал и задържал основния бутон на мишката, променливата Държим чаша има стойност „Не“. Ако събитието е настъпило, променливата приема стойност „Да“.