Changes between Initial Version and Version 1 of UseCaseImplementations


Ignore:
Timestamp:
02/11/26 21:55:02 (5 weeks ago)
Author:
231102
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseImplementations

    v1 v1  
     1= UseCasePrototypeImplementation
     2
     3Изворниот код е достапен [https://github.com/GorjanStefanovski/ArcadiaHub-v1 тука].
     4
     5На следната табела се прикажани сработените кориснички сценарија:
     6
     7|| ID || Use Case ||
     8|| 1 || Најава со Google ||
     9|| 2 || Креирање корисничко име ||
     10|| 3 || Избор на игра ||
     11|| 4 || Избор на класа ||
     12|| 5 || Барање на противник (Queue) ||
     13|| 6 || Борба (Real-time) ||
     14|| 7 || Преглед на Лидер табла ||
     15|| 8 || Управување со пријатели ||
     16|| 9 || Е-пошта известувања за пријатели ||
     17|| 10 || Преглед на статистика ||
     18
     19== ИД: 1 - Најава со Google
     20
     21Пристап до почетната страница каде што системот го пренасочува кон Google OAuth сервисот каде корисникот ја избира својата сметка.
     22
     23[[Image(login_screen.png)]]
     24
     25oAuth проверката за успешност, покрај креденцијалите кои се доделини од Google ги проверува и самата апликација. Притоа доколку е успешна најавата се креира нов корисник во базата на апликацијата.
     26
     27[[Image(oAuth.png)]]
     28
     29== ИД: 2 - Креирање корисничко име
     30
     31Доколку корисникот се најавува прв пат, системот го пренасочува кон формата за креирање на уникатно корисничко име.
     32
     33[[Image(create_username.jpg)]]
     34
     35По успешно внесување на име кое не е зафатено, корисникот се пренасочува кон почетната страна.
     36
     37== ИД: 3 - Избор на игра
     38
     39Изборот на игра се случува пред изборот на класа бидејќи секоја игра си има свои класи.
     40
     41[[Image(choose_class_img.jpg)]]
     42
     43За пренос на страната се користи мапирање до патеката **/fight/choose-game**
     44
     45[[Image(choose_class.jpg)]]
     46
     47== ИД: 4 - Избор на класа
     48
     49Во "Fight Lobby" делот, корисникот има можност да избере помеѓу достапните класи (херои), како што се Samurai Mack или Kenji.
     50
     51[[Image(class_selection.jpg)]]
     52
     53Со клик на иконата или името на класата, системот го евидентира изборот и ги прикажува статистиките (Health, Damage, Speed) за избраниот херој.
     54Изборот на класата е подоцна значаен во самиот queue за поврзување на играчите.
     55
     56== ИД: 5 - Барање на противник (Queue)
     57
     58Откако ќе избере класа, корисникот клика на копчето "Find Match". Корисникот се префрла на екран за чекање додека системот бара соодветен противник.
     59
     60[[Image(fight_waiting.jpg)]]
     61
     62Штом се најде противник, системот автоматски ги пренасочува двајцата играчи кон арената.
     63
     64Имплементацијата за самиот queue го изведуваме во алгоритам кој го зема во предвид не само избраната класа на играчот, туку и избраната игра. Ова е битно затоа што системот мора да провери дали дадени играчи ја имаат избрано истата игра (играч 1 да избере бокс, играч 2 да избере карате).
     65
     66[[Image(queue_1.jpg)]]
     67[[Image(queue_2.jpg)]]
     68
     69== ИД: 6 - Борба (Real-time)
     70
     71По успешно поврзување, се вчитува арената (fight.html). Двајцата играчи се видливи на екранот со нивните Health барови.
     72
     73[[Image(fight_start.png)]]
     74
     75Корисниците ја користат тастатурата за движење и напад. Сите акции се синхронизираат во реално време преку WebSockets.
     76
     77[[Image(socket_1.png)]]
     78
     79Кога здравјето на еден од играчите ќе падне на нула, се прикажува порака за крај на мечот (Game Over) и победникот.
     80
     81[[Image(game_over.png)]]
     82
     83Имплементацијата за вчитување на анимациите и движењата на играчите се поставено во логиката на клиентска **frontend** страна.
     84
     85[[Image(movement.jpg)]]
     86[[Image(movement_1.jpg)]]
     87
     88
     89== ИД: 7 - Преглед на Лидер табла
     90
     91Постои можност за филтрирање на табелата според различни критериуми.
     92
     93[[Image(leaderboard_filter.png)]]
     94
     95Со избирање на опцијата "Leaderboard" од менито, корисникот добива листа на најдобро рангираните играчи сортирани според бројот на победи.
     96
     97[[Image(leaderboard_page.png)]]
     98
     99Истата имплементација се наога:
     100
     101[[Image(leaderboard_code.png)]]
     102
     103== ИД: 8 - Управување со пријатели
     104
     105Корисникот може да пребарува други играчи според нивното корисничко име и да им испрати покана за пријателство.
     106
     107[[Image(friends_page.png)]]
     108
     109== ИД: 9 - Е-пошта известувања за пријатели
     110
     111При додавање на пријатели освен приказ на предниот екран
     112
     113[[Image(add_friend.png)]]
     114
     115Се испраќа мејл порака за нотификација на корисникот (истата gmail адреса со која е логиран преку oAuth)
     116
     117[[Image(email_add_friend.png)]]
     118
     119Истата мејл порака се испраќа и при потврда/одбивање на тоа барање на пријателство.
     120
     121[[Image(email_accept_friend.png)]]
     122
     123Логиката за испраќање на мејл е направена преку надворешната библиотека javamailsender.
     124
     125[[Image(java_mail_pom.png)]]
     126
     127Со просто конфигурирање на истата е лесно овозможено преку било која поставена адреса во application.yml да испраќа мејл.
     128
     129[[Image(app_yml_mail.png)]]
     130[[Image(mail_service.png)]]
     131
     132== ИД: 10 - Преглед на статистика
     133
     134На страницата за профил, корисникот има увид во својата лична статистика, вклучувајќи победи, порази и моментален Win Rate.
     135
     136[[Image(statistics_user.png)]]
     137
     138Тоа е изведено преку
     139
     140[[Image(statistics_user_code.png)]]