diff --git a/UlearnGame/Controllers/UIController.cs b/UlearnGame/Controllers/UIController.cs index 61e6e4e..37090b7 100644 --- a/UlearnGame/Controllers/UIController.cs +++ b/UlearnGame/Controllers/UIController.cs @@ -4,6 +4,8 @@ namespace UlearnGame.Controllers { + // Эта штука больше похожа на View а не на контроллер, т.к. контроллер передает запросы от пользователя к модели + // а этот класс определяет отображение характеристик public class UIController { private readonly Player player; diff --git a/UlearnGame/MainForm.cs b/UlearnGame/MainForm.cs index 4a61b58..7217adb 100644 --- a/UlearnGame/MainForm.cs +++ b/UlearnGame/MainForm.cs @@ -15,6 +15,7 @@ namespace UlearnGame public partial class MainForm : Form { + // класс формы контролирует все, такой код будет сложно тестировать. private Player mainPlayer; private readonly Timer updateTimer; private EnemyController enemyController; @@ -120,7 +121,10 @@ private void OnTimerEvent() if (!IsDead) Invalidate(); else + { + // после этого таймер продолжает работу MessageBox.Show("Потрачено"); + } } private void Init() @@ -179,6 +183,8 @@ private void DrawEnemyMissles(Graphics graph) } } + + // Получается игрок сам собой не управляет, если все делать в этой Form - она станет очень большой. private void Movement(Player player) { if (Keyboard.IsKeyDown(Key.W) || Keyboard.IsKeyDown(Key.Up)) diff --git a/UlearnGame/Models/Player.cs b/UlearnGame/Models/Player.cs index 691ef3c..e7abdc8 100644 --- a/UlearnGame/Models/Player.cs +++ b/UlearnGame/Models/Player.cs @@ -70,6 +70,9 @@ public Player(Form form) for (var i = 0; i < MisslePool.Capacity; i++) MisslePool.Add(new PlayerMissle(missleSource, Direction.None, MissleSpeed, activeForm.ClientSize.Height, activeForm.ClientSize.Width, -2000, -2000)); + + // Отдельный таймер у игрока может рассогласоваться с другими таймерами в системе. Это приводит к недетерминированности игры. + // Хорошо бы использовать один таймер для всей игры shootTimer = new Timer { Interval = shootInterval