Перейти к содержимому

Уроки · 15

Рисуем в точке клика

Осталось соединить два прошлых урока — «Клик мышью» и «Координаты мыши» — в одно: рисовать кружок не по центру экрана и не всегда, а только пока зажата кнопка, и именно там, где сейчас курсор.

Замени содержимое src/main.rs на это:

src/main.rs
use macroquad::prelude::*;
#[macroquad::main("Рисуем в точке клика")]
async fn main() {
loop {
clear_background(BLACK);
// Кнопка зажата — рисуем круг прямо под курсором.
if is_mouse_button_down(MouseButton::Left) {
let (x, y) = mouse_position();
draw_circle(x, y, 40.0, YELLOW);
}
next_frame().await;
}
}

Запусти как обычно:

Окно терминала
cargo run

Зажми левую кнопку мыши в любом месте — там появится жёлтый кружок, и будет следовать за курсором, пока кнопку не отпустишь. Попробуй прямо здесь:

  • if is_mouse_button_down(...) — то же самое условие, что и в уроке про клик: код внутри выполняется, только пока кнопка зажата.
  • mouse_position() внутри этого if — та же функция, что и в уроке про координаты мыши, просто вызванная в нужном месте: раз она спрятана внутри условия, то и координаты берутся, только когда они вообще нужны — пока кнопка отпущена, эта строчка не выполняется вовсе.