СПО в российских школах

Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России
Январь 7, 2011

BASIC-256. Глава 10

Книги, Методические материалы
Автор: Владимир Черный

Продолжаем публиковать перевод книги Джеймса Рено. Эту главу перевел Владимир Черный.
Оглавление:

Где взять BASIC-256

Глава 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()

Три функции для работы с манипулятором мышь возвращают текущее положение указателя мышки, когда он находится над областью графического отображения. Положение мышки вне этого экрана не фиксируется, но последние записанные данные возвращаются в программу.

mousex Возвращает х-координату указателя мышки. Диапазон: от 0 до graphwidth — 1
mousey Возвращает y-координату указателя мышки. Диапазон: от 0 до graphheight — 1
mouseb
0 Возвращает это значение, когда ни одна кнопка не нажата
1 Возвращает это значение, когда левая кнопка нажата
2 Возвращает это значение, когда правая кнопка нажата
4 Возвращает это значение, когда средняя кнопка нажата

Если несколько кнопок нажаты одновременно, результатом будет сумма значений по каждой кнопке.

Режим щелчков

Второй режим для управления мышкой называется «режим щелчков». В этом режиме положение мышиного курсора и нажатых кнопок (или комбинации кнопок) запоминаются, когда происходит щелчок. Как только щелчок обработан программой, надо вызвать команду 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

Windows версия
http://basic256.org (http://www.sourceforge.net/projects/kidbasic)

Как установить BASIC-256 в Linux

Для Альт Линукс: настроить репозиторий и обновить/установить пакет через synaptic или apt
Для rpm-based дистрибутивов: rpm -Uvh <имя_пакета>.rpm

Комментарии (2) к “BASIC-256. Глава 10”

  1. Владимир Черный говорит:
    Январь 12, 2011, 11:02 дп

    Спасибо, Сергей, исправил в статье.

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