跳转到内容

QBasic/高级图形

来自维基教科书,自由的教科书

基本移动

[编辑 | 编辑源代码]

动画本质上是指在固定时间段内变化的图形。我们将使用一个 do-loop 来实现。

SCREEN 7  ' we need to use a graphics enabled screen mode
animation   'calling the sub


SUB animation
    SCREEN 7
    x = 10 'set first x- coordinate
    y = 10 'set first y-coordinate
    DO
        CLS ' going back to a blank screen so that the previous rectangle is erased
        x = x + 3  ' setting increment of coordinate x
        y = y + 3   ' setting increment of coordinate y

        LINE (x, y)-(x + 5, y) 'drawing lines
        LINE (x, y + 5)-(x + 5, y + 5)
        LINE (x, y)-(x, y + 5)
        LINE (x + 5, y)-(x + 5, y + 5)

        SLEEP 2

    LOOP UNTIL INKEY$ <> ""



END SUB

解释

  1. 我们从默认的 QBasic 纯文本屏幕切换到一个启用图形的屏幕。
  2. 我们调用了创建动画的子程序。
  3. 我们开始了 do-loop until 循环。这使得动画可以一直运行,直到用户按下某个键结束动画。
  4. 我们设置了坐标的增量。这使得方框可以绘制在新的位置,而不是同一个位置。如果希望方框只在一个方向移动,则只需要设置一个变量的增量。
  5. 我们从每个坐标绘制到另一个坐标的线条。请注意,每次一个坐标保持固定,而另一个坐标发生变化。(这里我指的是两个坐标集,第一个是起始坐标集,第二个是结束坐标集)
  6. 我们执行了一个 sleep 命令。这会暂停执行 2 秒。如果没有这个命令,do-loop 会比我们想要的更快地执行,动画会非常短暂。
  7. 通过使用 RND 为变量赋值,你可以创建随机、不可预测的动画。


鼠标控制

[编辑 | 编辑源代码]

在这一步,我们将使用 QB64 内置的 _mousehide、_mousex、_mousey、_mouseinput 和 _mousebutton 命令来控制鼠标输入。

These Functions only work in QB64!
_mousehide
screen 7

mousetrack

sub mousetrack
do while _mouseinput
cls

X = _mousex
Y = _mousey

LINE (X - 10, Y)-(X + 10, Y), 15
LINE (X, Y - 10)-(X, Y + 10), 15

        IF _MOUSEBUTTON(1) THEN
            IF X > A AND X < A + 25 AND Y > B AND Y < B + 25 THEN
                message$ = "yes"
                goto action
            END IF
        END IF

loop until inkey$ <> ""
  1. 这里第一个函数 "_mousehide" 阻止默认的指针鼠标格式显示在屏幕上。
  2. Mouseinput 函数获取鼠标信息。
  3. 接下来的函数 "_mousex" 和 "_mousey" 保存鼠标当前的 x 和 y 坐标。
  4. 这些代码行绘制了一个基本的触发器。
  5. "_mousebutton" 函数返回所按鼠标按钮的值,“1”表示按下左键。
  6. 如果鼠标按钮事件发生在某个封闭区域内,则会发出一个名为 "message$" 的消息。这可以在以后使用。
  7. 如果满足了之前的条件,则该过程跳转到行标签 "action",这里可能会执行任何命令。
  8. 否则,该过程循环,直到满足 "loop until" 条件。它也可以是与上面给出的条件不同的其他条件。

这些图形和动画可以用来创建一个完整的游戏。你可以使用 "Inkey$" 命令来代替 "Mouse" 函数,来创建不同的场景和情况,每个场景和情况都有完整的代码来决定下一步发生的事情。

你可以使用 ".txt" 文件来存储信息,而不是制作不包含任何用户信息的游戏。这些信息可以稍后被检索,来创建一个具有完整 “职业” 选项的游戏。

华夏公益教科书