/SpringNinja

Proekt po vizuelno programiranje

SpringNinja

Проект по визуелно програмирање

Општ опис на играта

Играта Spring Ninja е адиктивна игра во која главна цел ни е постигнување на што поголем резултат(Score). За да постигнеме што поголем score потребно е да скокнеме што е можно повеќе платформи вкупно ,или што е можно повеќе платформи во еден скок . Во спротивно ако не успееме, играта за нас ќе заврши. Всушност тоа ја прави оваа игра предизвикувачка и “заразна”. Играта која е имплементирана е рудиментална копија од следнава игра:

https://play.google.com/store/apps/details?id=com.ketchapp.springninja&hl=en

Spring Ninja е многу лесна за играње, затоа што со едно едноставно копче “space” од тастатурата правиме се. Со кликање на копчето и соодветно држење на истото, ние ќе скокнеме толку колку што сме го задржале. Нормално имаме прогрес бар кое ни служи за ориентација колку веќе го држиме копчето. За да постигнеме што подобри резултати на играта треба да направиме едукативна претпоставка за тоа колку да го држиме копчето и тоа е се.

Начин на имплементирање на играта

  • Организација на класите и процесот на исцртување Сите класи кои што претставуваат компонента која треба да се исцрта, наследуваат од апстрактната класа SceneObjects. Ова ни дозволува да ги чуваме било кои објекти од различните класи кои тековно треба да се исцртаат во единствена генеричка листа :

    public List<SceneObjects DrawableList

Таквите класи се : Platform , Ninja , Menu. Цртањето се изведува врз GamePanel објект наречен Stage (GamePanel е всушност Panel меѓутоа наша класа која наследува од Panel со цел да го подесиме DoubleBuffered својството на true, бидејќи е protected) . Процесот на исцртување се одвива на наједноставен начин во:

private void Stage_Paint(object sender, PaintEventArgs e)

Хендлерот на тој начин што го повикуваме Draw(Graphics g) препокриениот метод за сите објекти кој што тековно се наоѓаат во DrawableList генеричката листа.

  • Два клучни методи во кои се врши комплетна замена на приказот на играта.

public void InitStartMenu() Овој метод се повикува при старт на играта и при секое кликање на btnMenu копчето.

public void InitStartGame() Овој метод се повикува при клик на imagePlay компонентата или пак при клик на btnNewGame копчето.

  • Во овој метод се иницијализираат 101 инстанци од класата Platform со случајна висина , случајна слика и случајна дистанца помеѓу себе.
  • По завршувањето на тој процес се иницијализира Ninja ninja објектот со позиција над првата платформа од горните .
  • Се полни генеричката листа DrawableList со соодветните инстанци.
  • Вака би можело да изгледа:

Опис на класата Ninja

Класата Ninja пред се , наследува од апстрaкната класа SceneObjects.

Како основни променливи во класата се чуваат:

  • Image ninja Се црта над платформата или во воздух при скок.
  • Image imageSpring Овде се чува Ресурсот од сликата со федерот(springot):(Properties.Resources.spring)
  • Image imageNinja Овде се чува Ресурсот од сликата со нинџата:(Properties.Resources.ninja)
  • bool isJumpingImage Ја чува состојбата дали нинџата скока во моментот или не.
  • bool Stop_Horizontal_Movement Бидејќи при судар на нинџата со платформата странично по законите на физиката нинџата треба да запре не движејќи се “внатре” во платформата по x-оската, затоа оваа bool променлива ја чува состојбата дали треба да се запре хоризонталното движење на нинџата или не .
  • bool First_Time Оваа променлива се користи со цел да знаеме дали нинџата за првпат ја напушта платформата при скок.
  • int SpringHeight Оваа променлива се користи со цел да го анимираме протегањето како и собирањето на imageSpring сликата, зголемувајќи ја и намалувајќи ја нејзината висина соодветно.Иницијално таа има вредност 13.
  • int height Висината на нинџата.
  • int X X-координатата која се наследува од SceneObjects.
  • int Y Y-координатата која се наследува од SceneObjects. *int dx забрзувањето по X-оската при скок .
  • int dy забрзувањето по Y-оската при скок .

Методи во класата Ninja:

  • public override void Draw(Graphics g) Овој метод го препокрива Draw() методот од апстрактната класа и го исцртува Ninjata на соодветната позиција со соодветните ресурси.
  • public void ChangePicture() Овој метод ја туглира сликата на Ninjata при состојба на скок или на мирување најизменично.
  • public void AnimateReflection(int reflection) Овој метод ја намалува или зголемува висината на Ninjata за вредноста на reflection параметарот.
  • public void Jump(GamePanel stage ,SpringNinja form) Во овој метод се имплементира физиката и логиката на Ninjata при скокот (забрзувањето за dx , dy ) и го лизга панелот Stage на кој всушност цртаме.