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

Уроки · 14

Координаты мыши

Мышь — это не только кнопки: у неё ещё есть позиция на экране. В macroquad её возвращает функция mouse_position() — пара чисел (x, y) (такую пару ещё называют кортежем — само слово понадобится позже, пока достаточно просто его видеть), те же самые координаты, что и в уроке «Координаты», только не заданные заранее в коде, а меняющиеся каждый кадр вслед за курсором.

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

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

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

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

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

  • mouse_position() возвращает сразу два числа — x и y — одной парой.
  • let (x, y) = mouse_position(); — раскладывает эту пару в две отдельные переменные одним выражением, вместо того чтобы доставать x и y по отдельности.
  • Функция вызывается на каждом кадре, поэтому x и y всегда свежие — кружок рисуется там, где курсор находится именно сейчас.