From a3b91cf30e6045dfbce4b21722535fa4f1d6c588 Mon Sep 17 00:00:00 2001 From: Alexander Baranov Date: Thu, 4 Jun 2026 09:32:33 +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/examples/bevy_tutorial.rs | 5 +- snake-game/examples/cpu_draws.rs | 16 ++----- snake-game/examples/observers.rs | 31 +++--------- snake-game/examples/paddle_demo.rs | 42 ++++------------- snake-game/examples/time.rs | 12 ++--- snake-game/rustfmt.toml | 3 ++ snake-game/src/debug.rs | 10 +--- snake-game/src/domain.rs | 53 ++++++++++++--------- snake-game/src/gameplay.rs | 22 +++------ snake-game/src/observers.rs | 49 ++++++++----------- snake-game/src/startup.rs | 29 +++++------- snake-game/src/tools.rs | 70 +++++++++------------------- snake-game/src/tools/position.rs | 32 +++++++++++++ 13 files changed, 149 insertions(+), 225 deletions(-) create mode 100644 snake-game/rustfmt.toml create mode 100644 snake-game/src/tools/position.rs diff --git a/snake-game/examples/bevy_tutorial.rs b/snake-game/examples/bevy_tutorial.rs index 6f0a51a..10982ae 100644 --- a/snake-game/examples/bevy_tutorial.rs +++ b/snake-game/examples/bevy_tutorial.rs @@ -1,10 +1,7 @@ use bevy::prelude::*; fn main() { - App::new() - .add_plugins(DefaultPlugins) - .add_plugins(HelloPlugin) - .run(); + App::new().add_plugins(DefaultPlugins).add_plugins(HelloPlugin).run(); } #[derive(Component)] diff --git a/snake-game/examples/cpu_draws.rs b/snake-game/examples/cpu_draws.rs index 3d2e63c..9e32cd9 100644 --- a/snake-game/examples/cpu_draws.rs +++ b/snake-game/examples/cpu_draws.rs @@ -99,11 +99,7 @@ fn draw( ) { if *i == 0 { // Generate a random color on first run. - *draw_color = Color::linear_rgb( - seeded_rng.0.random(), - seeded_rng.0.random(), - seeded_rng.0.random(), - ); + *draw_color = Color::linear_rgb(seeded_rng.0.random(), seeded_rng.0.random(), seeded_rng.0.random()); } // Get the image from Bevy's asset storage. @@ -126,17 +122,11 @@ fn draw( // If the old color is our current color, change our drawing color. let tolerance = 1.0 / 255.0; if old_color.distance(&draw_color) <= tolerance { - *draw_color = Color::linear_rgb( - seeded_rng.0.random(), - seeded_rng.0.random(), - seeded_rng.0.random(), - ); + *draw_color = Color::linear_rgb(seeded_rng.0.random(), seeded_rng.0.random(), seeded_rng.0.random()); } // Set the new color, but keep old alpha value from image. - image - .set_color_at(x, y, draw_color.with_alpha(old_color.alpha())) - .unwrap(); + image.set_color_at(x, y, draw_color.with_alpha(old_color.alpha())).unwrap(); *i += 1; } diff --git a/snake-game/examples/observers.rs b/snake-game/examples/observers.rs index f4c0619..f63a6fa 100644 --- a/snake-game/examples/observers.rs +++ b/snake-game/examples/observers.rs @@ -14,10 +14,7 @@ fn main() { // Observers are systems that run when an event is "triggered". This observer runs whenever // `ExplodeMines` is triggered. .add_observer( - |explode_mines: On, - mines: Query<&Mine>, - index: Res, - mut commands: Commands| { + |explode_mines: On, mines: Query<&Mine>, index: Res, mut commands: Commands| { // Access resources for entity in index.get_nearby(explode_mines.pos) { // Run queries @@ -47,10 +44,7 @@ struct Mine { impl Mine { fn random(rand: &mut ChaCha8Rng) -> Self { Mine { - pos: Vec2::new( - (rand.random::() - 0.5) * 1200.0, - (rand.random::() - 0.5) * 600.0, - ), + pos: Vec2::new((rand.random::() - 0.5) * 1200.0, (rand.random::() - 0.5) * 600.0), size: 4.0 + rand.random::() * 16.0, } } @@ -116,20 +110,14 @@ fn setup(mut commands: Commands) { fn on_add_mine(add: On, query: Query<&Mine>, mut index: ResMut) { let mine = query.get(add.entity).unwrap(); - let tile = ( - (mine.pos.x / CELL_SIZE).floor() as i32, - (mine.pos.y / CELL_SIZE).floor() as i32, - ); + let tile = ((mine.pos.x / CELL_SIZE).floor() as i32, (mine.pos.y / CELL_SIZE).floor() as i32); index.map.entry(tile).or_default().insert(add.entity); } // Remove despawned mines from our index fn on_remove_mine(remove: On, query: Query<&Mine>, mut index: ResMut) { let mine = query.get(remove.entity).unwrap(); - let tile = ( - (mine.pos.x / CELL_SIZE).floor() as i32, - (mine.pos.y / CELL_SIZE).floor() as i32, - ); + let tile = ((mine.pos.x / CELL_SIZE).floor() as i32, (mine.pos.y / CELL_SIZE).floor() as i32); index.map.entry(tile).and_modify(|set| { set.remove(&remove.entity); }); @@ -153,11 +141,7 @@ fn explode_mine(explode: On, query: Query<&Mine>, mut commands: Command // Draw a circle for each mine using `Gizmos` fn draw_shapes(mut gizmos: Gizmos, mines: Query<&Mine>) { for mine in &mines { - gizmos.circle_2d( - mine.pos, - mine.size, - Color::hsl((mine.size - 4.0) / 16.0 * 360.0, 1.0, 0.8), - ); + gizmos.circle_2d(mine.pos, mine.size, Color::hsl((mine.size - 4.0) / 16.0 * 360.0, 1.0, 0.8)); } } @@ -194,10 +178,7 @@ const CELL_SIZE: f32 = 64.0; impl SpatialIndex { // Lookup all entities within adjacent cells of our spatial index fn get_nearby(&self, pos: Vec2) -> Vec { - let tile = ( - (pos.x / CELL_SIZE).floor() as i32, - (pos.y / CELL_SIZE).floor() as i32, - ); + let tile = ((pos.x / CELL_SIZE).floor() as i32, (pos.y / CELL_SIZE).floor() as i32); let mut nearby = Vec::new(); for x in -1..2 { for y in -1..2 { diff --git a/snake-game/examples/paddle_demo.rs b/snake-game/examples/paddle_demo.rs index 9345eba..3556b8b 100644 --- a/snake-game/examples/paddle_demo.rs +++ b/snake-game/examples/paddle_demo.rs @@ -1,4 +1,3 @@ - use bevy::math::bounding::{Aabb2d, BoundingCircle, BoundingVolume, IntersectsVolume}; use bevy::prelude::*; @@ -7,10 +6,7 @@ fn main() { .add_plugins(DefaultPlugins) .insert_resource(ClearColor(Color::srgb(0.8, 0.8, 1.0))) .add_systems(Startup, setup) - .add_systems( - FixedUpdate, - (move_paddle, apply_velocity, check_for_collisions), - ) + .add_systems(FixedUpdate, (move_paddle, apply_velocity, check_for_collisions)) .run(); } @@ -40,11 +36,7 @@ struct Ball; #[derive(Component)] struct Collider; -fn setup( - mut commands: Commands, - mut meshes: ResMut>, - mut materials: ResMut>, -) { +fn setup(mut commands: Commands, mut meshes: ResMut>, mut materials: ResMut>) { commands.spawn(Camera2d); let paddle_y = BOTTOM_WALL + PADDLE_GAP_Y; @@ -77,11 +69,7 @@ fn setup( commands.spawn(Wall::new(WallLocation::Bottom)); } -fn move_paddle( - input: Res>, - time: Res