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

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

Към профила на Адриана Атанасова

Резултати

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

Код

"""
[Title/Звание]
Snake game
[Description/Обрисовка]
Познатата ни на всички любима игра от детството с нова подобрена версия и повече функционалности. Змията трябва да изяде, колкото се може повече ябълки и други предмети без да се удари в стената/очертанията на полето.
[Functionalities/Надарености]
Потребителят си избира ниво на трудност/сложност – с каква скорост ще се движи змията, големината на екрана, където ще се движи самата змия
Различни видове неща за хапване от страна на змията, не само ябълки, както е в традиционната игра. В зависимост какво е изяла, змията ще я става по-бърза/бавна, по-голяма/малка.
Програмата ще отчита времето на играене и съответно точките.
При изяждане на ябълка или друг предмет ще се издава звук.
[Milestones/Възлови точки]
Меню, което съдържа помощ, нива на трудност, бутон за стартиране на игра.
Избор на ниво на трудност/сложност.
Създаване на поле, където ще се играе играта.
Създаване на змия, която се движи и съответно умира при удар в стена.
Сумиране на точките от изядените предмети и таймер, който отброява времето на изиграване на една игра. Извеждане на този резултат на екрана.
[Estimate in man-hours/Времеоценка в човекочасове]
Може би 100 часа
[Usage of technologies/Потребление на технологии]
Tkinter, Pygame, Turtle
"""

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

Адриана обнови решението на 18.12.2022 21:52 (преди над 1 година)

+"""
+[Title/Звание]
+Snake game
+
+[Description/Обрисовка]
+Познатата ни на всички любима игра от детството с нова подобрена версия и повече функционалности. Змията трябва да изяде, колкото се може повече ябълки и други предмети без да се удари в стената/очертанията на полето.
+
+[Functionalities/Надарености]
+Потребителят си избира ниво на трудност/сложност – с каква скорост ще се движи змията, големината на екрана, където ще се движи самата змия
+Различни видове неща за хапване от страна на змията, не само ябълки, както е в традиционната игра. В зависимост какво е изяла, змията ще я става по-бърза/бавна, по-голяма/малка.
+Програмата ще отчита времето на играене и съответно точките.
+При изяждане на ябълка или друг предмет ще се издава звук.
+
+[Milestones/Възлови точки]
+Меню, което съдържа помощ, нива на трудност, бутон за стартиране на игра.
+Избор на ниво на трудност/сложност.
+Създаване на поле, където ще се играе играта.
+Създаване на змия, която се движи и съответно умира при удар в стена.
+Сумиране на точките от изядените предмети и таймер, който отброява времето на изиграване на една игра. Извеждане на този резултат на екрана.
+
+[Estimate in man-hours/Времеоценка в човекочасове]
+Може би 100 часа
+
+[Usage of technologies/Потребление на технологии]
+Tkinter, Pygame, Turtle
+"""

Змията е готина от носталгична гледна точка, но е с крайно малък scope. Функционалната част (изключвайки графики, звуци и прочие) може да се събере в по-малко от 100 реда, което е по-малко от повечето домашни.
И тъй като не искаме да проверяваме колко добре рисувате спрайтове и т.н., а как пишете Python - освен ако не измислиш как да усложниш значително играта, няма да ни даде супер много информация.

Ще бъде ли достатъчно, ако добавя да има вход и регистрация и самата програма да пази съответно предишните резултати на даден потребител и да направя нещо като класация, да можеш да си видиш последните 10 резултата, евентуално да ти изписва, ако си подобриш предишен рекорд спрямо точки и време? Ще оставя да има опция да се играе като гост, като неговите резултати няма да ги пазя.

Добър quality of life feature, но незначителен от гледна точка на имплементация.

Ще имаш опция за максимален брой точки от проект ако добавиш scoreboard (или ако ще ти е по-интересно - някоя друга механика (например различни видове "ябълки", които да имат различен ефект или пък опция за змиите да "забързат" за известно време)) и например hot seat и server (локален е окей, стига да има нетуъркинг) multiplayer опции. Със змия и scoreboard се бориш за максимум 30 (освен ако нямаш страшно добри unit тестове, което не виждам как ще стане при идеята за игра).

Можеш да погледнеш тук за вдъхновение: https://gulper.io/

Да имах идея да добавя различни видове ябълки или по-скоро други плодове, които влияят на змията различно - като това да ства по-бърза или по-бавна, някои да я скъсяват, а други да я уголемят повече, отколкото една "нормална" ябълка. Ще се опитам да ги направя така, че някои от тях да са само за определено време в полето - например "ябълка", която уголемява змията с две, а не с едно да бъде за 5 секунди. Доколкото разбирам идеята на multiplayer опцията е: двама човека на два отделни компютъра да могат да играят играта едновременно на едно поле (съответно с 2 змии). Другия вариант е на един компютър да играят двама отново в едно поле един срещу друг, но не съм сигурна кое се изисква. Другото, което ми идва наум и мога да добавя е с увеличаването на точки например да се добавя някакво ново препятствие в полето. Ако това не е достатъчно, ще се опитам да приложа някоя идея на посочената игра.

Hot seat - двама души на един компютър.
Server-based multiplayer - двама души на отделни (или за целите, на тестването - две отделни приложения стартирани на един компютър, локално).

За да не прекалим със спецификацията, ако имаш (в допълнение на основното описание) 3 от четирите точки по-долу си стискаме ръцете:

  • Нови механики (поне 4-5). Ето малко идеи:
    Полета за игра, които не са напълно празни (да има стени / препятствия). Различни плодове с ефекти - това, което каза - да скъсяват-уголемяват змията или нещо подобно, но и плод, който временно позволява на змията да минава през препятствия. Плод, който дава възможност за бууст или допълнителен живот (така че змията да не умира директно при първият сблъсък, а да речем да се скъсява на половина и да умира само ако няма "животи").
  • Scoreboard.
  • Hot seat multiplayer.
  • Server-based multiplayer.