Решение на Време е да помислите за проектите си! от Айше Джинджи

Обратно към всички решения

Към профила на Айше Джинджи

Резултати

  • 8 точки от тестове
  • 0 бонус точки
  • 8 точки общо
  • 0 успешни тест(а)
  • 0 неуспешни тест(а)

Код

'''
[Title/Звание]
Typing speed test
[Description/Обрисовка]
Приложение, което позволява на потребителите да тестват скоростта си на писане
[Functionalities/Надарености]
Основни функционалности (MVP):
Преди започване на играта, потребителя въвежда nickname с който да участва.
Системата генерира произволна последователност от думи.
Потребителите въвеждат показаните на екрана думи в продължение на 60 секунди.
Системата следи броя правилно въведени думи, на базата на всички такива
и дава статистика на потребителя относно точността (в %) на писане, брой думи в секунда (wps) и т.н.
Допълнителни функционалности (Със сигурност искам да реализирам поне част от тях):
- Класация:
Всеки потребител може да види своето място в класацията.
Всеки потребител може да вижда местата на останалите потребитлеи в класацията
Класирането се извържва на базата на полученият от теста резултат.
Потребители с по-висок wps коефициент са по-нагоре в класацията
- Екран с настойки:
Потребителите могат да избират персонализирани опции за теста.
Персонализираните тестове не се включват в класацията.
Персонализираните опции могат да включват продължителност на теста, език на думите (първоначлано - английски/български)
- Typing speed war - мултиплеър вариант на теста
Потребителите имат възможност да организират "битки".
В дадена битка могат да участват от 2-5 участника.
Битките се извършват в реално време.
Битките се извършват в рамките на 60 секунди.
По време на битката потребителите олучават последователност от едни и същи думи, които трябва да въведат правилно възможно най-бързо.
Печели този, с по-висок wps. При равенство, печели този, с по-голяма точност.
[Milestones/Възлови точки]
Създаване на речник с думи - да се fetch-ват от някъде/текстов файл, от който да ги чета
Генериране на случайна последователност от думи от генерирания речник
Обработка и проверка на user input и генериране на резултати
* Мрежова комуникация в реално време (ако се стигне до мултиплеър частта)
* Съхранение на Leaderboard-a - два варианта - или докато работи приложението, или да се пазят в база от данни
[Estimate in man-hours/Времеоценка в човекочасове]
75 часа
[Usage of technologies/Потребление на технологии]
Още не съм напълно сигурна дали да е уеб приложение, или десктоп приложение
За десктоп приложението: pygame, tkinter
Disclaimer: Не съм сигурна какво да използвам за мултиплеър частта, ако не е уеб приложение
За уеб:
Предполагам, че отново мога да използвам pygame
За мултиплеър частта ще използвам сокети
Не съм сигурна какво да използвам за UI-a
Disclaimer: Приемам всякакви предложения относно технологиите, които мога да използвам, както и формата (дали да е десктоп приложение или уеб приложение)
'''

История (1 версия и 1 коментар)

Айше обнови решението на 20.12.2022 15:52 (преди над 1 година)

+'''
+[Title/Звание]
+Typing speed test
+
+[Description/Обрисовка]
+Приложение, което позволява на потребителите да тестват скоростта си на писане
+
+[Functionalities/Надарености]
+
+Основни функционалности (MVP):
+Преди започване на играта, потребителя въвежда nickname с който да участва.
+Системата генерира произволна последователност от думи.
+Потребителите въвеждат показаните на екрана думи в продължение на 60 секунди.
+Системата следи броя правилно въведени думи, на базата на всички такива
+и дава статистика на потребителя относно точността (в %) на писане, брой думи в секунда (wps) и т.н.
+
+Допълнителни функционалности (Със сигурност искам да реализирам поне част от тях):
+- Класация:
+Всеки потребител може да види своето място в класацията.
+Всеки потребител може да вижда местата на останалите потребитлеи в класацията
+Класирането се извържва на базата на полученият от теста резултат.
+Потребители с по-висок wps коефициент са по-нагоре в класацията
+
+- Екран с настойки:
+Потребителите могат да избират персонализирани опции за теста.
+Персонализираните тестове не се включват в класацията.
+Персонализираните опции могат да включват продължителност на теста, език на думите (първоначлано - английски/български)
+
+- Typing speed war - мултиплеър вариант на теста
+Потребителите имат възможност да организират "битки".
+В дадена битка могат да участват от 2-5 участника.
+Битките се извършват в реално време.
+Битките се извършват в рамките на 60 секунди.
+По време на битката потребителите олучават последователност от едни и същи думи, които трябва да въведат правилно възможно най-бързо.
+Печели този, с по-висок wps. При равенство, печели този, с по-голяма точност.
+
+[Milestones/Възлови точки]
+Създаване на речник с думи - да се fetch-ват от някъде/текстов файл, от който да ги чета
+Генериране на случайна последователност от думи от генерирания речник
+Обработка и проверка на user input и генериране на резултати
+* Мрежова комуникация в реално време (ако се стигне до мултиплеър частта)
+* Съхранение на Leaderboard-a - два варианта - или докато работи приложението, или да се пазят в база от данни
+
+[Estimate in man-hours/Времеоценка в човекочасове]
+75 часа
+
+[Usage of technologies/Потребление на технологии]
+Още не съм напълно сигурна дали да е уеб приложение, или десктоп приложение
+
+За десктоп приложението: pygame, tkinter
+Disclaimer: Не съм сигурна какво да използвам за мултиплеър частта, ако не е уеб приложение
+
+За уеб:
+Предполагам, че отново мога да използвам pygame
+За мултиплеър частта ще използвам сокети
+Не съм сигурна какво да използвам за UI-a
+
+Disclaimer: Приемам всякакви предложения относно технологиите, които мога да използвам, както и формата (дали да е десктоп приложение или уеб приложение)
+'''

Есенцията на идеята е супер. Опасявам се обаче, че ако направиш декстоп приложение само с основната идея - имаш не повече от 100 реда код за MVP частта (освен ако не се впуснеш в невероятни магии с графиките, но ядрото на функционалността в крайна сметка е if input_word == expected_word: ...), което е с размер по-малък от повечето домашни.

За да е достатъчно сложен проектът ти препоръчвам един от следните три варианта:

  1. Ако искаш да е по-gamelike, можеш да направиш нещо подобно - https://www.youtube.com/watch?v=2_cnqoeDrpw&ab_channel=NoisyPixel
    Естествено без супер красивите графики, но няма да оценяваме това. Хубавото на този подход е, че не ти е необходимо перфектно изпълнение за максимални точки, тъй като самата идея е по-сложна. :)
  2. Ако предпочиташ да задържиш идеята, с която си тръгнала - задължително имплементирай мултиплеър частта. А и като цяло всичките nice-to-haves (и дори тогава трябва да имаш добро изпълнение и добри тестове, защото отново - функционално не е страшно сложна идеята). От това, което съм видял, смея да твърдя, че се подценяваш по отношение на това колко бързо ще се справиш с основната част от функционалността.
  3. И в крайна сметка ако решиш да отвориш чувалът със змиите и да го направиш уеб - основното ти предизвикателство ще бъде да не го напишеш почти изцяло на javascript. Бога ми, нямам идея как ще стане. :D

П.П. Що се отнася до мултиплеъра в декстоп приложение - пак socket.