Small Basic #8 Обработка кликов мышки


Обработчик событий нажатия на мышку

В Small Basic существует три события, связанные с мышкой:
GraphicsWindow.MouseDown 'Наступает, когда левая кнопка мышки нажата
GraphicsWindow.MouseUp 'Наступает, когда левая кнопка мышки отпущена
GraphicsWindow.MouseMove 'Наступает, когда пользователь подвинул мышкой

Также мы можем добывать положение мышки при помощи:
GraphicsWindow.MouseX 'Читает координату X для курсора мыши относительно графического окна
GraphicsWindow.MouseY 'Читает координату Y для курсора мыши относительно графического окна

Try it out

1. Создадим программу, которая будет изменять очки при нажатии мышкой по графическому окну и выводить координаты клика в текстовое окно.
Для начала, как всегда, оформим глобальные переменные и настроим графическое окно:
width = 800
height = 600

Sub setup
  GraphicsWindow.Width = width
  GraphicsWindow.Height = height
EndSub

setup()

2. Добавим очки score, которые будем выводить на экран шейпом пол именем scoreText :
width = 800
height = 600
score = 0

Sub setup

  GraphicsWindow.Width = width
  GraphicsWindow.Height = height
  showScore()
EndSub

Sub showScore
  scoreText = Shapes.AddText(score)
EndSub

setup()


3. Добавим подпрограмму для увеличения очков score. Для того, чтобы новый текст не перекрывал старый, будем прятать старый scoreText:
width = 800
height = 600
score = 0

Sub setup

  GraphicsWindow.Width = width
  GraphicsWindow.Height = height
  showScore()
EndSub

Sub increaseScore
  score = score + 1
EndSub

Sub showScore

  Shapes.HideShape(scoreText)
  scoreText = Shapes.AddText(score)
EndSub

setup()


4. Добавим обработчик события клика по мышке и сделаем так, чтобы очки увеличивались при нажатии на графическое окно:
width = 800
height = 600
score = 0

Sub setup

  GraphicsWindow.Width = width
  GraphicsWindow.Height = height
  showScore()
EndSub

Sub increaseScore

  score = score + 1
EndSub

Sub showScore

  Shapes.HideShape(scoreText)
  scoreText = Shapes.AddText(score)
EndSub

GraphicsWindow.MouseDown = mouseListener

Sub mouseListener
  increaseScore() ' Сначала увеличиваем очки на 1
  showScore() ' Выводим на экран новое значение очков
EndSub

setup()

5. Добавим вывод координаты точки, куда кликнули, в текстовое окно:
Sub mouseListener
  mouseX = GraphicsWindow.MouseX
  mouseY = GraphicsWindow.MouseY
  TextWindow.WriteLine("Координата по Х = " + mouseX)
  TextWindow.WriteLine("Координата по Y = " + mouseY)
  increaseScore() ' Сначала увеличиваем очки на 1
  showScore() ' Выводим на экран новое значение очков

EndSub

В конспект

GraphicsWindow.MouseDown = mouseListener

Sub mouseListener
  ' Тело подпрограммы
EndSub

GraphicsWindow.MouseX 'Читает координату X для курсора мыши относительно графического окна

Задачи

Задача 8.1*. Измените программу из Try it out так, чтобы очки увеличивались не при нажатии на мышку, а при её движении.

Задача 8.2*. Измените программу задачи 1 так, чтобы очки увеличивались только при движении в правой половине графического окна.

Задача 8.3*. Нарисуйте такой интерфейс (используя Shapes или фигуры GraphicsWindow). Сделайте так, чтобы при клике в белую область (её ширина 100рх) к очкам прибавлялось + 1. А при клике в оранжевую область (её ширина 600рх) от очков отнималось -3.

Задача 8.4*. Добавьте в задачу 3 проверку условия: если количество очков меньше нуля, то программа должна закрыться (Program.End())

Задача 8.5*. Перерисуйте интерфейс (высота белого "мостика" = 100рх) и обновите проверку условия попадания на участки белого цвета:

Задача 8.6***. Апгрейдите вашу программу для отбивающегося от краёв экрана шарика так, чтобы при попадании по шарику очки увеличивались на 1. А при непопадании по шарику, чтобы очки уменьшались на 1. Добавьте проверку условия: если количество очков меньше нуля, то программа должна закрыться (Program.End()).


Теперь вы готовы к первому проекту! 

Вот ссылка на него (не обращайте внимания, что у проекта второй номер):
https://fishka-it.blogspot.com/2019/10/small-basic-1.html
За готовый проект вы получаете сразу же фишку.

Комментарии

Отправить комментарий