Обработчик событий нажатия на мышку
В 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
5. Добавим вывод координаты точки, куда кликнули, в текстовое окно:
Sub mouseListener
mouseX = GraphicsWindow.MouseX
mouseY = GraphicsWindow.MouseY
TextWindow.WriteLine("Координата по Х = " + mouseX)
TextWindow.WriteLine("Координата по Y = " + mouseY)
increaseScore() ' Сначала увеличиваем очки на 1
showScore() ' Выводим на экран новое значение очков
EndSub
В конспект
GraphicsWindow.MouseDown = mouseListenerSub 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
За готовый проект вы получаете сразу же фишку.
цук34ае4е4к
ОтветитьУдалить