From 51548352adfee3e40e51e9622e2c13469bdcb833 Mon Sep 17 00:00:00 2001 From: Alexander Baranov Date: Mon, 1 Jun 2026 14:55:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20-=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- snake-game/src/domain.rs | 27 ++++++++++++++++++++++----- snake-game/src/gameplay.rs | 37 +++++++++++++++++-------------------- snake-game/src/startup.rs | 24 ++++++++++++++++++++++-- 3 files changed, 61 insertions(+), 27 deletions(-) diff --git a/snake-game/src/domain.rs b/snake-game/src/domain.rs index 678291a..df5f17b 100644 --- a/snake-game/src/domain.rs +++ b/snake-game/src/domain.rs @@ -19,6 +19,7 @@ pub enum Direction { } impl Direction { + /// Поворот налево pub fn rotate_left(&mut self) { *self = match self { Direction::Up => Direction::Left, @@ -28,6 +29,7 @@ impl Direction { }; } + /// Поворот направо pub fn rotate_right(&mut self) { *self = match self { Direction::Up => Direction::Right, @@ -37,12 +39,27 @@ impl Direction { }; } - pub fn vector(&self) -> Vec2 { + /// Получить значение кооринаты соответствующей направлению движения + pub fn get_coord(&self, vec: &Transform) -> f32 { match self { - Direction::Up => vec2(0., 1.), - Direction::Right => vec2(1., 0.), - Direction::Down => vec2(0., -1.), - Direction::Left => vec2(-1., 0.), + Direction::Up | Direction::Down => vec.translation.y, + Direction::Left | Direction::Right => vec.translation.x, + } + } + + /// Получить знак изменения соответствующий направлению движения + pub fn get_change_sign(&self) -> f32 { + match self { + Direction::Up | Direction::Right => 1.0, + Direction::Down | Direction::Left => -1.0, + } + } + + /// Установить значение кооринаты соответствующей направлению движения + pub fn set_coord(&self, vec: &mut Transform, value: f32) { + match self { + Direction::Up | Direction::Down => vec.translation.y = value, + Direction::Left | Direction::Right => vec.translation.x = value, } } } diff --git a/snake-game/src/gameplay.rs b/snake-game/src/gameplay.rs index 186abf5..d89d85a 100644 --- a/snake-game/src/gameplay.rs +++ b/snake-game/src/gameplay.rs @@ -23,26 +23,19 @@ pub fn head_rotation( pub fn moving(time: Res