BASIC-256. Глава 10
Книги, Методические материалыАвтор: Владимир Черный
Продолжаем публиковать перевод книги Джеймса Рено. Эту главу перевел Владимир Черный.
Оглавление:
- Глава 1: Знакомство с BASIC-256 – cкажи «Привет»
- Глава 2: Рисуем основные фигуры
- Глава 3: Звуки и музыка
- Глава 4: Мыслить как программист
- Глава 5: Программа задает вам вопросы
- Глава 6: Сравнения, сравнения, сравнения
- Глава 7: Циклы и счетчики — повторяем снова и снова
- Глава 8: Графика на заказ — создание фигур своими руками
- Глава 9: Подпрограммы — повторное использование кода
Глава 10 Управляем мышкой, перемещаем объекты
В этой главе рассмотрим как можно заставить программу реагировать на мышку. Есть два различных способа использовать мышь: двигать ее и нажимть на кнопки. Обе эти возможности обсуждаются на простых примерах.
Режим перемещения
Во время перемещения мышки можно использовать три числовые функции (mousex, mousey и mouseb), которые возвращают координаты указателя мыши в окне графического вывода. Если мышка вышла за пределы окна графического вывода, ее перемещение не регистрируется, а функции возвращают последнее сохраненное значение.
1 # mousetrack.kbs
2 print "Подвигай мышкой по окну графического вывода."
3 print "Щелкни левой кнопкой, чтобы завершить работу."
4
5 fastgraphics
6
7 # Повторять, пока пользователь не нажмет левую кнопку мышки
8 while mouseb <> 1
9 # очищаем экран
10 color white
11 rect 0, 0, graphwidth, graphheight
12 # рисуем мячик
13 color red
14 circle mousex, mousey, 10
15 refresh
16 end while
17
18 print "Завершено."
19 end
Программа 54 Мышиный след.
Пример экрана программы 54 Мышиный след.
mousex or mousex() mousey or mousey() mouseb or mouseb() Три функции для работы с манипулятором мышь возвращают текущее положение указателя мышки, когда он находится над областью графического отображения. Положение мышки вне этого экрана не фиксируется, но последние записанные данные возвращаются в программу.
|
Режим щелчков
Второй режим для управления мышкой называется «режим щелчков». В этом режиме положение мышиного курсора и нажатых кнопок (или комбинации кнопок) запоминаются, когда происходит щелчок. Как только щелчок обработан программой, надо вызвать команду clecklear, чтобы программа могла регистрировать следующее нажатие на кнопку.
1 # mouseclick.kbs
2 # X отмечает место где вы щелкнули мышкой
3 print "Подвигайте мышкой в окне графического вывода"
4 print "Щелкните левой кнопкой, чтобы отметить точку"
5 print "Щелкните правой кнопкой, чтобы закончить."
6 clg
7 clickclear
8 while clickb <> 2
9 # стираем значения предыдущего нажатия на кнопку мыши
10 # и ждем следующего
11 clickclear
12 while clickb = 0
13 pause .01
14 end while
15 #
16 color blue
17 stamp clickx, clicky, 5, {-1, -2, 0, -1, 1, -2, 2, -1, 1, 0, 2, 1, 1, 2, 0, 1, -1, 2, -2, 1, -1, 0, -2, -1}
18 end while
19 print "all done."
20 end
Программа 55 Щелчки мышкой
Пример вывода программы 55 Щелчки мышкой
clickx или clickx() clicky или clicky() clickb или clickb() Значения этих трех функций обновляются каждый раз, когда какая-нибудь кнопка мыши нажата и при этом указатель мыши находится внутри области графического вывода. Последнее местоположение мыши во время последнего нажатия кнопки доступно из этих трех функций. |
clickclear
Функция clickclear сбрасывает (устанавливает в 0) значения функций clickx, clicky и clickb . Новый щелчок можно зарегистрировать по условию: clickb <> 0 |
Большая программа в этой главе показывает как с помощью перемещения ползунков на цветных шкалах можно выбрать любой цвет из 16777216 различных цветов экрана. |
1 # colorchooser.kbs
2 fastgraphics
3
4 print "colorchooser — выбери цвет"
5 print "нажми и протащи мышкой красный, зеленый и синий ползунок"
6
7 # Переменные для хранения красной (r), зеленой (g) и синей (b) составляющих цвета
8 r = 128
9 g = 128
10 b = 128
11
12 gosub display
13
14 while true
15 # ждем нажатия на кнопку мыши
16 while mouseb = 0
17 pause .01
18 end while
19 # изменяем положение ползунка
20 if mousey < 75 then
21 r = mousex
22 if r > 255 then r = 255
23 end if
24 if mousey >= 75 and mousey < 150 then
25 g = mousex
26 if g > 255 then g = 255
27 end if
28 if mousey >= 150 and mousey < 225 then
29 b = mousex
30 if b > 255 then b = 255
31 end if
32 gosub display
33 end while
34 end
35
36 display:
37 clg
38 # рисуем красным
39 color 255, 0, 0
40 font "Tahoma", 30, 100
41 text 260, 10, "r"
42 for t = 0 to 255
43 color t, 0, 0
44 line t,0,t,37
45 color t, g, b
46 line t, 38, t, 75
47 next t
48 color black
49 rect r-1, 0, 3, 75
50 # рисуем зеленым
51 color 0, 255, 0
52 font "Tahoma", 30, 100
53 text 260, 85, "g"
54 for t = 0 to 255
55 color 0, t, 0
56 line t,75,t, 75 + 37
57 color r, t, b
58 line t, 75 + 38, t, 75 + 75
59 next t
60 color black
61 rect g-1, 75, 3, 75
62 # рисуем синим
63 color 0, 0, 255
64 font "Tahoma", 30, 100
65 text 260, 160, "b"
66 for t = 0 to 255
67 color 0, 0, t
68 line t, 150, t, 150 + 37
69 color r, g, t
70 line t, 150 + 38, t, 150 + 75
71 next t
72 color black
73 rect b-1, 150, 3, 75
74 # рисуем получившийся образец цвета
75 color black
76 font "Tahoma", 15, 100
77 text 5, 235, "(" + r + "," + g + "," + b + ")"
78 color r,g,b
79 rect 151,226,150,75
80 refresh
81 return
Программа 56. Большая программа — Выбор цвета
Образец экрана программы 56 Большая программа — Выбор цвета
Где скачать BASIC-256:
Для дистрибутивов ALT Linux
- ветка 4.0 basic256-0.9.6-alt5.M40.1.i586.rpm
- ветка 4.1 basic256-0.9.6-alt5.M41.1.i586.rpm
- ветка p5 basic256-0.9.6-alt5.M50P.1.i586.rpm
- ветка 5.1 basic256-0.9.6-alt5.M51.1.i586.rpm
Windows версия
http://basic256.org (http://www.sourceforge.net/projects/kidbasic)
Как установить BASIC-256 в Linux
Для Альт Линукс: настроить репозиторий и обновить/установить пакет через synaptic или apt
Для rpm-based дистрибутивов: rpm -Uvh <имя_пакета>.rpm
Январь 11, 2011, 4:13 пп
BASIC-256 обновился во всех ветках
4.0 http://ftp.altlinux.org/pub/distributions/ALTLinux/4.0/branch/files/i586/RPMS/basic256-0.9.6-alt5.M40.1.i586.rpm
4.1 http://ftp.altlinux.org/pub/distributions/ALTLinux/4.1/branch/files/i586/RPMS/basic256-0.9.6-alt5.M41.1.i586.rpm
p5 http://ftp.altlinux.org/pub/distributions/ALTLinux/p5/branch/files/i586/RPMS/basic256-0.9.6-alt5.M50P.1.i586.rpm
5.1 http://ftp.altlinux.org/pub/distributions/ALTLinux/5.1/branch/files/i586/RPMS/basic256-0.9.6-alt5.M51.1.i586.rpm
Январь 12, 2011, 11:02 дп
Спасибо, Сергей, исправил в статье.