QBASICBOOK.ru: сайт про QB64

Опубликовано: 2018-07-22 18:55:00

Рисование мышкой

Этот пример демонстрирует работу с курсором мышки и позволяет рисовать на экране.


  1. '                        Written 1999 by: Daryl R. Dubbs                     '
  2. '''''''''''''''''''''''''''''''' Initialize  '''''''''''''''''''''''''''''''''
  3. DECLARE SUB Mouse (Funk)   ' Declare Mouse sub-program.
  4. SCREEN 12 ' Graphics mode 12 (640 x 480 pixels, 16 colors)
  5. Mouse 1 ' Show mouse cursor.
  6. '''''''''''''''''''''''''''''''' Main Program '''''''''''''''''''''''''''''''
  7. DO ' Start Main loop.
  8.     Mouse 3 ' Read mouse buttons & coordinates.
  9.     LOCATE 1, 1: PRINT "Buttons:"; B; "Horizontal:"; H; "Vertical:"; V
  10.     SELECT CASE B ' Which button is pressed?
  11.         CASE 1 ' Left button pressed.
  12.             Mouse 2 ' Hide mouse cursor.
  13.             Mouse 3 ' Read buttons & coordinates.
  14.             LINE STEP(0, 0)-(H, V), 14 ' Draw a yellow line.
  15.             Mouse 1 ' Show mouse cursor.
  16.         CASE 2 ' Right button pressed.
  17.             Mouse 2 ' Hide mouse cursor.
  18.             CLS ' Clear screen.
  19.             Mouse 1 ' Show mouse cursor.
  20.         CASE 3 ' Both buttons pressed.
  21.             EXIT DO ' Drop out of Main loop.
  22.     END SELECT ' End select block.
  23. LOOP ' End Main loop.
  24. '''''''''''''''''''''''''''''''' Exit Program '''''''''''''''''''''''''''''''
  25. Mouse 2 ' Hide mouse cursor.
  26. CLS ' Clear screen.
  27. SYSTEM ' End program.
  28. '''''''''''''''''''''''''''''''' Mouse Sub-program  '''''''''''''''''''''''''
  29. '       This sub-program provides mouse support to QBasic programs.         '
  30. '       It is called with one parameter, and performs as follows:           '
  31. '              Mouse 1       Shows mouse cursor                             '
  32. '              Mouse 2       Hides mouse cursor                             '
  33. '              Mouse 3       Reads button status & co-ordinates             '
  34. '       Notes:                                                              '
  35. '       This sub-program requires Microsoft's mouse driver                  '
  36. '       or an equivalent Dos-based mouse driver, which must be loaded and   '
  37. '       running before use.                                                 '
  38. '       Variables B, H and V are global, so be certain not to create any    '
  39. '       other variables of the same name, or you must re-name these.        '
  40. '       Be sure to hide the mouse cursor before performing any graphics     '
  41. '       function, or else any graphics under the cursor will be garbled.    '
  42. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  43. SUB Mouse (Funk) 'Define sub and parameter passed.
  44. SHARED B, H, V 'Share variables with main sub.
  45. STATIC Crsr 'Track whether Cursor is shown.
  46. IF Funk = 1 THEN Crsr = 1 'Show Cursor.
  47. IF Funk = 2 AND Crsr = 0 THEN EXIT SUB 'Don't hide Cursor more than once.
  48. IF Funk = 2 AND Crsr = 1 THEN: Crsr = 0 'Hide Cursor.
  49. POKE 100, 184: POKE 101, Funk: POKE 102, 0 'Poke machine code necessary for
  50. POKE 103, 205: POKE 104, 51: POKE 105, 137 'using the mouse into memory
  51. POKE 106, 30: POKE 107, 170: POKE 108, 10 'starting at offset 100 in the
  52. POKE 109, 137: POKE 110, 14: POKE 111, 187 'current segment.  This code is
  53. POKE 112, 11: POKE 113, 137: POKE 114, 22 'then executed as a unit, via the
  54. POKE 115, 204: POKE 116, 12: POKE 117, 203 'statement " Call Absolute ".
  55. CALL ABSOLUTE(100) 'Call machine code.
  56. B = PEEK(&HAAA) 'Get values for: Buttons
  57. H = PEEK(&HBBB) + PEEK(&HBBC) * 256 'Horizontal position 2 bytes
  58. V = PEEK(&HCCC) + PEEK(&HCCD) * 256 'Vertical position 2 bytes
  59. END SUB 'End of sub-program.

Рисунок 1 – Исходный текст программы

Рисунок 1 – Исходный текст программы

Рисунок 2 – Выполнение программы

Рисунок 2 – Выполнение программы

Спасибо за прочтение этой статьи.

 

Прикрепленные файлы:

< Предыдущая статья
Еще один способ строить графики функций
Следующая статья >
Интерполяция

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.