'==============
' **** Donkey ****
'THIS IS ONLY AN ADAPTATION FROM QuickBasic DONKEY.BAS TO QB64
'Adapted Because DONKEY.BAS (QuickBasic) run so fast when compile with QB64
'-----------------
' 2020 05 18 1.43 AM porting from spaghetti structure(GOTO) to meatball structure (GOSUB)
'**************
'Used QuickBasic DONKEY.BAS (from https://web.archive.org/web/20050405104141/http://www.jujusoft.com/drivey/DONKEYQB.BAS.html) as base
'Used GW-BASIC DONKEY.BAS (from http://peyre.x10.mx/GWBASIC/) as guide
'Used "PC-BASIC" (https://robhagemans.github.io/pcbasic/) to run GW-BASIC DONKEY.BAS
'Added some DELAYs to make the program run like GW-BASIC version (on PC-BASIC)
'TO DO:
' * If possible, Make the game sound dont delay (For example when you press space)
'===============
REM The IBM Personal Computer Donkey
REM Version
1.10 (C
)Copyright IBM Corp
1981, 1982 REM Licensed Material
- Program Property of IBM
SAMPLES$ = "NO"
GOSUB StartScreen
'GOTO 1010 SAMPLES$ = "YES"
StartGraphic:
DIM D1%
(150), D2%
(150), C1%
(200), C2%
(200) B%(0) = 2: B%(1) = 193
LINE (0, 0)-(305, 199), , B
LINE (6, 6)-(97, 195), 1, BF
LINE (183, 6)-(305, 195), 1, BF
CY = 105: CX = 105
LINE (100, 0)-(100, 199):
LINE (180, 0)-(180, 199)
'Delay added
SOUND 20000, 0.9 'Modified SOUND Duration :
LINE (DX
, 124)-(DX
+ 32, 149), 0, BF:
Collision:
GET (DX
, Y
)-(DX
+ 16, Y
+ 25), D1%
() D1X = DX: D1Y = Y: D2X = DX + 17
GET (DX
+ 17, Y
)-(DX
+ 31, Y
+ 25), D2%
() GET (CX
, CY
)-(CX
+ 14, CY
+ 44), C1%
() GET (CX
+ 15, CY
)-(CX
+ 28, CY
+ 44), C2%
() C1X = CX: C1Y = CY: C2X = CX + 15
FOR P
= 6 TO 0 STEP -1: Z
= 1 / (2 ^ P
): Z1
= 1 - Z
'Delay added too
PUT (C1X
, C1Y
), C1%
():
PUT (C2X
, C1Y
), C2%
() PUT (D1X
, D1Y
), D1%
():
PUT (D2X
, D1Y
), D2%
() C1X = CX * Z1: D1Y = Y * Z1: C2X = C2X + (291 - C2X) * Z
D1X = DX * Z1: C1Y = C1Y + (155 - C1Y) * Z: D2X = D2X + (294 - D2X) * Z
PUT (C1X
, C1Y
), C1%
():
PUT (C2X
, C1Y
), C2%
() PUT (D1X
, D1Y
), D1%
():
PUT (D2X
, D1Y
), D2%
()
'More Delay
DonkeyLoss:
StartScreen:
TestAdapter:
PRINT "YOU'RE NOT USING THE COLOR/GRAPHICS MONITOR ADAPTER!" PRINT "THIS PROGRAM USES GRAPHICS AND REQUIRES THAT ADAPTER." PRINT "PRESS THE SPACE BAR TO CONTINUE."
Escape:
TestBasic:
WarningBASICA:
PRINT "THIS PROGRAM REQUIRES ADVANCED BASIC -- USE COMMAND 'BASICA'":
COLOR 15, 0, 0:
FOR I
= 1 TO 9000:
NEXT:
MakeDonkey:
DRAW "M+2,-4R8M+1,-1U1M+1,+1M+2,-1" DRAW "M-1,1M+1,3M-1,1M-1,-2M-1,2" DRAW "D3L1U3M-1,1D2L1U2L3D2L1U2M-1,-1" GET (13, 0)-(45, 25), DNK%
()
MakeCar:
DRAW "BM12,1r3m+1,3d2R1ND2u1r2d4l2u1l1" DRAW "d7R1nd2u2r3d6l3u2l1d3m-1,1l3" DRAW "m-1,-1u3l1d2l3u6r3d2nd2r1u7l1d1l2" DRAW "BD10D2R3U2M-1,-1L1M-1,1" DRAW "BD3D1R1U1L1BR2R1D1L1U1" DRAW "BD2BL2D1R1U1L1BR2R1D1L1U1" DRAW "BD2BL2D1R1U1L1BR2R1D1L1U1" LINE (0, 0)-(40, 60), , B
GET (1, 1)-(28, 44), CAR%
() 'Modified "29" and "45" for a line that appeared on the side of the car