Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
sergiy
6 лет назад

36 FreeBASIC - SetMouse и GetMouse. Практика

Покажем на двух примерах как используются SetMouse и GetMouse.

Нарисуем с помощью SetMouse круг))) Нет, рисовать будет конечо же pset, а SetMouse будет указывать где рисуется точка.

Для рисования окружности воспользуемся параметрическим уравнением

dim as double x, y, t
const as double PI = 3.1415926835

ScreenRes 800,600

for t=0 to 2*PI step 2*PI/300
    x = 400 + 200*COS(t)
    y = 300 + 200*SIN(t)
    SetMouse x,y
    pset (x,y),11
    sleep 90
next t
sleep

Но более интересно использовать GetMouse. Порисуем мышью - узнаем где находится курсор мыши и там поставим точку.


Dim As Integer x, y, b, r

ScreenRes 800, 600, 8
Do
    
    r = GetMouse (x, y, , b)
    If r = 0 Then 
      If b And 1 Then pset (x,y),11
      If b And 2 Then cls
    End If
Loop While Inkey = ""
End


Жаль что линия выглядит прерывистой, попробуем это исправить. Будем не точку ставить, а рисовать линию к следующей точке. Только вот первый раз, после нажатия кнопки мыши, точку всё же прийдётся поставить.

Dim As Integer x, y, b, r, lb

ScreenRes 640, 480, 8
lb=0
Do
    
    r = GetMouse (x, y, , b)
    If r = 0 Then 
      If (b And 1) then
        if lb=0 then pset (x,y),11: lb=1
        if lb=1 then line -(x,y),11
      else lb=0
      end if
      
      If b And 2 Then cls: lb=0
    End If
Loop While Inkey = ""
End

Добавим переменную lb - она будет устанавливаться в 1 если левая кнопка нажата, и устанавливаться в 0 - если не нажата.

Умный компилятор FreeBASIC))) - разобрался)) куда отнести else lb=0, к какому из трёх операторов if

if (b and 1) then
   if lb=0 then pset (x,y),11: lb=1
   if lb=1 then line -(x,y),11
else lb=0
end if
if (b and 1) then
   if lb=0 then pset (x,y),11: lb=1
   if lb=1 then line -(x,y),11 else lb=0
end if
11
469.138 GOLOS
На Golos с October 2016
Комментарии (5)
Сортировать по:
Сначала старые