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

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

10 точки общо

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

  1"""
  2[Title/Звание]
  3Battleships Game
  4
  5[Description/Обрисовка]
  6Целта на играта е да потопиш всички кораби на опонента си.
  7
  8Играят двама играчи един срещу друг. Всеки играч притежава набор от кораби, 
  9които поставя на своята част от дъската. Противниковият играч не вижда 
 10местоположението на корабите на своя опонент. Чрез изтрели към дадена клетка
 11от дъската всеки играч се опитва да уцели противниковите кораби, като отгатва тяхното местоположение.
 12След всеки изтрел играчът получава отговор дали е уцелил част от кораб или е пропуснал.
 13Играчите се редуват, като всеки прави по един изтрел. Успешен изтрел, уцелена част от кораб, дава
 14възможност за втори последващ изтрел. Даден кораб бива потопен когато всички негови части са уцелени.
 15Играчът губи, когато всички негови кораби са потопени.
 16
 17Тагове: Turn-based game, 2-player game, 2D top-down game, strategy game, single player, multiplayer game, pvp game, board game
 18
 19[Functionalities/Надарености]
 20
 21## Основен вариант на играта
 22
 23Основният вариант на играта е документиран тук: https://en.wikipedia.org/wiki/Battleship_(game)
 24
 25Правила:
 261. Игралното поле на всеки играч представлява мрежа от 10x10 клетки, където играчът разплога корабите си върху своето поле.
 27
 282. Всеки играч има на полето си:
 29    - 1 кораб, състоящ се от 5 клетки;
 30    - 2 кораба, състоящи се от 4 клетки;
 31    - 3 кораба, състоящи се от 3 клетки;
 32    - 4 кораба, състоящи се от 2 клетки;
 33
 343. Корабите не могат да се допират един до друг. Трябва да има поне едно поле разстояние
 35между всеки два кораба (дори и по диагонала). Играчите не могат да местят корабите си, 
 36след приключване на началната фаза на играта - поставянето на корабите.
 37
 384. Всеки играч има право на един опит, в който стреля по една-единствена клетка. 
 39Единствено след успешен изтрел се получава възможност за стреляне
 40по друга клетка в същия ход.
 41
 425. Печели този, който първи потопи корабите на опонента си.
 43
 44## Модерен вариант с gimmicks (Идеи)
 45
 46Играта предоставя варианти, където могат да се очакват нарушения 
 47по множество от гореописаните правила. 
 48
 49Например:
 50- игралното поле може да е с различен размер, да има обекти, 
 51с които играчите да взаимодействат.
 52- други видове кораби извън стандартните.
 53- вариант за изтрели, които покриват повече от една клетка.
 54
 55## Ботове
 56
 57Играта може да се играе single player срещу ботове. 
 58Предлага се възможност на играча да избере противников бот,
 59използващ различни стратегии. Различната сложност на опонента
 60предоставя възможност както за начинаещи, така и за напреднали играчи
 61да имат оспорвана битка. Най-трудният бот използва оптимална стратегия.
 62
 63## Multiplayer
 64
 65Играта може да се играе в мрежа с друг играч - Player versus player (PvP).
 66Това дава възможност за тестване на уменията срещу друг реален играч,
 67който има собствена уникална стратегия. Играта срещу приятели и познати
 68също е възможна.
 69
 70[Milestones/Възлови точки]
 71- Начален екран - избиране на вид игра single player/ multiplayer.
 72- Екран за началната фаза - поставянето на корабите (Interface).
 73- Entity-та - игрално поле, кораби.
 74- Visuals - визуална репрезентация на обектите.
 75- Проверки за позицията на корабите.
 76- Алгоритми за поведението на бота.
 77- Осъществяване на връзка с реален противник при multiplayer.
 78- Сървър, който поддържа игрите (всяка игра е стая). / Player-to-player връзка.
 79- Главна логика на играта - начало, край, ход, изтрел, успешен/ неуспешен изтрел. 
 80- Проверки за потребителски вход (user input).
 81
 82[Usage of technologies/Потребление на технологии]
 83- Pygame
 84- Вградени модули - random, collections, sys, os.
 85- Математически модули - алгоритми за ботовете.
 86- За multiplayer-a socket, threading.
 87
 88[Estimate in man-hours/Времеоценка в човекочасове]
 89- Разучаване на Pygame - 4 човекочасове.
 90- Изготвяне на начална фаза за поставяне на кораби с повечето подробности - 20 чч.
 91- Имплементиране на visuals - 6 чч.
 92- Изготвяне на основната логика по играта + ботове - 12 чч.
 93- Осъществяване на връзката между 2ма играчи - 12 чч.
 94- Тестове - 12 чч.
 95
 96Общо - 66 човекочасове.
 97
 98Човекочасовете са скалируеми и не са задължително репрезентация на 1 час труд.
 99Също така подлежат на стандартно отклонение от изписаното средно. 
100
101[Out of scope/Допълнителни точки]
102- Извън обхвад на проекта, но интересна идея: 
103Вариант с движещи се кораби след началната фаза.
104- Потребителски профил с Numpy/ Pandas за потенциални статистики.
105- Скалиране на трафика при голям брой клиенти при използване на сървър.
106- Красив user interface (UI).
107
108[Notes/ Бележки]
109- Частта с Modern variant може да бъде изцяло преместена в "Out of scope".
110- Фокусът на приложението може да се измести
111към Modern Variants and gimmicks в gameplay-a вместо Multiplayer, което да доведе
112до изместване на частта с Multiplayer-а/ Server-а в "Out of scope".
113- Името на играта подлежи на промяна спрямо идентифициране на фокуса и основния point на играта.
114Например ако има динозавър в морето кoйто изяжда случаен кораб, подходящо заглавие би било
115Seazavour Battleships Defence и т.н.
116"""


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

OK

Дискусия
Виктор Бечев
05.01.2024 14:13

Проектът звучи супер, а като човек, който накрая ще стане свидетел или участник в играта - най-забавно би било да добавиш и "модерните" правила или като цяло нещо разчупено. :grin: Като цяло go wild, на нас UI с Pygame, достатъчно логика, че да напишеш някой друг тест, мултиплеър и някакви интересни механики различни от стандартното ни върши работа (стандартното е сравнително проста имплементация). Какво точно ще представлява играта - зависи от теб.
Георги Кунчев
04.01.2024 14:06

В общи линии си мисля, че си ги подредил правилно. Най-удачно ми звучи първото. Най-просто - последното. Аз гласувам за номер 1, но ако номер 2 ти е на душата, стреляй с него. Номер 3 трябва да надградиш и/или да използваш доста разнообразни източници на информация. Номер 4 не виждам как би разширил достатъчно.
Теодор Костадинов
04.01.2024 13:05

Не мога да преценя колко големи/ сложни биха били тези проекти. Времето за проучване може да надминава количеството код накрая (без първия safe bet). Не знам и точно колко функционалностти да предоставят за усложнение. Не коректно ли е да помоля за ваше мнение?
История

t1Multiplayer Battleships -> Base game + (variants/ gimmick), optimal bot algorithm, Pygame.t1"""
2Car API - statistical data for prices, mileage. Finds ads around you. Bot that talks with owner?, FastAPI2[Title/Звание]
3Bot that automates searching for apartments to rent.3Battleships Game
4Bot that automates finding a job in LinkedIn.4 
5[Description/Обрисовка]
6Целта на играта е да потопиш всички кораби на опонента си.
7 
8Играят двама играчи един срещу друг. Всеки играч притежава набор от кораби, 
9които поставя на своята част от дъската. Противниковият играч не вижда 
10местоположението на корабите на своя опонент. Чрез изтрели към дадена клетка
11от дъската всеки играч се опитва да уцели противниковите кораби, като отгатва тяхното местоположение.
12След всеки изтрел играчът получава отговор дали е уцелил част от кораб или е пропуснал.
13Играчите се редуват, като всеки прави по един изтрел. Успешен изтрел, уцелена част от кораб, дава
14възможност за втори последващ изтрел. Даден кораб бива потопен когато всички негови части са уцелени.
15Играчът губи, когато всички негови кораби са потопени.
16 
17Тагове: Turn-based game, 2-player game, 2D top-down game, strategy game, single player, multiplayer game, pvp game, board game
18 
19[Functionalities/Надарености]
20 
21## Основен вариант на играта
22 
23Основният вариант на играта е документиран тук: https://en.wikipedia.org/wiki/Battleship_(game)
24 
25Правила:
261. Игралното поле на всеки играч представлява мрежа от 10x10 клетки, където играчът разплога корабите си върху своето поле.
27 
282. Всеки играч има на полето си:
29    - 1 кораб, състоящ се от 5 клетки;
30    - 2 кораба, състоящи се от 4 клетки;
31    - 3 кораба, състоящи се от 3 клетки;
32    - 4 кораба, състоящи се от 2 клетки;
33 
343. Корабите не могат да се допират един до друг. Трябва да има поне едно поле разстояние
35между всеки два кораба (дори и по диагонала). Играчите не могат да местят корабите си, 
36след приключване на началната фаза на играта - поставянето на корабите.
37 
384. Всеки играч има право на един опит, в който стреля по една-единствена клетка. 
39Единствено след успешен изтрел се получава възможност за стреляне
40по друга клетка в същия ход.
41 
425. Печели този, който първи потопи корабите на опонента си.
43 
44## Модерен вариант с gimmicks (Идеи)
45 
46Играта предоставя варианти, където могат да се очакват нарушения 
47по множество от гореописаните правила. 
48 
49Например:
50- игралното поле може да е с различен размер, да има обекти, 
51с които играчите да взаимодействат.
52- други видове кораби извън стандартните.
53- вариант за изтрели, които покриват повече от една клетка.
54 
55## Ботове
56 
57Играта може да се играе single player срещу ботове. 
58Предлага се възможност на играча да избере противников бот,
59използващ различни стратегии. Различната сложност на опонента
60предоставя възможност както за начинаещи, така и за напреднали играчи
61да имат оспорвана битка. Най-трудният бот използва оптимална стратегия.
62 
63## Multiplayer
64 
65Играта може да се играе в мрежа с друг играч - Player versus player (PvP).
66Това дава възможност за тестване на уменията срещу друг реален играч,
67който има собствена уникална стратегия. Играта срещу приятели и познати
68също е възможна.
69 
70[Milestones/Възлови точки]
71- Начален екран - избиране на вид игра single player/ multiplayer.
72- Екран за началната фаза - поставянето на корабите (Interface).
73- Entity-та - игрално поле, кораби.
74- Visuals - визуална репрезентация на обектите.
75- Проверки за позицията на корабите.
76- Алгоритми за поведението на бота.
77- Осъществяване на връзка с реален противник при multiplayer.
78- Сървър, който поддържа игрите (всяка игра е стая). / Player-to-player връзка.
79- Главна логика на играта - начало, край, ход, изтрел, успешен/ неуспешен изтрел. 
80- Проверки за потребителски вход (user input).
81 
82[Usage of technologies/Потребление на технологии]
83- Pygame
84- Вградени модули - random, collections, sys, os.
85- Математически модули - алгоритми за ботовете.
86- За multiplayer-a socket, threading.
87 
88[Estimate in man-hours/Времеоценка в човекочасове]
89- Разучаване на Pygame - 4 човекочасове.
90- Изготвяне на начална фаза за поставяне на кораби с повечето подробности - 20 чч.
91- Имплементиране на visuals - 6 чч.
92- Изготвяне на основната логика по играта + ботове - 12 чч.
93- Осъществяване на връзката между 2ма играчи - 12 чч.
94- Тестове - 12 чч.
95 
96Общо - 66 човекочасове.
97 
98Човекочасовете са скалируеми и не са задължително репрезентация на 1 час труд.
99Също така подлежат на стандартно отклонение от изписаното средно. 
100 
101[Out of scope/Допълнителни точки]
102- Извън обхвад на проекта, но интересна идея: 
103Вариант с движещи се кораби след началната фаза.
104- Потребителски профил с Numpy/ Pandas за потенциални статистики.
105- Скалиране на трафика при голям брой клиенти при използване на сървър.
106- Красив user interface (UI).
107 
108[Notes/ Бележки]
109- Частта с Modern variant може да бъде изцяло преместена в "Out of scope".
110- Фокусът на приложението може да се измести
111към Modern Variants and gimmicks в gameplay-a вместо Multiplayer, което да доведе
112до изместване на частта с Multiplayer-а/ Server-а в "Out of scope".
113- Името на играта подлежи на промяна спрямо идентифициране на фокуса и основния point на играта.
114Например ако има динозавър в морето кoйто изяжда случаен кораб, подходящо заглавие би било
115Seazavour Battleships Defence и т.н.
116"""
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op