Skip to content
gmamaladze edited this page Mar 14, 2015 · 4 revisions

#დავალების მიზანი

დავალების მიზანია მოცემული არქიტექტურისა და დიზაინის ფარგლებში კონკრეტული აპლიკაციის რეალიზაცია.

რეალურ კომპანიებში ძალიან ხშირია სიტუაცია როდესაც, დეველოპერები არღვევენ ჩაფიქრებული არქიტექტურისა და დიზაინის ჩარჩოებს, რაც შემდგომ პრობლემებთანაა დაკავშირებული (architectural drift).

###მოცემულია

  • ეს რეპოზიტორი შეიცავს დასულებულ თამაშს Snake gmamaladze/FreeUni-SDP-2015-Lab-Realization
  • ამ თამაშის საწყისი ვარიანტი იხ. gmamaladze/SnakeGame1
  • საწყისი ვარიანტისგან განსხვავებით ახალ ვარიანს საფუძვლად უდევს გაფართოებად და მოდულარიზებული არქიტექტურა
  • ფუნქციონალურად ეს ორი ვარიანტი თითქმის იდენტურია

###თქვენი ამოცანები

  1. გაეცანით და გაიაზრეთ შემოთავაზებული არქიტექტურა და დიზაინი
  • მოახდინეთ თევენი ნაწილის რეალიზაცია - მონიჭებული Issue-ს მიხევით
  • გაეცით წერილობითი პასუხი Wiki ში - მონიჭებულ Issue-ში დასმულ კითხვებს პასუხი
  • აღწერეთ Wiki ში როგორ განახორციელებდით თქვენს Issue-ს მიხევით mმონიჭებულ ამოცანას საწყის ვარიანტის ფარგლებში gmamaladze/SnakeGame1

თამაში Snake

თამაშის არსი და წესები იხ.-> lmgtfy

LevelView ში ხდება Level-ის არჩევა LevelView

MazeView თამაში წაგებამდე MazeView


ზოგადი არქიტექტურა (Base Architecture)

(App + Model + UI) აპლიკაციის ზოგადი აგებულება (გამარტივებული)

ურთიერთქმედება

Oveview.sequence.uml

  • შექმნის ფაზა App
  • თამაშის ციკლი

შრეები

Oveview.layers.uml


დეტალური არქიტექტურა და დიზაინი (Detailed Architecture and Design)

(Model) მოდელის აგებულება

კლასების ურთიერთდამოკიდებულება

OverviewModel.class.uml

კლასების ურთიერთქმედება

OverviewModel.sequence.uml


(UI) სამომხმარებლო ინტერფეისის აგებულება

Model-view-presenter კლასების ურთიერთქმედება

გაეცანით Model-view-presenter

ModelViewPresenter.sequence.uml

View Controller კლასების შექმნა და ორკესტრირება

OvewrviewUI.sequence.uml


თამაშის გაფართოების მექანიზმები

ახალი ტიპის არსების შემოღება

Being.class.uml

შეისწავლეთ ზემოთნაჩვენები კლასები. მოიფიქრეთ როგორ გააფართოვებდით აპლიკაციას შემდეგი ახალი არსებებით:

  • თაგვი რომელიც მოძრაობს
  • შხამი რომელიც მოძრაობს
  • სწრაფი გველი რომელიც ორ-ორ უჯრას ახტება

--

არსებების განსხვავებული სიცოცხლის ციკლის შექმნა

Pupulators.class.uml

შეისწავლეთ ზემოთნაჩვენები კლასები. მოიფიქრეთ როგორ გააფართოვებდით აპლიკაციას შემდეგი ახალი პოპულატორებით:

  • აჩენს თაგვს შემთხვევით პოზიციაზე, აქრობს 20 სვლის მერე და აჩენს ახალს
  • აჩენს და აქრობს შხამიან საჭმელს როგორც აღწერილია 1.
  • აჩენს და აქრობს როგორც თაგვებს ასევე მოწამლულ საჭმელს - განიხილეთ 1. და 2. ის კომბინირების შესაძლებლობა
  • შემთხვევითი ინტერვალებით აჩენს და აქრობს ხან თაგვს ხან შხამს ისე რომ დროის ნებისმიერ მომენტში ყოველთვის 3 ცალი შხამი + თაგვია

UI ტექნოლოგიის ჩანაცვლება Lanterna.Terminal -იდან Swing-ზე

Views.class.uml

შეისწავლეთ ზემოთნაჩვენები კლასები. მოიფიქრეთ როგორ მოახდენთ ჩანაცვლებას.