You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/bg/6-space-game/1-introduction/assignment.md

8.4 KiB

Създаване на игра: Приложение на шаблони за дизайн

Преглед на задачата

Използвайте новопридобитите си знания за шаблоните за дизайн, за да създадете прост прототип на игра! Тази задача ще ви помогне да практикувате както архитектурни шаблони (наследяване или композиция), така и системата за комуникация pub/sub, която научихте в урока.

Инструкции

Създайте проста игра, която демонстрира шаблоните за дизайн от този урок. Вашата игра трябва да бъде функционална, но не е необходимо да има сложна графика фокусирайте се върху основната архитектура и комуникационните модели.

Изисквания

Изберете архитектурен шаблон:

  • Опция А: Използвайте наследяване на класове (като примера GameObjectMovableHero)
  • Опция Б: Използвайте композиция (като подхода с фабрична функция и смесени поведения)

Реализирайте комуникация:

  • Включете клас EventEmitter за съобщения pub/sub
  • Настройте поне 2-3 различни типа съобщения (като PLAYER_MOVE, ENEMY_SPAWN, SCORE_UPDATE)
  • Свържете потребителския вход (клавиатура/мишка) с игровите събития чрез системата за събития

Елементи на играта, които да включите:

  • Поне един герой, контролиран от играча
  • Поне един друг игрови обект (враг, предмет за събиране или елемент от околната среда)
  • Основно взаимодействие между обектите (сблъсък, събиране или комуникация)

Предложени идеи за игри

Прости игри, които да обмислите:

  • Игра със змия Сегментите на змията следват главата, храната се появява случайно
  • Вариация на Понг Ракетата реагира на входа, топката се отблъсква от стените
  • Игра за събиране Играчът се движи и събира предмети, като избягва препятствия
  • Основи на защита на кула Кулите откриват и стрелят по движещи се врагове

Насоки за структурата на кода

// Example starting structure
const Messages = {
  // Define your game messages here
};

class EventEmitter {
  // Your event system implementation
}

// Choose either class-based OR composition approach
// Class-based example:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }

// OR Composition example:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }

Тестване на вашата реализация

Уверете се, че кодът ви работи, като:

  • Тествате дали обектите се движат или променят, когато събитията се задействат
  • Потвърдите, че множество обекти могат да реагират на едно и също събитие
  • Проверите, че можете да добавяте нови поведения, без да променяте съществуващия код
  • Уверите се, че входът от клавиатурата/мишката правилно задейства игровите събития

Насоки за предаване

Вашето предаване трябва да включва:

  1. Файл(ове) с JavaScript с вашата реализация на играта
  2. HTML файл за стартиране и тестване на играта (може да бъде прост)
  3. Коментари, обясняващи кой шаблон сте избрали и защо
  4. Кратка документация за типовете съобщения и тяхната функция

Критерии за оценка

Критерии Отлично (3 точки) Задоволително (2 точки) Нуждае се от подобрение (1 точка)
Архитектурен шаблон Коректно реализира наследяване ИЛИ композиция с ясна йерархия на класове/обекти Използва избрания шаблон с малки проблеми или несъответствия Опитва се да използва шаблона, но реализацията има значителни проблеми
Реализация на pub/sub EventEmitter работи коректно с множество типове съобщения и правилен поток на събитията Основната система pub/sub работи с някои проблеми при обработката на събития Системата за събития присъства, но не работи надеждно
Функционалност на играта Три или повече интерактивни елемента, които комуникират чрез събития Два интерактивни елемента с основна комуникация чрез събития Един елемент реагира на събития или има основно взаимодействие
Качество на кода Чист, добре коментиран код с логична организация и модерен JavaScript Като цяло добре организиран код с адекватни коментари Кодът работи, но липсва организация или ясни коментари

Допълнителни точки:

  • Креативна механика на играта, която демонстрира интересни приложения на шаблоните
  • Множество методи за вход (събития от клавиатура И мишка)
  • Мащабируема архитектура, която лесно може да бъде разширена с нови функции

Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.