QBasic/示例程式
外觀
< QBasic
這個程式可以用來製作一個簡單、功能完善的計算器,非常簡單。
Rem calculator
cls
10
print "input first operand"
input a
print "select operation"
input b
print "addition(a)"
print "subtraction(s)"
print "multiplication(m)"
print "division(d)"
print "exponentification(e)"
print "rooting(r)"
print "Quit(q)"
do
next$ = inkey$
loop until next$ <> ""
gosub input_var2
select case next$
case "a"
c = a + b
print "sum is:";c
case "s"
c = a - b
print "Difference is:";c
case "m"
c= a*b
print "Product is :";c
case "d"
c = a/b
print "Quotient is:";c
case "e"
c = a^b
print "Exponentification is:"c
case "r"
c = a^ 1/b
print "Root is:";c
case "q"
end
end select
sleep 3
goto 10
sub input_var
input "enter second operand";b
end sub
有關參考,請轉到 基本數學
使用動畫製作一個簡單遊戲。
SCREEN 7
COLOR 15, 1
_MOUSEHIDE
CLS
LOCATE 5, 1
PRINT "GUNSHOTS"
DO
NEXT$ = INKEY$
LOOP UNTIL NEXT$ <> ""
CLS
LOCATE 5, 1
PRINT "In this game, you require to bring"
PRINT ""
PRINT "the crosshairs to the box"
PRINT ""
PRINT " , which is the target ,"
PRINT ""
PRINT " and click to shoot it."
PRINT ""
PRINT " In this game , you control"
PRINT ""
PRINT "the crosshairs with your mouse."
PRINT ""
PRINT " You will be given a"
PRINT ""
PRINT " fixed number of tries."
PRINT ""
PRINT " The number of times you hit the target,"
PRINT ""
PRINT " you will be given a point "
DO
NEXT$ = INKEY$
LOOP UNTIL NEXT$ <> ""
CLS
LOCATE 5, 1
PRINT "Get Ready!"
DO
NEXT$ = INKEY$
LOOP UNTIL NEXT$ <> ""
10
A = INT(RND * 100)
B = INT(RND * 100)
DO: K$ = INKEY$
20
DO WHILE _MOUSEINPUT
CLS
IF TRY_COUNT > 30 THEN
CLS
LOCATE 10, 1
PRINT "Remarks:"
IF POINT_COUNT < 10 THEN PRINT "OH NO! NICE TRY!"
IF POINT_COUNT > 10 AND POINT_COUNT < 16 THEN PRINT "GOOD WORK!"
IF POINT_COUNT > 15 AND POINT_COUNT < 21 THEN PRINT "GREAT!"
IF POINT_COUNT > 20 AND POINT_COUNT < 26 THEN PRINT "AMAZING!"
END
END IF
SECOND = VAL(RIGHT$(TIME$, 2))
IF PREVSEC <> SECOND THEN
COUNT = COUNT + 1
END IF
LOCATE 25, 25
PRINT POINT_COUNT
X = _MOUSEX: Y = _MOUSEY
LINE (X - 10, Y)-(X + 10, Y), 15
LINE (X, Y - 10)-(X, Y + 10), 15
LINE (A, B)-(A + 25, B), 15
LINE (A, B + 25)-(A + 25, B + 25), 15
LINE (A, B)-(A, B + 25), 15
LINE (A + 25, B)-(A + 25, B + 25), 15
PAINT (A, B), (1), 15
IF _MOUSEBUTTON(1) THEN
IF X > A AND X < A + 25 AND Y > B AND Y < B + 25 THEN
POINT_COUNT = POINT_COUNT + 1
TRY_COUNT = TRY_COUNT + 1
GOTO 10
END IF
END IF
IF COUNT > 1 THEN
COUNT = 0
TRY_COUNT = TRY_COUNT + 1
GOTO 10
END IF
PREVSEC = SECOND
GOTO 20
LOOP
LOOP
有關參考,請轉到 高階圖形
一個與數字時鐘非常相似的時鐘,沒有指標。如果你想用指標,可以使用繪製功能。
REM Clock
SCREEN 7
CLS
start:
SCREEN 7
_FONT 16
LOCATE 1, 5
PRINT "CLOCK"
PRINT "________________________________________"
LINE (50, 50)-(100, 100), 1, BF
LOCATE 9, 5
PRINT "TIME"
LOCATE 10, 5
PRINT "CONTROL"
LINE (150, 50)-(200, 100), 2, BF
LOCATE 9, 18.5
PRINT "STOP WATCH"
DO
exit$ = INKEY$
IF exit$ = "e" OR exit$ = "E" THEN
CLS
SCREEN 7
COLOR 2, 1
LOCATE 5, 5
PRINT "YOU HAVE ABORTED THE CLOCK"
WHILE close_count <> 10
close_count = close_count + 1
LOCATE 7, 5
PRINT "APPLICATION ";
IF close_count MOD 2 = 1 THEN
PRINT "CLOSING >>> "
ELSE
PRINT "CLOSING >>> "
END IF
SLEEP 1
WEND
CLS
SCREEN 7
COLOR 10, 0
END
END IF
Mouser mx, my, mb
IF mb THEN
IF mx >= 50 AND my >= 50 AND mx <= 100 AND my <= 100 THEN 'button down
DO WHILE mb 'wait for button release
Mouser mx, my, mb
LOOP
'verify mouse still in box area
IF mx >= 50 AND my >= 50 AND mx <= 100 AND my <= 100 THEN
GOTO proccess
END IF
END IF
END IF
Mouser mx, my, mb
IF mb THEN
IF mx >= 150 AND my >= 50 AND mx <= 200 AND my <= 100 THEN 'button down
DO WHILE mb 'wait for button release
Mouser mx, my, mb
LOOP
'verify mouse still in box area
IF mx >= 150 AND my >= 50 AND mx <= 200 AND my <= 100 THEN
time_control = 1
GOTO proccess
END IF
END IF
END IF
LOOP
proccess:
IF time_control = 0 THEN
time_enter:
LOCATE 12, 6
INPUT "enter time"; t
IF t > 1800 THEN
mistake = mistake + 1
IF mistake > 3 THEN
PRINT "BLOCKED"
END
END IF
GOTO time_enter
END IF
END IF
Mouser mx, my, mb
IF mb THEN
IF mx >= 150 AND my >= 50 AND mx <= 200 AND my <= 100 THEN 'button down
DO WHILE mb 'wait for button release
Mouser mx, my, mb
LOOP
'verify mouse still in box area
IF mx >= 150 AND my >= 50 AND mx <= 200 AND my <= 100 THEN
time_control = 1
GOTO proccess
END IF
END IF
END IF
WHILE INKEY$ <> " "
SLEEP 1
count = count + 1
tc = tc + 1
BEEP
CLS
LOCATE 1, 5
PRINT "CLOCK"
PRINT "________________________________________"
IF time_control = 1 THEN
LINE (150, 50)-(200, 100), 2, BF
END IF
LOCATE 3, 5
PRINT "CURRENT TIME:"; TIME$
LOCATE 5, 5
PRINT "MINUTES:"; minute
LOCATE 6, 5
PRINT "SECONDS:"; count
IF count = 60 THEN
count = 0
minute = minute + 1
END IF
IF time_control = 0 THEN
LOCATE 8, 5
PRINT "TIME LEFT:"; (t - tc) \ 60; ":"; (t - tc) MOD 60
IF tc = t THEN
BEEP
BEEP
BEEP
BEEP
END
END IF
END IF
IF time_control = 1 THEN
Mouser mx, my, mb
IF mb THEN
IF mx >= 150 AND my >= 50 AND mx <= 200 AND my <= 100 THEN 'button down
DO WHILE mb 'wait for button release
Mouser mx, my, mb
LOOP
'verify mouse still in box area
IF mx >= 150 AND my >= 50 AND mx <= 200 AND my <= 100 THEN
END
END IF
END IF
END IF
LOCATE 10, 10
PRINT "PRESS BUTTON TO END"
END IF
WEND
GOTO start
SUB Mouser (x, y, b)
mi = _MOUSEINPUT
b = _MOUSEBUTTON(1)
x = _MOUSEX
y = _MOUSEY
END SUB
這是你到目前為止閱讀的所有章節的一個小的邏輯組合。
是的,這是一個二進位制解碼器,但也是一個二進位制編碼器。它將任何十進位制系統數字轉換為二進位制。執行這個程式,自己看看。
REM binary
SCREEN 7
COLOR 1, 2
_FONT 16
LOCATE 7, 10
PRINT "Binary Coder"
SLEEP 5
start:
CLS
LOCATE 1, 1
PRINT "Binary coder"
PRINT "_____________"
PRINT ""
PRINT ""
PRINT ""
PRINT ""
INPUT "Enter Decimal number"; a
CLS
LOCATE 1, 1
PRINT "Binary coder"
PRINT "_____________"
PRINT ""
PRINT ""
WHILE a <> 0
PRINT a MOD 2;
IF a MOD 2 = 1 THEN
a = a \ 2
ELSE a = a / 2
END IF
WEND
PRINT ""
PRINT ""
PRINT "Binary code is reversed"
WHILE INKEY$ <> " "
WEND
GOTO start
唯一的問題是:二進位制程式碼是反轉的。你可能已經從最後一條 PRINT 語句中猜到了。我還沒有想出如何反轉它,所以我想你必須自己動手。而且,WHILE 迴圈有一個 print 語句,末尾有一個分號。這是為了確保下一個數字出現在它後面,而不是下一行。
還記得大猩猩嗎?好吧,去掉圖形,剩下的就是這個。
10
RANDOMIZE TIMER
cor = RND * 150
cor2 = CINT(cor)
IF cor2 < 30 AND cor2 > -30 THEN GOTO 10
PRINT "The object to hit is at coordinates"; cor2
INPUT "enter velocity"; v
INPUT "enter angle"; a
d = ((v ^ 2) * SIN(2 * a)) / 10
PRINT "Hit on:"
PRINT CINT(-d)
IF CINT(-d) < cor2 + 30 AND CINT(-d) > cor2 - 30 THEN
PRINT "Well Done!"
ELSEIF CINT(-d) < 30 AND CINT(-d) > -30 THEN PRINT "Hey , you hit us!"
ELSE PRINT "Ugh, not on target"
END IF
嗯?好吧,現在數學很複雜,但公式基本上是一樣的。在這裡,拋射物必須落在目標物 30 個座標中的任何一個,否則你就輸了。有關數學部分的更多資訊,請參見 維基百科:拋射運動。提示:新增圖形。這將是一大塊程式碼,但最終產品將是驚人的!
好吧,現在,你能聽到多高頻率的聲音?用這個程式測試你的聽力。
REM ultrasonic_test
CLS
freq = 20000
DO
PRINT "Frequency is:"; freq
SOUND freq, 18.2
INPUT "Can you hear?"; ans$
IF ans$ = "no" THEN
freqrange = freq
GOTO 10
END IF
freq = freq + 100
LOOP
10
freq = freqrange
DO
PRINT "frequency is:"; freq
SOUND freq, 18.2
INPUT "can you hear?"; ans$
IF ans$ = "no" THEN
PRINT "your max frequency is:"; freq
END
END IF
freq = freq + 2
LOOP
看看這個!