Skip to content

twixl0ver/-2048

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

-2048

Этапы создания

Анализ

После анализа задачи мы решили, что основным классом будет Field. Он будет работать с ячейками (класс Tile): передвигать их, обрабатывать столкновения и обновлять их значения. Класс ButtonControl будет вызывать метод Field::move() с соответствующим направлением при нажатии на кнопку.

Реализация

  • вначале был создан класс ExWindow. Он отличается от Graph_lib::Simple_window наличием кнопки закрытия окна
  • после него Tile - класс ячейки
  • эскиз Field
  • классы ArrowButton и ButtonControl.
  • доделан и протестирован Field
  • класс Scoreboard. Счетчик очков во время игры

Проблемы

  1. Первая проблема возникла при написании ButtonControl. Был наверно написан callback для кнопки. Чтоб исправить ее, мы немного изменили структуру проекта: унаследовали Field от ExWindow. Callback мы перенесли в него, и после этого нажатия стали обрабатываться корректно.
  2. Была проблема и при написании Field::move(). Так как обьекты класса Graph_lib::Rectangle (Tile - дочерний класс Graph_lib::Rectangle) запрещено копировать, перемещать плитки по матрице засчет их копирования не получится, как мы изначально планировали. Тогда мы решили, что будем перемещать не сами плитки, а только их значения, в то время как плитки будут оставаться неподвижными.
  3. Также появились трудности и с отрисовкой обьектов: было непонятно, как прикрепить к окну все обьекты. Проблема решилась сама собой, после того как мы унаследовали Field от ExWindow, а все рисуемые обьекты сделали полями Field.

About

game 2048

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published