Училищно развитие NRW - програмиране с GLOOP - преподавателски проекти - асоциации

Ориентационна зона (етикети за прескачане)

  • ООП с GLOOP
  • Бърз старт
  • Учебен проект
    • Въведение
    • Последователно програмиране
    • Контролни структури
    • Собствени класове
    • Асоциации
    • Наследяване
  • документация
  • инсталация
  • ЧЗВ
  • Лице за контакт
  • Разрешително

CMS_VALUE [3]

Докато собствените класове вече са въведени и са им дадени прости връзки, следващият раздел разглежда по-подробно потока от данни между няколко обекта. Досега обектите са имали достъп до други обекти само ако са ги създали сами. Това вече не е достатъчно за по-сложни проблеми. Ако даден обект трябва да има достъп до такъв, който не е създаден сам, трябва да се предаде съответна препратка като параметър в конструктора или в метод. Това означава, че един и същ обект може да бъде достъпен от различни местоположения, като се използват различни идентификатори. Това изисква от студентите да имат по-задълбочено разбиране за справка, което ще бъде разработено в следващия модул.

материали:

  • Въвеждаща фаза UV IV.1 (Връзка)

Последователна сцена

Този модул се стартира с помощта на класическа идея за игра. Трябва да се програмира игра, в която малко НЛО може да се види в долната част на екрана и може да се премести наляво и надясно от играча с помощта на клавишите със стрелки.

Сега астероидите идват отгоре, което трябва да се избягва. Ако НЛО е ударен от астероид, играта е приключила.

Първоначално играта трябва да се реализира само с три астероида. Освен това всички обекти са в равнината XY, т.е. той е моделиран двуизмерно.

Фигура 1: Скица за планиране за проекта за игра НЛО

Анализът на този проблем бързо води до това, че НЛО се състои от няколко GLObjects, които трябва да бъдат преместени синхронно, ако НЛО се избягва. Такъв състав вече е известен.

Проблемът тук се крие в детайлите, ако някой попита как трябва да се реализира сблъсъкът между НЛО и астероид. Един от възможните подходи е първоначално да се изключи този проблем и да се приложи само контрола на НЛО и движението на астероидите. Тогава съответното моделиране без сблъсък изглежда така:

Фигура 2: Моделиране на прост прототип без сблъсък

Съответната програма може да бъде разработена от самите ученици или в части, дадени като прототип и анализирани.

Добра идея е да разширите програмата по такъв начин, че астероид, който е мигрирал в долната част от изображението на камерата, да бъде поставен в ново положение отвъд горния ръб на обхвата на откриване на камерата, за да може отново да лети към НЛО . По този начин може да се симулира постоянен поток от препятствия само с три обекта.

Нулирането на астероида може да бъде възложено на съответния частен метод.

Отделно от това, сблъсъкът все още трябва да бъде реализиран. Всеки астероид трябва да получи достъп до НЛО, за да може да провери сблъсък и, ако е необходимо, метода експлодира () на НЛО може да се обади. За да направите това, препратката към НЛО се предава в конструктора на астероида и се записва от него. Тогава разширеното моделиране изглежда така:

Фигура 3: Моделиране на прост прототип със сблъсък

Методите обновявам до първоначалното() и срещна () са частни методи на класа астероид и са в Ход() на астероид Наречен. Методът срещна () тества за сблъсък с НЛО и връща стойността вярно, ако има такъв. Методът Ход() на астероид след това ще взриви НЛО.

Фигура 4: Играта с НЛО в две измерения

За да реши дали има сблъсък, астероидът използва теоремата на Питагор, за да изчисли разстоянието между него и НЛО. За да направи това, той трябва да определи позицията на НЛО, използвайки методите gibX () и gibY () може да попита. Ако разстоянието е под определена прагова стойност, се приема сблъсък.

На този етап трябва да се отбележи, че обектът от тип НЛО вече може да бъде достъпен от две различни места. Освен това се използват две препратки, които дори могат да имат един и същ идентификатор, защото са в различни класове.

Ако играта с НЛО завърши по този начин, първата стъпка в разширяването може да бъде разширяването й до третото измерение. Камерата е наклонена на 90 градуса и движението на НЛО около методите придвижване нагоре () и придвижване надолу () разширен. Позиционирането на астероидите също ще бъде разширено с едно измерение, точно както изчисляването на разстоянието между астероиди и НЛО трябва да бъде преобразувано в три измерения.

Тъй като сега има значително повече пространство за избягване, броят на астероидите трябва да се увеличи с помощта на поле. Резултатът може да бъде симулация като Фигура 5.

Фигура 5: Играта с НЛО в три измерения

Разбира се, възможно е също така да се включи промяна в скоростта на играта, да се допуснат няколко пропуска преди играта да приключи или да се добави лазер, с помощта на който астероидите могат да бъдат изхвърлени извън пътя им.

задълбочаване

За да се задълбочи принципът на многократно препращане на обекти, има няколко идеи за проекти, които се основават на подобно моделиране като играта НЛО.
Проектът за улавяне на топка е алтернатива. Три топки се движат на квадратно игрално поле. Когато достигнат ръба на полето, сменете посоката, така че да не напускат полето. Играчът контролира малка кутия за капан през игралното поле и трябва да предизвика сблъсък с топките и да ги „хване“ по този начин. Ако куршум бъде хванат, той изчезва. Когато всички топчета бъдат уловени, играта приключва.

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

Фигура 6: Скица за планиране за проекта Kugelfangen

Моделирането за този проект трябва да включва класовете Капан за куршуми, Куршум, кутия и кибритено поле включва. Моделирането в контекста на библиотеката Pens and Mice или в Greenfoot обикновено се прави без класа кибритено поле, защото те интерпретират екрана като игрално поле. Тъй като библиотеката GLOOP няма екран, тук трябва да се разработи отделен клас. Едно възможно моделиране може да изглежда така:

Фигура 7: Моделиране на проекта за улов на топката

Чрез създаване на обект от класа Капан за куршуми играта започва. Той създава всички други обекти и извиква метода за полето и трите топки в анимационен цикъл ход () На. В зависимост от записа на клавиатурата, методът setMovement () нарече кутията. Новата посока на движение на кутията се прехвърля към нея с помощта на два параметъра, при което pVX е компонентът на движение в посока X и pVZ компонентът на движение в посока Z. Следователно играта е моделирана в равнината XZ. Докато се движат, както кутията, така и топката проверяват дали са стигнали до ръба на игралното поле. За целта те могат да получат достъп до игралното поле и да поискат неговата ширина и дълбочина. Топките също така проверяват дали има сблъсък с кутията и евентуално да станат неактивни и невидими.

Играта приключва, когато всички топки са неактивни.

Следният изходен код представлява метода за преместване на топката:

Метод на изходния код за преместване на топките

След това крайният резултат може да изглежда както е показано на Фигура 8.

Фигура 8: Моделно решение за проекта Kugelfangen

Разбира се, повече от три топки могат лесно да бъдат създадени с помощта на поле. Правилата на играта също могат да бъдат коригирани. Напр. кутията не променя автоматично посоката, когато напуска игралното поле, а по-скоро пада над ръба и по този начин приключва играта. Точковият брояч също може да бъде инсталиран. След това играта може да приключи, когато се достигне определен брой точки. Преди да бъде достигнат този брой точки, новите топки продължават да се появяват.

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

Фигура 9: Шофиране и билярд като допълнителни възможности за специализация

  • QUA-LiS NRW
  • Професионално обучение
  • Стандартен архив
  • допълнително образование
  • Защита на данни
  • отпечатък