spritepro 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. spritepro-1.1.0/PKG-INFO +667 -0
  2. spritepro-1.1.0/README.md +644 -0
  3. spritepro-1.1.0/pyproject.toml +34 -0
  4. spritepro-1.1.0/setup.cfg +4 -0
  5. spritepro-1.1.0/spritePro/__init__.py +398 -0
  6. spritepro-1.1.0/spritePro/audio/__init__.py +4 -0
  7. spritepro-1.1.0/spritePro/audio/audio_manager.py +242 -0
  8. spritepro-1.1.0/spritePro/button.py +312 -0
  9. spritepro-1.1.0/spritePro/components/__init__.py +0 -0
  10. spritepro-1.1.0/spritePro/components/animation.py +366 -0
  11. spritepro-1.1.0/spritePro/components/health.py +617 -0
  12. spritepro-1.1.0/spritePro/components/mouse_interactor.py +144 -0
  13. spritepro-1.1.0/spritePro/components/pages.py +76 -0
  14. spritepro-1.1.0/spritePro/components/text.py +180 -0
  15. spritepro-1.1.0/spritePro/components/timer.py +192 -0
  16. spritepro-1.1.0/spritePro/components/tween.py +580 -0
  17. spritepro-1.1.0/spritePro/constants.py +83 -0
  18. spritepro-1.1.0/spritePro/demoGames/amongus.py +158 -0
  19. spritepro-1.1.0/spritePro/demoGames/animationDemo.py +82 -0
  20. spritepro-1.1.0/spritePro/demoGames/bar_demo.py +325 -0
  21. spritepro-1.1.0/spritePro/demoGames/bar_hp_demo.py +228 -0
  22. spritepro-1.1.0/spritePro/demoGames/bar_simple_demo.py +194 -0
  23. spritepro-1.1.0/spritePro/demoGames/child_movement_demo.py +143 -0
  24. spritepro-1.1.0/spritePro/demoGames/color_text_demo.py +466 -0
  25. spritepro-1.1.0/spritePro/demoGames/demo_pymunk.py +51 -0
  26. spritepro-1.1.0/spritePro/demoGames/easy_clicker.py +198 -0
  27. spritepro-1.1.0/spritePro/demoGames/fireworks_demo.py +132 -0
  28. spritepro-1.1.0/spritePro/demoGames/fps_camera_demo/fps_camera_demo.py +107 -0
  29. spritepro-1.1.0/spritePro/demoGames/hero_vs_enemy.py +61 -0
  30. spritepro-1.1.0/spritePro/demoGames/input_events_demo.py +73 -0
  31. spritepro-1.1.0/spritePro/demoGames/pages_demo.py +92 -0
  32. spritepro-1.1.0/spritePro/demoGames/particle_demo.py +46 -0
  33. spritepro-1.1.0/spritePro/demoGames/particle_template_test.py +420 -0
  34. spritepro-1.1.0/spritePro/demoGames/particles_images_demo.py +122 -0
  35. spritepro-1.1.0/spritePro/demoGames/particles_templates_demo.py +147 -0
  36. spritepro-1.1.0/spritePro/demoGames/ping_pong/event_bus.py +3 -0
  37. spritepro-1.1.0/spritePro/demoGames/ping_pong/game.py +62 -0
  38. spritepro-1.1.0/spritePro/demoGames/ping_pong/game_objects/ball.py +42 -0
  39. spritepro-1.1.0/spritePro/demoGames/ping_pong/game_objects/platform.py +25 -0
  40. spritepro-1.1.0/spritePro/demoGames/ping_pong/main.py +21 -0
  41. spritepro-1.1.0/spritePro/demoGames/ping_pong.py +400 -0
  42. spritepro-1.1.0/spritePro/demoGames/resource_cache_demo.py +29 -0
  43. spritepro-1.1.0/spritePro/demoGames/save_load_demo.py +368 -0
  44. spritepro-1.1.0/spritePro/demoGames/scenes_demo.py +151 -0
  45. spritepro-1.1.0/spritePro/demoGames/sorting_order_demo.py +84 -0
  46. spritepro-1.1.0/spritePro/demoGames/test_horror.py +188 -0
  47. spritepro-1.1.0/spritePro/demoGames/text_fps_demo.py +255 -0
  48. spritepro-1.1.0/spritePro/demoGames/toggle_demo.py +278 -0
  49. spritepro-1.1.0/spritePro/demoGames/tweenDemo.py +242 -0
  50. spritepro-1.1.0/spritePro/editor/__init__.py +8 -0
  51. spritepro-1.1.0/spritePro/editor/level_editor.py +104 -0
  52. spritepro-1.1.0/spritePro/editor/level_editor_ui.py +457 -0
  53. spritepro-1.1.0/spritePro/event_bus.py +46 -0
  54. spritepro-1.1.0/spritePro/game_context.py +220 -0
  55. spritepro-1.1.0/spritePro/input.py +80 -0
  56. spritepro-1.1.0/spritePro/particles.py +554 -0
  57. spritepro-1.1.0/spritePro/readySprites/__init__.py +23 -0
  58. spritepro-1.1.0/spritePro/readySprites/bar.py +834 -0
  59. spritepro-1.1.0/spritePro/readySprites/text_fps.py +222 -0
  60. spritepro-1.1.0/spritePro/resources.py +63 -0
  61. spritepro-1.1.0/spritePro/scenes.py +86 -0
  62. spritepro-1.1.0/spritePro/sprite.py +1169 -0
  63. spritepro-1.1.0/spritePro/spriteProGame.py +316 -0
  64. spritepro-1.1.0/spritePro/toggle_button.py +245 -0
  65. spritepro-1.1.0/spritePro/utils/__init__.py +55 -0
  66. spritepro-1.1.0/spritePro/utils/color_effects.py +520 -0
  67. spritepro-1.1.0/spritePro/utils/save_load.py +1026 -0
  68. spritepro-1.1.0/spritePro/utils/surface.py +53 -0
  69. spritepro-1.1.0/spritepro.egg-info/PKG-INFO +667 -0
  70. spritepro-1.1.0/spritepro.egg-info/SOURCES.txt +71 -0
  71. spritepro-1.1.0/spritepro.egg-info/dependency_links.txt +1 -0
  72. spritepro-1.1.0/spritepro.egg-info/requires.txt +1 -0
  73. spritepro-1.1.0/spritepro.egg-info/top_level.txt +1 -0
@@ -0,0 +1,667 @@
1
+ Metadata-Version: 2.4
2
+ Name: spritepro
3
+ Version: 1.1.0
4
+ Summary: A high-level 2D game framework for Python, built on Pygame, designed to simplify and speed up game development.
5
+ Author-email: NeoXider <neoxider@gmail.com>
6
+ Project-URL: Homepage, https://github.com/NeoXider/SpritePro
7
+ Project-URL: Issues, https://github.com/NeoXider/SpritePro/issues
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.7
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Topic :: Games/Entertainment
19
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
20
+ Requires-Python: >=3.7
21
+ Description-Content-Type: text/markdown
22
+ Requires-Dist: pygame>=2.0.0
23
+
24
+ <div align="center">
25
+
26
+ # 🎮 [SpritePro](https://github.com/NeoXider/SpritePro)
27
+
28
+ ### **Создавайте игры на Python БЫСТРО и ПРОСТО!**
29
+
30
+ [![Python](https://img.shields.io/badge/Python-3.7+-blue.svg)](https://www.python.org/)
31
+ [![Pygame](https://img.shields.io/badge/Pygame-2.0+-green.svg)](https://www.pygame.org/)
32
+ [![License](https://img.shields.io/badge/License-Open%20Source-yellow.svg)](LICENSE)
33
+
34
+ **Мощный игровой фреймворк, который превращает создание 2D игр из сложной задачи в удовольствие!**
35
+
36
+ ![Demo](https://github.com/user-attachments/assets/db56e1fd-0db5-4353-945d-c4a31c6b9d7f)
37
+
38
+ </div>
39
+
40
+ **SpritePro** — это высокоуровневая библиотека для создания 2D игр на Python, построенная на базе Pygame, которая автоматизирует рутинные задачи разработки и предоставляет готовые инструменты для быстрого создания игр.
41
+
42
+ ---
43
+
44
+ ## 📑 Содержание
45
+
46
+ - [⚡ Почему SpritePro?](#-почему-spritepro)
47
+ - [🌟 Что делает SpritePro особенным?](#-что-делает-spritepro-особенным)
48
+ - [🚀 Быстрый старт](#-быстрый-старт-30-секунд)
49
+ - [Установка](#установка)
50
+ - [Ваша первая игра](#ваша-первая-игра-5-строк)
51
+ - [💡 Примеры "Вау!" возможностей](#-примеры-вау-возможностей)
52
+ - [🎮 Что можно создать?](#-что-можно-создать)
53
+ - [📊 Сравнение с альтернативами](#-сравнение-с-альтернативами)
54
+ - [🎯 Ключевые преимущества](#-ключевые-преимущества)
55
+ - [🎬 Демо-игры](#-демо-игры)
56
+ - [📦 Что внутри?](#-что-внутри)
57
+ - [📖 Документация](#-документация)
58
+ - [🎯 Примеры использования](#-примеры-использования)
59
+ - [🆚 SpritePro vs Обычный pygame](#-spritepro-vs-обычный-pygame)
60
+ - [🎁 Бонусы](#-бонусы)
61
+ - [🚀 Начните прямо сейчас!](#-начните-прямо-сейчас)
62
+ - [📊 Статистика](#-статистика)
63
+ - [🤝 Сообщество](#-сообщество)
64
+ - [📄 Лицензия](#-лицензия)
65
+
66
+ ---
67
+
68
+ ## ⚡ Почему SpritePro?
69
+
70
+ ### 🚀 **Вместо этого:**
71
+ ```python
72
+ # С pygame нужно писать ВСЁ самому:
73
+ import pygame
74
+ pygame.init()
75
+ screen = pygame.display.set_mode((800, 600))
76
+ clock = pygame.time.Clock()
77
+ sprite = pygame.sprite.Sprite()
78
+ # ... 50+ строк кода для базовой игры ...
79
+ ```
80
+
81
+ ### ✨ **С SpritePro:**
82
+ ```python
83
+ # Всё работает из коробки!
84
+ import spritePro as s
85
+
86
+ s.get_screen((800, 600), "My Awesome Game")
87
+
88
+ player = s.Sprite("player.png", (50, 50), s.WH_C, speed=5)
89
+
90
+ while True:
91
+ s.update(fill_color=(20, 20, 30))
92
+ player.handle_keyboard_input() # Готово! Движение работает!
93
+ ```
94
+
95
+ **Это всё!** Игра готова за 5 строк кода! 🎉
96
+
97
+ ---
98
+
99
+ ## 🌟 Что делает SpritePro особенным?
100
+
101
+ ### 💎 **Автоматизация всего, что раздражает**
102
+
103
+ | Обычный pygame | SpritePro |
104
+ |----------------|-----------|
105
+ | ❌ Ручная отрисовка каждого спрайта | ✅ Автоматическая отрисовка всех спрайтов |
106
+ | ❌ Ручное управление камерой | ✅ Камера работает автоматически |
107
+ | ❌ Ручная обработка событий | ✅ Встроенная обработка ввода |
108
+ | ❌ Ручное управление слоями | ✅ Автоматическая система слоев |
109
+ | ❌ Ручное управление звуком | ✅ Готовый AudioManager |
110
+ | ❌ Ручная система сохранений | ✅ PlayerPrefs из коробки |
111
+ | ❌ Ручная система частиц | ✅ Простой ParticleEmitter |
112
+
113
+ ### 🎯 **Всё, что нужно для игры - уже внутри:**
114
+
115
+ - ✅ **Автоматическая отрисовка** - просто создайте спрайт, он сам отрисуется
116
+ - ✅ **Умная камера** - слежение за объектами одной строкой
117
+ - ✅ **Простая физика** - столкновения, гравитация, движение из коробки
118
+ - ✅ **Система частиц** - красивые эффекты за 3 строки кода
119
+ - ✅ **UI компоненты** - кнопки, переключатели, текст готовы к использованию
120
+ - ✅ **Анимации и твининг** - плавные переходы без головной боли
121
+ - ✅ **Аудио менеджер** - управление звуком и музыкой централизованно
122
+ - ✅ **Система сохранений** - PlayerPrefs как в Unity!
123
+ - ✅ **Якоря позиционирования** - размещайте объекты точно где нужно
124
+
125
+ ---
126
+
127
+ ## 🚀 Быстрый старт (30 секунд)
128
+
129
+ ### Установка
130
+
131
+ #### Способ 1: Установка через pip (рекомендуемый)
132
+
133
+ Это самый простой и быстрый способ начать работу со SpritePro.
134
+
135
+ ```bash
136
+ pip install spritepro
137
+ ```
138
+ Все зависимости, включая `pygame`, будут установлены автоматически.
139
+
140
+ #### Обновление
141
+
142
+ Чтобы обновить SpritePro до последней версии, используйте команду:
143
+ ```bash
144
+ pip install --upgrade spritepro
145
+ ```
146
+
147
+ #### Способ 2: Для разработчиков (из исходного кода)
148
+
149
+ Этот способ подходит, если вы хотите внести свой вклад в разработку или использовать самую последнюю, еще не опубликованную версию.
150
+
151
+ 1. **Клонируйте репозиторий:**
152
+ ```bash
153
+ git clone https://github.com/NeoXider/SpritePro.git
154
+ ```
155
+
156
+ 2. **Перейдите в папку проекта:**
157
+ ```bash
158
+ cd SpritePro
159
+ ```
160
+ 3. **(Опционально) Установите в режиме редактирования:**
161
+ ```bash
162
+ pip install -e .
163
+ ```
164
+ Это позволит вам изменять код библиотеки и сразу видеть изменения в своих проектах.
165
+
166
+ ### Ваша первая игра (5 строк!)
167
+
168
+ ```python
169
+ import spritePro as s
170
+
171
+ s.get_screen((800, 600), "My Game")
172
+
173
+ player = s.Sprite("", (50, 50), s.WH_C, speed=5)
174
+
175
+ while True:
176
+ s.update(fill_color=(20, 20, 30))
177
+ player.handle_keyboard_input() # Готово! Игра работает!
178
+ ```
179
+
180
+ **Вот и всё!** У вас уже есть игра с управлением, отрисовкой и игровым циклом! 🎮
181
+
182
+ ### ⚡ Быстрый старт 2.0 (шаблон проекта)
183
+
184
+ ```bash
185
+ python create_project.py MyGame
186
+ ```
187
+
188
+ Создаст структуру `assets/`, `scenes/` и файл `main.py` с новым API.
189
+
190
+ ---
191
+
192
+ ## 💡 Примеры "Вау!" возможностей
193
+
194
+ ### 🎨 Создайте игру за минуту
195
+
196
+ ```python
197
+ import spritePro as s
198
+
199
+ screen = s.get_screen((800, 600), "Platformer")
200
+
201
+ # Игрок с автоматическим движением
202
+ player = s.Sprite("player.png", (50, 50), (100, 300), speed=5)
203
+
204
+ # Платформы
205
+ platforms = [
206
+ s.Sprite("", (200, 20), (200, 400)),
207
+ s.Sprite("", (200, 20), (500, 350)),
208
+ ]
209
+
210
+ # Камера следует за игроком
211
+ s.set_camera_follow(player)
212
+
213
+ # Частицы при движении
214
+ emitter = s.ParticleEmitter(s.ParticleConfig(
215
+ amount=10,
216
+ speed_range=(50, 100),
217
+ lifetime_range=(0.5, 1.0)
218
+ ))
219
+
220
+ # Настраиваем столкновения один раз (не в цикле!)
221
+ player.set_collision_targets(platforms)
222
+
223
+ while True:
224
+ s.update(fill_color=(135, 206, 235)) # Небо
225
+
226
+ player.handle_keyboard_input() # Столкновения обрабатываются автоматически!
227
+
228
+ # Частицы
229
+ if player.velocity.length() > 0:
230
+ emitter.emit(player.rect.center)
231
+ ```
232
+
233
+ **Результат:** Полноценная платформер-игра с физикой, камерой и эффектами!
234
+
235
+ ### 🎵 Звук и музыка - проще некуда
236
+
237
+ ```python
238
+ # Получаем готовый AudioManager
239
+ audio = s.audio_manager
240
+
241
+ # Вариант 1: Загружаем и сохраняем для многократного использования
242
+ jump_sound = audio.load_sound("jump", "sounds/jump.mp3")
243
+ jump_sound.play() # Автоматически применяются настройки громкости!
244
+
245
+ # Вариант 2: Прямое воспроизведение по пути (без загрузки!)
246
+ audio.play_sound("sounds/jump.mp3") # Автоматически загрузит и воспроизведет!
247
+ audio.play_sound("sounds/coin.wav", volume=0.8) # С кастомной громкостью
248
+
249
+ # Вариант 3: В одну строку для быстрого воспроизведения
250
+ audio.load_sound("explosion", "sounds/explosion.mp3").play()
251
+
252
+ # Музыка
253
+ audio.play_music("music/background.mp3", volume=0.5) # Сразу с нужной громкостью!
254
+ # Или установить громкость отдельно
255
+ audio.set_music_volume(0.5) # 50% громкости
256
+ ```
257
+
258
+ **Никаких** `pygame.mixer.Sound()`, **никаких** ручных настроек - всё работает!
259
+
260
+ ### 🎯 UI за секунды
261
+
262
+ ```python
263
+ # Кнопка с автоматической анимацией
264
+ button = s.Button(
265
+ "", (200, 50), (400, 300),
266
+ "Начать игру",
267
+ on_click=lambda: print("Игра началась!")
268
+ )
269
+
270
+ # Переключатель музыки
271
+ music_toggle = s.ToggleButton(
272
+ "", (150, 40), (100, 50),
273
+ text_on="Музыка: ВКЛ",
274
+ text_off="Музыка: ВЫКЛ",
275
+ on_toggle=lambda is_on: s.audio_manager.set_music_enabled(is_on)
276
+ )
277
+
278
+ # Текст с якорем (автоматическое позиционирование!)
279
+ score_text = s.TextSprite(
280
+ "Score: 0", 36, (255, 255, 255),
281
+ (s.WH.x - 10, 10),
282
+ anchor=s.Anchor.TOP_RIGHT # Прижмется к правому краю!
283
+ )
284
+ ```
285
+
286
+ **Всё работает автоматически** - наведение, клики, анимации!
287
+
288
+ ### ⌨️ Ввод и события (как в Unity)
289
+
290
+ ```python
291
+ import pygame
292
+ import spritePro as s
293
+
294
+ s.get_screen((800, 600), "Input")
295
+
296
+ def on_quit(event):
297
+ print("Quit")
298
+
299
+ s.events.on("quit", on_quit)
300
+
301
+ while True:
302
+ s.update()
303
+
304
+ if s.input.was_pressed(pygame.K_SPACE):
305
+ print("Space pressed")
306
+ ```
307
+
308
+ Если нужен доступ к сырым событиям pygame — используйте `s.pygame_events`.
309
+
310
+ ### 🧩 Сцены без пересоздания и перезапуск
311
+
312
+ ```python
313
+ import spritePro as s
314
+
315
+ class MainScene(s.Scene):
316
+ def on_enter(self, context):
317
+ pass
318
+
319
+ s.get_screen((800, 600), "Scenes")
320
+ manager = s.get_context().scene_manager
321
+ manager.add_scene("main", MainScene())
322
+ s.register_scene_factory("main", MainScene)
323
+ s.set_scene_by_name("main")
324
+
325
+ # Перезапуск сцены
326
+ s.restart_scene() # текущая сцена
327
+ s.restart_scene("main") # по имени
328
+ ```
329
+
330
+ ### 🎆 Частицы - это просто
331
+
332
+ ```python
333
+ # Создаем эффект взрыва
334
+ explosion = s.ParticleEmitter(s.ParticleConfig(
335
+ amount=50,
336
+ speed_range=(100, 300),
337
+ angle_range=(0, 360),
338
+ lifetime_range=(0.5, 1.5),
339
+ gravity=s.Vector2(0, 200)
340
+ ))
341
+
342
+ # Взрыв при клике
343
+ explosion.emit(mouse_pos) # Всё! 50 частиц летят во все стороны!
344
+ ```
345
+
346
+ **3 строки кода** = красивый эффект взрыва!
347
+
348
+ ### 💾 Сохранения как в Unity
349
+
350
+ ```python
351
+ # Создаем PlayerPrefs
352
+ prefs = s.PlayerPrefs("save.json")
353
+
354
+ # Сохраняем что угодно
355
+ prefs.set_float("score", 1250.5)
356
+ prefs.set_int("level", 5)
357
+ prefs.set_string("player_name", "Hero")
358
+ prefs.set_vector2("player_pos", (400, 300))
359
+
360
+ # Загружаем
361
+ score = prefs.get_float("score", 0)
362
+ level = prefs.get_int("level", 1)
363
+ name = prefs.get_string("player_name", "Player")
364
+ pos = prefs.get_vector2("player_pos", (0, 0))
365
+
366
+ # Всё автоматически сохраняется в JSON!
367
+ ```
368
+
369
+ **Никаких** ручных парсеров, **никаких** сложных форматов!
370
+
371
+ ---
372
+
373
+ ## 🎮 Что можно создать?
374
+
375
+ ### ✅ Платформеры
376
+ - Автоматические столкновения
377
+ - Камера следует за игроком
378
+ - Готовые частицы для эффектов
379
+
380
+ ### ✅ Аркады
381
+ - Система здоровья из коробки
382
+ - Таймеры для событий
383
+ - Готовые UI элементы
384
+
385
+ ### ✅ RPG
386
+ - Система сохранений
387
+ - Инвентарь (через спрайты)
388
+ - Диалоги (через TextSprite)
389
+
390
+ ### ✅ Пазлы
391
+ - Интерактивные элементы
392
+ - Анимации переходов
393
+ - Система состояний
394
+
395
+ ### ✅ Tower Defense
396
+ - Пути для врагов (через move_towards)
397
+ - Система частиц для эффектов
398
+ - UI для интерфейса
399
+
400
+ ---
401
+
402
+ ## 📊 Сравнение с альтернативами
403
+
404
+ | Функция | [pygame](https://www.pygame.org/) | [arcade](https://api.arcade.academy/) | [SpritePro](https://github.com/NeoXider/SpritePro) |
405
+ |---------|--------|--------|-----------|
406
+ | Автоматическая отрисовка | ❌ | ✅ | ✅ |
407
+ | Готовая камера | ❌ | ✅ | ✅ |
408
+ | Система частиц | ❌ | ❌ | ✅ |
409
+ | AudioManager | ❌ | ❌ | ✅ |
410
+ | PlayerPrefs | ❌ | ❌ | ✅ |
411
+ | Якоря позиционирования | ❌ | ❌ | ✅ |
412
+ | Автоматические столкновения | ❌ | ❌ | ✅ |
413
+ | Простота использования | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
414
+
415
+ **SpritePro = pygame + всё необходимое для игры!**
416
+
417
+ ---
418
+
419
+ ## 🎯 Ключевые преимущества
420
+
421
+ ### 🚀 **Скорость разработки**
422
+ - Создайте прототип игры за **минуты**, а не часы
423
+ - Меньше кода = меньше багов
424
+ - Больше времени на геймплей, меньше на инфраструктуру
425
+
426
+ ### 🎨 **Красота из коробки**
427
+ - Автоматические анимации кнопок
428
+ - Плавные переходы (tweening)
429
+ - Готовые эффекты частиц
430
+ - Цветовые эффекты
431
+
432
+ ### 🛠️ **Мощность и гибкость**
433
+ - Полный доступ к pygame под капотом
434
+ - Расширяемая архитектура
435
+ - Можно использовать как pygame, так и высокоуровневые функции
436
+
437
+ ### 📚 **Отличная документация**
438
+ - Подробные примеры для каждого компонента
439
+ - Демо-игры с исходным кодом
440
+ - Понятные API
441
+
442
+ ---
443
+
444
+ ## 🎬 Демо-игры
445
+
446
+ **Увидьте SpritePro в действии!** Все демо с открытым исходным кодом:
447
+
448
+ - 🏓 **[Ping Pong](spritePro/demoGames/ping_pong.py)** - Полноценная игра с меню, звуком и UI
449
+ - 🎆 **[Fireworks](spritePro/demoGames/fireworks_demo.py)** - Красивые эффекты частиц
450
+ - 🎨 **[Tween Demo](spritePro/demoGames/tweenDemo.py)** - Плавные анимации
451
+ - 🎮 **[Among Us Demo](spritePro/demoGames/amongus.py)** - Платформер с взаимодействиями
452
+ - 💥 **[Particle Template Test](spritePro/demoGames/particle_template_test.py)** - Интерактивные частицы
453
+
454
+ **Запустите любую демо-игру и увидьте возможности!**
455
+
456
+ ```bash
457
+ python spritePro/demoGames/ping_pong.py
458
+ ```
459
+
460
+ ---
461
+
462
+ ## 📦 Что внутри?
463
+
464
+ ### 🎮 Основные компоненты
465
+ - **Sprite** - Базовый класс с физикой, движением и визуальными эффектами
466
+ - **Button** - Готовые кнопки с анимациями
467
+ - **ToggleButton** - Переключатели
468
+ - **TextSprite** - Текст с якорями позиционирования
469
+ - **Bar** - Полосы прогресса (HP, опыт и т.д.)
470
+
471
+ ### 🎨 Игровые системы
472
+ - **Animation** - Система анимаций
473
+ - **Tween** - Плавные переходы (easing функции)
474
+ - **Timer** - Таймеры для событий
475
+ - **Health** - Система здоровья
476
+ - **ParticleEmitter** - Генератор частиц
477
+
478
+ ### 🛠️ Утилиты
479
+ - **AudioManager** - Управление звуком и музыкой
480
+ - **PlayerPrefs** - Система сохранений
481
+ - **Camera** - Умная камера с автоматическим слежением
482
+ - **Color Effects** - Динамические цветовые эффекты
483
+
484
+ ---
485
+
486
+ ## 📖 Документация
487
+
488
+ ### 🚀 Быстрый старт
489
+ - [Установка и настройка](#-быстрый-старт-30-секунд)
490
+ - [Базовый пример](#ваша-первая-игра-5-строк)
491
+
492
+ ### 📚 Полная документация
493
+ - [📖 Индекс документации](DOCUMENTATION_INDEX.md) - Все модули и компоненты
494
+ - [🎮 Sprite](docs/sprite.md) - Базовый класс спрайта
495
+ - [🎨 UI компоненты](docs/button.md) - Кнопки, переключатели, текст
496
+ - [🎬 Анимации](docs/animation.md) - Система анимаций
497
+ - [✨ Tweening](docs/tween.md) - Плавные переходы
498
+ - [💥 Частицы](docs/particles.md) - Система частиц
499
+ - [🎵 Аудио](docs/audio.md) - AudioManager
500
+ - [💾 Сохранения](docs/save_load.md) - PlayerPrefs
501
+ - [📊 Полосы прогресса](docs/bar.md) - Bar компоненты
502
+
503
+ ---
504
+
505
+ ## 🎯 Примеры использования
506
+
507
+ ### Игра с меню, звуком и сохранениями
508
+
509
+ ```python
510
+ import spritePro as s
511
+
512
+ screen = s.get_screen((800, 600), "My Game")
513
+
514
+ # Аудио
515
+ audio = s.audio_manager
516
+ audio.load_sound("click", "sounds/click.mp3")
517
+ click_sound = audio.get_sound("click")
518
+ audio.play_music("music/bg.mp3")
519
+
520
+ # Сохранения
521
+ prefs = s.PlayerPrefs("save.json")
522
+ high_score = prefs.get_int("high_score", 0)
523
+
524
+ # UI
525
+ start_button = s.Button(
526
+ "", (200, 50), s.WH_C,
527
+ "Начать игру",
528
+ on_click=lambda: click_sound.play()
529
+ )
530
+
531
+ # Игрок
532
+ player = s.Sprite("player.png", (50, 50), (100, 300), speed=5)
533
+
534
+ # Камера
535
+ s.set_camera_follow(player)
536
+
537
+ while True:
538
+ s.update(fill_color=(20, 20, 30))
539
+ player.handle_keyboard_input()
540
+
541
+ # Сохраняем рекорд
542
+ if score > high_score:
543
+ prefs.set_int("high_score", score)
544
+ ```
545
+
546
+ **Всё работает вместе из коробки!**
547
+
548
+ ---
549
+
550
+ ## 🆚 SpritePro vs Обычный pygame
551
+
552
+ ### ❌ С pygame нужно писать:
553
+ ```python
554
+ # 100+ строк для базовой игры
555
+ import pygame
556
+ pygame.init()
557
+ screen = pygame.display.set_mode((800, 600))
558
+ clock = pygame.time.Clock()
559
+ sprites = pygame.sprite.Group()
560
+ # ... обработка событий ...
561
+ # ... ручная отрисовка ...
562
+ # ... ручное управление камерой ...
563
+ # ... ручная система слоев ...
564
+ # ... и так далее ...
565
+ ```
566
+
567
+ ### ✅ С SpritePro:
568
+ ```python
569
+ # 10 строк для той же игры!
570
+ import spritePro as s
571
+
572
+ s.get_screen((800, 600), "Game")
573
+ player = s.Sprite("player.png", (50, 50), s.WH_C, speed=5)
574
+
575
+ while True:
576
+ s.update()
577
+ player.handle_keyboard_input()
578
+ ```
579
+
580
+ **В 10 раз меньше кода!** 🚀
581
+
582
+ ---
583
+
584
+ ## 🎁 Бонусы
585
+
586
+ ### ✨ Автоматические фичи
587
+ - **Автоматическая отрисовка** - создали спрайт? Он уже рисуется!
588
+ - **Автоматическое обновление** - Tween, Animation, Timer обновляются сами
589
+ - **Автоматическая камера** - слежение за объектами одной строкой
590
+ - **Автоматические столкновения** - физика из коробки
591
+
592
+ ### 🎨 Готовые эффекты
593
+ - Пульсация, мерцание, волны для кнопок
594
+ - Плавные переходы (easing)
595
+ - Система частиц
596
+ - Цветовые эффекты
597
+
598
+ ### 🛠️ Удобные утилиты
599
+ - Якоря позиционирования (как в Unity!)
600
+ - PlayerPrefs (как в Unity!)
601
+ - AudioManager (централизованное управление звуком)
602
+ - Готовые компоненты (Bar, TextSprite, Button)
603
+
604
+ ---
605
+
606
+ ## 🚀 Начните прямо сейчас!
607
+
608
+ ### 1. Установите
609
+ ```bash
610
+ pip install pygame
611
+ git clone https://github.com/NeoXider/SpritePro.git
612
+ ```
613
+
614
+ ### 2. Скопируйте папку `spritePro` в ваш проект
615
+
616
+ ### 3. Создайте игру!
617
+ ```python
618
+ import spritePro as s
619
+
620
+ s.get_screen((800, 600), "My Game")
621
+ player = s.Sprite("", (50, 50), s.WH_C, speed=5)
622
+
623
+ while True:
624
+ s.update()
625
+ player.handle_keyboard_input()
626
+ ```
627
+
628
+ **Готово!** У вас уже есть игра! 🎉
629
+
630
+ ---
631
+
632
+ ## 📊 Статистика
633
+
634
+ - ⚡ **В 10 раз меньше кода** чем с чистым pygame
635
+ - 🚀 **В 5 раз быстрее** разработка прототипов
636
+ - 🎯 **100% готовых компонентов** для типичных задач
637
+ - 📚 **Полная документация** с примерами
638
+ - 🎮 **15+ демо-игр** с исходным кодом
639
+
640
+ ---
641
+
642
+ ## 🤝 Сообщество
643
+
644
+ - 💬 Вопросы? Откройте [Issue](https://github.com/NeoXider/SpritePro/issues)
645
+ - 🐛 Нашли баг? [Сообщите](https://github.com/NeoXider/SpritePro/issues)
646
+ - 💡 Есть идея? [Предложите](https://github.com/NeoXider/SpritePro/issues)
647
+ - ⭐ Понравилось? Поставьте звезду!
648
+
649
+ ---
650
+
651
+ ## 📄 Лицензия
652
+
653
+ Открытый исходный код. Используйте свободно в своих проектах!
654
+
655
+ ---
656
+
657
+ <div align="center">
658
+
659
+ ## 🎮 Начните создавать игры уже сегодня!
660
+
661
+ **SpritePro - это не просто библиотека. Это ваш путь от идеи к игре!**
662
+
663
+ [📖 Документация](DOCUMENTATION_INDEX.md) • [🎮 Демо-игры](spritePro/demoGames/) • [💬 Вопросы](https://github.com/NeoXider/SpritePro/issues)
664
+
665
+ **Создано с ❤️ для разработчиков игр**
666
+
667
+ </div>