Домашни > Време е да помислите за проектите си! > Решения > Решението на Даниел Йорданов

Резултати
0 точки от тестове
10 точки от учител

10 точки общо

0 успешни теста
0 неуспешни теста
Код

 1'''
 2[Title/Звание]
 3The ultimate hero battle
 4
 5[Description/Обрисовка]
 6The ultimate hero battle е десктоп приложение, което представлява вид стратегическа игра, свързана с битки между супергерои и борба
 7за надмощие. Играта е представена под формата на сайт с интерактивен дизайн и разнообразни потребителски функционалности.
 8
 9Предистория: Годината е далечната 2222 и планетата Земя е отдавна забравена. Всичко се развива на планетата Монти Пайтън. Човешката раса
10е на изчезване - останали са само най-елитните треньори на супергерои и единственото, което им остава е борбата за надмощие. Те водят
11ежедневни битки кой ще е последният останал сред тях и ще има възможността да се възползва от всички ресурси на Монти Пайтън, като с това
12се превърне в новия владетел на Пайтънската Вселена. 
13
14Основната цел на всеки потребител на приложението е да подбере изначално своите супергерои, които в последствие да тренира и увеличи
15тяхната мощ. Играчът е в състояние да атакува чужди супергерои, но и същевременно да предпазва своите от нападение.
16В хода на играта, всеки потребител събира виртуални пари, наречени пайтънки, с които може да подобри свои супергерой или да закупи нов
17такъв. В играта се поддържа общ пазар, на който се предоставят различни супергерои с цел закупуване от страна на играчите.
18
19Основната цел на приложението е чисто развлекателна, но и същевременно то изисква добра стретегия и малка доза късмет от страна на 
20играчите, което го превръща в желано занимание за през свободното време.
21
22[Functionalities/Надарености]
23{Роля: Играч}
241. Регистрация и вход в профил на играч - приложението пази информация за регистрираните до момента потребители, както и добавя нови
25при регистриране.Също така търси за наличието на вече създаден профил при заявка за вход от страна на клиента. 
262. Изход от профил - при направена заявка за изход от страна на играч, системата изкарва текущия играч от самата игра, като при това
27оставя за съхранение всички негови данни с цел възможност за последвало влизане.
283. Всеки играч има достъп до своя профил - приложението пази информация за всеки създаден профил(лични данни, супергерои, виртуални пари -
29пайтънки, ранк и др.) и при заявка предоставя нуждната информация.
304. Закупуване на определен супергерой от общия пазар - приложението пази списък от всички налични супергерои(създадени от 
31администраторите) и извършва заявки за търсене, добавяне и премахване на такива.
325. Подобряване на герой - приложението поддърда логика за увеличаване на силата на определен герои на даден играч с определена цена, 
33измерена в пайтънки.
346. Достъп до общата класация - приложението съхранява информация за моментното класиране на всички играчи в нея, което от своя страна
35се определя по определена формула, включваща брой изиграни битки, брой победи, налични пайтънки и други. Системата показва текущия 
36ранк на даден потребител в класацията при направена от него заявка.
377. Всеки играч може да участва в битки от вид "неангажиращи" - приложението поддържа логика за провеждане на неангажиращи битки между
38играчи, изразяващи се в директно нападение на супергерой на играч, като с това се определя победител и победен и съответно приходи и
39разходи от този вид битка. Системата следи за правилното провеждане на битката и изпълнява последвалите от нея действия(загуба на герой,
40промяна на пайтънките, промяна на ранклистата и др.)
418. Всеки играч може да участва в битки от вид "ангажиращи" - приложението поддържа логика за провеждане на ангажиращи битки тип league
42между играчи, изразяващи се в ангажиране на няколко играча в този тип битка, последвано от няколко кръга на играта. На всеки кръг
43приложението взима хода на участващ играч в битката и след като всички ходове са направени, системата изчислява резултата от текущия
44кръг - убити герои, отпаднали играчи, приходи, разходи и тн. като за победител се взима последният останал играч с най-много победи
45сред рундовете. Приложението финализира победителят и управлява целият ход на лигата.
46
47{Роля: Администратор}
481. Вход в системата - приложението пази информация за регистрираните администратори в системата, като при вход на администратор в
49системата, тя проверява коректността на данните му и връща своеобразен отговор. Системата не поддържа възможност за регистриране на нови
50потребители като администратори, а вместо това предоставя функционалността като правомощие на самите администратори.
512. Изход от профил - при направена заявка за изход от страна на администратор, системата изкарва текущия администратор от самата игра,
52като при това оставя за съхранение всички негови данни с цел възможност за последвало влизане.
533. Инфорамция за администраторския профил - системата пази информация за съотвения администраторски профил, като при заявка за достъп
54до информация от него връща съответен отговор. 
554. Добавяне на нов администратор - системата поддържа добавянето на нов администратор единствено от страна на друг такъв. Процесът на
56добавяне на профил с администраторски права се контролира от системата.
575. Добавяне на нов играч - приложението предоставя функционалността за добавяне на нов играч от страна на администратора с цел вид на 
58"user support" - при проблем за създаване на профил от страна на играч, съответен администратор предоставя готовия потребителски профил.
596. Изтриване на играч - системата поддържа опция за изтриване на играч от страна на администратора с цел контролиране на достъпа
60до системата за определени играчи - в тази си роля даден администратор се явява в облика си на системен модератор.
617. Достъп до информация за играч - приложението съхранява информация за профилите на всички регистрирани в системата играчи, като тя 
62предоставя достъп(пълен) до всеки един от тях при направена заявка от страна на администратор.
638. Достъп до информация за друг администратор - приложението съхранява информация за профилите на всички регистрирани в системата
64администратори, като тя предоставя достъп(частичен) до всеки един от тях при направена заявка от страна на администратор.
659. Добавяне на герой към общия пазар - приложението предоставя правоможия на администраторите за добавянето на нови герои към общия
66пазар от такива. При заявка за тази функционалност от страна на администратор, системата отговаря за правилното менажиране на
67необходимите данни за създаването на герой, както и запазването му в системата.
6810. Премахване на герой от пазара - приложението поддържа логика за правилното премахване на герой от общия пазар(администратор
69може да премахва само създаден от него герой).
70
71[Milestones/Възлови точки]
72-Модул за боравене с графичния интерфейс на приложението
73-Основен конролер, отговарящ за изпълняване на основните функционалности в системата(делегиране към модули от по-ниско ниво) - роля 
74на "свърваща" точка в системата 
75-Модул, менажиращ логиката за профилите в системата(лична информация, роля, съхранявани обекти)
76-Модул, отговарящ за провеждането на битки(неангажиращи и leagues)
77-Модул, отговарящ за съхранението и достъпа(частни герои на играч или общи в пазара) до героите в играта и тяхното менажиране(подобряване)
78-Модул, отговарящ за менажирането на функционалност от тип "общ пазар"
79-Модули от тип "Фабрика" за създаване на профили и герои, при поискване от страна на другите модули 
80-Модул за обработка на командите, идващи от страна на потребителя и боравещ с основния контролер
81
82[Estimate in man-hours/Времеоценка в човекочасове]
83100 часа
84
85[Usage of technologies/Потребление на технологии]
86-Интерфейс - css, html, javascript
87-Бази данни - db.sqlite3 given by Django
88-създаване и менажиране на сайта - Django
89-server - local server
90-външни библиотеки - в процеса на работа
91
92'''


----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

Дискусия
Даниел Йорданов
14.02.2024 13:43

Здравейте, тъй като срещнах значителни трудности в процеса на работа с Джанго, реших да сменя изцяло идеята си за проект и от няколко дена се насочих в друга област на Python. Това би ли представлявало проблем (мога да предоставя и подходяща документация в случай на нужда)? Предварително благодаря!
Виктор Бечев
05.01.2024 16:19

Разбира се, не очакваме да платиш на Гугъл за сървър, само за защитите. :grin: That being said, ако приложението ти е конзолно - хубаво е **наистина** да е сървър, а не просто всяка инстанция да пише в база данни, т.е. да я има въпросната комуникация.
Даниел Йорданов
05.01.2024 15:11

Благодаря! Само не разбрах дали стана ясно, тук мисля да използвам локален сървър, нали всичко е ок с това?
Виктор Бечев
05.01.2024 14:23

1. Трудно ми е да съм на 100% сигурен, затова ти дадох и идея за допълнително парче функционалност, ако се наложи нещо да разместиш. Генералното правило е следното - лекцията, която Жорката прави, включва фундаментални за Django неща. Django свършва 50+% от работата сам (наследяване на модели, конфигурация и т.н.). Тестове за Django функционалностите могат да се напишат тук таме, но са доста постни. С други думи - ако идеята на човек не надгражда обемът от знания, които Жорката е използвал в лекцията - не е достатъчно обемен. Ти прецени дали имаш достатъчно функционален код, който е отвъд - този модел пази тези данни, вю-то прави query към базата и данните отиват в темплейта. 2. Не е проблем да го направиш конзолно, но имай предвид, че за да имаш persistency на цялото приложение трябва да имаш сървър-клиент архитектура - иначе няма как 100 души да играят и прогресът на всички да се запазва. Ако това не отговаря напълно на въпросите, свиркай. :)
Даниел Йорданов
05.01.2024 14:08

Благодаря за отговора! Ако мога да задам две въпросчета: 1. Достатъчно ли е като функционалности (предвид, че нещо минимално може и да отпадне)? 2. Както говорихме, ще се опитам да го направя на Джанго, но ако не успея, проблем ли ще е да пресъздам абсолютно същите функционалности, но на конзола? Предварително благодаря!
Виктор Бечев
05.01.2024 13:47

Идеята ми напомня на една стара уеб-базирана масовка - Bulfleet. Има потенциал да има прилично количество логика - league битките, пазара и прочие. Можеш дори да добавиш нещо като "континент", "сектори" или някакъв друг вид симулация на картата, което да определя колко ресурс ти е необходим за да водиш определена битка или нещо подобно. Но това е ако се окажеш много напред с работата по проекта. :p
История
Това решение има само една версия.