mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-05-12 12:00:13 +00:00
Add QBasic tests
These tests use a variety of sample code (with some of the larger files removed, so they are not complete!) and verifies that they all compile successfully.
This commit is contained in:
parent
b89e388c2f
commit
9ee89d6ff4
1
tests/qbasic_testcases/README.md
Normal file
1
tests/qbasic_testcases/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
NOTE: These files are simply test cases, they do not include all the files necessary for them to run.
|
15
tests/qbasic_testcases/misc/3dballs.bas
Normal file
15
tests/qbasic_testcases/misc/3dballs.bas
Normal file
|
@ -0,0 +1,15 @@
|
|||
'balls by Antoni Gual agual@eic.ictnet.es
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
1 IF p% >= 16 THEN 3 ELSE IF p% = 0 THEN SCREEN 12 ELSE PALETTE p% - 1, b&
|
||||
2 READ p%, b&
|
||||
3 IF p% < 16 THEN GOTO 9 ELSE a$ = MKI$(RND * 640 + 1) + MKI$(RND * 480) + MKS$((RND * 60) + 20) + MKI$(INT(RND * 4) * 4) + MKS$(RND * 3.141592) + MKS$(RND * 3.141592 / 1.5)
|
||||
4 FOR i% = -INT(CVS(MID$(a$, 5))) TO INT(CVS(MID$(a$, 5)))
|
||||
5 FOR j% = -INT(SQR(CVS(MID$(a$, 5)) ^ 2 - i% ^ 2)) TO INT(SQR(CVS(MID$(a$, 5)) ^ 2 - i% ^ 2))
|
||||
6 c! = 3 * (COS(CVS(MID$(a$, 11))) * SIN(CVS(MID$(a$, 15))) * i% / CVS(MID$(a$, 5)) + SIN(CVS(MID$(a$, 11))) * SIN(CVS(MID$(a$, 15))) * j% / CVS(MID$(a$, 5)) + COS(CVS(MID$(a$, 15))) * SQR(1.11 - (i% / CVS(MID$(a$, 5))) ^ 2 - (j% / CVS(MID$(a$, 5) _
|
||||
)) ^ 2))
|
||||
7 PSET (CVI(MID$(a$, 1)) + i%, CVI(MID$(a$, 3)) + j%), 1 + CVI(MID$(a$, 9)) + INT(c!) + (RND > (c! - INT(c!)))
|
||||
8 NEXT j%, i%
|
||||
9 IF LEN(INKEY$) = 0 THEN GOTO 1 ELSE DATA 1,&h5,2,&h10,3,&h20,4,&h30,5,&h500,6,&h1000,7,&h2000,8,&h3000,9,&h50000,10,&h100000,11,&h200000,12,&h300000,13,&h50505,14,&h101010,15,&h202020,16,&h303030,17,0
|
||||
|
||||
|
435
tests/qbasic_testcases/misc/3dexp2.bas
Normal file
435
tests/qbasic_testcases/misc/3dexp2.bas
Normal file
|
@ -0,0 +1,435 @@
|
|||
'3DEXP2.BAS By Rich Geldreich June 2nd, 1992
|
||||
'A fast, QuickBASIC 4.5 3-D wireframe animation program.
|
||||
'Compile it for maximum speed!
|
||||
'If you have any questions or ideas, please write/call:
|
||||
|
||||
'Rich Geldreich
|
||||
'410 Market St.
|
||||
'Gloucester City, NJ 08030
|
||||
'(609)-742-8752
|
||||
|
||||
'The following program is in the public domain! Have fun!
|
||||
'Also look at VECT.ASM
|
||||
DEFINT A-Z
|
||||
TYPE LineType
|
||||
X AS INTEGER
|
||||
Y AS INTEGER
|
||||
Z AS INTEGER
|
||||
X1 AS INTEGER
|
||||
Y1 AS INTEGER
|
||||
Z1 AS INTEGER
|
||||
END TYPE
|
||||
DIM Points(100) AS LineType
|
||||
DIM Xn(100), Yn(100), Zn(100)
|
||||
DIM Xs1(100), Ys1(100), Xe1(100), Ye1(100)
|
||||
DIM X(100), Y(100), Z(100), Pointers1(100), Pointers2(100), Sp(100), Zp(100)
|
||||
DIM R(100), B(63), B1(63)
|
||||
DIM Cosine&(360), Sine&(360)
|
||||
CLS
|
||||
PRINT "3-D Craft v1a"
|
||||
PRINT "By Rich Geldreich June 2nd, 1992"
|
||||
PRINT
|
||||
PRINT "Keys to use: (Turn NUMLOCK on!)"
|
||||
PRINT "Q...............Quits"
|
||||
PRINT "Numeric keypad..Controls your position(press 5 on the keypad"
|
||||
PRINT " to completly stop yourself) "
|
||||
PRINT "-...............Forward exceleration"
|
||||
PRINT "+...............Backward exceleration"
|
||||
PRINT "Arrow keys......Controls the rotation of the craft"
|
||||
PRINT "F...............Excelerates the craft (Forward)"
|
||||
PRINT "B...............Slows the craft (Backward)"
|
||||
PRINT "S...............Stops the craft"
|
||||
PRINT "A...............Toggles Auto Center, use this when you lose";
|
||||
PRINT " the craft"
|
||||
PRINT "C...............Stops the craft's rotation"
|
||||
PRINT "V...............Resets the craft to starting position"
|
||||
PRINT
|
||||
PRINT "Wait a sec..."
|
||||
|
||||
'The following for/next loop makes a sine & cosine table.
|
||||
'Each sine & cosine is multiplied by 1024 and stored as long integers.
|
||||
'This is done so that we don't have to use any slow floating point
|
||||
'math at run time.
|
||||
A = 0
|
||||
FOR A! = 0 TO 359 / 57.29577951# STEP 1 / 57.29577951#
|
||||
Cosine&(A) = INT(.5 + COS(A!) * 1024)
|
||||
Sine&(A) = INT(.5 + SIN(A!) * 1024): A = A + 1
|
||||
NEXT
|
||||
'Next we read in all of the lines that are in the object...
|
||||
FOR A = 0 TO 44
|
||||
READ Points(A).X, Points(A).Y, Points(A).Z
|
||||
READ Points(A).X1, Points(A).Y1, Points(A).Z1
|
||||
NEXT
|
||||
'Here comes the hard part... Consider this scenario:
|
||||
|
||||
'We have two connected lines, like this:
|
||||
|
||||
' 1--------2 and 3
|
||||
' |
|
||||
' |
|
||||
' |
|
||||
' |
|
||||
' 4
|
||||
'Where 1,2, 3, & 4 are the starting and ending points of each line.
|
||||
'The first line consists of points 1 & 2 and the second line
|
||||
'is made of points 3 & 4.
|
||||
'So, you ask, what's wrong? Nothing, really, but don't you see that
|
||||
'points 2 and 3 are really at the sample place? Why rotate them twice,
|
||||
'that would be a total waste of time? The following code eliminates such
|
||||
'occurrences from the line table. (great explanation, huh?)
|
||||
|
||||
NumberLines = 45
|
||||
'take all of the starting & ending points and put them in one big
|
||||
'array...
|
||||
Np = 0
|
||||
FOR A = 0 TO NumberLines - 1
|
||||
X(Np) = Points(A).X
|
||||
Y(Np) = Points(A).Y
|
||||
Z(Np) = Points(A).Z
|
||||
Np = Np + 1
|
||||
X(Np) = Points(A).X1
|
||||
Y(Np) = Points(A).Y1
|
||||
Z(Np) = Points(A).Z1
|
||||
Np = Np + 1
|
||||
NEXT
|
||||
'Now set up two sets of pointers that point to each point that a line
|
||||
'is made of... (in other words, scan for the first occurrence of each
|
||||
'starting and ending point in the point array we just built...)
|
||||
FOR A = 0 TO NumberLines - 1
|
||||
Xs = Points(A).X
|
||||
Ys = Points(A).Y
|
||||
Zs = Points(A).Z 'get the 3 coordinates of the start point
|
||||
FOR B = 0 TO Np - 1 'scan the point array
|
||||
IF X(B) = Xs AND Y(B) = Ys AND Z(B) = Zs THEN
|
||||
Pointers1(A) = B 'set the pointer to point to the
|
||||
EXIT FOR 'point we have just found
|
||||
END IF
|
||||
NEXT
|
||||
Xs = Points(A).X1 'do the same thing that we did above
|
||||
Ys = Points(A).Y1 'except scan for the ending point
|
||||
Zs = Points(A).Z1 'of each line
|
||||
FOR B = 0 TO Np - 1
|
||||
IF X(B) = Xs AND Y(B) = Ys AND Z(B) = Zs THEN
|
||||
Pointers2(A) = B
|
||||
EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
NEXT
|
||||
'Okay, were almost done! All we have to do now is to build a table
|
||||
'that tells us which points to actually rotate...
|
||||
Nr = 0
|
||||
FOR A = 0 TO NumberLines - 1
|
||||
F1 = Pointers1(A) 'get staring & ending point number
|
||||
S1 = Pointers2(A)
|
||||
IF Nr = 0 THEN 'if this is the first point then it of course
|
||||
'has to be rotated
|
||||
R(Nr) = F1: Nr = Nr + 1
|
||||
ELSE
|
||||
Found = 0 'scan to see if this point already exists...
|
||||
FOR B = 0 TO Nr - 1
|
||||
IF R(B) = F1 THEN
|
||||
Found = -1: EXIT FOR 'shoot, it's already here!
|
||||
END IF
|
||||
NEXT
|
||||
IF NOT Found THEN R(Nr) = F1: Nr = Nr + 1 'point the point
|
||||
'in the array it we
|
||||
END IF 'can't find it...
|
||||
|
||||
Found = 0 'now look for the ending point
|
||||
FOR B = 0 TO Nr - 1
|
||||
IF R(B) = S1 THEN
|
||||
Found = -1: EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
IF NOT Found THEN R(Nr) = S1: Nr = Nr + 1
|
||||
NEXT
|
||||
FOR A = 0 TO 63
|
||||
B(A) = (4 * A) \ 8
|
||||
B1(A) = A - B(A)
|
||||
NEXT
|
||||
PRINT "Press any key to begin..."
|
||||
A$ = INPUT$(1)
|
||||
|
||||
Deg1 = 0: Deg2 = 0: D1 = 0: D2 = 0
|
||||
|
||||
Spos = -200: Mypos = 0
|
||||
|
||||
Mx = 0: My = 0: Mz = 0: Ox = 0: Oy = 0: Oz = -260
|
||||
|
||||
NumberOfFrames = 0
|
||||
DEF SEG = &H40
|
||||
StartTime = PEEK(&H6C)
|
||||
|
||||
SCREEN 13
|
||||
FOR A = 0 TO 63
|
||||
OUT &H3C7, A: OUT &H3C8, A: OUT &H3C9, A: OUT &H3C9, 0: OUT &H3C9, 0
|
||||
NEXT
|
||||
|
||||
DO
|
||||
|
||||
|
||||
|
||||
Deg1 = (Deg1 + D1) MOD 360
|
||||
Deg2 = (Deg2 + D2) MOD 360
|
||||
IF Deg1 < 0 THEN Deg1 = Deg1 + 360
|
||||
IF Deg2 < 0 THEN Deg2 = Deg2 + 360
|
||||
|
||||
C1& = Cosine&(Deg1): S1& = Sine&(Deg1)
|
||||
C2& = Cosine&(Deg2): S2& = Sine&(Deg2)
|
||||
C3& = Cosine&(Deg3): S3& = Sine&(Deg3)
|
||||
'Deg3 = (Deg3 + 5) MOD 360
|
||||
|
||||
X = Speed: Y = 0: Z = 0
|
||||
|
||||
X1 = (X * C1&) \ 1024: Y1 = (X * S1&) \ 1024
|
||||
X2 = (X1 * C2&) \ 1024: Zn = (X1 * S2&) \ 1024
|
||||
|
||||
Y3 = (Y1 * C3& - Zn * S3&) \ 1024
|
||||
Z3 = (Y1 * S3& + Zn * C3&) \ 1024
|
||||
|
||||
Ox = Ox + X2: Oy = Oy + Y3: Oz = Oz + Z3
|
||||
IF Oz > 32000 THEN Oz = 32000
|
||||
IF Oz < -32000 THEN Oz = -32000
|
||||
IF Ox > 32000 THEN Ox = 32000
|
||||
IF Ox < -32000 THEN Ox = -32000
|
||||
IF Oy > 32000 THEN Oy = 32000
|
||||
IF Oy < -32000 THEN Oy = -32000
|
||||
|
||||
|
||||
IF AtLoc THEN
|
||||
Mx = Mx + (Ox - Mx) \ 4
|
||||
My = My + (Oy - My) \ 4
|
||||
Mz = Mz + ((Oz + 200) - Mz) \ 4
|
||||
ELSE
|
||||
'adjust the users position based on how much he is moving...
|
||||
Mz = Mz + Mzm: Mx = Mx + Mxm: My = My + Mym
|
||||
IF Mz > 32000 THEN Mz = 32000
|
||||
IF Mz < -32000 THEN Mz = -32000
|
||||
IF Mx > 32000 THEN Mx = 32000
|
||||
IF Mx < -32000 THEN Mx = -32000
|
||||
IF My > 32000 THEN My = 32000
|
||||
IF My < -32000 THEN My = -32000
|
||||
END IF
|
||||
|
||||
LOCATE 1, 1: PRINT A$
|
||||
|
||||
MaxZ = -32768
|
||||
LowZ = 32767
|
||||
FOR A = 0 TO Nr - 1
|
||||
R = R(A)
|
||||
Xo = X(R): Yo = Y(R): Zo = Z(R)
|
||||
|
||||
X1 = (Xo * C1& - Yo * S1&) \ 1024
|
||||
Y1 = (Xo * S1& + Yo * C1&) \ 1024
|
||||
|
||||
X2& = (X1 * C2& - Zo * S2&) \ 1024 - Mx + Ox
|
||||
Z2 = (X1 * S2& + Zo * C2&) \ 1024
|
||||
|
||||
Y3& = (Y1 * C3& - Z2 * S3&) \ 1024 - My + Oy
|
||||
Z4 = (Y1 * S3& + Z2 * C3&) \ 1024
|
||||
|
||||
Z3 = Z4 - Mz + Oz
|
||||
|
||||
|
||||
Zn(R) = Z4
|
||||
IF Z4 > MaxZ THEN MaxZ = Z4
|
||||
IF Z4 < LowZ THEN LowZ = Z4
|
||||
|
||||
'X2&,Y3&,Z3
|
||||
|
||||
'if the point is too close(or behind) the viewer then
|
||||
'don't draw it...
|
||||
IF (Mypos - Z3) < 15 THEN
|
||||
Xn(R) = -1000: Yn(R) = 0: Zn = 0
|
||||
ELSE
|
||||
V = (1330& * (Spos - Z3)) \ (Mypos - Z3)
|
||||
Xn(R) = 160 + X2& + (-X2& * V) \ 1330
|
||||
Yn(R) = 100 + (8 * (Y3& + (-Y3& * V) \ 1330)) \ 10
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
MaxZ = MaxZ - LowZ
|
||||
|
||||
|
||||
Nl = 0
|
||||
FOR A = 0 TO NumberLines - 1
|
||||
F1 = Pointers1(A): S1 = Pointers2(A)
|
||||
IF Xn(F1) <> -1000 AND Xn(S1) <> -1000 THEN
|
||||
Sp(Nl) = A
|
||||
Zp(A) = (Zn(F1) + Zn(S1)) \ 2
|
||||
Nl = Nl + 1
|
||||
END IF
|
||||
NEXT
|
||||
Nl = Nl - 1
|
||||
'sort lines according to their Z coordinates
|
||||
IF Nl > -1 THEN
|
||||
Mid = Nl \ 2
|
||||
DO
|
||||
FOR A = 0 TO Nl - Mid
|
||||
IF Zp(Sp(A)) > Zp(Sp(A + Mid)) THEN
|
||||
SWAP Sp(A), Sp(A + Mid)
|
||||
CL = A - Mid
|
||||
CH = A
|
||||
DO WHILE CL >= 0
|
||||
IF Zp(Sp(CL)) > Zp(Sp(CH)) THEN
|
||||
SWAP Sp(CL), Sp(CH)
|
||||
CH = CL
|
||||
CL = CL - Mid
|
||||
ELSE
|
||||
EXIT DO
|
||||
END IF
|
||||
LOOP
|
||||
END IF
|
||||
NEXT
|
||||
Mid = Mid \ 2
|
||||
LOOP WHILE Mid > 0
|
||||
END IF
|
||||
'wait for vertical retrace
|
||||
WAIT &H3DA, 8
|
||||
'erase old points
|
||||
FOR A = Ln - 1 TO 0 STEP -1
|
||||
LINE (Xs1(A), Ys1(A))-(Xe1(A), Ye1(A)), 0
|
||||
NEXT
|
||||
|
||||
Ln = 0
|
||||
FOR A1 = 0 TO Nl
|
||||
A = Sp(A1)
|
||||
|
||||
Z = Zp(A)
|
||||
F1 = Pointers1(Sp(A1)): S1 = Pointers2(Sp(A1))
|
||||
|
||||
Xn = Xn(F1): Yn = Yn(F1)
|
||||
|
||||
IF Xn <> -1000 THEN
|
||||
X1 = Xn(S1)
|
||||
IF X1 <> -1000 THEN
|
||||
Y1 = Yn(S1)
|
||||
Z1 = (Z - Mz + Oz)
|
||||
|
||||
IF Z1 > -1500 THEN
|
||||
'calculate color
|
||||
T = 63 - ((Z1 * -63&) \ 1500)
|
||||
C = B1(T) + (B(T) * (Z - LowZ)) \ MaxZ
|
||||
'draw line
|
||||
LINE (X1, Y1)-(Xn, Yn), C
|
||||
'store for later
|
||||
Xs1(Ln) = X1: Ys1(Ln) = Y1
|
||||
Xe1(Ln) = Xn: Ye1(Ln) = Yn
|
||||
Ln = Ln + 1
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
NEXT
|
||||
'process keystroke
|
||||
K$ = UCASE$(INKEY$)
|
||||
'Process the keystroke(if any)...
|
||||
IF K$ <> "" THEN
|
||||
SELECT CASE K$
|
||||
CASE "A"
|
||||
AtLoc = NOT AtLoc
|
||||
CASE "+"
|
||||
Mzm = Mzm + 2
|
||||
CASE "-"
|
||||
Mzm = Mzm - 2
|
||||
CASE "5"
|
||||
Mxm = 0: Mym = 0: Mzm = 0
|
||||
CASE "4"
|
||||
Mxm = Mxm - 2
|
||||
CASE "6"
|
||||
Mxm = Mxm + 2
|
||||
CASE "8"
|
||||
Mym = Mym - 2
|
||||
CASE "2"
|
||||
Mym = Mym + 2
|
||||
CASE "F"
|
||||
Speed = Speed + 5
|
||||
CASE "B"
|
||||
Speed = Speed - 5
|
||||
CASE "C"
|
||||
D1 = 0: D2 = 0
|
||||
CASE "S"
|
||||
Speed = 0
|
||||
CASE CHR$(0) + CHR$(72)
|
||||
D1 = D1 + 1
|
||||
CASE CHR$(0) + CHR$(80)
|
||||
D1 = D1 - 1
|
||||
CASE CHR$(0) + CHR$(75)
|
||||
D2 = D2 - 1
|
||||
CASE CHR$(0) + CHR$(77)
|
||||
D2 = D2 + 1
|
||||
CASE "Q", CHR$(27)
|
||||
SCREEN 0, , 0, 0: WIDTH 80
|
||||
CLS
|
||||
PRINT "By Rich Geldreich June 2nd, 1992"
|
||||
PRINT "See ya later!"
|
||||
END
|
||||
CASE "V"
|
||||
D1 = 0: D2 = 0: Deg1 = 0: Deg2 = 0: Speed = 0
|
||||
END SELECT
|
||||
END IF
|
||||
'NumberOfFrames = NumberOfFrames + 1
|
||||
'see if 20 frames have passed; if so then see
|
||||
'how long it took...
|
||||
'IF NumberOfFrames = 20 THEN
|
||||
' TotalTime = PEEK(&H6C) - StartTime
|
||||
' IF TotalTime < 0 THEN TotalTime = TotalTime + 256
|
||||
' FramesPerSecX100 = 36400 \ TotalTime
|
||||
' High = FramesPerSecX100 \ 100
|
||||
' Low = FramesPerSecX100 - High
|
||||
' 'A$ has the string that is printed at the upper left
|
||||
' 'corner of the screen
|
||||
' A$ = MID$(STR$(High), 2) + "."
|
||||
' A$ = A$ + RIGHT$("0" + MID$(STR$(Low), 2), 2) + " "
|
||||
' NumberOfFrames = 0
|
||||
' StartTime = PEEK(&H6C)
|
||||
'END IF
|
||||
LOOP
|
||||
'The following data is the shuttle craft...
|
||||
'stored as Start X,Y,Z & End X,Y,Z
|
||||
DATA -157,22,39,-157,-18,39
|
||||
DATA -157,-18,39,-127,-38,39
|
||||
DATA -127,-38,39,113,-38,39
|
||||
DATA 113,-38,39,193,12,39
|
||||
DATA 33,42,39,33,42,-56
|
||||
DATA 33,42,-56,-127,42,-56
|
||||
DATA -127,42,-56,-157,22,-56
|
||||
DATA -157,22,-56,-157,22,39
|
||||
DATA -157,22,-56,-157,-18,-56
|
||||
DATA -157,-18,-56,-157,-18,39
|
||||
DATA -157,-18,-56,-127,-38,-56
|
||||
DATA -127,-38,-56,-127,-38,39
|
||||
DATA -127,-38,-56,113,-38,-56
|
||||
DATA 113,-38,-56,113,-38,39
|
||||
DATA 113,-38,-56,193,12,-56
|
||||
DATA 193,12,-56,193,12,39
|
||||
DATA -157,22,-56,193,12,-56
|
||||
DATA 193,12,39,-157,22,39
|
||||
DATA -56,-13,41,-56,-3,41
|
||||
DATA -56,-3,41,-26,-3,41
|
||||
DATA -26,-3,41,-26,7,41
|
||||
DATA -51,7,41,-31,-13,41
|
||||
DATA -11,-13,41,-11,-3,41
|
||||
DATA -11,-3,41,-1,7,41
|
||||
DATA 9,7,41,9,-8,41
|
||||
DATA 9,-8,41,24,-8,41
|
||||
DATA 34,16,41,34,-38,41
|
||||
DATA 33,-39,41,33,-39,-53
|
||||
DATA 33,-39,-53,33,15,-53
|
||||
DATA -42,-38,19,-72,-38,19
|
||||
DATA -72,-38,19,-72,-38,-41
|
||||
DATA -72,-38,-41,-42,-38,-41
|
||||
DATA -42,-38,-41,-42,-38,19
|
||||
DATA 33,42,39,34,16,41
|
||||
DATA 33,42,-56,33,15,-53
|
||||
DATA -157,22,39,-127,42,39
|
||||
DATA -127,42,-56,-127,42,39
|
||||
DATA -127,42,39,33,42,39
|
||||
DATA 159,-8,-56,159,-8,40
|
||||
DATA 143,-18,-56,143,-18,39
|
||||
DATA 193,12,39,193,32,30
|
||||
DATA 33,42,39,193,32,30
|
||||
DATA 193,32,30,193,32,-47
|
||||
DATA 33,42,-56,193,32,-47
|
||||
DATA 193,12,-56,193,32,-47
|
||||
|
||||
|
158
tests/qbasic_testcases/misc/acalc.bas
Normal file
158
tests/qbasic_testcases/misc/acalc.bas
Normal file
|
@ -0,0 +1,158 @@
|
|||
DECLARE SUB DrawInner (delta!)
|
||||
DECLARE SUB DrawCursor (angle!, delta!)
|
||||
DECLARE SUB DrawOuter ()
|
||||
SCREEN 12
|
||||
DIM SHARED PI
|
||||
DIM SHARED dialsize
|
||||
DIM SHARED OldAngle, OldX, OldY, OldDelta
|
||||
PI = 3.141592654#
|
||||
dialsize = 200 'This is the coolist part change the size of the clock!
|
||||
DIM SHARED H(10 TO 99, 4)' History
|
||||
DIM SHARED HH(6 TO 90, 4)
|
||||
DIM dD AS SINGLE, dC AS INTEGER: dD = .01: dC = 2
|
||||
DrawInner .02: DrawCursor .02, .02: CLS
|
||||
LOCATE 1, 1: PRINT "Log: ";
|
||||
LOCATE 2, 1: PRINT "D: "
|
||||
LOCATE 3, 1: PRINT "C: ";
|
||||
LOCATE 4, 1: PRINT "Sin: ";
|
||||
LOCATE 5, 1: PRINT "Cos: ";
|
||||
DO
|
||||
LOCATE 1, 7: PRINT (angle / (2 * PI)) - INT(angle / (2 * PI))
|
||||
LOCATE 2, 7: PRINT EXP(((angle / (2 * PI)) - INT(angle / (2 * PI))) * LOG(10))
|
||||
LOCATE 3, 7: PRINT EXP((((angle - delta) / (2 * PI)) - INT((angle - delta) / (2 * PI))) * LOG(10));
|
||||
ang = EXP((((angle - delta) / (2 * PI)) - INT((angle - delta) / (2 * PI)) - 1) * LOG(10))
|
||||
ang2 = 2 * ATN(ang / (1 + SQR(1 - ang * ang))) * 180 / PI
|
||||
LOCATE 4, 7: PRINT ang2;
|
||||
ang3 = 90 - ang2
|
||||
LOCATE 5, 7: PRINT ang3;
|
||||
DrawOuter
|
||||
DrawInner delta
|
||||
DrawCursor angle, delta
|
||||
WHILE INKEY$ <> "": WEND: DO: k$ = UCASE$(INKEY$): LOOP WHILE k$ = ""
|
||||
SELECT CASE k$
|
||||
CASE CHR$(27): SYSTEM
|
||||
CASE "F", "S": GOSUB AdjustSpeed
|
||||
CASE CHR$(0) + CHR$(80): delta = delta + dD
|
||||
CASE CHR$(0) + CHR$(72): delta = delta - dD
|
||||
CASE CHR$(0) + CHR$(77): angle = angle + dD
|
||||
CASE CHR$(0) + CHR$(75): angle = angle - dD
|
||||
END SELECT
|
||||
LOOP
|
||||
AdjustSpeed:
|
||||
SELECT CASE dC
|
||||
CASE 1: IF k$ = "F" THEN dD = .01: dC = 2
|
||||
CASE 2: IF k$ = "F" THEN dD = .1: dC = 3 ELSE dD = .001: dC = 1
|
||||
CASE 3: IF k$ = "F" THEN dD = 1: dC = 4 ELSE dD = .01: dC = 2
|
||||
CASE ELSE: IF k$ = "S" THEN dD = .1: dC = 3
|
||||
END SELECT
|
||||
w$ = "----": MID$(w$, dC, 1) = "o"
|
||||
LOCATE 6, 1: PRINT w$
|
||||
RETURN
|
||||
|
||||
SUB DrawCursor (angle, delta)
|
||||
IF OldAngle = angle THEN
|
||||
LINE (320, 240)-(OldX, OldY), 4
|
||||
EXIT SUB
|
||||
END IF
|
||||
OldAngle = angle
|
||||
cursorX = COS(angle) * dialsize * 1.18
|
||||
cursorY = SIN(angle) * dialsize * 1.18
|
||||
LINE (320, 240)-(OldX, OldY), 0
|
||||
OldX = 320 + cursorX
|
||||
OldY = 240 + cursorY
|
||||
LINE (320, 240)-(OldX, OldY), 4
|
||||
DrawOuter
|
||||
DrawInner delta
|
||||
LINE (320, 240)-(OldX, OldY), 4
|
||||
END SUB
|
||||
|
||||
SUB DrawInner (delta)
|
||||
innersize = dialsize * .8
|
||||
sinesize = dialsize * .6
|
||||
IF delta = OldDelta THEN
|
||||
FOR T = 10 TO 99
|
||||
COLOR 7: LINE (H(T, 1), H(T, 2))-(H(T, 3), H(T, 4))
|
||||
NEXT T
|
||||
FOR T = 6 TO 90
|
||||
COLOR 7: LINE (HH(T, 1), HH(T, 2))-(HH(T, 3), HH(T, 4))
|
||||
NEXT
|
||||
CIRCLE (320, 240), innersize, 7
|
||||
CIRCLE (320, 240), sinesize, 7
|
||||
EXIT SUB
|
||||
END IF
|
||||
OldDelta = delta
|
||||
FOR T = 10 TO 99
|
||||
cool = LOG(T / 10) / LOG(10) * PI * 2 + delta
|
||||
coolx = COS(cool) * innersize
|
||||
cooly = SIN(cool) * innersize
|
||||
IF T MOD 10 = 0 THEN
|
||||
hatchsize = 1.15
|
||||
ELSEIF T MOD 10 = 5 THEN
|
||||
hatchsize = 1.08
|
||||
ELSE
|
||||
hatchsize = 1.05
|
||||
END IF
|
||||
cool2y = SIN(cool) * (innersize / hatchsize)
|
||||
cool2x = COS(cool) * (innersize / hatchsize)
|
||||
COLOR 0: LINE (H(T, 1), H(T, 2))-(H(T, 3), H(T, 4))
|
||||
H(T, 1) = coolx + 320: H(T, 2) = cooly + 240
|
||||
H(T, 3) = cool2x + 320: H(T, 4) = cool2y + 240
|
||||
COLOR 7: LINE (H(T, 1), H(T, 2))-(H(T, 3), H(T, 4))
|
||||
NEXT T
|
||||
FOR T = 6 TO 90
|
||||
sine = LOG(SIN(T * PI / 180)) / LOG(10) * PI * 2 + delta
|
||||
sinex = COS(sine) * sinesize
|
||||
siney = SIN(sine) * sinesize
|
||||
IF T MOD 10 = 0 THEN
|
||||
hatchsize = 1.15
|
||||
ELSEIF T MOD 10 = 5 THEN
|
||||
hatchsize = 1.08
|
||||
ELSE
|
||||
hatchsize = 1.05
|
||||
END IF
|
||||
sine2x = COS(sine) * (sinesize / hatchsize)
|
||||
sine2y = SIN(sine) * (sinesize / hatchsize)
|
||||
COLOR 0: LINE (HH(T, 1), HH(T, 2))-(HH(T, 3), HH(T, 4))
|
||||
HH(T, 1) = sinex + 320: HH(T, 2) = siney + 240
|
||||
HH(T, 3) = sine2x + 320: HH(T, 4) = sine2y + 240
|
||||
COLOR 7: LINE (HH(T, 1), HH(T, 2))-(HH(T, 3), HH(T, 4))
|
||||
NEXT
|
||||
CIRCLE (320, 240), innersize, 7
|
||||
CIRCLE (320, 240), sinesize, 7
|
||||
END SUB
|
||||
|
||||
SUB DrawOuter
|
||||
asdfsize = dialsize * 1.18
|
||||
FOR T = 1 TO 100
|
||||
asdf = (T / 100) * PI * 2
|
||||
asdfx = COS(asdf) * asdfsize
|
||||
asdfy = SIN(asdf) * asdfsize
|
||||
IF T MOD 10 = 0 THEN
|
||||
hatchsize = 1.15
|
||||
ELSEIF T MOD 10 = 5 THEN
|
||||
hatchsize = 1.08
|
||||
ELSE
|
||||
hatchsize = 1.05
|
||||
END IF
|
||||
asdf2y = SIN(asdf) * (asdfsize / hatchsize)
|
||||
asdf2x = COS(asdf) * (asdfsize / hatchsize)
|
||||
LINE (asdfx + 320, asdfy + 240)-(asdf2x + 320, asdf2y + 240)
|
||||
NEXT
|
||||
FOR T = 10 TO 99
|
||||
dial = LOG(T / 10) / LOG(10) * PI * 2
|
||||
dialx = COS(dial) * dialsize
|
||||
dialy = SIN(dial) * dialsize
|
||||
IF T MOD 10 = 0 THEN
|
||||
hatchsize = 1.15
|
||||
ELSEIF T MOD 10 = 5 THEN
|
||||
hatchsize = 1.08
|
||||
ELSE
|
||||
hatchsize = 1.05
|
||||
END IF
|
||||
dial2y = SIN(dial) * (dialsize / hatchsize)
|
||||
dial2x = COS(dial) * (dialsize / hatchsize)
|
||||
LINE (dialx + 320, dialy + 240)-(dial2x + 320, dial2y + 240)
|
||||
NEXT T
|
||||
CIRCLE (320, 240), asdfsize, 7
|
||||
CIRCLE (320, 240), dialsize, 7
|
||||
END SUB
|
820
tests/qbasic_testcases/misc/aklabeth.bas
Normal file
820
tests/qbasic_testcases/misc/aklabeth.bas
Normal file
|
@ -0,0 +1,820 @@
|
|||
|
||||
|
||||
0 ON ERROR GOTO 4
|
||||
|
||||
1 SCREEN 1: VIEW PRINT: CLS : q$ = "": DIM pw(5): DIM c(5): DIM m$(10), ml%(10, 1), mz%(10, 1): DIM w$(5)
|
||||
|
||||
4 REM PR# 0: IN# 0
|
||||
|
||||
5 REM HIMEM: 49151
|
||||
|
||||
'7 CLEAR : GOSUB 60000
|
||||
7
|
||||
IF restart% = 1 THEN END
|
||||
restart% = 1
|
||||
GOSUB 60000
|
||||
|
||||
8 RANDOMIZE ln
|
||||
|
||||
9 le = 0
|
||||
|
||||
10 SCREEN 1: VIEW PRINT: CLS : PRINT TAB(12); : PRINT " WELCOME TO AKALABETH, WORLD OF DOOM!"
|
||||
|
||||
20 DIM dn%(10, 10), te%(20, 20), xx%(10), yy%(10), pe%(10, 3), ld%(10, 5), cd%(10, 3), ft%(10, 5), la%(10, 3)
|
||||
|
||||
30 FOR x = 0 TO 20: te%(x, 0) = 1: te%(0, x) = 1: te%(x, 20) = 1: te%(20, x) = 1: NEXT
|
||||
|
||||
35 LOCATE 23, 1: PRINT " (PLEASE WAIT)";
|
||||
|
||||
40 FOR x = 1 TO 19: FOR y = 1 TO 19: te%(x, y) = INT(RND(1) ^ 5 * 4.5)
|
||||
|
||||
41 IF te%(x, y) = 3 AND RND(1) > .5 THEN te%(x, y) = 0
|
||||
|
||||
42 NEXT: PRINT "."; : NEXT: SLEEP 2
|
||||
|
||||
50 te%(INT(RND(1) * 19 + 1), INT(RND(1) * 19 + 1)) = 5: tx = INT(RND(1) * 19 + 1): ty = INT(RND(1) * 19 + 1): te%(tx, ty) = 3
|
||||
|
||||
51 xx%(0) = 139: yy%(0) = 79
|
||||
|
||||
52 FOR x = 2 TO 20 STEP 2: xx%(x / 2) = INT(ATN(1 / x) / ATN(1) * 140 + .5): yy%(x / 2) = INT(xx%(x / 2) * 4 / 7)
|
||||
|
||||
53 pe%(x / 2, 0) = 139 - xx%(x / 2): pe%(x / 2, 1) = 139 + xx%(x / 2): pe%(x / 2, 2) = 79 - yy%(x / 2): pe%(x / 2, 3) = 79 + yy%(x / 2): NEXT
|
||||
|
||||
54 pe%(0, 0) = 0: pe%(0, 1) = 279: pe%(0, 2) = 0: pe%(0, 3) = 159
|
||||
|
||||
55 FOR x = 1 TO 10: cd%(x, 0) = 139 - xx%(x) / 3: cd%(x, 1) = 139 + xx%(x) / 3: cd%(x, 2) = 79 - yy%(x) * .7: cd%(x, 3) = 79 + yy%(x): NEXT: PRINT ".";
|
||||
|
||||
56 FOR x = 0 TO 9: ld%(x, 0) = (pe%(x, 0) * 2 + pe%(x + 1, 0)) / 3: ld%(x, 1) = (pe%(x, 0) + 2 * pe%(x + 1, 0)) / 3: w = ld%(x, 0) - pe%(x, 0)
|
||||
|
||||
57 ld%(x, 2) = pe%(x, 2) + w * 4 / 7: ld%(x, 3) = pe%(x, 2) + 2 * w * 4 / 7: ld%(x, 4) = (pe%(x, 3) * 2 + pe%(x + 1, 3)) / 3: ld%(x, 5) = (pe%(x, 3) + 2 * pe%(x + 1, 3)) / 3
|
||||
|
||||
58 ld%(x, 2) = ld%(x, 4) - (ld%(x, 4) - ld%(x, 2)) * .8: ld%(x, 3) = ld%(x, 5) - (ld%(x, 5) - ld%(x, 3)) * .8: IF ld%(x, 3) = ld%(x, 4) THEN ld%(x, 3) = ld%(x, 3) - 1
|
||||
|
||||
59 NEXT
|
||||
|
||||
60 FOR x = 0 TO 9: ft%(x, 0) = 139 - xx%(x) / 3: ft%(x, 1) = 139 + xx%(x) / 3: ft%(x, 2) = 139 - xx%(x + 1) / 3: ft%(x, 3) = 139 + xx%(x + 1) / 3
|
||||
|
||||
61 ft%(x, 4) = 79 + (yy%(x) * 2 + yy%(x + 1)) / 3: ft%(x, 5) = 79 + (yy%(x) + 2 * yy%(x + 1)) / 3: NEXT
|
||||
|
||||
62 FOR x = 0 TO 9: la%(x, 0) = (ft%(x, 0) * 2 + ft%(x, 1)) / 3: la%(x, 1) = (ft%(x, 0) + 2 * ft%(x, 1)) / 3: la%(x, 3) = ft%(x, 4): la%(x, 2) = 159 - la%(x, 3): NEXT
|
||||
|
||||
68 LOCATE 1, 1
|
||||
|
||||
69 LOCATE 1, 1
|
||||
|
||||
70 GOSUB 100: GOTO 1000
|
||||
|
||||
90 FOR x = 0 TO 9: FOR y = 0 TO 5: PRINT ld%(x, y); " "; : NEXT: PRINT : NEXT: DO: q$ = INKEY$: LOOP WHILE q$ = ""
|
||||
|
||||
100 SCREEN 1: VIEW PRINT 1 TO 21: CLS 2: VIEW PRINT 22 TO 25: WINDOW SCREEN (0, 0)-(279, 199): FOR y = -1 TO 1: FOR x = -1 TO 1
|
||||
|
||||
105 LINE (138, 75)-(142, 75): LINE (140, 73)-(140, 77)
|
||||
|
||||
110 zz = te%(tx + x, ty + y): x1 = 65 + (x + 1) * 50: y1 = (y + 1) * 50
|
||||
|
||||
120 IF zz = 2 THEN LINE (x1 + 20, y1 + 20)-(x1 + 30, y1 + 20): LINE -(x1 + 30, y1 + 30): LINE -(x1 + 20, y1 + 30): LINE -(x1 + 20, y1 + 20)
|
||||
|
||||
130 IF zz = 3 THEN
|
||||
LINE (x1 + 10, y1 + 10)-(x1 + 20, y1 + 10): LINE -(x1 + 20, y1 + 40): LINE -(x1 + 10, y1 + 40)
|
||||
LINE -(x1 + 10, y1 + 30): LINE -(x1 + 40, y1 + 30): LINE -(x1 + 40, y1 + 40): LINE -(x1 + 30, y1 + 40): LINE -(x1 + 30, y1 + 10): LINE -(x1 + 40, y1 + 10)
|
||||
LINE -(x1 + 40, y1 + 20): LINE -(x1 + 10, y1 + 20): LINE -(x1 + 10, y1 + 10)
|
||||
END IF
|
||||
|
||||
140 IF zz = 4 THEN LINE (x1 + 20, y1 + 20)-(x1 + 30, y1 + 30): LINE (x1 + 20, y1 + 30)-(x1 + 30, y1 + 20)
|
||||
|
||||
150 IF zz = 5 THEN
|
||||
LINE (x1, y1)-(x1 + 50, y1): LINE -(x1 + 50, y1 + 50): LINE -(x1, y1 + 50): LINE -(x1, y1)
|
||||
LINE (x1 + 10, y1 + 10)-(x1 + 10, y1 + 40): LINE -(x1 + 40, y1 + 40)
|
||||
LINE -(x1 + 40, y1 + 10): LINE -(x1 + 10, y1 + 10): LINE -(x1 + 40, y1 + 40): LINE (x1 + 10, y1 + 40)-(x1 + 40, y1 + 10)
|
||||
END IF
|
||||
|
||||
160 IF zz = 1 THEN
|
||||
LINE (x1 + 10, y1 + 50)-(x1 + 10, y1 + 40): LINE -(x1 + 20, y1 + 30): LINE -(x1 + 40, y1 + 30)
|
||||
LINE -(x1 + 40, y1 + 50): LINE (x1, y1 + 10)-(x1 + 10, y1 + 10): LINE (x1 + 50, y1 + 10)-(x1 + 40, y1 + 10)
|
||||
LINE (x1, y1 + 40)-(x1 + 10, y1 + 40): LINE (x1 + 40, y1 + 40)-(x1 + 50, y1 + 40)
|
||||
END IF
|
||||
|
||||
170 IF zz = 1 THEN LINE (x1 + 10, y1)-(x1 + 10, y1 + 20): LINE -(x1 + 20, y1 + 20): LINE -(x1 + 20, y1 + 30): LINE -(x1 + 30, y1 + 30): LINE -(x1 + 30, y1 + 10): LINE -(x1 + 40, y1 + 10): LINE -(x1 + 40, y1)
|
||||
|
||||
190 NEXT: NEXT: WINDOW: RETURN
|
||||
|
||||
200 SCREEN 1: VIEW PRINT 1 TO 21: CLS 2: VIEW PRINT 22 TO 25: WINDOW SCREEN (0, 0)-(279, 199): di = 0: tb = 2
|
||||
|
||||
202 ce = dn%(px + dx * di, py + dy * di): le = dn%(px + dx * di + dy, py + dy * di - dx): ri = dn%(px + dx * di - dy, py + dy * di + dx)
|
||||
|
||||
204 l1 = pe%(di, 0): r1 = pe%(di, 1): t1 = pe%(di, 2): b1 = pe%(di, 3): l2 = pe%(di + 1, 0): r2 = pe%(di + 1, 1): t2 = pe%(di + 1, 2): b2 = pe%(di + 1, 3)
|
||||
|
||||
205 ce = INT(ce): le = INT(le): ri = INT(ri)
|
||||
|
||||
206 mc = INT(ce / 10): ce = ce - mc * 10: le = INT((le / 10 - INT(le / 10)) * 10 + .1): ri = INT((ri / 10 - INT(ri / 10)) * 10 + .1)
|
||||
|
||||
208 IF di = 0 THEN 216
|
||||
|
||||
210 IF ce = 1 OR ce = 3 OR ce = 4 THEN LINE (l1, t1)-(r1, t1): LINE -(r1, b1): LINE -(l1, b1): LINE -(l1, t1)
|
||||
|
||||
212 IF ce = 1 OR ce = 3 THEN en = 1: GOTO 260
|
||||
|
||||
214 IF ce = 4 THEN LINE (cd%(di, 0), cd%(di, 3))-(cd%(di, 0), cd%(di, 2)): LINE -(cd%(di, 1), cd%(di, 2)): LINE -(cd%(di, 1), cd%(di, 3)): en = 1: GOTO 260
|
||||
|
||||
216 IF le = 1 OR le = 3 OR le = 4 THEN LINE (l1, t1)-(l2, t2): LINE (l1, b1)-(l2, b2)
|
||||
|
||||
218 IF ri = 1 OR ri = 3 OR ri = 4 THEN LINE (r1, t1)-(r2, t2): LINE (r1, b1)-(r2, b2)
|
||||
|
||||
220 IF le = 4 AND di > 0 THEN LINE (ld%(di, 0), ld%(di, 4))-(ld%(di, 0), ld%(di, 2)): LINE -(ld%(di, 1), ld%(di, 3)): LINE -(ld%(di, 1), ld%(di, 5))
|
||||
|
||||
222 IF le = 4 AND di = 0 THEN LINE (0, ld%(di, 2) - 3)-(ld%(di, 1), ld%(di, 3)): LINE -(ld%(di, 1), ld%(di, 5))
|
||||
|
||||
224 IF ri = 4 AND di > 0 THEN LINE (279 - ld%(di, 0), ld%(di, 4))-(279 - ld%(di, 0), ld%(di, 2)): LINE -(279 - ld%(di, 1), ld%(di, 3)): LINE -(279 - ld%(di, 1), ld%(di, 5))
|
||||
|
||||
226 IF ri = 4 AND di = 0 THEN LINE (279, ld%(di, 2) - 3)-(279 - ld%(di, 1), ld%(di, 3)): LINE -(279 - ld%(di, 1), ld%(di, 5))
|
||||
|
||||
228 IF le = 3 OR le = 1 OR le = 4 THEN 234
|
||||
|
||||
230 IF di <> 0 THEN LINE (l1, t1)-(l1, b1)
|
||||
|
||||
232 LINE (l1, t2)-(l2, t2): LINE -(l2, b2): LINE -(l1, b2)
|
||||
|
||||
234 IF ri = 3 OR ri = 1 OR ri = 4 THEN 240
|
||||
|
||||
236 IF di <> 0 THEN LINE (r1, t1)-(r1, b1)
|
||||
|
||||
238 LINE (r1, t2)-(r2, t2): LINE -(r2, b2): LINE -(r1, b2)
|
||||
|
||||
240 IF ce = 7 OR ce = 9 THEN LINE (ft%(di, 0), ft%(di, 4))-(ft%(di, 2), ft%(di, 5)): LINE -(ft%(di, 3), ft%(di, 5)): LINE -(ft%(di, 1), ft%(di, 4)): LINE -(ft%(di, 0), ft%(di, 4))
|
||||
|
||||
242 IF ce = 8 THEN LINE (ft%(di, 0), 158 - ft%(di, 4))-(ft%(di, 2), 158 - ft%(di, 5)): LINE -(ft%(di, 3), 158 - ft%(di, 5)): LINE -(ft%(di, 1), 158 - ft%(di, 4)): LINE -(ft%(di, 0), 158 - ft%(di, 4))
|
||||
|
||||
244 IF ce = 7 OR ce = 8 THEN ba = la%(di, 3): TP = la%(di, 2): LX = la%(di, 0): RX = la%(di, 1): LINE (LX, ba)-(LX, TP): LINE (RX, TP)-(RX, ba)
|
||||
|
||||
246 IF ce = 7 OR ce = 8 THEN y1 = (ba * 4 + TP) / 5: Y2 = (ba * 3 + TP * 2) / 5: Y3 = (ba * 2 + TP * 3) / 5: Y4 = (ba + TP * 4) / 5: LINE (LX, y1)-(RX, y1): LINE (LX, Y2)-(RX, Y2): LINE (LX, Y3)-(RX, Y3): LINE (LX, Y4)-(RX, Y4)
|
||||
|
||||
248 IF di > 0 AND ce = 5 THEN LINE (139 - 10 / di, pe%(di, 3))-(139 - 10 / di, pe%(di, 3) - 10 / di): LINE -(139 + 10 / di, pe%(di, 3) - 10 / di): LINE -(139 + 10 / di, pe%(di, 3)): LINE -(139 - 10 / di, pe%(di, 3))
|
||||
|
||||
249 IF ce = 5 AND di > 0 THEN VIEW PRINT: LOCATE 1, tb: PRINT "CHEST! "; : tb = tb + 8
|
||||
|
||||
250 IF di > 0 AND ce = 5 THEN LINE (139 - 10 / di, pe%(di, 3) - 10 / di)-(139 - 5 / di, pe%(di, 3) - 15 / di): LINE -(139 + 15 / di, pe%(di, 3) - 15 / di): LINE -(139 + 15 / di, pe%(di, 3) - 5 / di): LINE -(139 + 10 / di, pe%(di, 3))
|
||||
|
||||
252 IF di > 0 AND ce = 5 THEN LINE (139 + 10 / di, pe%(di, 3) - 10 / di)-(139 + 15 / di, pe%(di, 3) - 15 / di)
|
||||
|
||||
260 IF mc < 1 THEN 490
|
||||
|
||||
265 b = 79 + yy%(di): c = 139
|
||||
|
||||
266 IF mc = 8 THEN VIEW PRINT: LOCATE 1, tb: PRINT "CHEST! "; : tb = tb + 8: PRINT : GOTO 269: REM call
|
||||
|
||||
267 VIEW PRINT: LOCATE 1, tb: PRINT m$(mc); : tb = tb + LEN(m$(mc)) + 2: PRINT : REM call
|
||||
|
||||
269 IF di = 0 THEN 490
|
||||
|
||||
270 ON mc GOTO 300, 310, 320, 330, 340, 350, 360, 370, 380, 390
|
||||
|
||||
280 GOTO 490
|
||||
|
||||
300 LINE (c - 23 / di, b)-(c - 15 / di, b): LINE -(c - 15 / di, b - 15 / di): LINE -(c - 8 / di, b - 30 / di): LINE -(c + 8 / di, b - 30 / di): LINE -(c + 15 / di, b - 15 / di): LINE -(c + 15 / di, b): LINE -(c + 23 / di, b)
|
||||
|
||||
301 LINE (c, b - 26 / di)-(c, b - 65 / di): LINE (c - 2 / di + .499, b - 38 / di)-(c + 2 / di + .499, b - 38 / di)
|
||||
LINE (c - 3 / di + .499, b - 45 / di)-(c + 3 / di + .499, b - 45 / di): LINE (c - 5 / di + .499, b - 53 / di)-(c + 5 / di + .499, b - 53 / di)
|
||||
|
||||
302 LINE (c - 23 / di, b - 56 / di)-(c - 30 / di, b - 53 / di): LINE -(c - 23 / di, b - 45 / di): LINE -(c - 23 / di, b - 53 / di): LINE -(c - 8 / di, b - 38 / di)
|
||||
|
||||
303 LINE (c - 15 / di, b - 45 / di)-(c - 8 / di, b - 60 / di): LINE -(c + 8 / di, b - 60 / di): LINE -(c + 15 / di, b - 45 / di)
|
||||
LINE -(c + 15 / di, b - 42 / di): LINE -(c + 15 / di, b - 57 / di): LINE (c + 12 / di, b - 45 / di)-(c + 20 / di, b - 45 / di)
|
||||
|
||||
304 LINE (c, b - 75 / di)-(c - 5 / di + .499, b - 80 / di): LINE -(c - 8 / di, b - 75 / di): LINE -(c - 5 / di + .499, b - 65 / di)
|
||||
LINE -(c + 5 / di + .499, b - 65 / di): LINE -(c + 5 / di + .499, b - 68 / di): LINE -(c - 5 / di + .499, b - 68 / di): LINE -(c - 5 / di + .499, b - 65 / di)
|
||||
|
||||
305 LINE -(c + 5 / di + .499, b - 65 / di): LINE -(c + 8 / di, b - 75 / di): LINE -(c + 5 / di + .499, b - 80 / di): LINE -(c - 5 / di + .499, b - 80 / di): PSET (c - 5 / di + .499, b - 72 / di): PSET (c + 5 / di + .499, b - 72 / di)
|
||||
|
||||
309 GOTO 490
|
||||
|
||||
310 LINE (c, b - 56 / di)-(c, b - 8 / di): LINE -(c + 10 / di, b): LINE -(c + 30 / di, b): LINE -(c + 30 / di, b - 45 / di): LINE -(c + 10 / di, b - 64 / di): LINE -(c, b - 56 / di)
|
||||
|
||||
311 LINE -(c - 10 / di, b - 64 / di): LINE -(c - 30 / di, b - 45 / di): LINE -(c - 30 / di, b): LINE -(c - 10 / di, b): LINE -(c, b - 8 / di)
|
||||
|
||||
312 LINE (c - 10 / di, b - 64 / di)-(c - 10 / di, b - 75 / di): LINE -(c, b - 83 / di)
|
||||
LINE -(c + 10 / di, b - 75 / di): LINE -(c, b - 79 / di): LINE -(c - 10 / di, b - 75 / di): LINE -(c, b - 60 / di)
|
||||
LINE -(c + 10 / di, b - 75 / di): LINE -(c + 10 / di, b - 64 / di)
|
||||
|
||||
319 GOTO 490
|
||||
|
||||
320 LINE (c + 5 / di, b - 30 / di)-(c, b - 25 / di): LINE -(c - 5 / di, b - 30 / di): LINE -(c - 15 / di, b - 5 / di): LINE -(c - 10 / di, b): LINE -(c + 10 / di, b): LINE -(c + 15 / di, b - 5 / di)
|
||||
|
||||
321 LINE -(c + 20 / di, b - 5 / di): LINE -(c + 10 / di, b): LINE -(c + 15 / di, b - 5 / di)
|
||||
LINE -(c + 5 / di, b - 30 / di): LINE -(c + 10 / di, b - 40 / di): LINE -(c + 3 / di + .499, b - 35 / di)
|
||||
LINE -(c - 3 / di + .499, b - 35 / di): LINE -(c - 10 / di, b - 40 / di): LINE -(c - 5 / di, b - 30 / di)
|
||||
|
||||
322 LINE (c - 5 / di, b - 33 / di)-(c - 3 / di + .499, b - 30 / di): LINE (c + 5 / di, b - 33 / di)-(c + 3 / di + .499, b - 30 / di): LINE (c - 5 / di, b - 20 / di)-(c - 5 / di, b - 15 / di)
|
||||
|
||||
323 LINE (c + 5 / di, b - 20 / di)-(c + 5 / di, b - 15 / di): LINE (c - 7 / di, b - 20 / di)-(c - 7 / di, b - 15 / di): LINE (c + 7 / di, b - 20 / di)-(c + 7 / di, b - 15 / di)
|
||||
|
||||
329 GOTO 490
|
||||
|
||||
330 LINE (c, b)-(c - 15 / di, b): LINE -(c - 8 / di, b - 8 / di): LINE -(c - 8 / di, b - 15 / di): LINE -(c - 15 / di, b - 23 / di): LINE -(c - 15 / di, b - 15 / di): LINE -(c - 23 / di, b - 23 / di)
|
||||
|
||||
331 LINE -(c - 23 / di, b - 45 / di): LINE -(c - 15 / di, b - 53 / di): LINE -(c - 8 / di, b - 53 / di): LINE -(c - 15 / di, b - 68 / di): LINE -(c - 8 / di, b - 75 / di): LINE -(c, b - 75 / di)
|
||||
|
||||
332 LINE (c, b)-(c + 15 / di, b): LINE -(c + 8 / di, b - 8 / di): LINE -(c + 8 / di, b - 15 / di): LINE -(c + 15 / di, b - 23 / di): LINE -(c + 15 / di, b - 15 / di): LINE -(c + 23 / di, b - 23 / di)
|
||||
|
||||
333 LINE -(c + 23 / di, b - 45 / di): LINE -(c + 15 / di, b - 53 / di): LINE -(c + 8 / di, b - 53 / di): LINE -(c + 15 / di, b - 68 / di): LINE -(c + 8 / di, b - 75 / di): LINE -(c, b - 75 / di)
|
||||
|
||||
334 LINE (c - 15 / di, b - 68 / di)-(c + 15 / di, b - 68 / di): LINE (c - 8 / di, b - 53 / di)-(c + 8 / di, b - 53 / di): LINE (c - 23 / di, b - 15 / di)-(c + 8 / di, b - 45 / di)
|
||||
|
||||
335 LINE (c - 8 / di, b - 68 / di)-(c, b - 60 / di): LINE -(c + 8 / di, b - 68 / di): LINE -(c + 8 / di, b - 60 / di): LINE -(c - 8 / di, b - 60 / di): LINE -(c - 8 / di, b - 68 / di)
|
||||
|
||||
336 LINE (c, b - 38 / di)-(c - 8 / di, b - 38 / di): LINE -(c + 8 / di, b - 53 / di): LINE -(c + 8 / di, b - 45 / di): LINE -(c + 15 / di, b - 45 / di): LINE -(c, b - 30 / di): LINE -(c, b - 38 / di)
|
||||
|
||||
339 GOTO 490
|
||||
|
||||
340 LINE (c - 10 / di, b - 15 / di)-(c - 10 / di, b - 30 / di): LINE -(c - 15 / di, b - 20 / di): LINE -(c - 15 / di, b - 15 / di): LINE -(c - 15 / di, b): LINE -(c + 15 / di, b): LINE -(c + 15 / di, b - 15 / di): LINE -(c - 15 / di, b - 15 / di)
|
||||
|
||||
341 LINE (c - 15 / di, b - 10 / di)-(c + 15 / di, b - 10 / di): LINE (c - 15 / di, b - 5 / di)-(c + 15 / di, b - 5 / di)
|
||||
|
||||
342 LINE (c, b - 15 / di)-(c - 5 / di, b - 20 / di): LINE -(c - 5 / di, b - 35 / di): LINE -(c + 5 / di, b - 35 / di): LINE -(c + 5 / di, b - 20 / di): LINE -(c + 10 / di, b - 15 / di)
|
||||
|
||||
343 LINE (c - 5 / di, b - 20 / di)-(c + 5 / di, b - 20 / di): LINE (c - 5 / di, b - 25 / di)-(c + 5 / di, b - 25 / di): LINE (c - 5 / di, b - 30 / di)-(c + 5 / di, b - 30 / di)
|
||||
|
||||
344 LINE (c - 10 / di, b - 35 / di)-(c - 10 / di, b - 40 / di): LINE -(c - 5 / di, b - 45 / di): LINE -(c + 5 / di, b - 45 / di): LINE -(c + 10 / di, b - 40 / di): LINE -(c + 10 / di, b - 35 / di)
|
||||
|
||||
345 LINE (c - 10 / di, b - 40 / di)-(c, b - 45 / di): LINE -(c + 10 / di, b - 40 / di)
|
||||
|
||||
346 LINE (c - 5 / di, b - 40 / di)-(c + 5 / di, b - 40 / di): LINE -(c + 15 / di, b - 30 / di): LINE -(c, b - 40 / di): LINE -(c - 15 / di, b - 30 / di): LINE -(c - 5 / di + .499, b - 40 / di)
|
||||
|
||||
349 GOTO 490
|
||||
|
||||
350 LINE (c - 20 / di, 79 - yy%(di))-(c - 20 / di, b - 88 / di): LINE -(c - 10 / di, b - 83 / di): LINE -(c + 10 / di, b - 83 / di): LINE -(c + 20 / di, b - 88 / di): LINE -(c + 20 / di, 79 - yy%(di)): LINE -(c - 20 / di, 79 - yy%(di))
|
||||
|
||||
351 LINE (c - 20 / di, b - 88 / di)-(c - 30 / di, b - 83 / di): LINE -(c - 30 / di, b - 78 / di): LINE (c + 20 / di, b - 88 / di)-(c + 30 / di, b - 83 / di): LINE -(c + 40 / di, b - 83 / di)
|
||||
|
||||
352 LINE (c - 15 / di, b - 86 / di)-(c - 20 / di, b - 83 / di): LINE -(c - 20 / di, b - 78 / di): LINE -(c - 30 / di, b - 73 / di): LINE -(c - 30 / di, b - 68 / di): LINE -(c - 20 / di, b - 63 / di)
|
||||
|
||||
353 LINE (c - 10 / di, b - 83 / di)-(c - 10 / di, b - 58 / di): LINE -(c, b - 50 / di): LINE (c + 10 / di, b - 83 / di)-(c + 10 / di, b - 78 / di): LINE -(c + 20 / di, b - 73 / di): LINE -(c + 20 / di, b - 40 / di)
|
||||
|
||||
354 LINE (c + 15 / di, b - 85 / di)-(c + 20 / di, b - 78 / di): LINE -(c + 30 / di, b - 76 / di): LINE -(c + 30 / di, b - 60 / di)
|
||||
|
||||
355 LINE (c, b - 83 / di)-(c, b - 73 / di): LINE -(c + 10 / di, b - 68 / di): LINE -(c + 10 / di, b - 63 / di): LINE -(c, b - 58 / di)
|
||||
|
||||
359 GOTO 490
|
||||
|
||||
360 LINE (c + 5 / di + .499, b - 10 / di)-(c - 5 / di + .499, b - 10 / di): LINE -(c, b - 15 / di): LINE -(c + 10 / di, b - 20 / di): LINE -(c + 5 / di + .499, b - 15 / di): LINE -(c + 5 / di + .499, b - 10 / di)
|
||||
|
||||
361 LINE -(c + 7 / di + .499, b - 6 / di): LINE -(c + 5 / di + .499, b - 3 / di): LINE -(c - 5 / di + .499, b - 3 / di): LINE -(c - 7 / di + .499, b - 6 / di): LINE -(c - 5 / di + .499, b - 10 / di)
|
||||
|
||||
362 LINE (c + 2 / di + .499, b - 3 / di)-(c + 5 / di + .499, b): LINE -(c + 8 / di, b)
|
||||
LINE (c - 2 / di + .499, b - 3 / di)-(c - 5 / di + .499, b): LINE -(c - 8 / di, b): PSET (c + 3 / di + .499, b - 8 / di)
|
||||
PSET (c - 3 / di + .499, b - 8 / di): LINE (c + 3 / di + .499, b - 5 / di)-(c - 3 / di + .499, b - 5 / di)
|
||||
|
||||
363 GOTO 490
|
||||
|
||||
370 LINE (139 - 10 / di, pe%(di, 3))-(139 - 10 / di, pe%(di, 3) - 10 / di): LINE -(139 + 10 / di, pe%(di, 3) - 10 / di): LINE -(139 + 10 / di, pe%(di, 3)): LINE -(139 - 10 / di, pe%(di, 3))
|
||||
|
||||
371 LINE (139 - 10 / di, pe%(di, 3) - 10 / di)-(139 - 5 / di, pe%(di, 3) - 15 / di): LINE -(139 + 15 / di, pe%(di, 3) - 15 / di): LINE -(139 + 15 / di, pe%(di, 3) - 5 / di): LINE -(139 + 10 / di, pe%(di, 3))
|
||||
|
||||
372 LINE (139 + 10 / di, pe%(di, 3) - 10 / di)-(139 + 15 / di, pe%(di, 3) - 15 / di)
|
||||
|
||||
373 GOTO 490
|
||||
|
||||
380 LINE (c - 14 / di, b - 46 / di)-(c - 12 / di, b - 37 / di): LINE -(c - 20 / di, b - 32 / di): LINE -(c - 30 / di, b - 32 / di)
|
||||
LINE -(c - 22 / di, b - 24 / di): LINE -(c - 40 / di, b - 17 / di): LINE -(c - 40 / di, b - 7 / di): LINE -(c - 38 / di, b - 5 / di)
|
||||
LINE -(c - 40 / di, b - 3 / di): LINE -(c - 40 / di, b)
|
||||
|
||||
381 LINE -(c - 36 / di, b): LINE -(c - 34 / di, b - 2 / di): LINE -(c - 32 / di, b): LINE -(c - 28 / di, b)
|
||||
LINE -(c - 28 / di, b - 3 / di): LINE -(c - 30 / di, b - 5 / di): LINE -(c - 28 / di, b - 7 / di)
|
||||
LINE -(c - 28 / di, b - 15 / di): LINE -(c, b - 27 / di)
|
||||
|
||||
382 LINE (c + 14 / di, b - 46 / di)-(c + 12 / di, b - 37 / di): LINE -(c + 20 / di, b - 32 / di)
|
||||
LINE -(c + 30 / di, b - 32 / di): LINE -(c + 22 / di, b - 24 / di): LINE -(c + 40 / di, b - 17 / di)
|
||||
LINE -(c + 40 / di, b - 7 / di): LINE -(c + 38 / di, b - 5 / di): LINE -(c + 40 / di, b - 3 / di): LINE -(c + 40 / di, b)
|
||||
|
||||
383 LINE -(c + 36 / di, b): LINE -(c + 34 / di, b - 2 / di): LINE -(c + 32 / di, b): LINE -(c + 28 / di, b)
|
||||
LINE -(c + 28 / di, b - 3 / di): LINE -(c + 30 / di, b - 5 / di): LINE -(c + 28 / di, b - 7 / di)
|
||||
LINE -(c + 28 / di, b - 15 / di): LINE -(c, b - 27 / di)
|
||||
|
||||
384 LINE (c + 6 / di, b - 48 / di)-(c + 38 / di, b - 41 / di): LINE -(c + 40 / di, b - 42 / di): LINE -(c + 18 / di, b - 56 / di)
|
||||
LINE -(c + 12 / di, b - 56 / di): LINE -(c + 10 / di, b - 57 / di): LINE -(c + 8 / di, b - 56 / di): LINE -(c - 8 / di, b - 56 / di)
|
||||
LINE -(c - 10 / di, b - 58 / di): LINE -(c + 14 / di, b - 58 / di): LINE -(c + 16 / di, b - 59 / di)
|
||||
|
||||
385 LINE -(c + 8 / di, b - 63 / di): LINE -(c + 6 / di, b - 63 / di): LINE -(c + 2 / di + .499, b - 70 / di)
|
||||
LINE -(c + 2 / di + .499, b - 63 / di): LINE -(c - 2 / di + .499, b - 63 / di): LINE -(c - 2 / di + .499, b - 70 / di)
|
||||
LINE -(c - 6 / di, b - 63 / di): LINE -(c - 8 / di, b - 63 / di): LINE -(c - 16 / di, b - 59 / di): LINE -(c - 14 / di, b - 58 / di)
|
||||
|
||||
386 LINE -(c - 10 / di, b - 57 / di): LINE -(c - 12 / di, b - 56 / di): LINE -(c - 18 / di, b - 56 / di): LINE -(c - 36 / di, b - 47 / di)
|
||||
LINE -(c - 36 / di, b - 39 / di): LINE -(c - 28 / di, b - 41 / di): LINE -(c - 28 / di, b - 46 / di): LINE -(c - 20 / di, b - 50 / di)
|
||||
LINE -(c - 18 / di, b - 50 / di): LINE -(c - 14 / di, b - 46 / di)
|
||||
|
||||
387 GOTO 3087
|
||||
|
||||
390 LINE (c + 6 / di, b - 60 / di)-(c + 30 / di, b - 90 / di): LINE -(c + 60 / di, b - 30 / di): LINE -(c + 60 / di, b - 10 / di): LINE -(c + 30 / di, b - 40 / di): LINE -(c + 15 / di, b - 40 / di)
|
||||
|
||||
391 LINE (c - 6 / di, b - 60 / di)-(c - 30 / di, b - 90 / di): LINE -(c - 60 / di, b - 30 / di): LINE -(c - 60 / di, b - 10 / di): LINE -(c - 30 / di, b - 40 / di): LINE -(c - 15 / di, b - 40 / di)
|
||||
|
||||
392 LINE (c, b - 25 / di)-(c + 6 / di, b - 25 / di): LINE -(c + 10 / di, b - 20 / di): LINE -(c + 12 / di, b - 10 / di): LINE -(c + 10 / di, b - 6 / di)
|
||||
LINE -(c + 10 / di, b): LINE -(c + 14 / di, b): LINE -(c + 15 / di, b - 5 / di): LINE -(c + 16 / di, b): LINE -(c + 20 / di, b)
|
||||
|
||||
393 LINE -(c + 20 / di, b - 6 / di): LINE -(c + 18 / di, b - 10 / di): LINE -(c + 18 / di, b - 20 / di): LINE -(c + 15 / di, b - 30 / di): LINE -(c + 15 / di, b - 45 / di): LINE -(c + 40 / di, b - 60 / di): LINE -(c + 40 / di, b - 70 / di)
|
||||
|
||||
394 LINE -(c + 10 / di, b - 55 / di): LINE -(c + 6 / di, b - 60 / di): LINE -(c + 10 / di, b - 74 / di): LINE -(c + 6 / di, b - 80 / di)
|
||||
LINE -(c + 4 / di + .499, b - 80 / di): LINE -(c + 3 / di + .499, b - 82 / di): LINE -(c + 2 / di + .499, b - 80 / di): LINE -(c, b - 80 / di)
|
||||
|
||||
395 LINE (c, b - 25 / di)-(c - 6 / di, b - 25 / di): LINE -(c - 10 / di, b - 20 / di): LINE -(c - 12 / di, b - 10 / di): LINE -(c - 10 / di, b - 6 / di)
|
||||
LINE -(c - 10 / di, b): LINE -(c - 14 / di, b): LINE -(c - 15 / di, b - 5 / di): LINE -(c - 16 / di, b): LINE -(c - 20 / di, b)
|
||||
|
||||
396 LINE -(c - 20 / di, b - 6 / di): LINE -(c - 18 / di, b - 10 / di): LINE -(c - 18 / di, b - 20 / di): LINE -(c - 15 / di, b - 30 / di): LINE -(c - 15 / di, b - 45 / di): LINE -(c - 40 / di, b - 60 / di): LINE -(c - 40 / di, b - 70 / di)
|
||||
|
||||
397 LINE -(c - 10 / di, b - 55 / di): LINE -(c - 6 / di, b - 60 / di): LINE -(c - 10 / di, b - 74 / di): LINE -(c - 6 / di, b - 80 / di)
|
||||
LINE -(c - 4 / di + .499, b - 80 / di): LINE -(c - 3 / di + .499, b - 82 / di): LINE -(c - 2 / di + .499, b - 80 / di): LINE -(c, b - 80 / di)
|
||||
|
||||
398 LINE (c - 6 / di, b - 25 / di)-(c, b - 6 / di): LINE -(c + 10 / di, b): LINE -(c + 4 / di + .499, b - 8 / di): LINE -(c + 6 / di, b - 25 / di)
|
||||
LINE (c - 40 / di, b - 64 / di)-(c - 40 / di, b - 90 / di): LINE -(c - 52 / di, b - 80 / di): LINE -(c - 52 / di, b - 40 / di)
|
||||
|
||||
399 LINE (c + 40 / di, b - 86 / di)-(c + 38 / di, b - 92 / di): LINE -(c + 42 / di, b - 92 / di): LINE -(c + 40 / di, b - 86 / di): LINE -(c + 40 / di, b - 50 / di)
|
||||
|
||||
400 LINE (c + 4 / di + .499, b - 70 / di)-(c + 6 / di, b - 74 / di): LINE (c - 4 / di + .499, b - 70 / di)-(c - 6 / di, b - 74 / di): LINE (c, b - 64 / di)-(c, b - 60 / di): GOTO 490
|
||||
|
||||
490 IF en = 1 THEN en = 0: WINDOW: RETURN
|
||||
|
||||
491 di = di + 1: GOTO 202
|
||||
|
||||
500 RANDOMIZE -ABS(ln) - tx * 10 - ty * 1000 + in * 31.4
|
||||
|
||||
501 FOR x = 1 TO 9: FOR y = 1 TO 9: dn%(x, y) = 0: NEXT: NEXT
|
||||
|
||||
510 FOR x = 0 TO 10: dn%(x, 0) = 1: dn%(x, 10) = 1: dn%(0, x) = 1: dn%(10, x) = 1: NEXT
|
||||
|
||||
520 FOR x = 2 TO 8 STEP 2: FOR y = 1 TO 9: dn%(x, y) = 1: NEXT: NEXT
|
||||
|
||||
530 FOR x = 2 TO 8 STEP 2: FOR y = 1 TO 9 STEP 2
|
||||
|
||||
540 IF RND(1) > .95 THEN dn%(x, y) = 2
|
||||
|
||||
541 IF RND(1) > .95 THEN dn%(y, x) = 2
|
||||
|
||||
542 IF RND(1) > .6 THEN dn%(y, x) = 3
|
||||
|
||||
543 IF RND(1) > .6 THEN dn%(x, y) = 3
|
||||
|
||||
544 IF RND(1) > .6 THEN dn%(x, y) = 4
|
||||
|
||||
545 IF RND(1) > .6 THEN dn%(y, x) = 4
|
||||
|
||||
546 IF RND(1) > .97 THEN dn%(y, x) = 9
|
||||
|
||||
547 IF RND(1) > .97 THEN dn%(x, y) = 9
|
||||
|
||||
548 IF RND(1) > .94 THEN dn%(x, y) = 5
|
||||
|
||||
549 IF RND(1) > .94 THEN dn%(y, x) = 5
|
||||
|
||||
568 NEXT: NEXT
|
||||
|
||||
569 dn%(2, 1) = 0: IF in / 2 = INT(in / 2) THEN dn%(7, 3) = 7: dn%(3, 7) = 8
|
||||
|
||||
570 IF in / 2 <> INT(in / 2) THEN dn%(7, 3) = 8: dn%(3, 7) = 7
|
||||
|
||||
580 IF in = 1 THEN dn%(1, 1) = 8: dn%(7, 3) = 0
|
||||
|
||||
585 GOSUB 2000
|
||||
|
||||
590 RETURN
|
||||
|
||||
1000 DO: LOOP UNTIL INKEY$ = "": VIEW PRINT 22 TO 25: LOCATE 25, 1: PRINT "COMMAND? "; : LOCATE CSRLIN, 10
|
||||
|
||||
1001 x$ = INKEY$: IF x$ = "" THEN 1001
|
||||
|
||||
1002 IF ASC(x$) = 0 THEN xq = ASC(MID$(x$, 2)) ELSE xq = 0
|
||||
|
||||
1010 REM poke -16368, 0
|
||||
|
||||
1030 IF xq = 72 THEN ON SGN(in) + 1 GOTO 1100, 1150
|
||||
|
||||
1040 IF xq = 77 THEN ON SGN(in) + 1 GOTO 1200, 1250
|
||||
|
||||
1050 IF xq = 75 THEN ON SGN(in) + 1 GOTO 1300, 1350
|
||||
|
||||
1060 IF xq = 80 THEN ON SGN(in) + 1 GOTO 1400, 1450
|
||||
|
||||
1070 IF x$ = "g" OR x$ = CHR$(13) OR x$ = "e" OR x$ = "k" OR x$ = "d" THEN ON SGN(in) + 1 GOTO 1500, 1550
|
||||
|
||||
1080 IF x$ = "a" OR x$ = "u" OR x$ = "c" THEN ON SGN(in) + 1 GOTO 1600, 1650
|
||||
|
||||
1081 IF x$ = " " THEN PRINT "PASS": GOTO 1090
|
||||
|
||||
1085 IF x$ = "i" OR x$ = "z" OR x$ = "y" THEN 1700
|
||||
|
||||
1086 IF x$ = "p" THEN IF pa = 1 THEN pa = 0: PRINT "PAUSE OFF": GOTO 1000
|
||||
|
||||
1087 IF x$ = "p" THEN IF pa = 0 THEN pa = 1: PRINT "PAUSE ON": GOTO 1000
|
||||
|
||||
1089 PRINT "HUH?": GOTO 1000
|
||||
|
||||
1090 pw(0) = pw(0) - 1 + SGN(in) * .9: IF pw(0) < 0 THEN c(0) = 0: PRINT : PRINT "YOU HAVE STARVED!!!!!": GOTO 1093
|
||||
|
||||
1091 FOR jj = 0 TO 2: LOCATE 22 + jj, 30: PRINT " "; : NEXT
|
||||
LOCATE 22, 30: PRINT "FOOD="; LTRIM$(STR$(pw(0))); : LOCATE 23, 30: PRINT "H.P.="; LTRIM$(STR$(c(0)));
|
||||
LOCATE 24, 30: PRINT "GOLD="; LTRIM$(STR$(c(5))); : LOCATE 24, 1: REM call -868
|
||||
|
||||
1092 pw(0) = INT(pw(0) * 10) / 10
|
||||
|
||||
1093 IF c(0) <= 0 THEN SLEEP 3: GOTO 6000
|
||||
|
||||
1095 IF in > 0 THEN GOSUB 4000: IF c(0) <= 0 THEN 1093
|
||||
|
||||
1096 FOR jj = 0 TO 3: LOCATE 22 + jj, 30: PRINT " "; : NEXT: LOCATE 22, 30: PRINT "FOOD="; LTRIM$(STR$(pw(0))); : LOCATE 23, 30: PRINT "H.P.="; LTRIM$(STR$(c(0))); : LOCATE 24, 30: PRINT "GOLD="; LTRIM$(STR$(c(5))); : LOCATE 24, 1
|
||||
|
||||
1097 IF in = 0 THEN GOSUB 100: GOTO 1000
|
||||
|
||||
1098 IF in > 0 THEN GOSUB 200: GOTO 1000
|
||||
|
||||
1100 PRINT "NORTH": IF te%(tx, ty - 1) = 1 THEN PRINT "YOU CAN'T PASS THE MOUNTAINS": GOTO 1090
|
||||
|
||||
1110 ty = ty - 1: GOTO 1090
|
||||
|
||||
1150 IF dn%(px + dx, py + dy) <> 1 AND dn%(px + dx, py + dy) < 10 THEN px = px + dx: py = py + dy
|
||||
|
||||
1155 PRINT "FORWARD"
|
||||
|
||||
1160 IF dn%(px, py) = 2 THEN PRINT "AAARRRGGGHHH!!! A TRAP!": c(0) = c(0) - INT(RND(1) * in + 3): MR = 1: in = in + 1: PRINT "FALLING TO LEVEL "; in: SLEEP 2: GOSUB 500: GOTO 1090
|
||||
|
||||
1165 z = 0
|
||||
|
||||
1170 IF dn%(px, py) = 5 THEN dn%(px, py) = 0: PRINT "GOLD!!!!!": z = INT(RND(1) * 5 * in + in): PRINT z; "-PIECES OF EIGHT": c(5) = c(5) + z
|
||||
|
||||
1175 IF z > 0 THEN z = INT(RND(1) * 6): PRINT "AND A "; w$(z): pw(z) = pw(z) + 1: SLEEP 1: GOTO 1090
|
||||
|
||||
1190 GOTO 1090
|
||||
|
||||
1200 PRINT "EAST": IF te%(tx + 1, ty) = 1 THEN PRINT "YOU CAN'T PASS THE MOUNTAINS": GOTO 1090
|
||||
|
||||
1210 tx = tx + 1: GOTO 1090
|
||||
|
||||
1250 PRINT "TURN RIGHT"
|
||||
|
||||
1255 IF dx <> 0 THEN dy = dx: dx = 0: GOTO 1090
|
||||
|
||||
1260 dx = -dy: dy = 0: GOTO 1090
|
||||
|
||||
1300 PRINT "WEST": IF te%(tx - 1, ty) = 1 THEN PRINT "YOU CAN'T PASS THE MOUNTAINS": GOTO 1090
|
||||
|
||||
1310 tx = tx - 1: GOTO 1090
|
||||
|
||||
1350 PRINT "TURN LEFT"
|
||||
|
||||
1355 IF dx <> 0 THEN dy = -dx: dx = 0: GOTO 1090
|
||||
|
||||
1360 dx = dy: dy = 0: GOTO 1090
|
||||
|
||||
1400 PRINT "SOUTH": IF te%(tx, ty + 1) = 1 THEN PRINT "YOU CAN'T PASS THE MOUNTAINS": GOTO 1090
|
||||
|
||||
1410 ty = ty + 1: GOTO 1090
|
||||
|
||||
1450 PRINT "TURN AROUND": dx = -dx: dy = -dy: GOTO 1090
|
||||
|
||||
1500 IF te%(tx, ty) = 3 THEN GOSUB 60080: GOSUB 60200: CLS : GOTO 1090
|
||||
|
||||
1510 IF te%(tx, ty) = 4 AND in = 0 THEN PRINT "GO DUNGEON": PRINT "PLEASE WAIT ": SLEEP 1: in = 1: GOSUB 500: dx = 1: dy = 0: px = 1: py = 1: CLS : GOTO 1090
|
||||
|
||||
1515 IF te%(tx, ty) = 5 THEN 7000
|
||||
|
||||
1520 PRINT "HUH?": GOTO 1000
|
||||
|
||||
1550 IF dn%(px, py) <> 7 AND dn%(px, py) <> 9 THEN 1580
|
||||
|
||||
1555 PRINT "GO DOWN TO LEVEL "; in + 1
|
||||
|
||||
1560 in = in + 1: GOSUB 500: MR = 1: GOTO 1090
|
||||
|
||||
1580 IF dn%(px, py) <> 8 THEN PRINT "HUH?": GOTO 1090
|
||||
|
||||
1581 IF in = 1 THEN PRINT "LEAVE DUNGEON": in = 0: GOTO 1586
|
||||
|
||||
1584 PRINT "GO UP TO LEVEL "; in - 1
|
||||
|
||||
1585 in = in - 1: GOSUB 500: MR = 1
|
||||
|
||||
1586 IF in = 0 THEN PRINT "THOU HAST GAINED": PRINT lk; " HIT POINTS": SLEEP 2: c(0) = c(0) + lk: lk = 0
|
||||
|
||||
1587 CLS : GOTO 1090
|
||||
|
||||
1600 GOTO 1090
|
||||
|
||||
1650 mn = 0: da = 0: PRINT "ATTACK ": PRINT "WHICH WEAPON "; : DO: q$ = INKEY$: LOOP WHILE q$ = ""
|
||||
|
||||
1651 IF q$ = "r" THEN da = 10: PRINT "RAPIER": IF pw(1) < 1 THEN PRINT "NOT OWNED": GOTO 1650
|
||||
|
||||
1652 IF q$ = "a" THEN da = 5: PRINT "AXE": IF pw(2) < 1 THEN PRINT "NOT OWNED": GOTO 1650
|
||||
|
||||
1653 IF q$ = "s" THEN da = 1: PRINT "SHIELD": IF pw(3) < 1 THEN PRINT "NOT OWNED": GOTO 1650
|
||||
|
||||
1654 IF q$ = "b" THEN da = 4: PRINT "BOW": IF pw(4) < 1 THEN PRINT "NOT OWNED": GOTO 1650
|
||||
|
||||
1655 IF q$ = "m" THEN PRINT "MAGIC AMULET": GOTO 1680
|
||||
|
||||
1656 IF q$ = "b" AND pt$ = "m" THEN PRINT "MAGES CAN'T USE BOWS!": GOTO 1650
|
||||
|
||||
1657 IF q$ = "r" AND pt$ = "m" THEN PRINT "MAGES CAN'T USE RAPIERS!": GOTO 1650
|
||||
|
||||
1659 IF da = 0 THEN PRINT "HANDS"
|
||||
|
||||
1660 IF da = 5 OR da = 4 THEN 1670
|
||||
|
||||
1661 mn = dn%(px + dx, py + dy) / 10: mn = INT(mn)
|
||||
|
||||
1662 IF mn < 1 OR c(2) - RND(1) * 25 < mn + in THEN PRINT " YOU MISSED": GOTO 1668
|
||||
|
||||
1663 PRINT "HIT!!! ": da = (RND(1) * da + c(1) / 5): mz%(mn, 1) = INT(mz%(mn, 1) - da)
|
||||
|
||||
1664 PRINT m$(mn); "'S HIT POINTS="; mz%(mn, 1)
|
||||
|
||||
1665 IF mz%(mn, 1) < 1 THEN PRINT "THOU HAST KILLED A "; m$(mn): PRINT "THOU SHALT RECEIVE": da = INT(mn + in): PRINT da; " PIECES OF EIGHT"
|
||||
|
||||
1666 IF mz%(mn, 1) < 1 THEN c(5) = INT(c(5) + da): dn%(ml%(mn, 0), ml%(mn, 1)) = dn%(ml%(mn, 0), ml%(mn, 1)) - 10 * mn: mz%(mn, 0) = 0
|
||||
|
||||
1667 lk = lk + INT(mn * in / 2): IF mn = ta THEN ta = -ta
|
||||
|
||||
1668 IF pa = 1 THEN PRINT "-CR- TO CONT. "; : INPUT q$
|
||||
|
||||
1669 SLEEP 1: GOTO 1090
|
||||
|
||||
1670 IF da = 5 THEN PRINT "TO THROW OR SWING:"; : DO: q$ = INKEY$: LOOP WHILE q$ = "": IF q$ <> "t" THEN PRINT "SWING": GOTO 1661
|
||||
|
||||
1671 IF da = 5 THEN PRINT "THROW": pw(2) = pw(2) - 1
|
||||
|
||||
1672 FOR y = 1 TO 5: IF px + dx * y < 1 OR px + dx * y > 9 OR py + dy * y > 9 OR py + dy * y < 0 THEN 1662
|
||||
|
||||
1673 mn = dn%(px + dx * y, py + dy * y): mn = INT(mn / 10): IF mn > 0 THEN 1662
|
||||
|
||||
1674 NEXT: GOTO 1662
|
||||
|
||||
1680 IF pw(5) < 1 THEN PRINT "NONE OWNED": GOTO 1650
|
||||
|
||||
1681 IF pt$ = "f" THEN q = INT(RND(1) * 4 + 1): GOTO 1685
|
||||
|
||||
1682 PRINT "1-LADDER-UP", "2-LADDER-DN": PRINT "3-KILL", "4-BAD??": PRINT "CHOICE "; : DO: q$ = INKEY$: LOOP WHILE q$ = "": q = VAL(q$): PRINT q: IF q < 1 OR q > 4 THEN 1682
|
||||
|
||||
1683 IF RND(1) > .75 THEN PRINT "LAST CHARGE ON THIS AMULET!": pw(5) = pw(5) - 1
|
||||
|
||||
1685 ON q GOTO 1686, 1690, 1691, 1692
|
||||
|
||||
1686 PRINT "LADDER UP": dn%(px, py) = 8: SLEEP 1: GOTO 1090
|
||||
|
||||
1690 PRINT "LADDER DOWN": dn%(px, py) = 7: SLEEP 1: GOTO 1090
|
||||
|
||||
1691 PRINT "MAGIC ATTACK": da = 10 + in: GOTO 1672
|
||||
|
||||
1692 ON INT(RND(1) * 3 + 1) GOTO 1693, 1695, 1697
|
||||
|
||||
1693 PRINT "YOU HAVE BEEN TURNED": PRINT "INTO A TOAD!"
|
||||
|
||||
1694 FOR z2 = 1 TO 4: c(z2) = 3: NEXT z2: SLEEP 3: GOTO 1090
|
||||
|
||||
1695 PRINT "YOU HAVE BEEN TURNED": PRINT "INTO A LIZARD MAN": FOR y = 0 TO 4: c(y) = INT(c(y) * 2.5): NEXT: SLEEP 3: GOTO 1090
|
||||
|
||||
1697 PRINT "BACKFIRE": c(0) = c(0) / 2: SLEEP 2: GOTO 1090
|
||||
|
||||
1700 GOSUB 60080: LOCATE 1, 1: PRINT "PRESS -CR- TO CONTINUE"; : INPUT q$: SCREEN 1: CLS : GOTO 1090
|
||||
|
||||
2000 nm = 0: FOR x = 1 TO 10
|
||||
|
||||
2005 mz%(x, 0) = 0: mz%(x, 1) = x + 3 + in
|
||||
|
||||
2010 IF x - 2 > in OR RND(1) > .4 THEN 2090
|
||||
|
||||
2020 ml%(x, 0) = INT(RND(1) * 9 + 1): ml%(x, 1) = INT(RND(1) * 9 + 1)
|
||||
|
||||
2030 IF dn%(ml%(x, 0), ml%(x, 1)) <> 0 THEN 2020
|
||||
|
||||
2040 IF ml%(x, 0) = px AND ml%(x, 1) = py THEN 2020
|
||||
|
||||
2050 dn%(ml%(x, 0), ml%(x, 1)) = x * 10
|
||||
|
||||
2051 mz%(x, 0) = 1
|
||||
|
||||
2052 nm = nm + 1
|
||||
|
||||
2055 mz%(x, 1) = x * 2 + in * 2 * lp
|
||||
|
||||
2090 NEXT: RETURN
|
||||
|
||||
3087 LINE (c - 28 / di, b - 41 / di)-(c + 30 / di, b - 55 / di): LINE (c + 28 / di, b - 58 / di)-(c + 22 / di, b - 56 / di): LINE -(c + 22 / di, b - 53 / di)
|
||||
LINE -(c + 28 / di, b - 52 / di): LINE -(c + 34 / di, b - 54 / di): LINE (c + 20 / di, b - 50 / di)-(c + 26 / di, b - 47 / di)
|
||||
|
||||
3088 LINE (c + 10 / di, b - 58 / di)-(c + 10 / di, b - 61 / di): LINE -(c + 4 / di, b - 58 / di): LINE (c - 10 / di, b - 58 / di)-(c - 10 / di, b - 61 / di)
|
||||
LINE -(c - 4 / di, b - 58 / di): LINE (c + 40 / di, b - 9 / di)-(c + 50 / di, b - 12 / di): LINE -(c + 40 / di, b - 7 / di)
|
||||
|
||||
3089 LINE (c - 8 / di, b - 25 / di)-(c + 6 / di, b - 7 / di): LINE -(c + 28 / di, b - 7 / di): LINE -(c + 28 / di, b - 9 / di): LINE -(c + 20 / di, b - 9 / di): LINE -(c + 6 / di, b - 25 / di): GOTO 490
|
||||
|
||||
4000 FOR mm = 1 TO 10: IF mz%(mm, 0) = 0 THEN 4999
|
||||
|
||||
4010 ra = SQR((px - ml%(mm, 0)) ^ 2 + (py - ml%(mm, 1)) ^ 2)
|
||||
|
||||
4011 IF mz%(mm, 1) < in * lp THEN 4030
|
||||
|
||||
4020 IF ra < 1.3 THEN 4500
|
||||
|
||||
4025 IF mm = 8 AND ra < 3 THEN 4999
|
||||
|
||||
4030 x1 = SGN(px - ml%(mm, 0)): y1 = SGN(py - ml%(mm, 1))
|
||||
|
||||
4031 IF mz%(mm, 1) < in * lp THEN x1 = -x1: y1 = -y1
|
||||
|
||||
4035 IF y1 = 0 THEN 4045
|
||||
|
||||
4040 d = dn%(ml%(mm, 0), (ml%(mm, 1) + y1 + .499)): IF d = 1 OR d > 9 OR d = 2 THEN 4045
|
||||
|
||||
4042 x1 = 0: GOTO 4050
|
||||
|
||||
4045 y1 = 0: IF x1 = 0 THEN 4050
|
||||
|
||||
4046 d = dn%((ml%(mm, 0) + x1 + .499), ml%(mm, 1)): IF d = 1 OR d > 9 OR d = 2 THEN x1 = 0: GOTO 4081
|
||||
|
||||
4050 dn%(ml%(mm, 0), ml%(mm, 1)) = dn%(ml%(mm, 0), ml%(mm, 1)) - 10 * mm
|
||||
|
||||
4055 IF ml%(mm, 0) + x1 = px AND ml%(mm, 1) + y1 = py THEN 4999
|
||||
|
||||
4060 ml%(mm, 0) = ml%(mm, 0) + x1: ml%(mm, 1) = ml%(mm, 1) + y1
|
||||
|
||||
4080 dn%(ml%(mm, 0), ml%(mm, 1)) = (dn%(ml%(mm, 0), ml%(mm, 1)) + 10 * mm + .499)
|
||||
|
||||
4081 IF x1 <> 0 OR y1 <> 0 THEN 4999
|
||||
|
||||
4082 IF mz%(mm, 1) < in * lp AND ra < 1.3 THEN 4500
|
||||
|
||||
4083 IF mz%(mm, 1) < in * lp THEN mz%(mm, 1) = mz%(mm, 1) + mm + in
|
||||
|
||||
4499 GOTO 4999
|
||||
|
||||
4500 IF mm = 2 OR mm = 7 THEN 4600
|
||||
|
||||
4509 PRINT "YOU ARE BEING ATTACKED": PRINT "BY A "; m$(mm)
|
||||
|
||||
4510 IF RND(1) * 20 - SGN(pw(3)) - c(3) + mm + in < 0 THEN PRINT "MISSED": GOTO 4525
|
||||
|
||||
4520 PRINT "HIT": c(0) = c(0) - INT(RND(1) * mm + in)
|
||||
|
||||
4525 IF pa = 1 THEN PRINT "-CR- TO CONT. "; : INPUT q$
|
||||
|
||||
4530 GOTO 4999
|
||||
|
||||
4600 IF RND(1) < .5 THEN 4509
|
||||
|
||||
4610 IF mm = 7 THEN pw(0) = INT(pw(0) / 2): PRINT "A GREMLIN STOLE SOME FOOD": GOTO 4525
|
||||
|
||||
4620 zz = INT(RND(1) * 6): IF pw(zz) < 1 THEN 4620
|
||||
|
||||
4630 PRINT "A THIEF STOLE A "; w$(zz): pw(zz) = pw(zz) - 1: GOTO 4525
|
||||
|
||||
4999 NEXT: RETURN
|
||||
|
||||
6000 VIEW PRINT: CLS : PRINT : PRINT : PRINT " WE MOURN THE PASSING OF"
|
||||
|
||||
6005 IF LEN(pn$) > 22 THEN pn$ = ""
|
||||
|
||||
6010 IF pn$ = "" THEN pn$ = "THE PEASANT"
|
||||
|
||||
6020 pn$ = pn$ + " AND HIS COMPUTER"
|
||||
|
||||
6030 PRINT TAB(20 - INT(LEN(pn$) / 2)); : PRINT pn$
|
||||
|
||||
6035 PRINT " TO INVOKE A MIRACLE OF RESSURECTION"
|
||||
|
||||
6040 PRINT " <HIT ESC KEY>";
|
||||
|
||||
6050 DO: LOOP UNTIL INKEY$ = CHR$(27)
|
||||
|
||||
6060 GOTO 1
|
||||
|
||||
7000 SCREEN 1: VIEW PRINT: CLS
|
||||
|
||||
7001 REM
|
||||
|
||||
7010 IF pn$ <> "" THEN 7500
|
||||
|
||||
7020 PRINT : PRINT : PRINT " WELCOME PEASANT INTO THE HALLS OF": PRINT "THE MIGHTY LORD BRITISH. HEREIN THOU MAYCHOOSE TO DARE BATTLE WITH THE EVIL": PRINT "CREATURES OF THE DEPTHS, FOR GREAT": PRINT "REWARD!"
|
||||
|
||||
7030 PRINT : PRINT "WHAT IS THY NAME PEASANT "; : INPUT pn$: pn$ = UCASE$(pn$)
|
||||
|
||||
7040 PRINT "DOEST THOU WISH FOR GRAND ADVENTURE ? "; : DO: q$ = INKEY$: LOOP WHILE q$ = ""
|
||||
IF q$ <> "y" THEN PRINT : PRINT "THEN LEAVE AND BEGONE!": pn$ = "": PRINT : PRINT " PRESS -SPACE- TO CONT."; : DO: q$ = INKEY$: LOOP UNTIL q$ = " ": CLS : GOTO 1090
|
||||
|
||||
7045 PRINT
|
||||
|
||||
7050 PRINT : PRINT "GOOD! THOU SHALT TRY TO BECOME A ": PRINT "KNIGHT!!!": PRINT : PRINT "THY FIRST TASK IS TO GO INTO THE": PRINT "DUNGEONS AND TO RETURN ONLY AFTER": PRINT "KILLING A(N) "; : ta = INT(c(4) / 3): PRINT m$(ta)
|
||||
|
||||
7060 PRINT : PRINT " GO NOW UPON THIS QUEST, AND MAY": PRINT "LADY LUCK BE FAIR UNTO YOU.....": PRINT ".....ALSO I, BRITISH, HAVE INCREASED": PRINT "EACH OF THY ATTRIBUTES BY ONE!"
|
||||
|
||||
7070 PRINT : PRINT " PRESS -SPACE- TO CONT."; : DO: q$ = INKEY$: LOOP WHILE q$ = "": FOR x = 0 TO 5: c(x) = c(x) + 1: NEXT: CLS : GOTO 1090
|
||||
|
||||
7500 IF ta > 0 THEN PRINT : PRINT : PRINT pn$; " WHY HAST THOU RETURNED?": PRINT "THOU MUST KILL A(N) "; m$(ta)
|
||||
PRINT "GO NOW AND COMPLETE THY QUEST!": PRINT : PRINT " PRESS -SPACE- TO CONT."; : DO: q$ = INKEY$: LOOP WHILE q$ = "": CLS : GOTO 1090
|
||||
|
||||
7510 PRINT : PRINT : PRINT : PRINT "AAHH!!....."; pn$: PRINT : PRINT "THOU HAST ACOMPLISHED THY QUEST!": IF ABS(ta) = 10 THEN 7900
|
||||
|
||||
7520 PRINT "UNFORTUNATELY, THIS IS NOT ENOUGH TO": PRINT "BECOME A KNIGHT.": ta = ABS(ta) + 1: PRINT : PRINT "NOW THOU MUST KILL A(N) "; m$(ta)
|
||||
|
||||
7530 GOTO 7060
|
||||
|
||||
7900 SCREEN 1: VIEW PRINT: CLS : PRINT : PRINT : PRINT : pn$ = "LORD " + pn$: PRINT " "; pn$; ","
|
||||
|
||||
7910 PRINT " THOU HAST PROVED THYSELF WORTHY": PRINT "OF KNIGHTHOOD, CONTINUE PLAY IF THOU": PRINT "DOTH WISH, BUT THOU HAST ACOMPLISHED": PRINT "THE MAIN OBJECTIVE OF THIS GAME..."
|
||||
|
||||
7920 IF lp = 10 THEN 7950
|
||||
|
||||
7930 PRINT : PRINT " NOW MAYBE THOU ART FOOLHEARTY": PRINT "ENOUGH TOTRY DIFFICULTY LEVEL "; lp + 1
|
||||
|
||||
7940 GOTO 7070
|
||||
|
||||
7950 PRINT : PRINT "...CALL CALIFORNIA PACIFIC COMPUTER": PRINT "AT (415)-569-9126 TO REPORT THIS": PRINT "AMAZING FEAT!"
|
||||
|
||||
7990 GOTO 7070
|
||||
|
||||
60000 SCREEN 1: VIEW PRINT: CLS : LOCATE 5, 1: INPUT "TYPE THY LUCKY NUMBER....."; q$: ln = VAL(q$)
|
||||
|
||||
60005 LOCATE 7, 1: INPUT "LEVEL OF PLAY (1-10)......"; q$: lp = INT(VAL(q$))
|
||||
|
||||
60006 IF lp < 1 OR lp > 10 THEN 60005
|
||||
|
||||
60010 RANDOMIZE ln
|
||||
|
||||
60020 DATA "HIT POINTS.....","STRENGTH.......","DEXTERITY......","STAMINA........","WISDOM.........","GOLD..........."
|
||||
|
||||
60025 REM
|
||||
|
||||
60030 DIM c$(5): FOR x = 0 TO 5: READ c$(x): NEXT
|
||||
|
||||
60040 REM
|
||||
|
||||
60041 REM
|
||||
|
||||
60042 DATA "SKELETON","THIEF","GIANT RAT","ORC","VIPER","CARRION CRAWLER","GREMLIN","MIMIC","DAEMON","BALROG"
|
||||
|
||||
60043 FOR x = 1 TO 10: READ m$(x): NEXT
|
||||
|
||||
60050 FOR x = 0 TO 5: c(x) = INT(SQR(RND(1)) * 21 + 4): NEXT x
|
||||
|
||||
60060 CLS : LOCATE 8, 1: FOR x = 0 TO 5: PRINT c$(x); c(x): NEXT: PRINT : PRINT "SHALT THOU PLAY WITH THESE QUALITIES?": PRINT TAB(20); : DO: q$ = INKEY$: LOOP WHILE q$ = "": IF q$ <> "y" THEN 60050
|
||||
|
||||
60061 LOCATE 15, 1: PRINT : PRINT "AND SHALT THOU BE A FIGHTER OR A MAGE?": PRINT TAB(20); : DO: pt$ = INKEY$: LOOP WHILE pt$ = ""
|
||||
|
||||
60062 IF pt$ = "m" OR pt$ = "f" THEN 60070
|
||||
|
||||
60063 GOTO 60061
|
||||
|
||||
60070 DATA "FOOD","RAPIER","AXE","SHIELD","BOW AND ARROWS","MAGIC AMULET": FOR x = 0 TO 5: READ w$(x): NEXT
|
||||
|
||||
60075 GOSUB 60080: GOSUB 60200: RETURN
|
||||
|
||||
60080 SCREEN 1: VIEW PRINT: CLS : PRINT : PRINT : PRINT " STAT'S WEAPONS": PRINT : FOR x = 0 TO 5: PRINT c$(x); c(x); TAB(24); "0-"; w$(x): NEXT: LOCATE 1, 1
|
||||
|
||||
60081 LOCATE 11, 18: PRINT "Q-QUIT"
|
||||
|
||||
60082 REM IF pw(0) > 0 THEN REM CALL 62450
|
||||
|
||||
60085 FOR z = 0 TO 5: LOCATE 5 + z, 25 - LEN(STR$(pw(z))): PRINT STR$(pw(z)); : NEXT
|
||||
|
||||
60090 LOCATE 17, 5: PRINT "PRICE"; : PRINT TAB(15); : PRINT "DAMAGE"; : PRINT TAB(25); : PRINT "ITEM"
|
||||
|
||||
60100 FOR x = 0 TO 5: LOCATE 19 + x, 25: PRINT w$(x); : NEXT
|
||||
|
||||
60110 LOCATE 19, 5: PRINT "1 FOR 10"; : PRINT TAB(15); : PRINT "N/A": LOCATE 20, 5: PRINT "8"; : PRINT TAB(15); : PRINT "1-10": LOCATE 21, 5: PRINT "5"; : PRINT TAB(15); : PRINT "1-5"
|
||||
|
||||
60120 LOCATE 22, 5: PRINT "6"; : PRINT TAB(15); : PRINT "1": LOCATE 23, 5: PRINT "3"; : PRINT TAB(15); : PRINT "1-4"; : LOCATE 24, 5: PRINT "15"; : PRINT TAB(15); : PRINT "?????"; : LOCATE 1, 1
|
||||
|
||||
60130 RETURN
|
||||
|
||||
60200 LOCATE 1, 1: PRINT "WELCOME TO THE ADVENTURE SHOP"
|
||||
|
||||
60210 LOCATE 13, 1: FOR jj = 0 TO 1: PRINT " ": NEXT
|
||||
LOCATE 12, 1: PRINT "WHICH ITEM SHALT THOU BUY "; : LOCATE 12, 27: DO: q$ = INKEY$: LOOP WHILE q$ = ""
|
||||
IF q$ = "q" THEN PRINT : PRINT : PRINT "BYE": SLEEP 1: SCREEN 1: CLS : RETURN
|
||||
|
||||
60215 z = -1
|
||||
|
||||
60220 IF q$ = "f" THEN PRINT "FOOD": z = 0: p = 1
|
||||
|
||||
60221 IF q$ = "r" THEN PRINT "RAPIER": z = 1: p = 8
|
||||
|
||||
60222 IF q$ = "a" THEN PRINT "AXE": z = 2: p = 5
|
||||
|
||||
60223 IF q$ = "s" THEN PRINT "SHIELD": z = 3: p = 6
|
||||
|
||||
60224 IF q$ = "b" THEN PRINT "BOW": z = 4: p = 3
|
||||
|
||||
60225 IF q$ = "m" THEN PRINT "AMULET": z = 5: p = 15
|
||||
|
||||
60226 IF z = -1 THEN PRINT UCASE$(q$): PRINT "I'M SORRY WE DON'T HAVE THAT.": SLEEP 2: GOTO 60210
|
||||
|
||||
60227 IF q$ = "r" AND pt$ = "m" THEN PRINT "I'M SORRY MAGES": PRINT "CAN'T USE THAT!": SLEEP 2: GOTO 60210
|
||||
|
||||
60228 IF q$ = "b" AND pt$ = "m" THEN PRINT "I'M SORRY MAGES": PRINT "CAN'T USE THAT!": SLEEP 2: GOTO 60210
|
||||
|
||||
60230 IF c(5) - p < 0 THEN PRINT "M'LORD THOU CAN NOT AFFORD THAT ITEM.": SLEEP 2: GOTO 60210
|
||||
|
||||
60235 IF z = 0 THEN pw(z) = pw(z) + 9
|
||||
|
||||
60236 pw(z) = pw(z) + 1: c(5) = c(5) - p
|
||||
|
||||
60237 LOCATE 10, 16: PRINT c(5); " "
|
||||
|
||||
60240 LOCATE 5 + z, 25 - LEN(STR$(pw(z))): PRINT pw(z); : LOCATE 14, 1: PRINT
|
||||
|
||||
60250 GOTO 60210
|
||||
|
58
tests/qbasic_testcases/misc/ascipong.bas
Normal file
58
tests/qbasic_testcases/misc/ascipong.bas
Normal file
|
@ -0,0 +1,58 @@
|
|||
' This work has been released into the public domain by the copyright
|
||||
' holder. This applies worldwide.
|
||||
'
|
||||
' In case this is not legally possible:
|
||||
' The copyright holder grants any entity the right to use this work for any
|
||||
' purpose, without any conditions, unless such conditions are required by
|
||||
' law.
|
||||
|
||||
DEFINT A-Z
|
||||
DIM SCORE AS LONG, DELAY AS SINGLE, T AS SINGLE
|
||||
SCREEN 12 ' This is just to make it full screen
|
||||
SCREEN 0 ' Screen 0 rules
|
||||
WIDTH 40
|
||||
CLS
|
||||
X = 50: Y = 50: X2 = 130: Y2 = 150
|
||||
PSPEED = 5: XADJ = 1: YADJ = 1: DELAY = .05
|
||||
DO
|
||||
CLS
|
||||
PRESS$ = INKEY$
|
||||
LOCATE Y \ 8 + 1, X \ 8 + 1
|
||||
PRINT "o"
|
||||
LOCATE Y2 \ 8 + 1, X2 \ 8 + 1
|
||||
PRINT STRING$(4, 219)
|
||||
LOCATE 1, 1
|
||||
PRINT SCORE
|
||||
IF Y <= 20 THEN YADJ = 1
|
||||
IF Y >= 180 THEN YADJ = -1
|
||||
IF X >= 300 THEN XADJ = -1
|
||||
IF X <= 20 THEN XADJ = 1
|
||||
SELECT CASE PRESS$
|
||||
CASE CHR$(0) + CHR$(75)
|
||||
IF X2 > 1 THEN X2 = X2 - PSPEED
|
||||
CASE CHR$(0) + CHR$(77)
|
||||
IF X2 < 290 THEN X2 = X2 + PSPEED
|
||||
CASE CHR$(27)
|
||||
END
|
||||
CASE CHR$(0) + CHR$(72)
|
||||
DELAY = DELAY - .002
|
||||
CASE CHR$(0) + CHR$(80)
|
||||
DELAY = DELAY + .002
|
||||
END SELECT
|
||||
X = X + XADJ
|
||||
Y = Y + YADJ
|
||||
IF Y < Y2 + 8 AND Y > Y2 - 8 AND X < X2 + 32 AND X > X2 THEN
|
||||
YADJ = -1: SCORE = SCORE + 1
|
||||
END IF
|
||||
IF Y > Y2 + 10 THEN
|
||||
PRESS$=""
|
||||
DO WHILE PRESS$ <> ""
|
||||
PRESS$ = INKEY$
|
||||
COLOR INT(RND(1) * 16)
|
||||
PRINT "GAME OVER",
|
||||
LOOP
|
||||
END
|
||||
END IF
|
||||
T = TIMER + DELAY
|
||||
WHILE T > TIMER: WEND
|
||||
LOOP
|
127
tests/qbasic_testcases/misc/audio.bas
Normal file
127
tests/qbasic_testcases/misc/audio.bas
Normal file
|
@ -0,0 +1,127 @@
|
|||
DEFLNG A-Z
|
||||
WIDTH 80, 50
|
||||
COLOR 15
|
||||
CLS
|
||||
PRINT "QB64 AUDIO (ESC=QUIT, H=SELECT HANDLE)"
|
||||
PRINT "Basics: O=OPEN C=CLOSE ENTER=PLAY S=STOP L=LOOP"
|
||||
PRINT "Extras: V=VOL B=BAL SPACE=PAUSE A=SETPOS Z=COPY"
|
||||
PRINT "Info: Q=PLAYING&GETPOS W=LEN P=PAUSED"
|
||||
PRINT "Macros: F=PLAYFILE X=PLAYCOPY"
|
||||
PRINT STRING$(80, "_")
|
||||
VIEW PRINT 8 TO 50
|
||||
LOCATE , , 1
|
||||
|
||||
DO
|
||||
|
||||
SLEEP 'lowers CPU usage
|
||||
k$ = UCASE$(INKEY$)
|
||||
|
||||
IF k$ = CHR$(27) THEN END
|
||||
|
||||
IF k$ = "H" THEN
|
||||
h2 = h
|
||||
INPUT "handle=", h
|
||||
IF h = 0 THEN PRINT "Invalid handle": h = h2
|
||||
END IF
|
||||
|
||||
IF k$ = "O" THEN
|
||||
PRINT "handle=_SNDOPEN(filename$,[requirements$])"
|
||||
INPUT ; "handle=_SNDOPEN(", f$, r$
|
||||
PRINT ")"
|
||||
h2 = h
|
||||
h=_SNDOPEN(f$, r$)
|
||||
IF h=0 THEN
|
||||
IF h2 THEN h = h2
|
||||
PRINT "Failed"
|
||||
ELSE
|
||||
PRINT "handle="; h
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF k$ = "C" THEN
|
||||
PRINT "_SNDCLOSE"; h
|
||||
_SNDCLOSE h
|
||||
END IF
|
||||
|
||||
IF k$ = CHR$(13) THEN
|
||||
PRINT "_SNDPLAY"; h
|
||||
_SNDPLAY h
|
||||
END IF
|
||||
|
||||
IF k$ = "S" THEN
|
||||
PRINT "_SNDSTOP"; h
|
||||
_SNDSTOP h
|
||||
END IF
|
||||
|
||||
IF k$ = "L" THEN
|
||||
PRINT "_SNDLOOP"; h
|
||||
_SNDLOOP h
|
||||
END IF
|
||||
|
||||
IF k$ = "V" THEN
|
||||
PRINT "_SNDVOL handle&,volume!{0-1}"
|
||||
PRINT "_SNDVOL"; h; ",";
|
||||
INPUT "", volume!
|
||||
_SNDVOL h, volume!
|
||||
END IF
|
||||
|
||||
IF k$ = "B" THEN
|
||||
PRINT "_SNDBAL handle&,[x!],[y!],[z!]"
|
||||
PRINT "_SNDBAL"; h; ",";
|
||||
INPUT "", x!, y!, z!
|
||||
_SNDBAL h, x!, y!, z!
|
||||
END IF
|
||||
|
||||
IF k$ = " " THEN
|
||||
PRINT "_SNDPAUSE"; h
|
||||
_SNDPAUSE h
|
||||
END IF
|
||||
|
||||
IF k$ = "A" THEN
|
||||
PRINT "_SNDSETPOS handle&,offsetinseconds!"
|
||||
PRINT "_SNDSETPOS"; h; ",";
|
||||
INPUT "", offset!
|
||||
_SNDSETPOS h, offset!
|
||||
END IF
|
||||
|
||||
IF k$ = "Z" THEN
|
||||
PRINT "handle=_SNDCOPY("; h; ")"
|
||||
h2 = _SNDCOPY(h)
|
||||
if h2 then
|
||||
h = h2
|
||||
PRINT "handle="; h
|
||||
ELSE
|
||||
PRINT "Failed"
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF k$ = "Q" THEN
|
||||
PRINT "PRINT _PLAYING("; h; ")"
|
||||
PRINT _SNDPLAYING(h)
|
||||
PRINT "PRINT _GETPOS("; h; ")"
|
||||
PRINT _SNDGETPOS(h)
|
||||
END IF
|
||||
|
||||
IF k$ = "W" THEN
|
||||
PRINT "PRINT _SNDLEN("; h; ")"
|
||||
PRINT _SNDLEN(h)
|
||||
END IF
|
||||
|
||||
IF k$ = "P" THEN
|
||||
PRINT "PRINT _SNDPAUSED("; h; ")"
|
||||
PRINT _SNDPAUSED(h)
|
||||
END IF
|
||||
|
||||
IF k$ = "F" THEN
|
||||
PRINT "_SNDPLAYFILE filename$,sync%{0/1},volume!{0-1}"
|
||||
INPUT "_SNDPLAYFILE ", filename$, sync%, volume!
|
||||
_SNDPLAYFILE filename$, sync%, volume!
|
||||
END IF
|
||||
|
||||
IF k$ = "X" THEN
|
||||
PRINT "_SNDPLAYCOPY"; h
|
||||
_SNDPLAYCOPY h
|
||||
END IF
|
||||
|
||||
LOOP
|
||||
|
1
tests/qbasic_testcases/misc/boom1.raw
Normal file
1
tests/qbasic_testcases/misc/boom1.raw
Normal file
|
@ -0,0 +1 @@
|
|||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p**<04><><EFBFBD>p<EFBFBD>pp)ppp<70><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pp)*********)))**))*)ppp<70><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p*++++++DD+*)*)*+**++**))<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*++D+++D*)*+++DD++DD+**<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DD+D+**+DD++DD+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*)++D+DD+++++++DD+++DD+**<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)++++++++++D+++DD+DDDD+++++)*+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)*++DD+++++D++DD++++)****<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**)***+DD+DD++D++**++)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****D+++DDD++++D+*))++)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p*+++D++*DDDDDDD+DDDDDD+***D+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)*++DDD++DDDDDDDDDDDDD+*+)+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**+++++++DDDD+D+*)++*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)**++++DDDDDD+D+*+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***++++DDDDD+D++++*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***++DDDDDDD+++++*)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)+++DDDDDDD++DDDDD+)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*++D+DDDDDDDD*DDD+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+++DDDDDDDDD+DDDDD++<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+++DDDDDDDDD+DD+++*)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>++DDDDDDDDDDDD*+++)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)**+DDDDDDDDD++DD+)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>))++DDDDDDDD+D+*)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*+DDDDDD+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)+++DD+DDDDDD+++++**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**+DDDDDDD++++*+)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>))+*+DDDDDD++++++*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*****+DDD+D++++++*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**++++DD+DDDDD+++D+*++*<04><><EFBFBD><EFBFBD>*+++D+DDD++++D+*++*p<><70><EFBFBD>p)*+++D+DDD+D++++D*+**<04><>p)*++++++DDD+++D+)*+*<04><><EFBFBD>p**++*++DDDD++D++***<04><><EFBFBD>p)*++*+DDDDDD+D++***<04><><EFBFBD>**+*++DDDDD+++*+D)<04><>***+**+D+DDDD++**)<29><><EFBFBD>p)**+**++DDDDDDDD++++*+<0E><><EFBFBD><EFBFBD><EFBFBD>**++*+++DDDDDDDD+++*++*<04><><EFBFBD><EFBFBD>*++**++++DDDDDDDD++**+**)p<><70><EFBFBD>)****++DDDD+D+**+***<04><><EFBFBD>)*+**+++DDDDD++*+**<04><><EFBFBD>*+*)*++D+DDDDDD+*++*)p<><70><EFBFBD>)*)*++D++DDDD++*++**p<><70>**)+D+++DDD++++++*)p<><70>)+*D++++D+DDD+D+++*)p<04><><EFBFBD>p)***+D++++DDD+D+++*<04><><EFBFBD><EFBFBD>*)*)+D+++DDDDD+DD++++**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)*+++++D+DDD+*****<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*++++++DDDDDD+*+))<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)+*++++DDDDDDD+**<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**+++++DDDDDD+DD+++)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*+DDDDDDDDDD+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>))++DDDDDDDD+D+*)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)**+DDDDDDDDD++DD+)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>++DDDDDDDDDDDD*+++)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+++DDDDDDDDD+DD+++*)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+++DDDDDDDDD+DDDDD++<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*++D+DDDDDDDD*DDD+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)+++DDDDDDD++DDDDD+)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***++DDDDDDD+++++*)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***++++DDDDD+D++++*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)**++++DDDDDD+D+*+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**+++++++DDDD+D+*)++*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)*++DDD++DDDDDDDDDDDDD+*+)+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p*+++D++*DDDDDDD+DDDDDD+***D+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****D+++DDD++++D+*))++)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**)***+DD+DD++D++**++)<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)*++DD+++++D++DD++++)****<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)++++++++++D+++DD+DDDD+++++)*+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*)++D+DD+++++++DD+++DD+**<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DD+D+**+DD++DD+*<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*++D+++D*)*+++DD++DD+**<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p*++++++DD+*)*)*+**++**))<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pp)*********)))**))*)ppp<70><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p**<04><><EFBFBD>p<EFBFBD>pp)ppp<70><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
393
tests/qbasic_testcases/misc/cabsmous.bas
Normal file
393
tests/qbasic_testcases/misc/cabsmous.bas
Normal file
|
@ -0,0 +1,393 @@
|
|||
'Mouse utilities for text mode. Written by TFM 9/11/94
|
||||
'Uses INT 33 to use a Microsoft Compatable mouse driver
|
||||
'Written in basic calling an assembly language routine.
|
||||
'Works in normal basic
|
||||
|
||||
DECLARE FUNCTION inbox! (boxx1!, boxx2!, boxy1!, boxy2!) 'if pointer is in box return 1 else return 0
|
||||
DECLARE FUNCTION inboxpress1! (boxx1!, boxx2!, boxy1!, boxy2!) 'if last press was in box return 1 else return 0
|
||||
DECLARE FUNCTION inboxpress2! (boxx1!, boxx2!, boxy1!, boxy2!) 'if last press was in box return 1 else return 0
|
||||
DECLARE FUNCTION inboxrelease1! (boxx1!, boxx2!, boxy1!, boxy2!) 'if last release was in box return 1 else return 0
|
||||
DECLARE FUNCTION inboxrelease2! (boxx1!, boxx2!, boxy1!, boxy2!) 'if last release was in box return 1 else return 0
|
||||
DECLARE SUB releasemouse (button!) 'mouse x & y = last place botton 1 pressed
|
||||
DECLARE SUB pressmouse (button!) 'mouse x & y = last place botton 1 released
|
||||
DECLARE SUB hidemouse () 'hide mose
|
||||
DECLARE SUB mouseinterupt (ax!, bx!, cx!, dx!) 'int 33 with register values
|
||||
DECLARE SUB initmouse () 'sets up mouse & if found mouse passed = 1
|
||||
DECLARE SUB showmouse () 'show the mouse
|
||||
DECLARE SUB getxymouse () 'get position of mouse in mouse x & y and mouse buttons in mousebutton 1 & 2
|
||||
DECLARE SUB verticalmouse (miny!, maxy!) 'Set vertical mouse limmits
|
||||
DECLARE SUB horizontalmouse (miny!, maxy!) 'Set horizontal mouse limmits
|
||||
|
||||
DIM SHARED ax AS INTEGER
|
||||
DIM SHARED bx AS INTEGER
|
||||
DIM SHARED cx AS INTEGER
|
||||
DIM SHARED dx AS INTEGER
|
||||
DIM SHARED mousex AS INTEGER
|
||||
DIM SHARED mousey AS INTEGER
|
||||
DIM SHARED mousebutton1 AS INTEGER
|
||||
DIM SHARED mousebutton2 AS INTEGER
|
||||
DIM SHARED mousevisible AS INTEGER
|
||||
DIM SHARED mousepassed AS INTEGER
|
||||
|
||||
CLS
|
||||
|
||||
CALL initmouse
|
||||
CALL showmouse
|
||||
CALL horizontalmouse(10, 70) 'Set mouse position (min and max)
|
||||
CALL verticalmouse(10, 15) 'Set mouse position
|
||||
|
||||
DO
|
||||
CALL pressmouse(1) 'Wait for button 1 to be pressed
|
||||
|
||||
CALL getxymouse 'Store current positon in globals
|
||||
'This isn't needed coz pressmouse(1)
|
||||
'Already does it, but it is an example
|
||||
|
||||
'Display position, stored in global variables
|
||||
LOCATE 24, 1
|
||||
PRINT "X - "; mousex, " Y - "; mousey, " Button1 - "; mousebutton1; " Button2 - "; mousebutton2;
|
||||
|
||||
IF inboxpress1(10, 70, 10, 12) THEN
|
||||
LOCATE 24, 70
|
||||
PRINT "*";
|
||||
ELSE
|
||||
LOCATE 24, 70
|
||||
PRINT " ";
|
||||
END IF
|
||||
IF mousebutton1 = 1 THEN CALL hidemouse
|
||||
IF mousebutton2 = 1 THEN CALL showmouse
|
||||
LOOP
|
||||
|
||||
SUB getxymouse
|
||||
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
|
||||
CALL mouseinterupt(&H3, 0, 0, 0)
|
||||
|
||||
mousex = (cx / 8) + 1
|
||||
mousey = (dx / 8) + 1
|
||||
button = bx
|
||||
|
||||
|
||||
IF button = 0 THEN
|
||||
mousebutton1 = 0: mousebutton2 = 0
|
||||
ELSEIF button = 1 THEN
|
||||
mousebutton1 = 1: mousebutton2 = 0
|
||||
ELSEIF button = 2 THEN
|
||||
mousebutton1 = 0: mousebutton2 = 1
|
||||
ELSEIF button = 3 THEN
|
||||
mousebutton1 = 1: mousebutton2 = 1
|
||||
END IF
|
||||
|
||||
DEF SEG
|
||||
|
||||
|
||||
LOCATE 24, 1
|
||||
PRINT "X - "; mousex, " Y - "; mousey, " Button1 - "; mousebutton1; " Button2 - "; mousebutton2;
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
END SUB
|
||||
|
||||
SUB hidemouse
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
IF mousevisible = 1 THEN
|
||||
CALL mouseinterupt(2, 0, 0, 0)
|
||||
mousevisible = 0
|
||||
END IF
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB horizontalmouse (minx, maxx)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
IF minx < 0 THEN maxx = 0
|
||||
IF maxx > 80 THEN maxx = 80
|
||||
IF maxx < minx THEN maxx = minx
|
||||
CALL mouseinterupt(7, 0, (minx - 1) * 8, (maxx - 1) * 8)
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
FUNCTION inbox (boxx1, boxx2, boxy1, boxy2)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
CALL getxymouse
|
||||
IF mousex <= boxx2 AND mousex >= boxx1 AND mousey <= boxy2 AND mousey >= boxy1 THEN
|
||||
inbox = 1
|
||||
ELSE
|
||||
inbox = 0
|
||||
END IF
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION inboxpress1 (boxx1, boxx2, boxy1, boxy2)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
CALL pressmouse(1)
|
||||
IF mousex <= boxx2 AND mousex >= boxx1 AND mousey <= boxy2 AND mousey >= boxy1 THEN
|
||||
inboxpress1 = 1
|
||||
ELSE
|
||||
inboxpress1 = 0
|
||||
END IF
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION inboxpress2 (boxx1, boxx2, boxy1, boxy2)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
CALL pressmouse(2)
|
||||
IF mousex <= boxx2 AND mousex >= boxx1 AND mousey <= boxy2 AND mousey >= boxy1 THEN
|
||||
inboxpress2 = 1
|
||||
ELSE
|
||||
inboxpress2 = 0
|
||||
END IF
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION inboxrelease1 (boxx1, boxx2, boxy1, boxy2)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
CALL releasemouse(1)
|
||||
IF mousex <= boxx2 AND mousex >= boxx1 AND mousey <= boxy2 AND mousey >= boxy1 THEN
|
||||
inboxrelease1 = 1
|
||||
ELSE
|
||||
inboxrelease1 = 0
|
||||
END IF
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION inboxrelease2 (boxx1, boxx2, boxy1, boxy2)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
CALL releasemouse(2)
|
||||
IF mousex <= boxx2 AND mousex >= boxx1 AND mousey <= boxy2 AND mousey >= boxy1 THEN
|
||||
inboxrelease2 = 1
|
||||
ELSE
|
||||
inboxrelease2 = 0
|
||||
END IF
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
|
||||
END FUNCTION
|
||||
|
||||
SUB initmouse
|
||||
|
||||
|
||||
CALL mouseinterupt(0, 0, 0, 0)
|
||||
|
||||
IF ax = 2 THEN
|
||||
mousepassed = 1
|
||||
ELSE
|
||||
mousepassed = 0
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
|
||||
SUB mouseinterupt (m1, m2, m3, m4)
|
||||
|
||||
n1 = 0: n2 = 0: n3 = 0: n4 = 0
|
||||
|
||||
DO WHILE m1 > 255
|
||||
m1 = m1 - 255
|
||||
n1 = n1 + 1
|
||||
LOOP
|
||||
DO WHILE m2 > 255
|
||||
m2 = m2 - 255
|
||||
n2 = n2 + 1
|
||||
LOOP
|
||||
DO WHILE m3 > 255
|
||||
m3 = m3 - 255
|
||||
n3 = n3 + 1
|
||||
LOOP
|
||||
DO WHILE m4 > 255
|
||||
m4 = m4 - 255
|
||||
n4 = n4 + 1
|
||||
LOOP
|
||||
|
||||
DIM b%(47)
|
||||
DEF SEG = VARSEG(b%(0))
|
||||
|
||||
POKE VARPTR(b%(0)) + 0, &H50 'push AX
|
||||
POKE VARPTR(b%(0)) + 1, &H53 'push BX
|
||||
POKE VARPTR(b%(0)) + 2, &H51 'push CX
|
||||
POKE VARPTR(b%(0)) + 3, &H52 'push DX
|
||||
POKE VARPTR(b%(0)) + 4, &H1E 'push DS
|
||||
|
||||
POKE VARPTR(b%(0)) + 5, &HB8
|
||||
POKE VARPTR(b%(0)) + 6, m1 'set AX
|
||||
POKE VARPTR(b%(0)) + 7, n1
|
||||
|
||||
POKE VARPTR(b%(0)) + 8, &HBB
|
||||
POKE VARPTR(b%(0)) + 9, m2 'set BX
|
||||
POKE VARPTR(b%(0)) + 10, n2
|
||||
|
||||
POKE VARPTR(b%(0)) + 11, &HB9
|
||||
POKE VARPTR(b%(0)) + 12, m3 'set CX
|
||||
POKE VARPTR(b%(0)) + 13, n3
|
||||
|
||||
POKE VARPTR(b%(0)) + 14, &HBA
|
||||
POKE VARPTR(b%(0)) + 15, m4 'set DX
|
||||
POKE VARPTR(b%(0)) + 16, n4
|
||||
|
||||
POKE VARPTR(b%(0)) + 17, &HCD 'INT 33
|
||||
POKE VARPTR(b%(0)) + 18, &H33
|
||||
|
||||
POKE VARPTR(b%(0)) + 19, &H50 'push AX
|
||||
|
||||
POKE VARPTR(b%(0)) + 20, &HB8 'AX = B800
|
||||
POKE VARPTR(b%(0)) + 21, &H0
|
||||
POKE VARPTR(b%(0)) + 22, &HB8
|
||||
|
||||
POKE VARPTR(b%(0)) + 23, &H8E 'DS = AX
|
||||
POKE VARPTR(b%(0)) + 24, &HD8
|
||||
|
||||
POKE VARPTR(b%(0)) + 25, &H58 'pop AX
|
||||
|
||||
POKE VARPTR(b%(0)) + 26, &H89
|
||||
POKE VARPTR(b%(0)) + 27, &H1E '[0001] = AX
|
||||
POKE VARPTR(b%(0)) + 28, &HA1
|
||||
POKE VARPTR(b%(0)) + 29, &HF
|
||||
|
||||
POKE VARPTR(b%(0)) + 30, &H89
|
||||
POKE VARPTR(b%(0)) + 31, &H1E '[0003] = BX
|
||||
|
||||
POKE VARPTR(b%(0)) + 32, &HA3
|
||||
POKE VARPTR(b%(0)) + 33, &HF
|
||||
|
||||
POKE VARPTR(b%(0)) + 34, &H89
|
||||
POKE VARPTR(b%(0)) + 35, &HE '[0005] = CX
|
||||
POKE VARPTR(b%(0)) + 36, &HA5
|
||||
POKE VARPTR(b%(0)) + 37, &HF
|
||||
|
||||
POKE VARPTR(b%(0)) + 38, &H89
|
||||
POKE VARPTR(b%(0)) + 39, &H16 '[0007] = DX
|
||||
POKE VARPTR(b%(0)) + 40, &HA7
|
||||
POKE VARPTR(b%(0)) + 41, &HF
|
||||
|
||||
|
||||
POKE VARPTR(b%(0)) + 42, &H1F 'pop DS
|
||||
POKE VARPTR(b%(0)) + 43, &H5A 'pop DX
|
||||
POKE VARPTR(b%(0)) + 44, &H59 'pop CX
|
||||
POKE VARPTR(b%(0)) + 45, &H5B 'pop BX
|
||||
POKE VARPTR(b%(0)) + 46, &H58 'pop AX
|
||||
|
||||
POKE VARPTR(b%(0)) + 47, &HCB 'RETF
|
||||
|
||||
|
||||
CALL ABSOLUTE(VARPTR(b%(0)))
|
||||
|
||||
DEF SEG = &HB800
|
||||
ax = PEEK(&HFA1) + 256 * PEEK(&HFA2)
|
||||
bx = PEEK(&HFA3) + 256 * PEEK(&HFA4)
|
||||
cx = PEEK(&HFA5) + 256 * PEEK(&HFA6)
|
||||
dx = PEEK(&HFA7) + 256 * PEEK(&HFA8)
|
||||
|
||||
|
||||
END SUB
|
||||
|
||||
SUB movemouse (newx, newy)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
IF newx < 26 AND newx > 0 AND newy < 81 AND newy > 0 THEN
|
||||
CALL mouseinterupt(4, 0, (newx - 1) * 8, (newy - 1) * 8)
|
||||
mousex = newx
|
||||
mousey = newy
|
||||
ELSE
|
||||
PRINT
|
||||
PRINT "Illegal mouse position!!!";
|
||||
END IF
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB pressmouse (button)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
CALL mouseinterupt(5, button - 1, 0, 0)
|
||||
mousex = (cx / 8) + 1
|
||||
mousey = (dx / 8) + 1
|
||||
|
||||
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
END SUB
|
||||
|
||||
SUB releasemouse (button)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
CALL mouseinterupt(5, button - 1, 0, 0)
|
||||
mousex = (cx / 8) + 1
|
||||
mousey = (dx / 8) + 1
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB showmouse
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
IF mousevisible = 0 THEN
|
||||
CALL mouseinterupt(1, 0, 0, 0)
|
||||
mousevisible = 1
|
||||
END IF
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB verticalmouse (miny, maxy)
|
||||
|
||||
IF mousepassed = 1 THEN
|
||||
IF miny < 0 THEN maxy = 0
|
||||
IF maxy > 25 THEN maxy = 25
|
||||
IF maxy < miny THEN maxy = miny
|
||||
CALL mouseinterupt(8, 0, (miny - 1) * 8, (maxy - 1) * 8)
|
||||
ELSE
|
||||
LOCATE 24, 1
|
||||
PRINT "Sorry no mouse found"
|
||||
END IF
|
||||
|
||||
|
||||
END SUB
|
1328
tests/qbasic_testcases/misc/carols.bas
Normal file
1328
tests/qbasic_testcases/misc/carols.bas
Normal file
File diff suppressed because it is too large
Load diff
543
tests/qbasic_testcases/misc/chess.bas
Normal file
543
tests/qbasic_testcases/misc/chess.bas
Normal file
|
@ -0,0 +1,543 @@
|
|||
DEFINT A-Z
|
||||
DECLARE SUB SQUARE (A, B, C)
|
||||
DECLARE SUB SHOWMAN (A, B, FLAG)
|
||||
DECLARE SUB SHOWBD ()
|
||||
DECLARE SUB IO (A, B, X, Y, RESULT)
|
||||
DECLARE FUNCTION INCHECK (X)
|
||||
DECLARE SUB MAKEMOVE (A, B, X, Y)
|
||||
DECLARE SUB KNIGHT (A, B, XX(), YY(), NDX)
|
||||
DECLARE SUB KING (A, B, XX(), YY(), NDX)
|
||||
DECLARE SUB QUEEN (A, B, XX(), YY(), NDX)
|
||||
DECLARE SUB ROOK (A, B, XX(), YY(), NDX)
|
||||
DECLARE SUB BISHOP (A, B, XX(), YY(), NDX)
|
||||
DECLARE SUB MOVELIST (A, B, XX(), YY(), NDX)
|
||||
DECLARE SUB PAWN (A, B, XX(), YY(), NDX)
|
||||
DECLARE FUNCTION EVALUATE (ID, PRUNE)
|
||||
DIM SHARED BOARD(0 TO 7, 0 TO 7)
|
||||
DIM SHARED BESTA(0 TO 7), BESTB(0 TO 7), BESTX(0 TO 7), BESTY(0 TO 7)
|
||||
DIM SHARED LEVEL, MAXLEVEL, SCORE
|
||||
DIM SHARED WCKSFLAG, WCQSFLAG, INTFLAG
|
||||
DIM SHARED WCKSOLD, WCQSOLD
|
||||
LEVEL = 0
|
||||
MAXLEVEL = 5 'change this to higher to make it think ahead more
|
||||
DATA -500,-270,-300,-900,-7500,-300,-270,-500
|
||||
DATA -100,-100,-100,-100, -100,-100,-100,-100
|
||||
DATA 0, 0, 0, 0, 0, 0, 0, 0
|
||||
DATA 0, 0, 0, 0, 0, 0, 0, 0
|
||||
DATA 0, 0, 0, 0, 0, 0, 0, 0
|
||||
DATA 0, 0, 0, 0, 0, 0, 0, 0
|
||||
DATA 100, 100, 100, 100, 100, 100, 100, 100
|
||||
DATA 500, 270, 300, 900, 5000,300, 270, 500
|
||||
FOR X = 0 TO 7
|
||||
FOR Y = 0 TO 7
|
||||
READ Z
|
||||
BOARD(X, Y) = Z
|
||||
NEXT Y
|
||||
NEXT X
|
||||
A = -1
|
||||
RESULT = 0
|
||||
CLS
|
||||
LOCATE , 34
|
||||
PRINT "QBASIC CHESS"
|
||||
PRINT
|
||||
PRINT " CHESS is a game played between two players on a board of 64 squares."
|
||||
PRINT " Chess was first invented in its current form in Europe during the late"
|
||||
PRINT " fifteenth century. It evolved from much earlier forms invented in India"
|
||||
PRINT " and Persia."
|
||||
PRINT " The pieces are divided into Black and White. Each player has 16 pieces:"
|
||||
PRINT " 1 king, 1 queen, 2 rooks, 2 bishops, 2 knights, and 8 pawns. White makes"
|
||||
PRINT " the first move. The players alternate moving one piece at a time. Pieces"
|
||||
PRINT " are moved to an unoccupied square, or moved onto a square occupied by an"
|
||||
PRINT " opponent's piece, capturing it. When the king is under attack, he is in"
|
||||
PRINT " CHECK. The player cannot put his king in check. The object is to CHECKMATE"
|
||||
PRINT " the opponent. This occurs when the king is in check and there is no way to"
|
||||
PRINT " remove the king from attack."
|
||||
PRINT " To move the pieces on the chessboard, type in your move in coordinate"
|
||||
PRINT " notation, e.g. E2-E4 (not in English notation like P-K4). To castle, type O-O"
|
||||
PRINT " to castle kingside or O-O-O to castle queenside like in English notation."
|
||||
PRINT " To exit the game, type QUIT."
|
||||
PRINT
|
||||
PRINT "Press any key to continue."
|
||||
Z$ = INPUT$(1)
|
||||
DO
|
||||
SCORE = 0
|
||||
CALL IO(A, B, X, Y, RESULT)
|
||||
CLS
|
||||
CALL SHOWBD
|
||||
RESULT = EVALUATE(-1, 10000)
|
||||
A = BESTA(1)
|
||||
B = BESTB(1)
|
||||
X = BESTX(1)
|
||||
Y = BESTY(1)
|
||||
LOOP
|
||||
|
||||
SUB BISHOP (A, B, XX(), YY(), NDX)
|
||||
ID = SGN(BOARD(B, A))
|
||||
FOR DXY = 1 TO 7
|
||||
X = A - DXY
|
||||
Y = B + DXY
|
||||
IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN EXIT FOR
|
||||
GOSUB 3
|
||||
IF BOARD(Y, X) <> 0 THEN EXIT FOR
|
||||
NEXT
|
||||
FOR DXY = 1 TO 7
|
||||
X = A + DXY
|
||||
Y = B + DXY
|
||||
IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN EXIT FOR
|
||||
GOSUB 3
|
||||
IF BOARD(Y, X) <> 0 THEN EXIT FOR
|
||||
NEXT
|
||||
FOR DXY = 1 TO 7
|
||||
X = A - DXY
|
||||
Y = B - DXY
|
||||
IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN EXIT FOR
|
||||
GOSUB 3
|
||||
IF BOARD(Y, X) <> 0 THEN EXIT FOR
|
||||
NEXT
|
||||
FOR DXY = 1 TO 7
|
||||
X = A + DXY
|
||||
Y = B - DXY
|
||||
IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN EXIT FOR
|
||||
GOSUB 3
|
||||
IF BOARD(Y, X) <> 0 THEN EXIT FOR
|
||||
NEXT
|
||||
EXIT SUB
|
||||
3 REM
|
||||
IF ID <> SGN(BOARD(Y, X)) THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = X
|
||||
YY(NDX) = Y
|
||||
END IF
|
||||
RETURN
|
||||
END SUB
|
||||
|
||||
FUNCTION EVALUATE (ID, PRUNE)
|
||||
DIM XX(0 TO 26), YY(0 TO 26)
|
||||
LEVEL = LEVEL + 1
|
||||
BESTSCORE = 10000 * ID
|
||||
FOR B = 7 TO 0 STEP -1
|
||||
FOR A = 7 TO 0 STEP -1
|
||||
IF SGN(BOARD(B, A)) <> ID THEN GOTO 1
|
||||
IF (LEVEL = 1) THEN CALL SHOWMAN(A, B, 8)
|
||||
CALL MOVELIST(A, B, XX(), YY(), NDX)
|
||||
FOR I = 0 TO NDX
|
||||
X = XX(I)
|
||||
Y = YY(I)
|
||||
IF LEVEL = 1 THEN
|
||||
LOCATE 1, 1
|
||||
PRINT "TRYING: "; CHR$(65 + A); 8 - B; "-"; CHR$(65 + X); 8 - Y
|
||||
CALL SHOWMAN(X, Y, 8)
|
||||
END IF
|
||||
OLDSCORE = SCORE
|
||||
MOVER = BOARD(B, A)
|
||||
TARGET = BOARD(Y, X)
|
||||
CALL MAKEMOVE(A, B, X, Y)
|
||||
IF (LEVEL < MAXLEVEL) THEN SCORE = SCORE + EVALUATE(-ID, BESTSCORE - TARGET + ID * (8 - ABS(4 - X) - ABS(4 - Y)))
|
||||
SCORE = SCORE + TARGET - ID * (8 - ABS(4 - X) - ABS(4 - Y))
|
||||
IF (ID < 0 AND SCORE > BESTSCORE) OR (ID > 0 AND SCORE < BESTSCORE) THEN
|
||||
BESTA(LEVEL) = A
|
||||
BESTB(LEVEL) = B
|
||||
BESTX(LEVEL) = X
|
||||
BESTY(LEVEL) = Y
|
||||
BESTSCORE = SCORE
|
||||
IF (ID < 0 AND BESTSCORE >= PRUNE) OR (ID > 0 AND BESTSCORE <= PRUNE) THEN
|
||||
BOARD(B, A) = MOVER
|
||||
BOARD(Y, X) = TARGET
|
||||
SCORE = OLDSCORE
|
||||
IF (LEVEL = 1) THEN CALL SHOWMAN(X, Y, 0)
|
||||
IF (LEVEL = 1) THEN CALL SHOWMAN(A, B, 0)
|
||||
LEVEL = LEVEL - 1
|
||||
EVALUATE = BESTSCORE
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
END IF
|
||||
BOARD(B, A) = MOVER
|
||||
BOARD(Y, X) = TARGET
|
||||
SCORE = OLDSCORE
|
||||
IF (LEVEL = 1) THEN CALL SHOWMAN(X, Y, 0)
|
||||
NEXT
|
||||
IF (LEVEL = 1) THEN CALL SHOWMAN(A, B, 0)
|
||||
1 NEXT
|
||||
NEXT
|
||||
LEVEL = LEVEL - 1
|
||||
EVALUATE = BESTSCORE
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION INCHECK (X)
|
||||
DIM XX(27), YY(27), NDX
|
||||
FOR B = 0 TO 7
|
||||
FOR A = 0 TO 7
|
||||
IF BOARD(B, A) >= 0 THEN GOTO 6
|
||||
CALL MOVELIST(A, B, XX(), YY(), NDX)
|
||||
FOR I = 0 TO NDX STEP 1
|
||||
X = XX(I)
|
||||
Y = YY(I)
|
||||
IF BOARD(Y, X) = 5000 THEN
|
||||
PRINT "YOU ARE IN CHECK!"
|
||||
PRINT " "
|
||||
PRINT " "
|
||||
INCHECK = 1
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
NEXT
|
||||
6 NEXT
|
||||
NEXT
|
||||
INCHECK = 0
|
||||
END FUNCTION
|
||||
|
||||
SUB IO (A, B, X, Y, RESULT)
|
||||
DIM XX(0 TO 26), YY(0 TO 26)
|
||||
CLS
|
||||
IF A >= 0 THEN
|
||||
IF RESULT < -2500 THEN
|
||||
PRINT "I RESIGN"
|
||||
SLEEP
|
||||
SYSTEM
|
||||
END IF
|
||||
PIECE = BOARD(Y, X)
|
||||
CALL MAKEMOVE(A, B, X, Y)
|
||||
PRINT "MY MOVE: "; CHR$(65 + A); 8 - B; "-"; CHR$(65 + X); 8 - Y
|
||||
IF PIECE <> 0 THEN
|
||||
PRINT "I TOOK YOUR ";
|
||||
IF PIECE = 100 THEN PRINT "PAWN"
|
||||
IF PIECE = 270 THEN PRINT "KNIGHT"
|
||||
IF PIECE = 300 THEN PRINT "BISHOP"
|
||||
IF PIECE = 500 THEN PRINT "ROOK"
|
||||
IF PIECE = 900 THEN PRINT "QUEEN"
|
||||
IF PIECE = 5000 THEN PRINT "KING"
|
||||
END IF
|
||||
NULL = INCHECK(0)
|
||||
END IF
|
||||
DO
|
||||
CALL SHOWBD
|
||||
VIEW PRINT 24 TO 24
|
||||
INPUT "YOUR MOVE: ", IN$
|
||||
IF UCASE$(IN$) = "QUIT" THEN CLS : END
|
||||
IF UCASE$(IN$) = "O-O" OR IN$ = "0-0" THEN
|
||||
IF WCKSFLAG <> 0 THEN GOTO 16
|
||||
IF BOARD(7, 7) <> 500 THEN GOTO 16
|
||||
IF BOARD(7, 6) <> 0 OR BOARD(7, 5) <> 0 THEN GOTO 16
|
||||
BOARD(7, 6) = 5000
|
||||
BOARD(7, 4) = 0
|
||||
BOARD(7, 5) = 500
|
||||
BOARD(7, 7) = 0
|
||||
WCKSFLAG = -1
|
||||
EXIT SUB
|
||||
END IF
|
||||
IF UCASE$(IN$) = "O-O-O" OR IN$ = "0-0-0" THEN
|
||||
IF WCQSFLAG <> 0 THEN GOTO 16
|
||||
IF BOARD(7, 0) <> 500 THEN GOTO 16
|
||||
IF BOARD(7, 1) <> 0 OR BOARD(7, 2) <> 0 OR BOARD(7, 3) <> 0 THEN GOTO 16
|
||||
BOARD(7, 2) = 5000
|
||||
BOARD(7, 4) = 0
|
||||
BOARD(7, 3) = 500
|
||||
BOARD(7, 0) = 0
|
||||
WCQSFLAG = -1
|
||||
EXIT SUB
|
||||
END IF
|
||||
IF LEN(IN$) < 5 THEN GOTO 16
|
||||
B = 8 - (ASC(MID$(IN$, 2, 1)) - 48)
|
||||
A = ASC(UCASE$(MID$(IN$, 1, 1))) - 65
|
||||
X = ASC(UCASE$(MID$(IN$, 4, 1))) - 65
|
||||
Y = 8 - (ASC(MID$(IN$, 5, 1)) - 48)
|
||||
IF B > 7 OR B < 0 OR A > 7 OR A < 0 OR X > 7 OR X < 0 OR Y > 7 OR Y < 0 THEN GOTO 16
|
||||
IF BOARD(B, A) <= 0 THEN GOTO 16
|
||||
IF Y = 2 AND B = 3 AND (X = A - 1 OR X = A + 1) THEN
|
||||
IF BOARD(B, A) = 100 AND BOARD(Y, X) = 0 AND BOARD(Y + 1, X) = -100 THEN
|
||||
IF BESTB(1) = 1 AND BESTA(1) = X THEN
|
||||
MOVER = BOARD(B, A)
|
||||
TARGET = BOARD(Y, X)
|
||||
CALL MAKEMOVE(A, B, X, Y)
|
||||
BOARD(Y + 1, X) = 0
|
||||
ENPASSANT = -1
|
||||
GOTO 15
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
CALL MOVELIST(A, B, XX(), YY(), NDX)
|
||||
FOR K = 0 TO NDX STEP 1
|
||||
IF X = XX(K) AND Y = YY(K) THEN
|
||||
MOVER = BOARD(B, A)
|
||||
TARGET = BOARD(Y, X)
|
||||
INTFLAG = -1
|
||||
CALL MAKEMOVE(A, B, X, Y)
|
||||
IF MOVER = 5000 THEN
|
||||
WCQSOLD = WCQSFLAG
|
||||
WCKSOLD = WCKSFLAG
|
||||
WCKSFLAG = -1
|
||||
WCQSFLAG = -1
|
||||
END IF
|
||||
IF (A = 0) AND (B = 7) AND (MOVER = 500) THEN
|
||||
WCQSOLD = WCQSFLAG
|
||||
WCQSFLAG = -1
|
||||
END IF
|
||||
IF (A = 7) AND (B = 7) AND (MOVER = 500) THEN
|
||||
WCKSOLD = WCKSFLAG
|
||||
WCKSFLAG = -1
|
||||
END IF
|
||||
INTFLAG = 0
|
||||
15 IF INCHECK(0) = 0 THEN EXIT SUB
|
||||
BOARD(B, A) = MOVER
|
||||
BOARD(Y, X) = TARGET
|
||||
IF ENPASSANT THEN BOARD(Y + 1, X) = -100: ENPASSANT = 0
|
||||
IF (A = 0) AND (B = 7) AND (MOVER = 500) THEN WCQSFLAG = WCQSOLD
|
||||
IF (A = 7) AND (B = 7) AND (MOVER = 500) THEN WCKSFLAG = WCKSOLD
|
||||
IF MOVER = 5000 THEN WCQSFLAG = WCQSOLD
|
||||
GOTO 16
|
||||
END IF
|
||||
NEXT
|
||||
16 CLS
|
||||
LOOP
|
||||
END SUB
|
||||
|
||||
SUB KING (A, B, XX(), YY(), NDX)
|
||||
ID = SGN(BOARD(B, A))
|
||||
FOR DY = -1 TO 1
|
||||
IF B + DY < 0 OR B + DY > 7 THEN GOTO 12
|
||||
FOR DX = -1 TO 1
|
||||
IF A + DX < 0 OR A + DX > 7 THEN GOTO 11
|
||||
IF ID <> SGN(BOARD(B + DY, A + DX)) THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = A + DX
|
||||
YY(NDX) = B + DY
|
||||
END IF
|
||||
11 NEXT
|
||||
12 NEXT
|
||||
END SUB
|
||||
|
||||
SUB KNIGHT (A, B, XX(), YY(), NDX)
|
||||
ID = SGN(BOARD(B, A))
|
||||
X = A - 1
|
||||
Y = B - 2
|
||||
GOSUB 5
|
||||
X = A - 2
|
||||
Y = B - 1
|
||||
GOSUB 5
|
||||
X = A + 1
|
||||
Y = B - 2
|
||||
GOSUB 5
|
||||
X = A + 2
|
||||
Y = B - 1
|
||||
GOSUB 5
|
||||
X = A - 1
|
||||
Y = B + 2
|
||||
GOSUB 5
|
||||
X = A - 2
|
||||
Y = B + 1
|
||||
GOSUB 5
|
||||
X = A + 1
|
||||
Y = B + 2
|
||||
GOSUB 5
|
||||
X = A + 2
|
||||
Y = B + 1
|
||||
GOSUB 5
|
||||
EXIT SUB
|
||||
5 REM
|
||||
IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN RETURN
|
||||
IF ID <> SGN(BOARD(Y, X)) THEN NDX = NDX + 1: XX(NDX) = X: YY(NDX) = Y
|
||||
RETURN
|
||||
END SUB
|
||||
|
||||
SUB MAKEMOVE (A, B, X, Y)
|
||||
BOARD(Y, X) = BOARD(B, A)
|
||||
BOARD(B, A) = 0
|
||||
IF Y = 0 AND BOARD(Y, X) = 100 THEN
|
||||
IF INTFLAG THEN
|
||||
DO
|
||||
VIEW PRINT 24 TO 24
|
||||
INPUT "PROMOTE TO: ", I$
|
||||
SELECT CASE UCASE$(I$)
|
||||
CASE "KNIGHT", "N", "Kt", "Kt.", "N."
|
||||
PROMOTE = 270
|
||||
CASE "BISHOP", "B", "B."
|
||||
PROMOTE = 300
|
||||
CASE "ROOK", "R", "R."
|
||||
PROMOTE = 500
|
||||
CASE "QUEEN", "Q", "Q."
|
||||
PROMOTE = 900
|
||||
END SELECT
|
||||
LOOP UNTIL PROMOTE <> 0
|
||||
BOARD(Y, X) = PROMOTE
|
||||
ELSE
|
||||
BOARD(Y, X) = -900
|
||||
END IF
|
||||
END IF
|
||||
IF Y = 7 AND BOARD(Y, X) = -100 THEN BOARD(Y, X) = -900
|
||||
END SUB
|
||||
|
||||
SUB MOVELIST (A, B, XX(), YY(), NDX)
|
||||
PIECE = INT(ABS(BOARD(B, A)))
|
||||
NDX = -1
|
||||
IF PIECE = 100 THEN
|
||||
CALL PAWN(A, B, XX(), YY(), NDX)
|
||||
ELSEIF PIECE = 270 THEN CALL KNIGHT(A, B, XX(), YY(), NDX)
|
||||
ELSEIF PIECE = 300 THEN CALL BISHOP(A, B, XX(), YY(), NDX)
|
||||
ELSEIF PIECE = 500 THEN CALL ROOK(A, B, XX(), YY(), NDX)
|
||||
ELSEIF PIECE = 900 THEN CALL QUEEN(A, B, XX(), YY(), NDX)
|
||||
ELSE CALL KING(A, B, XX(), YY(), NDX)
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB PAWN (A, B, XX(), YY(), NDX)
|
||||
ID = SGN(BOARD(B, A))
|
||||
IF (A - 1) >= 0 AND (A - 1) <= 7 AND (B - ID) >= 0 AND (B - ID) <= 7 THEN
|
||||
IF SGN(BOARD((B - ID), (A - 1))) = -ID THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = A - 1
|
||||
YY(NDX) = B - ID
|
||||
END IF
|
||||
END IF
|
||||
IF (A + 1) >= 0 AND (A + 1) <= 7 AND (B - ID) >= 0 AND (B - ID) <= 7 THEN
|
||||
IF SGN(BOARD((B - ID), (A + 1))) = -ID THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = A + 1
|
||||
YY(NDX) = B - ID
|
||||
END IF
|
||||
END IF
|
||||
IF A >= 0 AND A <= 7 AND (B - ID) >= 0 AND (B - ID) <= 7 THEN
|
||||
IF BOARD((B - ID), A) = 0 THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = A
|
||||
YY(NDX) = B - ID
|
||||
IF (ID < 0 AND B = 1) OR (ID > 0 AND B = 6) THEN
|
||||
IF BOARD((B - ID - ID), A) = 0 THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = A
|
||||
YY(NDX) = B - ID - ID
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB QUEEN (A, B, XX(), YY(), NDX)
|
||||
CALL BISHOP(A, B, XX(), YY(), NDX)
|
||||
CALL ROOK(A, B, XX(), YY(), NDX)
|
||||
END SUB
|
||||
|
||||
SUB ROOK (A, B, XX(), YY(), NDX)
|
||||
ID = SGN(BOARD(B, A))
|
||||
FOR X = A - 1 TO 0 STEP -1
|
||||
IF ID <> SGN(BOARD(B, X)) THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = X
|
||||
YY(NDX) = B
|
||||
END IF
|
||||
IF (BOARD(B, X)) <> 0 THEN EXIT FOR
|
||||
NEXT
|
||||
FOR X = A + 1 TO 7 STEP 1
|
||||
IF ID <> SGN(BOARD(B, X)) THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = X
|
||||
YY(NDX) = B
|
||||
END IF
|
||||
IF (BOARD(B, X)) <> 0 THEN EXIT FOR
|
||||
NEXT
|
||||
FOR Y = B - 1 TO 0 STEP -1
|
||||
IF ID <> SGN(BOARD(Y, A)) THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = A
|
||||
YY(NDX) = Y
|
||||
END IF
|
||||
IF (BOARD(Y, A)) <> 0 THEN EXIT FOR
|
||||
NEXT
|
||||
FOR Y = B + 1 TO 7 STEP 1
|
||||
IF ID <> SGN(BOARD(Y, A)) THEN
|
||||
NDX = NDX + 1
|
||||
XX(NDX) = A
|
||||
YY(NDX) = Y
|
||||
END IF
|
||||
IF (BOARD(Y, A)) <> 0 THEN EXIT FOR
|
||||
NEXT
|
||||
END SUB
|
||||
|
||||
SUB SHOWBD
|
||||
VIEW PRINT
|
||||
LOCATE 3, 30
|
||||
COLOR 7, 0
|
||||
PRINT "A B C D E F G H"
|
||||
FOR K = 0 TO 25
|
||||
LOCATE 4, 28 + K
|
||||
COLOR 6, 0
|
||||
PRINT CHR$(220)
|
||||
NEXT
|
||||
FOR B = 0 TO 7
|
||||
LOCATE 2 * B + 5, 26
|
||||
COLOR 7, 0
|
||||
PRINT CHR$(56 - B)
|
||||
LOCATE 2 * B + 5, 28
|
||||
COLOR 6, 0
|
||||
PRINT CHR$(219)
|
||||
LOCATE 2 * B + 6, 28
|
||||
COLOR 6, 0
|
||||
PRINT CHR$(219)
|
||||
FOR A = 0 TO 7
|
||||
IF ((A + B) MOD 2) <> 0 THEN
|
||||
COLOUR = 2
|
||||
ELSE COLOUR = 15
|
||||
END IF
|
||||
CALL SQUARE(3 * A + 31, 2 * B + 5, COLOUR)
|
||||
NEXT
|
||||
LOCATE 2 * B + 5, 53
|
||||
COLOR 6, 0
|
||||
PRINT CHR$(219)
|
||||
LOCATE 2 * B + 6, 53
|
||||
COLOR 6, 0
|
||||
PRINT CHR$(219)
|
||||
LOCATE 2 * B + 6, 55
|
||||
COLOR 7, 0
|
||||
PRINT CHR$(56 - B)
|
||||
NEXT
|
||||
FOR K = 0 TO 25
|
||||
LOCATE 21, 28 + K
|
||||
COLOR 6, 0
|
||||
PRINT CHR$(223)
|
||||
NEXT
|
||||
LOCATE 22, 30
|
||||
COLOR 7, 0
|
||||
PRINT "A B C D E F G H"
|
||||
FOR B = 0 TO 7
|
||||
FOR A = 0 TO 7
|
||||
CALL SHOWMAN(A, B, 0)
|
||||
NEXT
|
||||
NEXT
|
||||
COLOR 7, 0
|
||||
END SUB
|
||||
|
||||
SUB SHOWMAN (A, B, FLAG)
|
||||
IF BOARD(B, A) < 0 THEN BACK = 0
|
||||
IF BOARD(B, A) > 0 THEN BACK = 7
|
||||
FORE = 7 - BACK + FLAG
|
||||
IF BOARD(B, A) = 0 THEN
|
||||
IF ((A + B) MOD 2) <> 0 THEN BACK = 2 ELSE BACK = 15
|
||||
FORE = BACK + -1 * (FLAG > 0)
|
||||
END IF
|
||||
N$ = " "
|
||||
PIECE = INT(ABS(BOARD(B, A)))
|
||||
IF PIECE = 0 THEN N$ = CHR$(219)
|
||||
IF PIECE = 100 THEN N$ = "P"
|
||||
IF PIECE = 270 THEN N$ = "N"
|
||||
IF PIECE = 300 THEN N$ = "B"
|
||||
IF PIECE = 500 THEN N$ = "R"
|
||||
IF PIECE = 900 THEN N$ = "Q"
|
||||
IF PIECE = 5000 OR PIECE = 7500 THEN N$ = "K"
|
||||
LOCATE 2 * B + 5 - (BOARD(B, A) > 0), 3 * A + 30
|
||||
COLOR FORE, BACK
|
||||
PRINT N$
|
||||
LOCATE 1, 1
|
||||
COLOR 7, 0
|
||||
END SUB
|
||||
|
||||
SUB SQUARE (A, B, C)
|
||||
MT$ = CHR$(219)
|
||||
MT$ = MT$ + MT$ + MT$
|
||||
LOCATE B, A - 2
|
||||
COLOR C, C
|
||||
PRINT MT$
|
||||
LOCATE B + 1, A - 2
|
||||
COLOR C, C
|
||||
PRINT MT$
|
||||
COLOR 7, 0
|
||||
END SUB
|
16
tests/qbasic_testcases/misc/cuberot.bas
Normal file
16
tests/qbasic_testcases/misc/cuberot.bas
Normal file
|
@ -0,0 +1,16 @@
|
|||
' cube rotator in 11 lines. From a 19 liner by Entropy, shrinked by Antoni Gual
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
1 IF x1 = 0 THEN SCREEN 13 ELSE r = (r + .01745) + 6.283185 * (r >= 6.283185)
|
||||
2 FOR x = -30 TO 30 STEP 10
|
||||
3 FOR y = -30 TO 30 STEP 10
|
||||
4 FOR z = -30 TO 30 STEP 10
|
||||
5 x1 = ((x * COS(r) - (z * COS(r) - y * SIN(r)) * SIN(r)) * COS(r) + (y * COS(r) + z * SIN(r)) * SIN(r)) / (x * SIN(r) + (z * COS(r) - y * SIN(r)) * COS(r) + 100)
|
||||
6 y1 = ((y * COS(r) + z * SIN(r)) * COS(r) - (x * COS(r) - (z * COS(r) - y * SIN(r)) * SIN(r)) * SIN(r)) / (x * SIN(r) + (z * COS(r) - y * SIN(r)) * COS(r) + 100)
|
||||
7 PSET ((100 * x1 + 160), (100 * y1 + 100)), 31
|
||||
'7 PSET ((100 * (((x * COS(r) - (z * COS(r) - y * SIN(r)) * SIN(r)) * COS(r) + (y * COS(r) + z * SIN(r)) * SIN(r)) / (x * SIN(r) + (z * COS(r) - y * SIN(r)) * COS(r) + 100)) + 160), (100 * (((y * COS(r) + z * SIN(r)) * COS(r) - (x * COS(r) - (z * COS(r) - y * SIN(r)) * SIN(r)) * SIN(r)) / (x * SIN(r) + (z * COS(r) - y * SIN(r)) * COS(r) + 100)) + 100)), 31
|
||||
8 NEXT z, y, x
|
||||
9 WAIT &H3DA, 8
|
||||
10 LINE (99, 39)-(221, 161), 0, BF
|
||||
11 IF LEN(INKEY$) = 0 THEN GOTO 1
|
||||
|
914
tests/qbasic_testcases/misc/djsok.bas
Normal file
914
tests/qbasic_testcases/misc/djsok.bas
Normal file
|
@ -0,0 +1,914 @@
|
|||
CHDIR ".\programs\samples\misc"
|
||||
|
||||
'/=================================================================\
|
||||
' (C) David Joffe 1997 e-mail: djoffe@icon.co.za
|
||||
' DJ Software; April '97 http://www.scorpioncity.com/
|
||||
'-------------------------------------------------------------------
|
||||
' VGA Sokoban v1.0, for QBasic!
|
||||
'-------------------------------------------------------------------
|
||||
' -[ The object of the game: ]----------------------------------
|
||||
' You are a Pacman derivative; you must push all the crate-type
|
||||
' blocks onto the destination-type blocks. There are 90 levels,
|
||||
' which I got from XSokoban, a sokoban for the X Window System.
|
||||
' --------------------------------------------------------------
|
||||
'
|
||||
' You can do whatever you want with this program, on the single
|
||||
' preferred condition that if you create any derivative works,
|
||||
' I would like to be credited, at minimum with a link to my
|
||||
' website.
|
||||
'
|
||||
' Please send me bug-reports and any other feedback; i.e. tell
|
||||
' me you like it or hate it or have no opinion about it, but just
|
||||
' tell me something!
|
||||
'
|
||||
' New levels: I would love it if you create new levels (or even
|
||||
' new sprites) if you would send them to me; they will probably
|
||||
' be included in later versions, in which case you will get credit.
|
||||
'
|
||||
' The savegame file format is a really tough one to crack, but
|
||||
' see if you can give it a go ;-)
|
||||
'\=================================================================/
|
||||
|
||||
' Draw a rectangle with highlights.
|
||||
DECLARE SUB DrawBox (x1%, y1%, x2%, y2%, col1%, col2%, bgfill%)
|
||||
|
||||
' Default data type to integer for fastest processing
|
||||
DEFINT A-Z
|
||||
|
||||
' To hold sprites
|
||||
DIM Graphics(1 TO 2000)
|
||||
|
||||
' The following piece of code first tries for VGA; if that fails,
|
||||
' it tries EGA. If that fails, it leaves.
|
||||
ON ERROR GOTO TryEGA
|
||||
SCREEN 13
|
||||
GOTO GraphicsSuccess
|
||||
|
||||
TryEGA:
|
||||
ON ERROR GOTO NoGraphics
|
||||
SCREEN 7
|
||||
GOTO GraphicsSuccess
|
||||
|
||||
NoGraphics:
|
||||
COLOR 15, 0: CLS
|
||||
PRINT "You don't seem to have graphics capable hardware."
|
||||
PRINT "There is a text version available though."
|
||||
PRINT
|
||||
GOTO ContactMessage
|
||||
|
||||
GraphicsSuccess:
|
||||
ON ERROR GOTO 0
|
||||
|
||||
' Draw the graphics and GET it
|
||||
RESTORE GraphicsData
|
||||
FOR i = 0 TO 23
|
||||
FOR j = 0 TO 10
|
||||
FOR k = 0 TO 10
|
||||
READ n
|
||||
PSET (k, j), n
|
||||
NEXT k
|
||||
NEXT j
|
||||
GET (0, 0)-(10, 10), Graphics(i * 80 + 1)
|
||||
NEXT i
|
||||
|
||||
' Constants
|
||||
DIM SHARED NUMLEVELS
|
||||
NUMLEVELS = 90
|
||||
|
||||
DIM SHARED LEVELFILENAME AS STRING
|
||||
LEVELFILENAME$ = "djsok.dat"
|
||||
DIM SHARED OFSX
|
||||
OFSX = 6
|
||||
DIM SHARED OFSY
|
||||
OFSY = 6
|
||||
|
||||
' Dimensions of playing area
|
||||
DIM SHARED MAXX
|
||||
MAXX = 20
|
||||
DIM SHARED MAXY
|
||||
MAXY = 17
|
||||
' Set this to 1 to enable cheats; then pressing "$" advances a level
|
||||
DIM SHARED CHEATSENABLED
|
||||
CHEATSENABLED = 0
|
||||
|
||||
' Search string: position of a character in string is used as the
|
||||
' index for Colour array dereferencing and for how to handle that
|
||||
' type of character in the game
|
||||
GameData$ = "ÛÐÆÈÒºÉ̵¼ÍÊ»¹ËÎð è²"
|
||||
|
||||
' Offsets into GameData$ of certain important character types
|
||||
DIM SHARED POSCRATE
|
||||
POSCRATE = 19
|
||||
DIM SHARED POSSPACE
|
||||
POSSPACE = 18
|
||||
DIM SHARED POSCRATEATDEST
|
||||
POSCRATEATDEST = 20
|
||||
DIM SHARED POSDEST
|
||||
POSDEST = 17
|
||||
DIM SHARED POSHERO
|
||||
POSHERO = 21
|
||||
|
||||
' Certain important character types
|
||||
CharCrate$ = MID$(GameData$, POSCRATE, 1)
|
||||
CharCrateAtDest$ = MID$(GameData$, POSCRATEATDEST, 1)
|
||||
CharDest$ = MID$(GameData$, POSDEST, 1)
|
||||
|
||||
' Data structures
|
||||
DIM TempMap(0 TO MAXY + 1) AS STRING * 22
|
||||
DIM Map(0 TO MAXY + 1) AS STRING * 22
|
||||
|
||||
' Initialize screen
|
||||
COLOR 15: CLS
|
||||
|
||||
' Level should be set to 0 here to make entry point level 1
|
||||
Level = 0
|
||||
Won = 1
|
||||
|
||||
'===========================================================[ BEGIN MAIN ]==
|
||||
MainLoop:
|
||||
' Get keypress
|
||||
a$ = INKEY$
|
||||
|
||||
' Reset level or advance level
|
||||
IF Won = 1 OR UCASE$(a$) = "R" THEN
|
||||
IF (UCASE$(a$) <> "R") AND (Level >= 1) THEN
|
||||
COLOR 15
|
||||
LOCATE 19, 2: PRINT "Press a key ...";
|
||||
WHILE INKEY$ = "": WEND
|
||||
END IF
|
||||
IF (UCASE$(a$) <> "R") THEN Level = Level + 1
|
||||
IF (Level > NUMLEVELS) THEN GOTO FinishedGame
|
||||
GOSUB LoadLevel
|
||||
GOSUB Drawlevel
|
||||
GOTO MovePlayer
|
||||
END IF
|
||||
|
||||
' Player pressed nothing
|
||||
IF a$ = "" THEN GOTO MainLoop
|
||||
|
||||
' Player pressed escape
|
||||
IF a$ = CHR$(27) THEN GOTO EndGame
|
||||
|
||||
' Save game
|
||||
IF UCASE$(a$) = "S" THEN GOSUB SaveGame
|
||||
|
||||
' Cheat to advance to next level
|
||||
IF a$ = "$" AND CHEATSENABLED = 1 THEN Won = 1: GOTO MainLoop
|
||||
|
||||
' Load game
|
||||
IF UCASE$(a$) = "L" THEN GOSUB LoadGame
|
||||
|
||||
' About
|
||||
IF UCASE$(a$) = "A" THEN GOSUB About
|
||||
|
||||
' Up, down, left and right respectively
|
||||
IF a$ = CHR$(0) + "H" THEN xd = 0: yd = -1: GOTO MovePlayer
|
||||
IF a$ = CHR$(0) + "P" THEN xd = 0: yd = 1: GOTO MovePlayer
|
||||
IF a$ = CHR$(0) + "K" THEN xd = -1: yd = 0: GOTO MovePlayer
|
||||
IF a$ = CHR$(0) + "M" THEN xd = 1: yd = 0: GOTO MovePlayer
|
||||
GOTO MainLoop
|
||||
'=============================================================[ END MAIN ]==
|
||||
|
||||
MovePlayer:
|
||||
' read character directly in front of player
|
||||
character$ = MID$(Map$(y + yd), x + xd + 1, 1)
|
||||
n = INSTR(GameData$, character$)
|
||||
|
||||
' If it's a wall, then leave
|
||||
graphicsOffset = 0
|
||||
IF n <= 16 THEN graphicsOffset = -1: GOTO DrawHero
|
||||
|
||||
' If there is a crate in front of us, find the character two positions
|
||||
' away in front of us
|
||||
IF ((character$ = CharCrate$) OR (character$ = CharCrateAtDest$)) THEN
|
||||
character2$ = MID$(Map$(y + yd + yd), x + xd + xd + 1, 1)
|
||||
n2 = INSTR(GameData$, character2$)
|
||||
' If the character 2 away from us is a wall or a crate, leave
|
||||
IF n2 <= 16 OR character2$ = CharCrate$ OR character2$ = CharCrateAtDest$ THEN GOTO MainLoop
|
||||
|
||||
' Else we can move the crate in front of us
|
||||
LOCATE y + yd + yd + 1, x + xd + xd + 1
|
||||
' If we're moving a crate onto a destination-type block
|
||||
IF (character2$ = CharDest$) THEN
|
||||
MID$(Map$(y + yd + yd), x + xd + xd + 1, 1) = CharCrateAtDest$
|
||||
PUT ((x + xd + xd - 1) * 11 + OFSX, (y + yd + yd - 1) * 11 + OFSY), Graphics((POSCRATEATDEST - 1) * 80 + 1), PSET
|
||||
NumPushes = NumPushes + 1: GOSUB ShowNumPushes
|
||||
' If we're moving it from a destination-type block onto another dest-type
|
||||
IF character$ = CharCrateAtDest$ THEN
|
||||
MID$(Map$(y + yd), x + xd + 1, 1) = CharDest$
|
||||
ELSE ' we're moving it onto a dest-type from a space
|
||||
MID$(Map$(y + yd), x + xd + 1, 1) = " "
|
||||
NumPlaced = NumPlaced + 1
|
||||
END IF
|
||||
IF (NumPlaced = NumCrates) THEN Won = 1
|
||||
ELSE ' We're moving the crate onto a blank space
|
||||
MID$(Map$(y + yd + yd), x + xd + xd + 1, 1) = CharCrate$
|
||||
PUT ((x + xd + xd - 1) * 11 + OFSX, (y + yd + yd - 1) * 11 + OFSY), Graphics((POSCRATE - 1) * 80 + 1), PSET
|
||||
NumPushes = NumPushes + 1: GOSUB ShowNumPushes
|
||||
' If we're moving a crate off of a destination block
|
||||
IF character$ = CharCrateAtDest$ THEN
|
||||
MID$(Map$(y + yd), x + xd + 1, 1) = CharDest$
|
||||
NumPlaced = NumPlaced - 1
|
||||
ELSE ' we're moving a crate off of a space
|
||||
MID$(Map$(y + yd), x + xd + 1, 1) = " "
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
||||
DrawHero:
|
||||
' Erase our hero
|
||||
PUT ((x - 1) * 11 + OFSX, (y - 1) * 11 + OFSY), Graphics(((INSTR(GameData$, MID$(Map$(y), x + 1, 1))) - 1) * 80 + 1), PSET
|
||||
' Update hero's location
|
||||
IF (graphicsOffset <> -1) THEN
|
||||
x = x + xd
|
||||
y = y + yd
|
||||
END IF
|
||||
' Update NumMoves counter
|
||||
IF NOT (xd = 0 AND yd = 0) THEN NumMoves = NumMoves + 1: GOSUB ShowNumMoves
|
||||
' Re-draw our hero
|
||||
graphicsOffset = 0
|
||||
IF (xd = 0 AND yd = 1) THEN graphicsOffset = 1
|
||||
IF (xd = -1 AND yd = 0) THEN graphicsOffset = 2
|
||||
IF (xd = 0 AND yd = -1) THEN graphicsOffset = 3
|
||||
PUT ((x - 1) * 11 + OFSX, (y - 1) * 11 + OFSY), Graphics((POSHERO + graphicsOffset - 1) * 80 + 1), PSET
|
||||
GOTO MainLoop
|
||||
|
||||
SaveGame:
|
||||
GOSUB InputFileName
|
||||
IF filename$ <> "" THEN
|
||||
filename$ = filename$ + ".sok"
|
||||
OPEN filename$ FOR OUTPUT AS #1
|
||||
PRINT #1, Level
|
||||
CLOSE
|
||||
LOCATE 19, 1: PRINT "File "; filename$; " saved ...";
|
||||
SLEEP 1
|
||||
GOSUB Drawlevel
|
||||
END IF
|
||||
GOSUB Drawlevel
|
||||
RETURN
|
||||
|
||||
LoadGame:
|
||||
GOSUB InputFileName
|
||||
IF filename$ <> "" THEN
|
||||
filename$ = filename$ + ".sok"
|
||||
Level = 0
|
||||
' The following error handler is used to determine if a given file
|
||||
' exists.
|
||||
ON ERROR GOTO NoFile
|
||||
OPEN filename$ FOR INPUT AS #1
|
||||
' If file exists:
|
||||
IF filename$ <> "" THEN
|
||||
INPUT #1, Level
|
||||
CLOSE
|
||||
GOSUB LoadLevel
|
||||
END IF
|
||||
END IF
|
||||
' Disable the error handler
|
||||
ON ERROR GOTO 0
|
||||
GOSUB Drawlevel
|
||||
RETURN
|
||||
|
||||
NoFile:
|
||||
LOCATE 19, 1: PRINT "File not found! Press a key ...";
|
||||
' Set filename$ to "" so that we know the file doesn't exist
|
||||
filename$ = ""
|
||||
' Clear keyboard buffer and wait for keypress
|
||||
WHILE INKEY$ <> "": WEND
|
||||
WHILE INKEY$ = "": WEND
|
||||
' Go back to the line after the error occured
|
||||
RESUME NEXT
|
||||
|
||||
' Routine to allow user to enter a string of length at most 8 for
|
||||
' getting filenames
|
||||
InputFileName:
|
||||
COLOR 15
|
||||
xval = 17
|
||||
filename$ = ""
|
||||
LOCATE 19, 1: PRINT "Enter filename: _";
|
||||
EnternameLoop:
|
||||
s$ = INKEY$
|
||||
IF s$ = "" THEN GOTO EnternameLoop
|
||||
' Escape
|
||||
IF s$ = CHR$(27) THEN filename$ = "": GOTO sReturn
|
||||
' Enter
|
||||
IF s$ = CHR$(13) THEN GOTO sReturn
|
||||
' Backspace
|
||||
IF filename$ <> "" AND s$ = CHR$(8) THEN
|
||||
filename$ = LEFT$(filename$, LEN(filename$) - 1)
|
||||
LOCATE 19, xval: PRINT filename$ + "_ ";
|
||||
END IF
|
||||
IF s$ < "0" THEN GOTO EnternameLoop
|
||||
IF s$ > "9" THEN
|
||||
IF s$ < "A" THEN GOTO EnternameLoop
|
||||
IF s$ > "Z" THEN
|
||||
IF s$ < "a" OR s$ > "z" THEN GOTO EnternameLoop
|
||||
END IF
|
||||
END IF
|
||||
IF LEN(filename$) = 8 THEN GOTO EnternameLoop
|
||||
filename$ = filename$ + s$
|
||||
LOCATE 19, xval: PRINT filename$ + "_ ";
|
||||
GOTO EnternameLoop
|
||||
sReturn:
|
||||
RETURN
|
||||
|
||||
' Loads levels from the file as it needs them because all the levels
|
||||
' in memory at once might place a bit of strain on QBasic :-)
|
||||
LoadLevel:
|
||||
x = 0
|
||||
y = 0
|
||||
xd = 0
|
||||
yd = 0
|
||||
NumCrates = 0
|
||||
NumDestinations = 0
|
||||
NumPlaced = 0
|
||||
NumMoves = 0
|
||||
NumPushes = 0
|
||||
Won = 0
|
||||
|
||||
' Blank out the strings
|
||||
FOR i = 0 TO MAXY + 1
|
||||
TempMap$(i) = STRING$(MAXX + 2, " ")
|
||||
Map$(i) = STRING$(MAXX + 2, " ")
|
||||
NEXT i
|
||||
|
||||
OPEN LEVELFILENAME FOR INPUT AS #1
|
||||
LINE INPUT #1, f$
|
||||
LevelString$ = RTRIM$(LTRIM$(STR$(Level)))
|
||||
' Read until we find the string corresponding to the current Level number
|
||||
WHILE (f$ <> LevelString$) AND NOT EOF(1)
|
||||
LINE INPUT #1, f$
|
||||
WEND
|
||||
' If we didn't find it, something went wrong
|
||||
IF f$ <> LevelString$ THEN CLOSE: GOTO lReturn
|
||||
|
||||
' Read in the level
|
||||
LINE INPUT #1, f$
|
||||
count = 1
|
||||
WHILE f$ <> "~"
|
||||
TempMap$(count) = " " + f$
|
||||
LINE INPUT #1, f$
|
||||
count = count + 1
|
||||
WEND
|
||||
CLOSE
|
||||
|
||||
' Centre the level vertically
|
||||
' Adding 0.5 and doing an integer divide effectively rounds upwards
|
||||
extra = ((MAXY - count) + .5) \ 2
|
||||
FOR i = count TO 1 STEP -1
|
||||
TempMap$(i + extra) = TempMap$(i)
|
||||
NEXT i
|
||||
FOR i = 1 TO extra
|
||||
TempMap$(i) = STRING$(MAXX + 2, " ")
|
||||
NEXT i
|
||||
FOR i = count + extra TO MAXY
|
||||
TempMap$(i) = STRING$(MAXX + 2, " ")
|
||||
NEXT i
|
||||
|
||||
' Black out the area outside of the playing arena
|
||||
FOR i = 1 TO MAXX + 2
|
||||
c = 0
|
||||
ch$ = MID$(TempMap$(c), i, 1)
|
||||
WHILE ((ch$ = " ") OR (ch$ = "%")) AND (c <= MAXY)
|
||||
MID$(TempMap$(c), i, 1) = "%"
|
||||
c = c + 1
|
||||
ch$ = MID$(TempMap$(c), i, 1)
|
||||
WEND
|
||||
c = MAXY + 1
|
||||
ch$ = MID$(TempMap$(c), i, 1)
|
||||
WHILE ((ch$ = " ") OR (ch$ = "%")) AND (c >= 1)
|
||||
MID$(TempMap$(c), i, 1) = "%"
|
||||
c = c - 1
|
||||
ch$ = MID$(TempMap$(c), i, 1)
|
||||
WEND
|
||||
NEXT i
|
||||
FOR i = 0 TO MAXY + 1
|
||||
c = 1
|
||||
ch$ = MID$(TempMap$(i), c, 1)
|
||||
WHILE ((ch$ = " ") OR (ch$ = "%")) AND (c <= MAXX + 1)
|
||||
MID$(TempMap$(i), c, 1) = "%"
|
||||
c = c + 1
|
||||
ch$ = MID$(TempMap$(i), c, 1)
|
||||
WEND
|
||||
c = MAXX + 2
|
||||
ch$ = MID$(TempMap$(i), c, 1)
|
||||
WHILE ((ch$ = " ") OR (ch$ = "%")) AND (c >= 2)
|
||||
MID$(TempMap$(i), c, 1) = "%"
|
||||
c = c - 1
|
||||
ch$ = MID$(TempMap$(i), c, 1)
|
||||
WEND
|
||||
NEXT i
|
||||
|
||||
' Interpret the raw data and convert to our own format
|
||||
FOR i = 1 TO MAXY
|
||||
Map$(i) = TempMap$(i)
|
||||
FOR j = 2 TO MAXX + 1
|
||||
IF (MID$(Map$(i), j, 1) = "@") THEN
|
||||
MID$(Map$(i), j, 1) = " "
|
||||
x = j - 1
|
||||
y = i
|
||||
END IF
|
||||
IF (MID$(Map$(i), j, 1) = "$") THEN
|
||||
MID$(Map$(i), j, 1) = CharCrate$
|
||||
NumCrates = NumCrates + 1
|
||||
END IF
|
||||
IF (MID$(Map$(i), j, 1) = "*") THEN
|
||||
MID$(Map$(i), j, 1) = CharCrateAtDest$
|
||||
NumCrates = NumCrates + 1
|
||||
NumDestinations = NumDestinations + 1
|
||||
NumPlaced = NumPlaced + 1
|
||||
END IF
|
||||
IF (MID$(Map$(i), j, 1) = ".") THEN
|
||||
MID$(Map$(i), j, 1) = CharDest$
|
||||
NumDestinations = NumDestinations + 1
|
||||
END IF
|
||||
|
||||
' This is used when the walls look different depending on what walls
|
||||
' are adjacent to them, e.g. ³,Å,¿, etc.
|
||||
' A binary code is used XXXX where each of the four digits corresponds
|
||||
' to above, right-of, below, and left-of. This will generate a number
|
||||
' from 0 to 15 that is used as the offset into GameData$ to determine
|
||||
' the character used.
|
||||
IF (MID$(Map$(i), j, 1) = "#") THEN
|
||||
code = 0
|
||||
IF (MID$(TempMap$(i - 1), j, 1) = "#") THEN code = code + 1
|
||||
IF (MID$(TempMap$(i), j + 1, 1) = "#") THEN code = code + 2
|
||||
IF (MID$(TempMap$(i + 1), j, 1) = "#") THEN code = code + 4
|
||||
IF (MID$(TempMap$(i), j - 1, 1) = "#") THEN code = code + 8
|
||||
MID$(Map$(i), j, 1) = MID$(GameData$, code + 1, 1)
|
||||
END IF
|
||||
NEXT j
|
||||
NEXT i
|
||||
|
||||
' If the level is impossible, generate an error message.
|
||||
IF NumCrates < NumDestinations THEN
|
||||
SCREEN 0: WIDTH 80, 25
|
||||
COLOR 15, 0: CLS
|
||||
PRINT "Error: Level"; Level; "impossible!"
|
||||
PRINT "Did you fiddle with the level file?"
|
||||
PRINT "Is the level file there?"
|
||||
PRINT "If this wasn't your fault please contact me."
|
||||
PRINT
|
||||
GOTO ContactMessage
|
||||
END IF
|
||||
lReturn:
|
||||
RETURN
|
||||
|
||||
Drawlevel:
|
||||
'COLOR 10, 0: CLS
|
||||
LINE (0, 0)-(319, 199), 7, BF
|
||||
|
||||
DrawBox 0, 0, 319, 199, 15, 8, -1 ' Entire screen
|
||||
DrawBox 5, 5, 226, 193, 0, 15, 0 ' Game play arena
|
||||
DrawBox 232, 5, 316, 193, 15, 8, -1 ' Info area
|
||||
DrawBox 240, 13, 308, 26, 4, 12, 0 ' Title
|
||||
DrawBox 234, 35, 314, 58, 8, 15, 0 ' Level number
|
||||
DrawBox 234, 67, 314, 106, 8, 15, 0 ' Moves/pushes
|
||||
DrawBox 234, 115, 314, 188, 8, 15, 0 ' Keys
|
||||
LINE (238, 164)-(310, 164), 13
|
||||
|
||||
COLOR 12
|
||||
LOCATE 3, 32: PRINT "Sokoban";
|
||||
|
||||
COLOR 11
|
||||
LOCATE 6, 32: PRINT "Level:";
|
||||
COLOR 9
|
||||
LOCATE 10, 32: PRINT "Moves:";
|
||||
COLOR 10
|
||||
LOCATE 12, 32: PRINT "Pushes:";
|
||||
GOSUB ShowNumMoves
|
||||
GOSUB ShowNumPushes
|
||||
GOSUB ShowLevel
|
||||
|
||||
COLOR 14
|
||||
LOCATE 16, 31: PRINT "R :Reset";
|
||||
LOCATE 17, 31: PRINT "L :Load";
|
||||
LOCATE 18, 31: PRINT "S :Save";
|
||||
LOCATE 19, 31: PRINT "A :About";
|
||||
LOCATE 20, 31: PRINT "Esc:Quit";
|
||||
|
||||
LOCATE 22, 31
|
||||
COLOR 12: PRINT "D";
|
||||
COLOR 14: PRINT "J";
|
||||
LOCATE 23, 31
|
||||
COLOR 10: PRINT "S";
|
||||
COLOR 11: PRINT "o";
|
||||
COLOR 9: PRINT "f";
|
||||
COLOR 13: PRINT "t";
|
||||
COLOR 12: PRINT "w";
|
||||
COLOR 14: PRINT "a";
|
||||
COLOR 10: PRINT "r";
|
||||
COLOR 11: PRINT "e";
|
||||
COLOR 15
|
||||
|
||||
' Draw the playing arena
|
||||
FOR i = 1 TO MAXY
|
||||
FOR j = 2 TO MAXX + 1
|
||||
' Ignore "%" signs - they indicate pure black background
|
||||
IF MID$(Map$(i), j, 1) <> "%" THEN
|
||||
PUT ((j - 2) * 11 + OFSX, (i - 1) * 11 + OFSY), Graphics((INSTR(GameData$, MID$(Map$(i), j, 1)) - 1) * 80 + 1), PSET
|
||||
END IF
|
||||
NEXT j
|
||||
NEXT i
|
||||
' Draw the hero, taking into account the direction he's facing
|
||||
graphicsOffset = 0
|
||||
IF (xd = 0 AND yd = 1) THEN graphicsOffset = 1
|
||||
IF (xd = -1 AND yd = 0) THEN graphicsOffset = 2
|
||||
IF (xd = 0 AND yd = -1) THEN graphicsOffset = 3
|
||||
PUT ((x - 1) * 11 + OFSX, (y - 1) * 11 + OFSY), Graphics((POSHERO + graphicsOffset - 1) * 80 + 1), PSET
|
||||
RETURN
|
||||
|
||||
ShowLevel:
|
||||
COLOR 11
|
||||
LOCATE 7, 32: PRINT Level;
|
||||
RETURN
|
||||
|
||||
ShowNumMoves:
|
||||
COLOR 9
|
||||
LOCATE 11, 32: PRINT NumMoves;
|
||||
RETURN
|
||||
|
||||
ShowNumPushes:
|
||||
COLOR 10
|
||||
LOCATE 13, 32: PRINT NumPushes;
|
||||
RETURN
|
||||
|
||||
About:
|
||||
COLOR 15
|
||||
LOCATE 1, 1
|
||||
LOCATE 5, 3: PRINT "ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ"
|
||||
LOCATE , 3: PRINT "Ý Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý þ VGA Sokoban v1.0 þ Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý DJ Software 1997 Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý (C) David Joffe Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý Whipped up in a few hours Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý for the Net Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý http://www.scorpioncity.com/ Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "Ý Þ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
LOCATE , 3: PRINT "ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ";: COLOR 8: PRINT "Û": COLOR 15
|
||||
COLOR 8
|
||||
LOCATE , 4: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ";
|
||||
WHILE INKEY$ = "": WEND
|
||||
|
||||
' Restore the contents of the screen
|
||||
GOSUB Drawlevel
|
||||
RETURN
|
||||
|
||||
EndGame:
|
||||
SCREEN 0: WIDTH 80, 25
|
||||
COLOR 15, 0: CLS
|
||||
PRINT "*Sniff* .. I hate goodbyes .. *sob* ..."
|
||||
PRINT
|
||||
PRINT "Feedback (and bug reports :) welcome!"
|
||||
PRINT
|
||||
GOTO ContactMessage
|
||||
|
||||
FinishedGame:
|
||||
WIDTH 80, 25
|
||||
COLOR 15, 0: CLS
|
||||
PRINT "You finished the game. Yay!"
|
||||
PRINT "I suppose you were expecting something more spectacular then? You must be"
|
||||
PRINT "quite disappointed! :-)"
|
||||
PRINT
|
||||
PRINT "Actually, I would love to know if anyone actually *did* get this far (with-"
|
||||
PRINT "out cheating, of course), so let me know!"
|
||||
PRINT
|
||||
GOTO ContactMessage
|
||||
|
||||
ContactMessage:
|
||||
PRINT "Try e-mail me (David Joffe) at ";: COLOR 14: PRINT "djoffe@icon.co.za";: COLOR 15: PRINT "; if that's become out-"
|
||||
PRINT "dated, have a look at:"
|
||||
COLOR 14
|
||||
PRINT "http://www.scorpioncity.com/"
|
||||
COLOR 15
|
||||
PRINT
|
||||
PRINT "I have other stuff at the above URL, with source code etc, so check it out!"
|
||||
PRINT
|
||||
PRINT "Also, if you make any new levels, I'd love to see them! Maybe I'll add them"
|
||||
PRINT "to the game for for a future re-release/re-write, in which case I'll give"
|
||||
PRINT "you appropriate credit; I'll give each level a 'Creator' field."
|
||||
PRINT
|
||||
PRINT "The 90 default levels in this version I got from XSokoban, a version of"
|
||||
PRINT "Sokoban for the X Window System."
|
||||
PRINT
|
||||
PRINT "Cheers from everyone here (just me :) at ";
|
||||
COLOR 12: PRINT "-+ D";
|
||||
COLOR 14: PRINT "J";
|
||||
PRINT " ";
|
||||
COLOR 10: PRINT "S";
|
||||
COLOR 11: PRINT "o";
|
||||
COLOR 9: PRINT "f";
|
||||
COLOR 13: PRINT "t";
|
||||
COLOR 12: PRINT "w";
|
||||
COLOR 14: PRINT "a";
|
||||
COLOR 10: PRINT "r";
|
||||
COLOR 11: PRINT "e +-"
|
||||
COLOR 15
|
||||
|
||||
PRINT
|
||||
PRINT " - David Joffe"
|
||||
END
|
||||
|
||||
GraphicsData:
|
||||
'0
|
||||
DATA 15,15,15,15,15,15,15,15,15,15,15
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,00,00,00,00,00,00,00,00,00,00
|
||||
'1
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,00,00,00,00,00,00,00,00,00,00
|
||||
'2
|
||||
DATA 15,15,15,15,15,15,15,15,15,15,15
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,00,00,00,00,00,00,00,00,00,00
|
||||
'3
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,15
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,00,00,00,00,00,00,00,00,00,00
|
||||
'4
|
||||
DATA 15,15,15,15,15,15,15,15,15,15,15
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
'5
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
'6
|
||||
DATA 15,15,15,15,15,15,15,15,15,15,15
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
'7
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,15
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
'8
|
||||
DATA 15,15,15,15,15,15,15,15,15,15,15
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 00,00,00,00,00,00,00,00,00,00,00
|
||||
'9
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 00,00,00,00,00,00,00,00,00,00,00
|
||||
'10
|
||||
DATA 15,15,15,15,15,15,15,15,15,15,15
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 00,00,00,00,00,00,00,00,00,00,00
|
||||
'11
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,15
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 00,00,00,00,00,00,00,00,00,00,00
|
||||
'12
|
||||
DATA 15,15,15,15,15,15,15,15,15,15,15
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
'13
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,00
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
'14
|
||||
DATA 15,15,15,15,15,15,15,15,15,15,15
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
'15
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,15
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 07,07,07,07,07,07,07,07,07,07,07
|
||||
DATA 15,07,07,07,07,07,07,07,07,07,00
|
||||
' Destination
|
||||
DATA 00,00,00,00,00,00,00,00,00,00,08
|
||||
DATA 00,08,08,08,08,08,08,08,08,08,07
|
||||
DATA 00,08,08,08,08,08,08,08,08,08,07
|
||||
DATA 00,08,08,00,08,08,08,00,08,08,07
|
||||
DATA 00,08,08,08,00,08,00,08,08,08,07
|
||||
DATA 00,08,08,08,08,00,08,08,08,08,07
|
||||
DATA 00,08,08,08,00,08,00,08,08,08,07
|
||||
DATA 00,08,08,00,08,08,08,00,08,08,07
|
||||
DATA 00,08,08,08,08,08,08,08,08,08,07
|
||||
DATA 00,08,08,08,08,08,08,08,08,08,07
|
||||
DATA 08,07,07,07,07,07,07,07,07,07,07
|
||||
' Blank
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
' Crate
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
DATA 08,15,15,15,15,15,15,15,15,15,08
|
||||
DATA 08,15,12,12,12,12,12,12,12,04,08
|
||||
DATA 08,15,12,12,12,12,12,12,12,04,08
|
||||
DATA 08,15,12,12,12,12,12,12,12,04,08
|
||||
DATA 08,15,12,12,12,12,12,12,12,04,08
|
||||
DATA 08,15,12,12,12,12,12,12,12,04,08
|
||||
DATA 08,15,12,12,12,12,12,12,12,04,08
|
||||
DATA 08,15,12,12,12,12,12,12,12,04,08
|
||||
DATA 08,15,04,04,04,04,04,04,04,04,08
|
||||
DATA 08,08,08,08,08,08,08,08,08,08,08
|
||||
'Crate at destination
|
||||
DATA 0,0,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,12,12,12,12,12,12,12,12,12,7
|
||||
DATA 0,12,4,4,4,4,4,4,4,0,7
|
||||
DATA 0,12,4,4,4,4,4,4,4,0,7
|
||||
DATA 0,12,4,4,4,4,4,4,4,0,7
|
||||
DATA 0,12,4,4,4,4,4,4,4,0,7
|
||||
DATA 0,12,4,4,4,4,4,4,4,0,7
|
||||
DATA 0,12,4,4,4,4,4,4,4,0,7
|
||||
DATA 0,12,4,4,4,4,4,4,4,0,7
|
||||
DATA 0,12,0,0,0,0,0,0,0,0,7
|
||||
DATA 7,7,7,7,7,7,7,7,7,7,7
|
||||
'Hero
|
||||
DATA 08,08,08,14,14,14,14,14,08,08,08
|
||||
DATA 08,14,14,14,14,14,14,14,14,14,08
|
||||
DATA 08,14,14,14,14,14,00,00,14,14,08
|
||||
DATA 14,14,14,14,14,14,00,00,14,14,14
|
||||
DATA 14,14,14,14,14,14,14,14,14,14,14
|
||||
DATA 14,14,14,14,08,08,08,08,08,08,08
|
||||
DATA 14,14,14,14,14,14,08,08,08,08,08
|
||||
DATA 14,14,14,14,14,14,14,14,08,08,08
|
||||
DATA 08,14,14,14,14,14,14,14,14,14,08
|
||||
DATA 08,14,14,14,14,14,14,14,14,08,08
|
||||
DATA 08,08,08,14,14,14,14,14,08,08,08
|
||||
|
||||
DATA 08,08,08,14,14,14,14,14,08,08,08
|
||||
DATA 08,14,14,14,14,14,14,14,14,14,08
|
||||
DATA 08,14,14,14,14,14,14,14,14,14,08
|
||||
DATA 14,14,14,14,14,14,14,14,14,14,14
|
||||
DATA 14,14,14,14,14,08,14,14,14,14,14
|
||||
DATA 14,14,14,14,14,08,14,14,14,14,14
|
||||
DATA 14,14,00,00,14,08,08,14,14,14,14
|
||||
DATA 14,14,00,00,14,08,08,14,14,14,14
|
||||
DATA 08,14,14,14,14,08,08,08,14,14,08
|
||||
DATA 08,14,14,14,14,08,08,08,14,08,08
|
||||
DATA 08,08,08,14,14,08,08,08,08,08,08
|
||||
|
||||
DATA 08,08,08,14,14,14,14,14,08,08,08
|
||||
DATA 08,14,14,14,14,14,14,14,14,14,08
|
||||
DATA 08,14,14,00,00,14,14,14,14,14,08
|
||||
DATA 14,14,14,00,00,14,14,14,14,14,14
|
||||
DATA 14,14,14,14,14,14,14,14,14,14,14
|
||||
DATA 08,08,08,08,08,08,08,14,14,14,14
|
||||
DATA 08,08,08,08,08,14,14,14,14,14,14
|
||||
DATA 08,08,08,14,14,14,14,14,14,14,14
|
||||
DATA 08,14,14,14,14,14,14,14,14,14,08
|
||||
DATA 08,08,14,14,14,14,14,14,14,14,08
|
||||
DATA 08,08,08,14,14,14,14,14,08,08,08
|
||||
|
||||
DATA 08,08,08,08,08,08,14,14,08,08,08
|
||||
DATA 08,08,14,08,08,08,14,14,14,14,08
|
||||
DATA 08,14,14,08,08,08,14,14,14,14,08
|
||||
DATA 14,14,14,14,08,08,14,00,00,14,14
|
||||
DATA 14,14,14,14,08,08,14,00,00,14,14
|
||||
DATA 14,14,14,14,14,08,14,14,14,14,14
|
||||
DATA 14,14,14,14,14,08,14,14,14,14,14
|
||||
DATA 14,14,14,14,14,14,14,14,14,14,14
|
||||
DATA 08,14,14,14,14,14,14,14,14,14,08
|
||||
DATA 08,14,14,14,14,14,14,14,14,14,08
|
||||
DATA 08,08,08,14,14,14,14,14,08,08,08
|
||||
|
||||
SUB DrawBox (x1, y1, x2, y2, col1, col2, bgfill)
|
||||
IF (bgfill <> -1) THEN
|
||||
LINE (x1, y1)-(x2, y2), bgfill, BF
|
||||
END IF
|
||||
LINE (x1, y1)-(x2, y1), col1
|
||||
LINE (x1, y1)-(x1, y2), col1
|
||||
LINE (x2, y1)-(x2, y2), col2
|
||||
LINE (x1, y2)-(x2, y2), col2
|
||||
END SUB
|
||||
|
1401
tests/qbasic_testcases/misc/djsok.dat
Normal file
1401
tests/qbasic_testcases/misc/djsok.dat
Normal file
File diff suppressed because it is too large
Load diff
1
tests/qbasic_testcases/misc/evil1.raw
Normal file
1
tests/qbasic_testcases/misc/evil1.raw
Normal file
File diff suppressed because one or more lines are too long
BIN
tests/qbasic_testcases/misc/fireball.wav
Normal file
BIN
tests/qbasic_testcases/misc/fireball.wav
Normal file
Binary file not shown.
13
tests/qbasic_testcases/misc/flrmp.bas
Normal file
13
tests/qbasic_testcases/misc/flrmp.bas
Normal file
|
@ -0,0 +1,13 @@
|
|||
'Floormaper by Antoni Gual
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
1 SCREEN 13
|
||||
2 r% = (r% + 1) AND 15
|
||||
3 FOR y% = 1 TO 99
|
||||
4 y1% = ((1190 / y% + r%) AND 15)
|
||||
5 y2 = 6 / y%
|
||||
6 FOR x% = 0 TO 319
|
||||
7 PSET (x%, y% + 100), CINT((159 - x%) * y2) AND 15 XOR y1% + 16
|
||||
8 NEXT x%, y%
|
||||
9 IF LEN(INKEY$) = 0 THEN 2
|
||||
|
315
tests/qbasic_testcases/misc/forest.bas
Normal file
315
tests/qbasic_testcases/misc/forest.bas
Normal file
|
@ -0,0 +1,315 @@
|
|||
'FOREST.BAS by Antoni Gual
|
||||
'For the Future Software 2002 7 liner contest
|
||||
'NOTE: Data lines did not count by the rules of THAT contest.
|
||||
'----------------------------------------------------------------------------
|
||||
1 SCREEN 13
|
||||
2 IF i& = 0 THEN DEF SEG = &HA000 ELSE DIM b%(164)
|
||||
3 IF (i& \ 320) < 150 THEN READ c&, a$ ELSE j = j ^ 1 + 1 ^ 1 MOD 250
|
||||
4 IF (i& \ 320) < 150 THEN i& = i& + 1& ELSE PUT (1 ^ 1, 150 ^ 1 + (j ^ 1 MOD 49 ^ 1)), b%(0), PSET
|
||||
5 IF (i& \ 320) < 150 THEN POKE i&, ASC(MID$(a$, i& MOD 160 + 1, 1)) ELSE GET (1 ^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1))-(319 ^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1) ^ 1), b%(0)
|
||||
6 IF (i& \ 160) < 256 THEN IF (i& MOD 160) = 0 THEN PALETTE (i& \ 160), c&
|
||||
7 IF LEN(INKEY$) = 0 THEN IF (i& \ 320) < 150 THEN IF ((i& + 1) MOD 160) THEN GOTO 4 ELSE GOTO 3 ELSE GOTO 2
|
||||
|
||||
DATA 0 ," 繭<E7B9AD>獎ノな。fWpハハハワpfヘf玉ワワハrハCpハヘ咾恕幕猝煖玉鏑ムハハハ術CハCCpX面ノノノヘヘrmヘiナ極ハCハハPWネNf金ワpXヘ殆ミ無ミ囑万殆ャfヘノノノL<EFBE89>NネfネPPPLノャヘNャゥL穆WハfハPp綿娜LネPPトabYハp囓pspハネネfヘN<EFBE8D>"
|
||||
DATA 0 ,"ヘノトネ豊s呼<73>ナネ刑位ハハヘ潘ネ見忘ト`貿ハ礁禦Pルシ呼ネp耗aミ姚流ルィ孛疂u<E79682>ネiネ~鼓LNuY岻トN鮪ネZトミNuP、Cワ鞠xX耗ァゥャヘハRLマXL繭ヘ桔jL末蘿許NfwハXN模ハ囑模㌢pa玉クffワャャN也鉗f衞p椋シCr歛淕pョ"
|
||||
DATA 0 ," mハpLfネ塹LX哭ヘハppfハ給fp鞠Xョpワ鞠ハCネヘ給pハハfハハハハCppヘノLLNppハハdョ鞠マムユマffヘf^鋒fヘハXハハハ凡Nf嚠咾LNC模囹ヘヘ壟繭梛sjヘCC訟fPP^ミLネ喊址fノCノ臨ャjpハCトpjワsネNNfトNハYCョハYヘCLハム婢ヘマハノ"
|
||||
DATA 0 ,"LaネPネLャ崘Lト靴C建ワロ訓Jjミネ頬ff毀ハ牀<EFBE8A>j`jMX峻ェャL<EFBDAC>ワ~ミP迫嫦Nヘミjラ鞠`ノ訓ル<E8A893>aNネ<4E>Z禦ャトjffヘハトpハハfソ鳳Nx畔峡以殫び|マ瓩喧LX。エNLネXソff。ヘャfミf孟fp<66>ヘN澆ミト<EFBE90>ナァCクハppハ輾WョWW朴Cpf"
|
||||
DATA 0 ," L宜。ハハネfハネネ門CハハハpハハCpハCハハハ玉ハワハヘハW記気pハハ面C砲緬ミC嗔Cppdハ。fXfヘヘ煮ノfノwz嚥~Cラハ硝ハネpヘミハヘsノノノネ模ャヘミfミ<66>帽LZaヘCヘャLLネaトャ案NノL<EFBE89>ネラpsNワヘdネネヘネPa預帽囀NCワpC蚶Cp嶇湲~ゥャ"
|
||||
DATA 0 ,"PPノCネz酪憲XLsXCw嗚靴権ナ勃afワfワCハ喃ナ曜sPワトネ豊f旭トPfルノjj屁Nsネbuン君ル唖トjネト岔bトネノトafノ~クネyマハハワマs<EFBE8F>zNゥヘ^ャヘXNfャマハノs洸ハfハLa塋淤貿fp<66>aハ模末Wネノf勿記fPjf`蹐ハpハソユゥスfヘハハppO"
|
||||
DATA 0 ," 囹ユヘムヘヘ模zネfハCワp礁ffハワハ蘿玉ハョワf禦鞠ハfノLpL毀ハハ給幕XfpCワハCハ宜ムマ視ムヘマノマCNXハf模彊ネ塹Nbハfョaヘハ唸ネミハネfノ恚哭ノCNjj塋~ノネノ壅ルネ}ヘミユルPuiLユpCハミ砲PネナネWユPa毀CpハCC寶ハpfム~L沺"
|
||||
DATA 0 ,"NZC<5A>娜魚f<E9AD9A>YfCRsjヘナ謙ノトuルミXfCワffupuミ巴トャ^ゥヤ寥闌桂sssP流ャネミ孛タネ桂Pb来渤桂畔気岑ゥLsNゥzy位CハP<EFBE8A>・NノヘネPNマヘiヘネ麺f繭NCfP哭ヘネLノL。L貿pf豊金fai砲LXヤユN圀tpワpCmiヘLffCpワr|"
|
||||
DATA 0 ," ネネ却金wハハfX面衞ハハハpC玳ワpハハpfワ灑ハハa却却ハ蛩ppヘrpワfハ記ヘハハppハハp貿ヘマXネffワf<EFBE9C>模ハfC袰ノLN記Cハヘワfヘハ許W}ネミノ綿ハ囑P鋒トミネPz嵎慄uユPヘノPj洳ロ牟ラトrハffハpfミaネノNミLNハハp面ハハpNノfsム<73>"
|
||||
DATA 0 ,"LPjゥPNfワ塹fユfヘnu尓トY末汁bujPpfr悟ョユfNjuハィノs屁敍蛍ミuWjPミ壑ム<E5A391>ャj悛zsub蛍ネ嬲sZルuノャミ毎尠ヘミLツppハj・x啾fsネP灣ワャモマ孟ミャLpハネLXXuノ淙PC砲ミヘXPロpノハft蕕faシsトPミpハfU囑f面Cpワリミ"
|
||||
DATA 0 ," }咾ノ僅fノヘ。ハヘpハpハハハpfppワCfハハハワハハC嚥ハヘハ朴末囹ノ嗔繭鞠曲CCCハCCfヘワXヘXmX№ヘ槝CmぬハハハハP綿L紡模PXLfヘ曲玉起気ネfLsネL澑リ<E6BE91>X虐j國n櫻ヘ。掏Nzルp薛螳。dyssL盾CpワfpjffCpL綿塹ソ"
|
||||
DATA 0 ,"Pァz血輛貿O給fャaトjィ建fヘufネャ<EFBE88>衞衝jsヘミミ勿sY泝庫y己ネfs宀庫ユs<EFBE95>ルP扠nuu憲aャjミNネNLuNノヘNjトャLヘネヘァCCハCfsネ潘饗ゥNLネネ~ノLエラCpLヘXノネaLsf牝aゥ槝X哭記ネヘノPヘ貿JPネミ勿CハCPノャハpp瀁許ヒ"
|
||||
DATA 0 ," f巾煖嗔給毀櫃ハCハハハハハハf濆ヘCハハfハハハ塹ハfCfXCff僅囑pノLW許pハCハCfヘfヘヘfヘfマ址ヘ僅修ハppハpャムハヘ。末墟aミヘNヘヘCpf孟L囹LPZfLヘWノヘャネN巒ネfyミヘノPjャネjCハマXNノPヘC<EFBE8D>ヘZハハppCユdハrfvXクXトナ"
|
||||
DATA 0 ,"L軌u<E8BB8C>jナ、鳳面屠Y威トハ勿丘z貿f蚌dネ斛~C血rミ勃u桂j媚P屁j李ィs~nルXル闇彷圏u忖衙fマNPjNPトャエハ<EFBDB4>LヘミLpョpヘ<70>ヘ塹ミ・n孟ヘNNaハipdfぁP囹L斯。ヘヘ帽ムXネfネNネ許fネノネnras気p渋緬ハdハハX案ラ"
|
||||
DATA 0 ," phLハナ囹L囹fppCppハpハハpfffハハpfCpハハ煖魔CC囹僅嚥幕Cfハミ気ハハC貿唸XヘヘヘヘfヘマLXハ貿ネ澆ハハXヘ面澂ヘナヘナrLaミ吠NヘfLヘミNLzノゥヘャ澑Pルjネネトufネゥzネ以fNs毀ぱ繭su嗽ネミNネLCワハ<EFBE9C>ルCハCヘ盆ヘYz案"
|
||||
DATA 0 ,"uァ掉トヘss<73>ハsfjmsノト憲末ネハ貿ppワC餃aユj血鍬ト寞sトu}岻忖ノsbuaネネ頬ユぎル搆ルンン血uuミトs栃PNCfネ量孟N<E5AD9F>ミハrCラ櫚塹貿<E5A1B9>P伊エ慳CハヘノNワfa嫗ハXsPネネソなネミ嚥。LネヘfN嘸ハN・繭Cp衞巾ワ藺ハfa牟O"
|
||||
DATA 0 ," ハハハハヘ鞠僅ぬLハハC気ハpfpX衞pppXョffpヘ禦ff繭CワヘヘミzW禦pハヘCハハCdffL禦マXXヘノffョ。ハNsワppCrfヘハネ末ヘヘヘCノLLヘミNヘハLネLネfヘノPPャ威娜ネネネ淙エネPLN殿ネノN案ハXPuャトヘョs嚠徭ヘハppヘP嫖ワsヘハノ輝zNu"
|
||||
DATA 0 ,"ンu警ロssZ嘖pノfNト<4E>NネX呼ノjCNェ蜿C<E89CBF>リ<EFBFBD>ィ血血Cィャ圀ノ<E59C80>ネaNbャbp姚ネ・ャuLゥsb恵jj營LnYNLハwCヘsノャPpL哭ミミsノaC~ネ曲ノ蟻ミs忘ヘネミ亜ヘC穆ノ塋Pハミハ啾ハzノLハ毒千ミ僅欷ヘク蒐泱ハ。面C蚪。CワワNハpミミ面"
|
||||
DATA 0 ," ハノfCp帽ハL孟fハハハpCppヘff玉fpハ衞ハ術pハf玉禦気給p金末喃玉ハCハハワfXワfマヲぱ視衞<E8A696>Pfハョハ鞠ハ臭fLpョネネミミ}トノXXCヘLノナp圀亜iャLaネ鋒極}トxjラyャ屆ミbャLpfPミ岑ャ結ミjル佞ハワC以Xハpfミ蘖囑nju"
|
||||
DATA 0 ,"su<73>寤JpL<70>ナぺrァYu婢~j髢CjハCハ孛u<E5AD9B>u決uuヘハ~n嬲j瑚j岼愛<E5B2BC>PVLLネj廸娟ルL<EFBE99>Lfsノゥ<EFBE89>LPネノ<EFBE88>哭娜威fクNネノ潘ヘヘ}囑ヘヘヘヘNネノミfミrミLsN囲~CネpNzsaハミfXャ<58>躁ャ夂ャ蠢tLハP~ヘヘハC鞠Lハハワハワワょハヘ"
|
||||
DATA 0 ," ハCp喃玉LナfppCpハCp猝fpハハハ給ョpfpハ妨pハCp瀾ハp給澆ネハf咾CCCハpfョ勿僅ハXノmムネ嘖L|Lfハノ蜍Xfp鞠ハp鳳許ャsCL紡緬エヘナNハミN威mネネエ万ミヘ毀~CネCszタfネネノCXトL緬嬾Cト~トjCpハPャ憔pCfPネ漫L埔、"
|
||||
DATA 0 ,"`嫦Nト案n咾塋ZPNpYネsメロuffハハf屁N隰b<E99AB0>ャヘヘLルラエ模PLPャミルZ貿LXuネabミLNミ寤ラTPxノf曲ミネヘミL}ネaネN紡起r塰fハハハ許シノネ彁ネPヘ畔憔XエpzヘネpネNャノ勿ヘ彊欒tネ縞L夂袁aゥnaNPネ壘ハ朴p。fapfハpNネy"
|
||||
DATA 0 ," pX給LハpCX記ぬハハfppハハハfCハppffXfpワハヘミ塰鞠a玉LCハハ妨クpCCハppCffヘワヘヘユ<EFBE8D>禦トノL墸LfrワpハCハffCミハエヘ猩Nワ喃ヘNネネ<EFBE88>LPネヘゥNXネX宜エLミ脈sヘzaノャPノbエxN擦p漫zW岻ネP恵sp暑LYsCハ~ワ巾ネワマ<EFBE9C>j"
|
||||
DATA 0 ,"屏z伊ミN~C耀Z孩尹ワuァuぶfCCpNミsLネZjNuujャYjネf嶇j尓fzusロyP歟ssP蘖ヘNP孵aネ<61>LミsヘミNネ喃ヘゥ咏}ネハCゥヘimヘネCpfノC咾帽ヘL<EFBE8D>P。ハミfルfノPノayミヘエ巾棔ネネユ裄Lfヘョf嘲a面<61>YハワpワpNfCpfノLa<7F>"
|
||||
DATA 0 ," Cハppヘぬ模。ハfハ裹ハハrハprrpハXffハハハpハ許ヘ玉ミkfCエpハffヘ許玉CCハCffff帽ヘムfXハmハ朖ノ綿N。句ハCfマョラ沛ネaネ朴ハpネミfL啀N哭ネネヘ圸ゥミ起叔ネネノLzヘヘN廸L綿YCCLujuミ湧ルNトャpハワハ嬲ハCN泱朴鏑ネPy"
|
||||
DATA 0 ,"ミNN~嘖t蛉ネ<E89B89><EFBE88>uエzトbpPトaY玉ョハujZuXsjO孛uONエaノPN斛j拳ミラ恵ヒL垪モPusNxP毀櫻<E6AF80>Ps以嶢LPzLノ・Cネ囿ネNネP起模ネLワL許模ワネマCル<43>C嶇N勺NPソ、tミ。ハL密<4C>ネ辷。ミ夂ョii圜ヘミー気賞pf蝟rCpfNネLヘノ"
|
||||
DATA 0 ," Cハノハミノノヘヘハf玉fハ蚪pハpョppCCワハpハpワf給鞠味p漫朴ノCC蘿fLapハ術pfムffXムムマユifffノL帽ヘLハ貿ハpfdCfハfヘ哭ミPミミ鳳L給LCX記N湊PLsネrfネ<66>zネネノヘLLヘミ~ラ却fエ廰ネ嫦<EFBE88>X嶢pハ幌Cぬ鳳ワネヘ嶇aノaヘ"
|
||||
DATA 0 ,"j圀LャナハハネuPunト末巾貿魚マCハノネNPaャエPルn鼓N悖豊uャuV蛍嗽XPsノZPuナsトCZuル~n奴LネNネ}<7D>~N毯PLPゥLミzYミf遼ミソ。蝪枚riムノノマ懸ハfミ<66>NネネsャPηP。ネノ痊Nヘ「LLL狗ハ曲XネPfネQpハp掬PぐfネLネuLX"
|
||||
DATA 0 ," p。ヘ気禦Cヘユ鞠pハpppハprp礁ハpヘCハハハハCp気哭猝pW却p。C。C囹玉ハpハ鞠ョパfXXヘ均f給ネネマノヘノf。Cpp峡LXCN味曲ノLLヘXCネ塹fハfXはハノネミヘネ。トsヘネノzほNノ杢ミネヘヘp蝪タネjjOuCノヘ術玉<E8A193>ゥハハャLpf面脈マu<EFBE8F>"
|
||||
DATA 0 ,"LLヘC叙歟Zャ嗽Lワf虐ヘ模fナハハjナャネYZ誼エミjsシnノuト寥u訓Y系sロノ喘ネゥ寤ネヘハノャ冬啀C嬲ネNP噬zルL嵎ノネヘsL僅zLヘLノNロョfハヘ模ハmCヘsN蛻許エノ嘖P。ネnミャ<EFBE90>鞠fハ~鉗囑狗僅ネヘミヘaノハCpハpfヘNpハLz捏址ト"
|
||||
DATA 0 ," f許f。ヘpネモpL~却ハハ句pハ玉鞠鞠ハハョハ礁p囑記塹塋pCpQ玉fCfCpCハpCX模宜はヘff朴囑巾pf給ノハハCム模ハL~廰PL気ノLf<4C>ネa面afユャXミネャネ悖鞠ヘfLwネミネネノゥ緊L貿ワCマxwラロCspハCハワエsワCbjヘLaネ孟Xuミ"
|
||||
DATA 0 ,"トa嗔pPs寥ネミネノpヘf貿f鳳ノC袰PィャNャネ洋`NP<4E>nミ`李蛍蛍bミjuP鈩z彁孕ノ。j悍エPjNナasYラLミ記ヘエユ~P壅Lノヘffユ勿p螳ppハ彊fr宜蘖fハNノヘミ螫橋ミノリナ躅面ラPfゥt蹐fノゥpワワョ木ヘィソXワ術f惡ハLネハCWネ慄"
|
||||
DATA 0 ," pハハp澆ハナf繭瀾pハppワハワ気pppハハppCハハp猝ヘハ貿LXネN砲ハpヘC記CpハョハfXヘハマLmムaマノ囹f<E59BB9>。哢NハLCppffpハrN哢慄ルネ貿満PトワNハネミャNL曲塰ネC毀CfネLノfn。ナ僑s貿蕷nLルLネルpppハCCョ。CハPミネaヘネミL嘖ネ}"
|
||||
DATA 0 ,"ノPpワミsuL嬲N}ネ給。許sf喃蚪Xju尠jラusjsnu<6E>jjルbル靴sNリネa<EFBE88>枯・sトZ律ミラャP毀s欷C眠sワ甕ミj<EFBE90>ハC砲z虔CaミマミCp溽ャナppワワfmLムミCワヘハノPw<50>ネu毎錻x綿啗N喀YラpL鈑pa模N柝sf蜿p。トpワNs・巾N哭"
|
||||
DATA 0 ," p澆。ヘヘ渭ヘLノ。嚥ppCpp脚pfpCpCpハハハpCヘマL籾澆尹pLC却瀁ハ咾CpCCpf僅ヘ渮XヘXハハ緬fヘネ櫚ハf礁pfyハfハfヘ鞠LCf哭ZyLLャネa}ネミノpNナネaPLネミL幕pC輝s<E8BC9D>柝ト。急遉ゥ堝sタョ術fCCCハpWsLaLムasムfLネ"
|
||||
DATA 0 ,"`ハハPト嫗ヘ<EFBE8D>ク麿j琅ルC末ワハNjン塋NNャj嶇r穆PzY雇NルuCLLysィ蛍憲ノマj椁sN猶璃塋nノpzネjなハfミネbXpPsaミPノN殤f渭C。pfpf模[CワネffuネNトミ囹stxトミワ。トノハナ}pNトLfLハ埖椦^ラハョハCワラpハ朴トjpャネ<EFBDAC>"
|
||||
DATA 0 ," ヘヘ給Cト殿蟻Lハ面玉ppハppfXpハハハハp礁礁給毀XP句気Cヘ。ハヘ蜍CハCCC尚f鞠fハXfヘヘムffハハiネヘャ脚PppハNifミfミミハ玉藺ヘNネネzPクミムノ啾ミN模ヘXネr<EFBE88>LfN孟<4E>P穆ナャハ禦zXネLラャbpfハd蚪淕ffノX}ヘ末址ネfu"
|
||||
DATA 0 ,"弧恬ミヘひjルネ啀ワPfff煖玉pCハsネネマネ欄NNミ穆LNPu嬲jPj酪u恁ィLf血XNLユ流sN牝慴Y墟LトsNャCャ~uノCミsミネゥPリエsネLミミ伺n嗔ハハワXヘワaff袁ノミノノハYHハグワゥ塋nb量b陦PsNC面k血ルf鑵ハpp修ワNャヘ槓ネn蘖"
|
||||
DATA 0 ," 囹aノ記Lpa叫r味pp妓pハpf鞠pfハfCハCpハ許却蟻ネ極ff許ヘ蚪囑pハハp。ワ帽ハヘff鞠Xf給X毀ャ蛯ハNPpCミ朖Lp~Lエミ僑ネNaミ気QpLL營pfNpノLLLCミ僅ミノa<EFBE89>ル極z殲XNネク欹LpネハツCワハハノpCuuL豊模fノネN<EFBE88>"
|
||||
DATA 0 ,"ワLPjjヘb<EFBE8D>ネラ岻ミャ貿盆ネNCハワ莅a<E88E85>ノネjaネヘLノ娟yィ墸MミNZbCエj血ル懸nLjsLfネZLNbjNzネaミネ<EFBE90>ネfPzCP憬P給ト<E7B5A6>ミルsゥkャミf嵬Cハハpョjpョ蛉ハミネ豊Cnムミャ}fmマ鉗pf千徭末Pf忝O柆嚥ハョp蘿p゚ミCCPLノf渙"
|
||||
DATA 0 ," pハハf僅L塰pハf玉ハpハpハfハX僅fワハXハXppハWワ啗fハ瀾ワハ僅r朴ハQCCCpCpfpハfワfワX淤ハ気pク墟aCワ哢p起ヘ沂XXヘ囑ネ墟pナLfヘネ墟ネfaa朴p暁ヘ衒嗔<E8A192>Pラノ汕aPNにpハャ寫j襲ナ壼ワハハ蕕CCC虐LPC籾ヘpヘ臟"
|
||||
DATA 0 ,"CCP忖ハ建}脈j嫗^錦娟緬ハョLネャナ莅NsノsPLfLNネ悁ゥ曜jト牝Pエ尢蛍ミルsfkロ螫zルト郁有f慂xネミ婪zヘfネネ珈。d悒sミN岻ミP愼ノネpfワp蝓fネワaCfCpCCハp。ハノォ岔クj醉ミP]W末ネ嫻ヘNP北ノfヘpハハpハpミuXLミ毛z~ィ"
|
||||
DATA 0 ," C禦救Cfp鞠Cハ却C鞠ワfpffワハfpハfXfppハ~f末。ハfpp煖。却LNPネCハCpfp瀁ffXfXムXX蘿嚥pfヘ末p貿蚌ヘ}エa幕fネヘミエLL塋墟ワ綿aノ幕緬r穆a墟NNfヘ塋殱ネネゥム極ff亨Pノノk<EFBE89>rノョ。fミヘハpユミルaネf。ハヘfユfi"
|
||||
DATA 0 ,"挧nマbトネネN<EFBE88>Pjネョjノャ貿衞蚣陋娑uルn嫗aャヘヒsP<73>Pa霸奔suョノZ慙ヘ崙zs槓憬YPjルa牝sOミハノw<EFBE89>pヘLヤネPf歛XLsfャゥノ婢aヘネマャprワワmXf苡<66>C醋ク「ルPy匹婪ppワヘヘuCミャjLfノuゥWa<57>CCョハワX嵬XLNLネy澑"
|
||||
DATA 0 ," 玉Wf澹ノ蜍ff籾ワppp玉pハXワハX給ヘfC礁p瑯囑ハfp給衿ffa嚥ffハ衞XdCffヘヘヘ蘿マfp気fヘ末ハfCヘCpfpハff綿囹ノヘネ宜f薇Pr喃孟淙Xユ汲ワLPaL衵槝ネミノX櫚pハハマ、クzP~a}獣猝C掲蕕kムLfヘPXiXfヘネネ"
|
||||
DATA 0 ,"輕u面ネNノノfYfナLfpヘ慙fC緒bjjト盃sィsLNf蟻LLノN~扼xネミ~sルハミPP抑訓P~N鳳タ<E9B3B3>ャ~ゥsナほリfハ袁z記<7A>sミミハゥfノsネヘ蒭fノPaf渭ョワワワャワ澆なC。ハマuLu嫣xmョネ<EFBDAE>NfヘャN|徘<>僅巉uミn、ハワハfXユPjXX|ロネネ鳳"
|
||||
DATA 0 ," 。fpハp。金fWp給pppハpワpCWハワCハ。ワハGpハノヘ模許Li豊面瀁末朴Cハハハpワ袁fXXXヘノX給C鞠LLa圍ハハfワョワpLp。ネLL綿ミfLPLネa緬ミノaLワf漫ヘ蛻N<E89BBB>P塰z均門貿ノ曚ハ綿枹LNzユpuネョハルCハハLN孅fャユハfハツゥ<EFBE82>"
|
||||
DATA 0 ,"PユjルLPfLNヘネkネヘpkjPネCfCNσ牌極jLゥjP恠LaノハャPLsNゥト孕澆kノ甕Pb徭ネssネsNuZPSNsLネノ葎PjミnミN慂Lsル遼トu渮PノNルOワmワ気ワヘヘハNネfヲYソハL緬sZ}ァ喫CCィCノロト<EFBE9B>ネネネXゥ巾幕z隶C衞n}頚歿蛉ルzネ<7A>"
|
||||
DATA 0 ," 却f鞠妓鞠pワCfppハハppf。pヘfX僅ヘ。ハC修玉燒脈ヘf記塹袰幕rpppハpハf瀁fハ衞ノノXミ瀁pfヘfXヘ。mハハハワpヘ歿ハfLハN塋巾嘯La瀁ノLヘ砲Ls脈pNヘpLf峩YゥエsP孟ヘ砲fマ營ySゥLヘ<4C>ヘハハ位pCリャPpfョCワⅤユ案"
|
||||
DATA 0 ,"ss囓}u<>a泱PL蛄NN伊ハpハP<EFBE8A>j嶢圈LaP灣NミN巖ミゥsjャ李マハjjp槓LuPラ燿fuPL屁ミLノC<EFBE89>Cハ屆嶼ゥネuルjL屁噫Xa<58>ネjCワff|fムヘ鳴ワハハワハハミ泯玉ルzェクCnノsfPR啾LNネノネヘfNsP庸棧Nワハョワ~sjsL模LXzzミ"
|
||||
DATA 0 ," Cp澹ハ給。幕fpWW僑ハハp衿f玉ヘfハ衿灑CハヘpハワLfハゥ瀁fWワハ許LpCCCpfff<66>ヘ模ヘ給p瀾鞠僅末ヘf禦Cpp瀁ワCユ挙櫃ノネ末aネワヘLメfヘaL力淤CiP啀魚威ャjネNp圖U朴pXzノ豊jルワNxヘCpノfpCPネゥヘムヘハハfヘムヘ<EFBE91>"
|
||||
DATA 0 ,"Pネj頒L<E9A092>Pネa婪Y・ノbLCワハL哲PN慴漫ノNミネエ豊嫗usL産uィルL桂Nn囹O頬}靉藐aネsネャ弭ネfa瞬嗽ルbN址トノL灣エ瀾ノsルトN<EFBE84>佑Wヘ極マiョppワ豊ャaaCf啀ハs~nル。ナノnマ巾ネ哲ネエノヘ耗ャjネLLミワ蜍fzNルミLf貿ラN模"
|
||||
DATA 0 ," 許金fWハハヘ。僅衿CppppハXハfハワfハXCハ玉LpLハハp囑玉。ff鞠ヘヘワハ礁ハffハヘXXヘワpヘfLP蚪f。ノfL朴p鞠ハワヘLハfNLLヘL朴ミミャL幕爻fトC面ネLノ~鳳マLfX威<58>ャ尠ャヘょpfsW猜Nsヘ、面ハハョハワ翻b建歿piユククCO"
|
||||
DATA 0 ,"ロjラ岌<EFBE97>ハnネpノ、p<EFBDA4><70>pfpCト壑謖N淤末ネNPLf啾沫Wシ嬲蜍ノリャs崙君柆LP蚫jラfX湧p<E6B9A7>ノN蛹ネネjミネラハ嵎sLミネj喃L陏、兄~ミミ蝓Xsワ毀ハfハヘfjtョネLミヘトミ、ヒ玉ネヘLLLBネLミァfネエb理naハワCワrPaヘャ豊ミトpユ豊"
|
||||
DATA 0 ," WWハ猝frffpハX給CハpCハ藕CXハfワハf。ハfハハ鞠玉砲C鞠却却幕ffワハCハ鞠藕。fヘヘヘヘノ禦CfCfワハf記ミ巾ミ礁豊Cヘ塰LヘXaヘハYLN砲ノ~ワムヘLCLヘハ^aヘネCハ闘ネssミN<EFBE90>j朴rp。ネ盜f淕L゙ハハCハハNネzネ緬ハヘヘRユmミn"
|
||||
DATA 0 ,"ョユuNbミミミミNuNワ塋ヘCョハPLNN霸La袁ネノ記ヘミハ~j邦妍娜ムヘ奔對ルハXPzsPPィC姚pミ勿s砲LsラO李慴b~ゥLz~NaNクネNミリN、Zxトルpヘ淤ネ~ムpワ蘿ヘCfXネノz邁、Cj屐渙。ノLヘャNミヘナネ供ZZjjョワpワハワPfャYi砲afsp"
|
||||
DATA 0 ," ヘノC気p禦fハW。煖CハハpハpXCp朴ff<66>衿衿ハp嗔pハハfp瑯面affヘハ蚪ハGワfL<66>ヘヘエマf胸pワr幕ハfヘ貿ヘfCワ貿a模幕dネネL繭ムミ咾C袰塹}L牟ノワヘヘ<EFBE8D>f娟孵鋒圈~nN衞Li奔ネハfLハハpワハpuPトuヘXハ歿トmゥuエ"
|
||||
DATA 0 ,"哭ルネ牝sZ砲忖uワャ娜蚪Cトaヘm娟穆ミヘufL槎ネ湊ayラノ義ゥPエPトjN弭ルsX孛籠aP己ネuハト瞬ョzuuaミ嬲NzネZjミiPzミwuaネト「njCミクマpiヘ鞠ハハ<EFBE8A>嗔ハPaネZnCbj岔}榧aミヘLヘネラsエヘLPル枅ffハワr衵Lヘ牝蚌fリN黙"
|
||||
DATA 32 ," pf鞠Cヘハハハハ給ヘ朴pfハハワfハワfXハョハハハpfハf。衞玉ヘ幕幕ヒ袰fヘミ修CCワハワf貿ヘffXマff勿ハfL。貿ミrCヘハハLャエヘPネLXf幕末f。毀ャワノョヘ牝fLj~fLfXXaf貿Nネネャ鋒ミミpワ沾ネ}鋭ワラL面pョpワネトjb址p妄ユヘ縞P<E7B89E>"
|
||||
DATA 8192 ,"NufYss酘juP慄ハヘppハpiミP漫案syjネLCヒNN緬ナエnjuャNネWネzz忖s娜sナヘノs権ネミ<EFBE88>ワリムハpョNMi屹sルP以ユLN}n・~sワゥリル嶇Pj血袞mムfハRヘハ。ワLゥ澆LNエ孅夂uノトmtLミfiャネa末LハL<EFBE8A>nワワCワpハX渭ネpユXfノ~エ穆"
|
||||
DATA 8224 ," p瀁f気f゚澆fヘf嗔ハワXpハハCfppXワCハハハCCハミヘfCL模囹LLミミ貿LC礁ハCf鞠f貿fヘ妄ノ却ppハヘLネf塋ワワネCpX錦ワミ勿ハXf孟f嶇P緬p墟ヘfミ面~LCャミCfヘfzミ幕リPヘミ槎f修zNル帽ャノ衞pハハワWナzyLヘpマLママクlヘネ"
|
||||
DATA 2097152 ,"kャエPsルaP理L穐XCハpヘネヘLszfLト圉<EFBE84>ロSノャヘzLjn嗚u挧<75>泝xヘハネネト。トjワjネゥ瑚fルヘap<61>P嬲圀aXLu嵋悍ャPYPミ囈Psラf末u~CyfXヘ失CハワrXYゥCヘミネ寤ゥォクミP<EFBE90>ヘCCufヘノf帽ミpハpヘエCprf癘PャヘfノLヘヘミ"
|
||||
DATA 2097184 ," wハpfpハpffハ妓f面蚪ハfffXCfハfハ。XfpCpハLネミハLハ模ミハpf鞠ハ却CCョハワpfXノpXfムfヘCワ面L帽a哭zfハfハハfpモ鋒沺LLネョNハハ<EFBE8A>N宜ヘ曲fPハfマX盆マ佞ハヘノXppXfprLネハ袞ノZェ曚f酉XハハワpハjN」NLハ洳ノクiユ嬾N"
|
||||
DATA 2105344 ,"ノノnaPャマNi椦ゥナノハハfC姚ゥNミミネノネノX}Lz尢LヘN魚ル決陵N營ネネaヤネミ廸Cトp舅NLトbnミハXLャPLyjャ徊ヨハノPCLfネネヘfエネエ<EFBE88>距ハNOトLLN歿ヘヘ櫚fワハCPCノノ嬲L、輻<EFBDA4>su<73><75>Xヘn貿L蘿Xヘ蝟蜍ャufハハfラsネPf渟NPPN"
|
||||
DATA 3158064 ," 。p瀾f珥ハ砲鞠f給ハハ蚪ハpCffワ鞠ハpハハpCハpLCaLf供fpヘpffワ袰ハCハハppi勿fハハ袁ハ囑L。ネヘ蜍ヘN徘pfpp末囑L模fヘ繭禦f鋒fsハャf豊ヘヘネヘヘC鞠N面貿ヘbs綿ミsNLCヘLNN溷f}曲衿rョハハOヘPsfpハ~iママヘマト"
|
||||
DATA 3159856 ,"ミ囑LNノjンzNssLCワワL`ラャ蟠巾N僅澂LaネL末sミPLs忱NラゥPs鳳LノsNs潘ハトヘOCトYpNCぬmO孛n址ヒネPjuNf凶j耀s桂ミu堝uャuj緬fノNゥLLハ。CfXCヘLハゥjミ}nNミヘj醪末nXワミワハ貿Rfハiネf裹ョXsクネ豊fNムエLPN"
|
||||
DATA 3945001 ," pハ蚪猝ff玉fワ玉fハハハハハCハハヲfハfハXハCハXワナョ。pワff猜aヘC鞠fpョハワCfXfXヘムヘfハワハf~aヘp鞠ff模fワハCpハ喃f瀾L。薛ハaaLハミpミffCp貿aノpXノハsnラC岻ゥP湲エネ。sRハp戯エNァN虐綿朴pprワLLネjワミzノマノXLト囿"
|
||||
DATA 65793 ,"uuャ矯LマャaLujLハハワ。ルミuN哢Nミネ袰jLLPaエャp睚ィLPNミヘ、喃鳳ルハasハヘネj弧ノCトナノ嶇ufワz臾unsPトO}ル憙マクwヘネssNゥuロァnvnuロiL琴ユー泅iハrpョワワY椁nネ謂fi~uャノfハXf弃ff末CワCNNsョョfヘsミ忘泱Nハエミu<EFBE90>"
|
||||
DATA 65825 ," fpハpハハ瀁瀾ハpハXハ袰ハハfハfGrXp鞠fムハヲ記C幕燠末p幕ff貿ハC礁蜍f宜fヘワpfワf極rミハ許ワ蟻ハエハワCハハ鞠藺エfノエLaLミネャハネ咾蘿ャz朴r儲極Lsロfノ蕷NミノPNLZjハppヘ孺sXfゥリNzCppョハ孛zX恕帽ヘ淙YヘヘN"
|
||||
DATA 861953 ,"牝毀貿L~~鯨ネネワppYN耀毎LWNミヘaaLワ盆ミネネNLネミaゥルノbネ寥uzエm<EFBDB4>有P蓉ョ蟠ノネャsラpワj嗽uuネルャuXワpf娜Xsノネ`PLNミsミ逢ネユfムマヘマ<EFBE8D>sネワppョ袰fラメ楞tナj涅LLナ湎wdミC廚ヘfpfaa~PワpワfN~ロzヘ模ミミ沮s"
|
||||
DATA 76577 ," ハpfハC瀾pハppp給CョハCp玳ハハ玉Cハハワ鞠気pハXヘ蘿Lf却ffハf塹却ハハハf蘿喃X許ワ蝟fヘ許ppハpfa金蘿ノCワC紡ミ。ヘLCミミミハfハハfノLfPワCff塹啾fヘエト啾ネ彷逞fNNハrハrsNstfハNz威ハハpハハ綿npNXヘヘムLLXpXマ"
|
||||
DATA 3096353 ,"リLヘヘnク耀Nf屶pprLfヘクツLラヘネ模NPNsfヘLノfXミN綿綿巍sf吠僅aユPyCLz癶rpミャ~sラNLミuミ<75>ィリP」LN<4C>jsミ杢Ns蕎ss蘖ネs欹aNfマ吠ノ。櫚ネヘfハワハワfワ妹yィ厘タ盜なaffノネLヘzミaハpワNミ屎ハCワワLLP墹ヘミ岻ネNC"
|
||||
DATA 729403 ," ハCpCpハppWf猝pハppC瀁ワハハハfハfXfXf瀁fワf曲fワ喃裹朴pハハハfCCpppf給fハ貿f妄ff幕裹LL記L記ハ壘ハハX毀ハ喃LLRネヘfCハルヘpハノ貿f衙L}pa塰ネfネrミミPミネハO杪ワユマkネト梛Nヘノ孕ハCfpハァミユpゥワf~ムヘ僅XPb"
|
||||
DATA 459033 ,"Pjトゥ闌ナN塰NCハp衽鞠淙Xラ欹ミネaヘNLOロfa僅・~N孟LNャsLミヘs恂ネC湧N寶喧僅~柆sャ杵asタ拑js孵bPMPNネ紡撤aネトY綿ト頬ラaf唸ヘ蘖ヘノヘヘハワワfハf毯屏緬fャエaaiミLf孟ミ歿rN墨u壘C渭ミネワNノマPネ陽N<E999BD>"
|
||||
DATA 70913 ," 煖嗔ハp鞠ハ鞠fpCハp術pワ鞠ハfハハpョワf。ワfpf幕pハハ。fWp。味ffハハpハ蚪WfkXrハffヘ勿ネfL末W許W巾CハpハワfffミCエppN壼f嗔毀ハハffNL鞠悁禦模Pノミ嘯NCロエP貿マハp渭ゥ。XC嚠ヘ嵋CpワハワNsワNPNfマヘユヘiトNP"
|
||||
DATA 2695437 ,"ャ娚PpsヘヘミLPCワCゥミ墸ラXヘ末蟻LN烝ムク國<EFBDB8>藺X朦~X救OヒLNPノミル豊}PネLXPzsムワルNzsXネ御LシNCヘ味NN娟NエZ恂N墻址廰嵎uuj盜<6A>渮y袰ワNCワppハワX陝・ヘミクiaL模ラャN末ヤfハ蝗PkャL玉記吠ミLヘLハミノkミs"
|
||||
DATA 467217 ," pp玉fpハp気f瀁ハハpfワf。C蕕ヘヘヘ玉蚪fハハ瀁。金ハff咾許玉瀾ハpハppワfハ囑ffヘiヘfaヘf面許Cpff灑ハワffLCfヘC門ヘLネCヘノsNa。C}N塰ノLLffゥ塰豊LL穆XリナsaXぬrCネPfp貿P嘖PCfpハハLノワLP<4C>ワノャノト淤<EFBE84>"
|
||||
DATA 81713 ,"ゥャuル惷zハsrハョワノ亡a淙fLミネ櫚ミaP塰NL・Cpfョミネミヒnsf綿・ゥzルエfミjYNィpロCミ末ナjミPエワエkjbミs嫦PuusNuuPXミミ孰ネノsPLNfXノヘ涅ハ歛俣ラハワCPョワヘ嶢Cゥypハ孟NョZワヘP玉fPラYヘLハハpfハミエpヘネヘNゥsPャネ"
|
||||
DATA 471321 ," 許fpハf鞠fハpffョハ瀾ハffpXXfp却p煖ハfハハハppCppハ燒p塹ハfpワpハCハffワXハCfXfXff。鞠末マヘ記LLfョCハ金ハハ僅fハ殫エC<EFBDB4>ffノCヘルヘミLfネCミk豊ヘヘヘヘz櫻sf慳fCョf峡ハL尹aノfpワfハ暑ヘハノfP面rヘャヘネPミ"
|
||||
DATA 1785649 ,"模rPヘ帛fapハfff。Lp袁ネ孟ネ模記ミノネ毀マャaaiuゥLリ耀bルuL涙蚶ャLL<4C>蛬XミロNjCヘ有Xヘハfjuj娟ロ塋ネjルLsャsネNLXノネaYzuPLLm孟ユミナユミCYワPsLrpCヘ袰Cヘ舊マクsNW藕枅ヘ裹p漫諒嵋砲ワョハハ~ミsf喫jミLs砲"
|
||||
DATA 471841 ," 玉ハC爍ハハp。ハf玉ハrpハ却玉ヘCハCハpハpハfpハpp煖ワfハハ幕居貿蚪ハpfハfワ豊マfムX伺ヘfpネハf末ヘ勿a末pCハfLCC貿ワpハハLヘXマ幕ハ<E5B995>fヘ哢NノaCヘ鋒N~・L孟。ミラ末NfL衞L煖衞L祭jPワCfハCfネハPネ庸LLXf渮ネPネ"
|
||||
DATA 65801 ,"ゥL墟nPsヘワワハa起末`脈哢a妨La嵋jゥf、慄Nョノu諒迪j徊ミjPナラ浙jミェLCpuミkPnヘヘ嗅ェハ圀NPネハ孛s蘭LyPNuZPァエs瀚ョネuN~ルfヘXムヘユ蘖ノミfjミノprpネルpfネy漫渙ヒ~勿慳貿ハミワNミネL尭Cハp衞fネネヘa嘯ミルNミエ"
|
||||
DATA 1650987 ," f瀾ハハハpfpハヘpワp。f。給玉pfハハfffハヲCCハpヘffハハ猝喃玉鞠ヘpワワワョ猝ヘfXヘヘfワ袗p貿ワfp宜fヘff裹Cワハf鞠fワ。pハp<EFBE8A>却pXミfCp却ャsa毀曲慙LノLfLヘLLfxCネfLハCハミNwfヘヘ<EFBE8D>ヘWワXハCnCハss塹XXfエマヘfL"
|
||||
DATA 2965297 ,"ル蕷ハ<E895B7>極ヘハrハ埖汲j・ャロu}}面佑is~繭nMネiur∵挧巍ネuハXu屁P椁ネz起N頬|<7C>エfjfkb畴Oラs朦uauL營PjL棧PN淙N猩ネネナ孅P沂Lマルu貿ネz面ハ玳ハj裹fユマユ傭孅LjfハLワネfラzロネノLハハハハハP豊ヘミネjs~Pノa"
|
||||
DATA 1511681 ," ハハp却給Wp珥f嚥pハハpfハ玉給p。ハCハハハfハハハハハヘ鞠朴}X許模朴Cprハfハr<EFBE8A>ヘヘLXL泯ffffョ豊鞠Xノfワpハp鞠面papワネヘfL孟fワC。ハf・嚥鋒P記fミaワミfヘffヘ末廰エfppワゥ・Cミyafヘ晏衞ハハネCLトエ許LノヘfRXiL"
|
||||
DATA 1646875 ,"jfルrヘ呼ハハpネNsト喧薐~PィノノノヘuZロノ<EFBE9B>P媚<50>ロPャネノss膜ィjPルロゥOP娜N庸Pz龍ネufワZprョシu頬ロ<E9A0AC>u忖ネ糊媚zミLfミ槓為PノLNLLヘヘ漫X蟠Caャ豊YdハX豊Cワヘユクユヘs彷ノミ薛模L鋒NミX紡pCfCハP龍Lャノ耀LミPY"
|
||||
DATA 78141 ," 面pCヘppfpハpハハ給pハ煖fハハpfpヘ鞠ハワfハfp瀾CノヘCfCWワヘf幕fpョXハprpfノハf塹ffマLょpヘp模ワfif却ハハハ猝ハヘLヘ朴ハ玉La壤Lワ毎LY繭喃ミPノネ囑ハノff摩ノヘヘLf彗蕕ハノNハ嚥ミミLZハワワハCLハzノLf妄ムノヘクユヘL"
|
||||
DATA 68865 ,"嶂ルxノィep衞nnpヘOyCtヘルu廰ミXLZ桔ヤNjロu扼pネLリ<4C>~jノミミj蛍ト椦扼jnミNsz鳳ユv屐ョpXョf槨血孕jZルNO憲nuリan蘿ヘNロsヘャィ嫻fヘムノ塹トルヘハゥpネヘミ蘿p慙fワNPミ盆~鞠fミXハLpf末f豊sCpハpハヘiL|Lヘ末~Xヘ<58>"
|
||||
DATA 332045 ," ハハハC囂G給ハハpハハf瀁ハfpハppfハfCpXハハpワネNszLノヘヘfハ却僅猝pハfXfヘヘfヘXff9ユ咾蝟Lハハ蚪紡ワr咾pハヘハCヘL<EFBE8D>模記朴LネLa紡Lワ杪Nx豊伊fXハL潘ノノヘヘaヘ哭LハffLY薛孟ネエ渭X玳XワfノタNハfヘ渮f湊マネP"
|
||||
DATA 467743 ,"uO~タネノョワワC從sLヘヘャOミク<EFBE90>鎔}}f貿起ヤ<E8B5B7>廰ネfmN殍uト頬<EFBE84>ト<EFBFBD>ゥNjPミPNルuvYミョjネ啀Zィpワ喃ミjルuゥju崙巍uj<75>憲ミzNミ尉瞭脈LM紡マムi殃jネ万ルzP歛ョワrネsfffラ握リNネノfCワハj鞠f廸ミfYC蕕pp孟ム豊Lノヘ緬ノL"
|
||||
DATA 80673 ," 煖瀾ハ給玉衞ffハハprpハハfCハハハ猝ハハハpョpハワC衿ノp煖貿ハ許却ハハハハffffXヘ9ャヘ塹ヘ瀁ffp叔ワワハ却ppハハ咾p嗔f吠ヘW蘿f許ィL給LハaL毎ネネャネネネワaiヘXL模XaCP衞pL衞ヘヘ圈ノ佞ワハ袰ヘfリ痛ル帽渭ミ盆i~f"
|
||||
DATA 4144945 ,"ノX~ハ朴ハワハNミ泝模ャ麿ミロn忘ヘ紡f模門}u貿f孟゚鋒yネャャj}ユ囓流NnミsjミPネ」f~NLNPミpzf桂SxZu君Pu君ロ~哢エネミNY榧zs鏑ヘ幕ハ。枅ヘuネLヘf吠ノaハ蕕ワ孵貿zaラ。NLNfョハL嵎ハaji慄靴pハワrz穆Lfヘ豊哭zャ"
|
||||
DATA 2830609 ," ハハハハpハハ猝ハCハ鞠玉ハハfpハfヘワ瀁ffXXXハハp喃ハ僅ハハrハffハ面fハハfョヘCffヘマヘマf9マヘf衒ネfハヘffafハハワCpfpC玉p燠Lf模r繭f許Lfミ綿Lミ。sネミヘハハaヘfヘマCミ面哭pヘ沒C<E6B292>LLNネCハハpワハCネノヘjNワヘfm供ノマエ<EFBE8F>"
|
||||
DATA 1784593 ,"ネナLラ艪CワCノsノWL末沫嚥Lネノはユヘfハ穆ノsノipヘsNNuubミラvn<76>v、屆。^闘NaネLN弭ヲルPs貿upラョ屆PMルルON~頚NPャL孕ノゥリヒミs袁脈ユ姚YX泝憬ハO豊・Nf丞ハpノ|ハ浙LP~ネ蘿pノsNャ惧NjラネワffハXミLjCa模模ノミz"
|
||||
DATA 463127 ," ppWハハ。ハハpCpfハ給ワpハpp玉ff瀁ハハハpハワハハハpf。pXfff籾rppCCp玉ヘX僅ノノ宜ャム珥僑址居嚥f籾ハpfハ礁pハ。嗔ワヘ却ハfハ塹味幕fワLヘネノ鋒ノ。f貿fヘハfLLfrネfヘワ蘿LワLaLネXエハハf袰ハネハaノ吠ヘヘfLノfゥsナネ"
|
||||
DATA 1128255 ,"~sネ弩rワp・Nミトエ玉Lvミ紡ミヘa嚥fLハLfヘpヘyC模・穆N~ネPjラネャL湊p榧ラミノκネトOゥヘミCpC琉fZP~NミP尢u葭ラsNNNLミPル~uリjィnNヘ耗LX蘖MPspひラLネPヘp裹NsfワiネNNミ~CワハNjPヘX娟娟ミCワf瀁ネjネ沺iPLノミNヲ"
|
||||
DATA 81725 ," pppハ僅却ハpppハ玉fハ却ヘ貿Xハワ鞠f玉ワpハff猩ヘヘ鞠fハハ毀ワfハハハハfC貿帽fノfffヘワノL貿aヘワヘ許ffハfハprハpXヘ脚fハ豊給X以啾面LfクLP猜幕末f均禦pf模Pヘ許淕ワ章fヘs以ミ彷pハワハCPk囑C繭Xノヘマハユャaa"
|
||||
DATA 466697 ,"ネクムーネハrハyN囑満a孟Lノr末LfLa猜L蝟fNLzff。ミヘsa塋勃uj<75>ノaMP嶼嫗Nsミx鍬ネミハ佞ワ勿Lu圏ラヨエLs娜ネvPロルル<EFBE99>sミラN陽n諒ロ吠ムマi渙威fsネミNノ律ワp蚣Pfヲ岔慂ノaワワ禽LミNハノZya<79>ハワCワ穆j貿Cミ起庸ハ"
|
||||
DATA 81709 ," Pハfハハ給pハppハ玉pfハ猝ハfハpハfCハfハワ玉pワハワョハp給f玉勿CppハハワpワfpX錦X舎マfLヘfヘヘfハCXfヘpハハハpハfハp末袁ffハfワLネf妓幕NミLミミヘヘネ泱fハハヘ豊f蟻rユヘfネラハハ蕕m以s綿N蘿ョハ京Sjネfノs門均マ漫マムP"
|
||||
DATA 4010767 ,"寅マ砲ョ蚌ノミ溷Lf孟J巾鞠f墨慳L牝凡面砲rLjヘsPぺZラヘミusト枯ャjP厘恂L毎ル悍b勃ョCハCnミ痢uゥPリロネun曜ルラka<6B>孟娟nナ嚥iPLfノfネLワミaヘノfトipワワヘネハハワNs・ヘ勿paネa喃~紡嘖稜ppWCLルsaLワfNヒ蘿<EFBE8B>"
|
||||
DATA 196871 ," pハハfpCppハハハ蝪ppハ給ハp玉ハハCハf宜fppヲハワワ鞠ヘ玉貿fハCp。衞ハハハCrヘfヘXワヘfワLN嚥貿fCハf帽Cハハifヘ句Lハワpヘ末ネL。m哭ゥafaヘ曲ヘミ淕LL模Cfミ曲f末fLpCf幕pワハネネ~Nネャエ瀁ョfハzゥ嵳ヘノワハf漫マLマNク"
|
||||
DATA 80147 ,"L鋒嵬frNネャ塋給pfネaヘ末<EFBE8D>ネネLミkミrkネj貿LラLu摎Pル匪姚N嵋ト威掏Puuミszj悍異ハロpハワトO、ナjPトsjnNN嶢kj}ネ瞎suj遨uミヒ嚥ネヘm}ノ<>ネ鳳ミCエネリワpョL灼ハzトPP鞠pL哢ffヘネネネu彷ハワワXヘaPff豊エョハ綿"
|
||||
DATA 331529 ," pCppハpぬ瀾ハハハpppハハpハfハpハハ許Xfヘハ毀ハハ鞠ppハfハ鞠p。ハハpハ叔蘿fC末ヘムXfa模禦f勿Xヘ嚥pワワハppハp幕pf鞠f繭pネL泱ノヘワ妓ヘ歿ヘワpp哭CfpミpL門fXf喨ヘCワヘwpノヘヘヘクpハョpワpノNネャs綿叔iノ湲ノノ事"
|
||||
DATA 2176831 ,"NヘネハワハCゥヘネノ孟ミ猩哢ヘ許湲ヘX<EFBE8D>ノ穆ル彗s貿ミNL豊巍ロ幕ネミハ~ゥjL弃エャ椁綿廰z鋒ァL面ヘwzミjujルMuャnsミusLユLaanPsj~レミLャヘノヘNミ榾許jネsネCNルP。ffjマfワbsミsハCrfNNfネ鞠NNOPヘ術ハ小Nネヘrノ謀ヘヨ彙"
|
||||
DATA 71999 ," ミハ却却ハハハp鞠玉ハf玉ハヘハrffワX金fXXハハワr幕ハpfpffr壟CLpdハぬ給fヘヘノY9Xヘ記欷ff蝪綿CハpfC玉pハffハネpハCafaノ模喃僑ワrヘ籾ハハLf脈ワLヘf末Lfヘaf豊Xヘf爍fXXハワネワワ衿ハfエノネノ紡ゥヘノヘf司殞LR"
|
||||
DATA 860433 ,"漫ノハpハ豊z垰ノミワミNゥマノ渙NmエミaLZNヘ陷}囓jルゥミ漫ノロ囲ミLミN}ラNトsaa禦Naf娟OルNミノfワノハPタOトsN兄ラ悽N巍<4E>臻柚ミ<E69F9A>芟ON嶂哭耗穆aNN凶ネミラfエネsネワ蚪pffu捏ロ蚪ハ挙幕ヘN鋒頬uぬpハハN哭LfNy気ネP}"
|
||||
DATA 605489 ," fpハハハハppハハハpfハハハハpワハワ。ffワワワハ蘿却W衞ff哭ネfp禦味ワfpハrハXfヘヘムfユノワマXヘミ模ネ記NワハC囑ワpXC猩C瑯ffャハハW貿幕ヘ末a吠fヘ許貿pW貿ムワrffLaハfLf囑ネハXハワハfLハXf面ハ蜿a。ネ~極ミトLマXfXマャLツnu"
|
||||
DATA 999203 ,"トP角袰榧Lム塋LヘネヘLfヘヘネu<EFBE88>槝P噐Yルv・桔Y嫗幕N孟fXO忝栩~NラPミL巍s嬲PPロ毎嶢ゥョfシクノネj娟ルN徭君jララ満nゥ覧nu柬嫻マ孟|エi沮ヘf・ラネjr營s徘fョXCfL瞹。ワハfミラL貿ヘsN廸ミ玉WfハヲNaヘLミpワミヘsネ"
|
||||
DATA 854279 ," ハ玉Cハハpヘpfハ蘿ffハpワョハハ却貿玉ハハハハハハハハfハハf禦ヘネLX}pノハ礁ハf宜rヘノffpXヘノXヘL濛LネハハヘヘXハハffr却砲fffXf模ip朴貿貿ハXf末ヘハヘ幕ffャW貿朴f哭豊Lハワf裹Lハ貿~|ワpワワfノトi孟ノヘヘノfワヘ宜fマu<EFBE8F>"
|
||||
DATA 860959 ,"ネ位ハワ巉ヘzXNaNNヘネヘ・莽fp慄脈LL彿LLsネトCネ鞠ト鳳ャP<EFBDAC>唳慴Nミ牝ヤa徊Nノu嵎s囹頬bn蜍ハj瞎zNL耀L<E88080>ミル愼P<E684BC>ルuレ屆啀bZムヘミユノ鋒貿fロPネLワ漫P孅衞つハp梨p裹蚪Lロワワfzネエuネpハfョf哭ネノ粍fネPaミ<61>"
|
||||
DATA 1785661 ," ネ味p却瀁玉ハp面玳f玉面XpハハfワハXハハpppffハハNユf啀Y喃LワpfC鞠fffffヘfXマモ喃fiハLXハワヘffハハハffffffff蝓ハaf末fワヘL玉p鞠p勿Xハffp幕ヘ末f句燒エp緬ハ鞠孟Lヘ面NワョfワワfハLLN紡穆fヘXfヘ貿ノnj"
|
||||
DATA 854283 ,"ゥaハハ啝NJノミネXPネヘf孟s面哭ミLミ圍蟻v渙sヘsL孟zPNNLNL奔娟ミ哢PノN娟NL尢jzNujprハミ衍N屁kャミミエ<EFBE90>懸ミspOリP徭ロ孳蘭mユムノネsネワワミs」ハfネNネNpョワN溷ハNkCワXpp暁pp記娟}LCCffワNトu渭ワ孟怡z~"
|
||||
DATA 66817 ," ミハ模pハ金喃ハハハ。pハハハワXfrCハハ給醜ハpCpハppワハ蚪L緬LWrノワハ猝ワf<EFBE9C>ヘfヘffノヘf嚥ffffハワr蝟pハハヘXf却貿鞠鞠ノpffワヘ却泱Cミffワハワハハワワ濆ヘpff。pp豊貿ネCハワfネfミノ塹砲ワppハ炒ネャaN壟f宜Yユネm夂"
|
||||
DATA 4144929 ,"ヘrハハ壑ミ啾fハエヘヘミエz塋L~aネヘsヘfN娜Lf<4C>殫pネLミネyN唐徭NLukj<6B>エs鋒ヘ~sノネP孕ノワPNfハノssミzネ廴トミゥu孛ルミ諒kラ」リネ<EFBE98>sPマヘ渭iノミクネワLロsリョミ~ノ<>ネp蘿盜ワョpワrワョWfuハffPネaPjCハハp薇jネワp緬Nj曜リ"
|
||||
DATA 67845 ," ノLpC玉ハCハ燠f。ハpハハ句wハハハハfハハfp気pfハp喃ff勿ミ鞠末ハLハハハfワX衽mff9i模マpN。燒C模ヘfハワハヘfハワpfハfpヘハL鞠僅L模LffミCハppハ蘿ハfワハCp面蘿fヘfヘヘヘpハワ妨f衞CハfXffハppp悁CLヘノヘ帽ネ<E5B8BD>Xワハ"
|
||||
DATA 604449 ,"ハハヘクマハヘX毀。ヘ<EFBDA1>Ppjネミミf紡蕎isNNjネミヒ穆幕fラネミ威sミミN屁Pトゥs模PャPネs喃Nミyxj榧ppハNエラ廰s姚ミj尢<6A><E5B0A2>径哭sujPャミ起ii吠渭i~rfノLネヘハLヘ|ハ慴ワハXゥ溷ワワ。ワfワワf}fffャaノP」pfョfL凡GpX・朦skャ"
|
||||
DATA 4143935 ," 給pハ<70>ハハfハ玉ハヘハハハハハハハf瑯ハハC術f脚ハハpハハCC啾XP瀁面f衿XGXXfヘヘヘfL|脚蘿。f綿XpXヘ鞠C衿Xワ集貿ワヘCLX猝ハLfff模模ケppffハfハ・ノNL衿fハfffpffrfpハ薛ノ。ヘハワLL。ハr。puj敗fsクfp毛淤惇ト躇"
|
||||
DATA 737083 ,"慳ハヘfヘミLワ歿欷LミLfヘノLaヘネ許pハfワワaL慙NノノィミYネfヘL浙s・淙~jユヘfX椋緬ャNNN孟朴Wヘ衞CミsPトsネfノエz鑚ルロ<EFBE99>uuujjj媚z懸塹マワノトユ繭ハ淙ネ彷f朴ミPミpワワXマCョハワハpワハXルハ蘿ネ嵎屆。ワワfワLN爍ハPリjPjNN"
|
||||
DATA 735505 ," 鞠ヘヘpハハハCハ鞠pハfpハハハ鞠ワハC鞠ワfハハ。ハワハ却。瀾ハf給禦位ハpppff許Xワ瀁ユ<E78081>マヘ貿玉Lf却f貿ハワハハ許p蜍fpハハハCffハfハLfCワミハ哭pハCp給CN燠ffハネNネリネネNミヘCrf模ネPハr模ハハfprin蚣ヘ・fハヘノヘマャユミシネ"
|
||||
DATA 67853 ,"ムpfヘf曲K笛fLヘヘf貿fXLマハjロbjjfハN起ミ淤ハPネ綿ネトLLsLn委ヘu緬ミNP~X嶢~リNミ来L嫗fハハL峩ネネミネヘエミノャエjNNミロjMルトルルミPi殞ヘマトマRNユミLヘaヘ~耀ャハハr蜑CハrワワハffpNハョ許獸ネsC。蘿XLCffマヘ~zP淤ミ"
|
||||
DATA 2834237 ," 澆ネハw鞠記咾ミ嗔ハハ僅ハハハハハハハfXfハハCハハハハ澂嚥鞠X瀁ffハpワワCCハfノマヘLノマ<EFBE89>ヘ末ヘ給玉pワfpヘハpワワハョrハハワf許fワC睦Lハ僅給P朴金ppハ玉ヘミハヘNNNCネネWj。ノfCfヘsNネ櫻N威Cpppf起ヒミf衿トC許ノノャクャ。"
|
||||
DATA 998705 ,"CXffミ模麾LLLPネs綿LヘaL。ノf睦幕ネヘヘzミ孛ラワ紡徭jミfルヘLミN慂ノネ奔巍uマネネaNNエネubu<62>C鋤ユエミネNLネN諒ャszィusロ廾嬲jルNL模X毯XYRZfノ<66>pワネヘ~z悽衞ハハm佞ハハfヘpハワミハrハ猖N~jハ。貿慂p淳沺~L嶢sネ"
|
||||
DATA 998185 ," 珥pハ礁ハp鞠ハCf玉給Xハfffハハpハpハハハハハハハ暑気fハ僅pC喃礁ワハpハハCヘ鞠iヘマヘ淤ハNノfppワハ記f貿pワハハワffハハff末ヘワCri。f僅貿ハ貿ハpハ蜒pハfハハf玉ョ許p<E8A8B1>sLハp許Ly模P以ラp蘿ハミミエ}W矯ユ幕LL歿|壅"
|
||||
DATA 73515 ,"叔ハヘz澪if櫚Nwャap綿ハネヘマヘaネfヘN僑極ヘ蘭ノワf巾ミbL薇a密yミ厘pクf娟マNヘLャ<4C>ZaルNuf給~~LNヘLsネ<73>NP枹ミ以雄ゥゥuネエ尹ハf模Xク社ハヘ廰p僅ネ墟Nミネpハpfエワfハfハハ藕トfヘfヘヘミミルワワハpCハp屐PPP厘LNミ"
|
||||
DATA 856327 ," fヘ。fC気p金pfpハpハハCpハハハハハワハハpハハハハCpハpC殫気巾禦ハpハハワCハワfヘヘfヘXXャヘマXネf。ffWハワfハハfハハハハワXワ蜍pハfpfC貿ヘLヘLワ鞠Cハ嗔面ミ塋L墟恕CハワCW鞠僅ぬヘfNネL~NャsNユハpハ吸哢LP。ハ仇模fヘ<66>ャ~猝"
|
||||
DATA 76049 ,"ハpfLuノ姚LネネXaヘ沮ヘ湎ヘif藐f僅豊ヘひsNL玉aL址ノLLヘ~ミ巾繭模ノ盆sノ泓PネsミネNルNィネ面ハLミネP<EFBE88>蟻aィX~Lミノ朦Nsa孟NゥトネXヘ模クノヘLノfハ・嫻ワpPLミエル螳ハpfミ朴pワ気。fミ鞠fNN慂悖fハ蚪fCrユノ徭娜ヘNミ"
|
||||
DATA 865057 ," 脚澑aCX玉pハ瀾pぬpXハハハfハ却ハCハCハハハハハハハ囹毀金囹エヘCpハハpハハワハfヘムヘヘX宜ヘfp門pハL貿pハfpff衞ハLpf。ぬfp末vpハL衿ハfP僅毀ネ記瀁ミfffハ末Lワ紡ハfマiLfャヘ綿ノCpハp。墟s威ャネ末CヘXXヘ~ツXワ"
|
||||
DATA 465173 ,"ワハs鋒sjァノ囑Lナu<EFBE85>ZヘヘヘLヘ貿濛ひ末ミネラネfpラpヒノゥX~ネaNWLルLs麟L嵎N蘖siYャヘYミLラヘエハ孟aヘミミヘトエa、ミネNネNャラミロsiネNNミP<EFBE90>LLX事。s緬ネLp泪Nノ佑ャNP蚪fXミワCワハ衞ヘzハf壙Lネヘトワ蘿袁CNノネPs哢ミ尠ヘ"
|
||||
DATA 858377 ," ネハ脈ネpトpハハハpハ却ハfハXハfハ面ハハ礁pハハハ瀾ハハp玉Lヘハエ金ハCp蚪pハハハXXノハXLヘマハハ玉ハpワハハfLヘ豊面珥ハハハ<EFBE8A>Lヘ玉ハfワハaWムf面ハfハf<EFBE8A>pCLCネ柾Xff玳ppワネネヘハノ末fL孟aノCワf僑NネヘN朖NヘLp。貿ノmfワ"
|
||||
DATA 4142361 ,"ワハネ殤fラLf緬X}~閊ヘLLヘノヘfヘLネ万ネLaifヘミムワ鋒f猶Nz淙ナf吠ネネ巾櫚ミiリラノノ訓櫻~ラゥソLffネss脈ネノミノN末sト伊尹ク・P穆sNNハ殃fwfクuヘネLトハマYNN毎PNN衞ワハルfpワワpハi庸ハf帽リjハCffワfミXネa~PヘャLLミ"
|
||||
DATA 69389 ," 煖記f給XノCハハC玉ハ玉ハハハ僅衞ハハCハCrハワCpppハpハpWLfC却p礁ハ宜fヘrヘffヘマノマ。pppワXpハハpa僑ハ。瀁fLfp。面ノfハョpワワff鞠LpクワWfpハネLaP極許エpハハC朴ワワワワpネハ幕aLミネfr賞ハf孟Nゥs<EFBDA9>ノLXマ渭マaネ裹"
|
||||
DATA 860425 ,"ョ漫aPPfヘヘミェfsクヘ門Lfヘヘハ啾籾末哭ppX恚X<E6819A>ミヒ枹L惷ミ蟻ヘヘf緬トラミNエLj}ノネjP孟ラノyPpワャj綿Nゥfzャネノ}ミ慷エNエLミfP廸ラネママ豊ム<E8B18A>ヘハf・ミ毎ノネル弃aLLトハfハラsワョワワノムロワワワLsi~ffハ裹p豊ムネLエNミfa朴"
|
||||
DATA 67865 ," ffLハf囂ハハ面pC玉ワfハffXfffハffCpハハハハpハハハハppハ礁L給ハハpppヘfワヘヘ謝歿ムヘYヘappワpfワハffaノハLL幕ff玉ffL給ハヘハr蝟pfミミョ面pハヘXfネワP囑Nf許a蘿ヘワハハfp貿f末afL勿pハfミ哭。NヘLネ緬許玉ネノmネワ<EFBE88>"
|
||||
DATA 71425 ,"f猩ネaミPYマf許LLXノfユヘf袁XfヘネfpPヘfヘ帽ムLf廰|ノfノ嵎ミヘミXミu沌ミ徹ラリY諒黙Lミa椁u裹fラトトミ力ミラルネNミ哢ネミPネミ湊ONヘaNヘ綿ノネクノユワヘノヘミiノミネ淙ネNミノワCョワラ・ワワワョ泱ワffノネネ尠ハョf袰LNノノヘaLャN廰ミ"
|
||||
DATA 1777409 ," p句僅ハpGハpャppr給ハfハpCハ玉fワハCCワハXハpハ。毀f幕許鞠pCハハ袰fgYヘmヘマユYGLヘfLヘヘハハ鞠ワワハワf喃ワ蕕Cf嚥GfョハハfヘffXf曲LfワpヘハL帽pラネ面ヘネLp咾ヘワワrヘff貿鋒粍ハハXpネa僅ネ慙fLL記pffャLゥワワ"
|
||||
DATA 856335 ,"ハfff玉pヘf模ヘ脈zpXa勿ヘ帽ワ貿ffaハハ玉kャエハNLP嵋ヘゥPaLYLャユャXLLネヘN霸峩クロyルzユNクハ藕uヘヘXスLエネヘ綿歛NNラk屁ネNaLルヘマXムマノムfワハワラムネfLムミ~エル澪マワ裹ハ淕ハワ蘿ロョrfリノムミPワョワff淤aハャエPPNネヘs"
|
||||
DATA 77083 ," ハCp宜宜f給ハCハハpfハfハハハワCrf玉ハfハfrワワハ僅藐p嚥ヘfネ嗔緒ハXrヘヘfマは渭宜C哭ワf澂pf末ヘハハワワハf衞ハノ給瀁ハ薛ハヘ模ハヘPLLヘLLsp玉ネ勿aハワ蝟ヘaハネafCpC給給ヲ僅Lff蚪rヘL墟LYユ。XN模記ヲム。Xトワワ"
|
||||
DATA 2830619 ,"ffネワハC囑ヘヘLa豊Lムヘpハノfffffffp巾リsLワミミ潴Lssエf猩PzLrNトj圈sヘsネラミNネs牟ネ泱ヘLLNワC巾屆末rノ~Lsミass李嶢ネノ殍jLマヘ喃ヘ<E59683>マfムハrミ蝟エネ廰嚠PsLPmハハfpfワワCョ量ワffネネネハワfワfLLヘ淤惇ネネa慴"
|
||||
DATA 2047807 ," CCXpハハハpCハハハ礁pffXハpハハp衿fハハ衞ハハハハfハLfW記ミ給Wハ。衞ハハハハf玉fffユヘヘwLffヘfffハハ巾ヘワぬpハCハワp鞠ワヘLfハ豊ヘネ綿LネzハXヘXミネaヘ貿Cワ囑蕕fハL哭哭ハハワワ門貿嗷毀ワハハハL囑ネ極X給CX緬Lぱfrワr"
|
||||
DATA 68871 ,"門ffワfミョXpaLLノ許ヘミ模fワ貿ヘハp許リハfLネノヘ歿N櫻クLsラLャヘノネ豊Lマ蘭ャLNル麺綿n盟エノエ<EFBE89>ミヘミsノノNヘエ嘖ネLノミ~zNネャjkミネP郵ヘノaL貿fネハXffミaNNミララNトkネ~zaワf脚Lワ賞蘿fヘfsミLNXョワ蘿ハネワヘPaエNLエ淙ミ"
|
||||
DATA 737087 ," ppハハハハCハハpppハハハXハハ衿。CppハワハハハpハハハハpLL僅ハCpL<70>ハpCハワハ朴fヘfX^ヘifLpf鞠fハfワpfffハハfョfハpハCfノr勿rf籾ハハ許p僅ワ毀ヘ巾ャヘfハ朴ヘミ。ヘLaaLネPネハCpハ給ハヘネ孟朴ワfハf輝ネヘヘタτXLfヘfL|マヘCpf"
|
||||
DATA 3096383 ,"ヘf嗔ヘ貿S模pネLfXゥkハネWハXXf綿貿豊prCX綿紡ノミL極ネミエaNヘヘ橡煖f紡ネヘf巍ミラsLNi慙Lf朴LノNfヘネrN儲LuNs梳Lミエトネ幕N塹ヘLfノマユワワaョPsミネNL~PネヘPユ蘿fワネf衞X勿ワムノ寰ルハハワ衿ヘLffLL圈ネPネN<EFBE88>"
|
||||
DATA 858903 ," ハハpハハハハfハCハハpハ猝礁ハ玉ハCハハ玉ハハハワ猝ハハハハCCハヘハLpヘfCハCハヘ帽試ヘXXハXヘ僅f幕面ハハfXXハfハハハワネpヘfヘハpハハpヘ模僅末Lネ豊ff記Cfp末鞠LネLf鞠rLヘヘCハfffpヘヘfXハワハrハ嗷モミ鞠ネナネノ末ヘfノX漫ワpf"
|
||||
DATA 65795 ,"ハp。<70>ヘL睦pvf也O慙ヘ。ヘj末pXLp蘿~ヘLワワLヘノ緬Pエミノ沺yLXネミヘャラN綿ミネミネエヘ粍豊ャワLゥハ蝟櫻綿ノXネXネNNPミリ・LネLLPNハsムf帽ヘノノL淤末NネXsLL・PラLN~・ノエョワワpハョワワ衞fヘfネマNd却瀁Lエ鏑栃ヘfミ・ャ凍"
|
||||
DATA 68905 ," ハppCハハハハハpp猝pf鞠ハハpハハCワpハpハハハpCハハハ玉CCネL極pハワ袰ハ玉ワXヘXfハヘXYユCノ貿fハXハハf袰ハfワCハワfpCハヘCCョハC記vミf末fLヘワ毀LpハrハワハpハpfヘハマミpCハ衙マ衿ヘf許蘿ワpfワL緬末fミLLfミOPXヘヘハf<EFBE8A>"
|
||||
DATA 1647401 ,"ffハヘff鞠ヘ眠ZヘXネ]MjzノネfミWハpfXョ。fネL紡ワ朴p蝪クエ籾uトミな泱ネfXロN曚fz櫻尠ifzLsエノfハrrハ給澂淙ネ~N浙ゥ許a<E8A8B1>aルネf喃ヘ模ノ貿ハハLヘpsャ沌Lf哲蘖N孕ャミffワハヘ面ワfハp漫婪s術ワpワLLワ^ヘノssaノNミ<4E>"
|
||||
DATA 2830637 ," ハハハハハpCpハハ玉ハf猝ワハハハハpワハハ緒CpハハョハワハL喃f貿。ffpハハハpハfワハXヘハヘmャfpL澂ハハXpハf鞠宜pハrワfpハpCfiハハハpfpfハ喃ヘfハCワミ給Lヘ~aネヘ砲fLノハハLf蚪pハム救マ徘f許pfハpワf鞠モ囂咾緬緬ゥf淤マCハff"
|
||||
DATA 75031 ,"。盆mw汲fLヘfナモ燒壅ゥ梛綿ネハ給f蜍fミ面pffaハL末NLLネヘ嵎CムfLハヘネw貿ONsヘ汲。i満ヘs牟Cpョf緬豊ミf孟ネノ紡N娜ノPPラノヘ~マfLムヘヘ渭L起ヘネp綿jネゥaャ慂ネミPネL衞ワfL門ョfワワ奔ミノdハffハヘ歛袁ネLLハCCワハ"
|
||||
DATA 78121 ," 瀾pp術ハpハpハ。ハ瀁ハpハハpハハハハpワCハワCワCCハワfヘXハ。ハpハハrpハハハpハpf貿ハXマ豊マXLミrハ毀ワハ面模X瀾ワハ澆ヘワハワfハpハf末鞠ハ。ハハX喃彊pハL嘯喃ミワLハ嗔ハCfpヘハ。ミLネ位ヘp煖ハハp衞ヘ<E8A19E>LハL泱豊ハヘfワヘfヘョワfp"
|
||||
DATA 602429 ,"ヘハf玳ヘLレCfノ模ト娜ヘaLffワfハfr瑯蘿模ヘpfヘネf禦Xワハ櫚ルsspkリヘLf貿ミifPPnaLff許ヘ嫗朴rpネP鞠LLヘ許ネネヘNLaミaミ孟Lヘネネ模ムヘ記ムヘffミハLfapf鋒LLN<4C>ユNPワ灑模pワワハpf~NXナハョfワfノ渙ミXmLェクfヘ<66>"
|
||||
DATA 333577 ," ppCCハハハハハ玉ハ煖ppハハpCハ衞Cワfp衞ハハCpfC嚥ノもハハハppハCCハCハハf宜X帽mRワXfハ咾ハハハワ朴ワppハ瀁ハ鞠Cpハ朴ハハハハワ瀾pハ囑ハ蘿ハfpハ瀁ハヘLffワ面CヘミwヘヘCハ鞠fPミfCネ朴ワハハハ~ネネ豊LffネLLLムヘムfトハ衞X"
|
||||
DATA 474915 ,"ャネLハLffヘ喃fぺラヘXハハミf給ワ僅f瀁ハpハヒf鞠XミffハヘNミLf貿ャOz嵎LハヘY渭嵋ラPゥm姚saラfネLpヘPエノLLヘLf滅LsNyLN]エfff豊ハャiマ伺鮪ユノノXルXミ衵蘿Z袁PLヘマN廸rfヘdfpワハLハf孟牟ワハfハハiミNfハヘミ末ヘ鳳i"
|
||||
DATA 4144949 ," ハハハ術ハハpハ猝ハ猝瀁ハハハCハCfワハCハf醜ハハ礁ハハハCハハハハpハpppppワpCp貿ヘfノマRX灑ヘハヘハfpハハpハハハ猝ハワXハ澆f燠f帽ヘf朴ハヘfハワfC瀾ハハpr瀾ヘfヘCハaLfNヘハミ朴fXヘ犇唹ゥネ猝fヘハワワヘミNノfwj緬Np濆ヘXハョffヘ"
|
||||
DATA 1651007 ,"f勿Cヘヘa慂f。fヒdヘfワfLfpfハ濆Wヘ朴X末fヘハ豊Nノ<4E>ネヘ墫帽PPノpヘaヘf泱ャLpfママミLP豊~ネXネfLエLノマ藕fミモヘミfaa壟憫ffラaノネ~a珊f墹奔X<E5A594>ワLf墨Nfsu椦Nミsy龍Lハハワワワ裹ワワハszミPワハハfヘrNミネ末fヘf面LL"
|
||||
DATA 71949 ," 澆ハハハハハハpp珥ハCpハCCハハpハハfワハハハ猝ハハ礁ワ礁pハハハpCr味ョハpハハf猝Xノff唸Xハ貿珥末猝pハfワハfョ礁ハ。pCヘfヘ貿fCハaハfワp珥ハ衞W瀁ハCハハハワpWハP帽ワ尠ノrヲffハfpヘ<70>LdハョLワハハ塹ャ忙ff蝴L埖CNLワョXfr"
|
||||
DATA 604969 ,"CCaヘf瀁fw鑾ワハfハヘCヘヘCハWfヘGpfハネノ袁N帽ヘfナpミ帽fル嵎fノゥ婢L霾i勃屁嫻Lネ~LネLネヘX。CミマL貿f瀁ヘ燠LfWLミPミエs面fff赦iimマLミ燒マpエワ鋒jョaZノL<EFBE89>ZsノラjルCffワl袰ョfハaャPNハfXfハLi模歛zNミ珥模"
|
||||
DATA 473371 ," ハハpハハハハハハハ猝ハCCヘpハハハハハハ猝ワハ淕ハハハCワハハハハハハハハpf術CCハ。fヘf舎fハ瀁写Cpハ玳柾ハfW面猝ハpハfハpCpffハハハ爍ヘハffXハハ猝ハョ猝Xrpハハrワf喃pハfヘaハ礁pハC9ミZN陦ハfヘワハ猖ミ柾XLヘヘLaネミaモXpCハワハ"
|
||||
DATA 606003 ,"ワpfヘX燒ハffヘfワf蚪fXf綿fミヘ渭fffpfミf末。fミネafLfXノLLャsネjjNハネミLLp唳櫻邪ネNLzエミ<EFBDB4>ヘ澑Nノ濛豊末NLfネaヘaヘネミネNaワノfヘノXfノ盜ワミfミョハk穆ミLルミPsZNNsP^pワワワワハワ瀁a濛門ハハXfミエiLロネ~fノ燒Pノ"
|
||||
DATA 1654049 ," 緒ハ礁ハ礁ハCpハハハCハハpハpハpハfヲハハCハハハ澆ワCCハ衞ハハ術Cハハ緒ハハ瀁藕XハXハfハノマ術fワf瀾Xワハfハpハ瀁ワハワハハpppCfハCハff烽珥Xffワハハハ猝ハ瀾CCCヘw砲XハLヘNワハCハワfミ9Pワ裄}ハハハなネノノP猜rネノ<EFBE88>囲ワ。ハf<EFBE8A>"
|
||||
DATA 863001 ,"f。ff壘fiaノpfョハ魔XXネハpワpfノfハ瀾貿<E780BE>v紡ネ綿ヘppトLャトL緬fafヘハミネuノXLネヘミマzミハヘaLノ蝓ネaネハaワノミユfaヘ貿囑ワfネL末ラヘXmLノユ面Lワ慳CL模LネゥYs墟NャネLミハfpハppハハヘz猶ppfワ豊ノネNNf獎f蝟ネ~"
|
||||
DATA 1785663 ," ハpCCCpハハハpハハハpハpハハ礁fハハfハハワハハハハXCハハハppppCハハpハハpCハハぬXぬヘヘワ濆ムヘハハハ猝p珥ワWpppハ猝ハf裄珥ハハ砲GXfハ珥f猝pハハハppハハfpCハハ鋒ネミ処ヘ蚪ハpハfpfXハCafヘfffLワfワハヘネネラfはネNミネ澂Cワ澂ハ。"
|
||||
DATA 67329 ,"ハfaffヘ唸ノ掠ハfハCハf粍pfLハ袁r珥LfハハミヘヘノN力fLXaaPノネヘ碧ャ牟~ハトナ殷~NLXsラaネヘヘネネfワL豊ネXヘヘ蝪fミミ}XLネLヘエミエv猩淤ノヘaユ<61>ユ|ムハLfハaNネエミP姚ャYミpNj憔ワppCpWpXzNLネハ蚌ワヘi粍~LNネミw朴f<E69CB4>"
|
||||
DATA 4013869 ," CハCハCCハハハp瀾ハハハpppハハ猝ハXハpハCハCハwCXハハハハpハrハハハハpC術ハハfXヘfヘf瀾ハヘムハハCハハハハワハ繭fC瀁Cハ毀Crワワハ珥fリ猝f~fpWヘ籾ハfハpハ瀾ハpL面f燒N塹ワノ。ハXLfpハpYミNネワハp嗔ョC蘿ミXヘNワLノノ穆NapワハLC<4C>"
|
||||
DATA 737059 ,"Lヘ燒ワfNヘワヘffX繭fffpハLネfムワ瀁ff砲Nワ嘶ノrヘハf籾XLcョNエ裹fワp勿マワ<EFBE8F>WヘヘミハNミネ末fハaヘ囑ヘL哭f砲ヘLXLヘNミ緬ネfNミム貿XfノLマ枅ノハ猝ハミネリLLネミLミNノャsエPpハワdpョョワfXL囲ョワ蝟NrモYLミL櫚Cfaff"
|
||||
DATA 4013887 ," CハpハハハハハpハpCpハハハハハハppハハpハCハハCハ礁瀾ハハppハハハハpCCハハCC玳fXrLfiヘクRmノハハ瀁p燠ハC瀾珥pC嗔ワf面ffハ勿ワワXヘfハハpf瀁ワワハ猝pハCハLpf猩ハL朴Xハワハワ盜f湎fヘf面ffL蟠ヘ鳳址Xjpf面PNナfハハXユr<EFBE95>"
|
||||
DATA 997659 ,"ハ瀾f貿f塹a帽XCLネiafハpfLハX瀾X模f豊ョfハ袰fヘヘムf牋Pハワf裄Lsmムノ猩瀁fハヘャャ貿ワハヘ壼p末喃末面ヘ貿a鳳末ミエネ帽ノNミヘヘマノヘLマミムiヘ貿fョff猩fC猝j徭ネャPfPC灑pワCョ礁PNヘワCョワョヘXaノPネヘミZNネ綿X"
|
||||
DATA 329997 ," CCpハハCハCハハpハCハハハワ猝緒pCpハハpハハ猝pCハpCハpハハハハpCppハpハハpXfXハハ猩ノfXmCハワ燒fハハ鐘猝p猝C珥。fハ面ハfXffpヘfXワ猝ffffワpハ瀁CハハハワョpワハミハハCハハハ。iハハC綿瀾ハハpハ玳ヘLPヘzNネNNzノLハノャハワハLトヘa"
|
||||
DATA 2834239 ,"ハf豊X貿貿aミfネCX綿ハpハfpハヘヘfCff末ネLロ鳳ャdupff猜Cf朴kf衒ヒトネPfz貿ワpヘLfLL毀L朴f燒模ヘfLヘヘWaf獎Paミノノネネミネネp門ハ螫吠マ盜ヘf面CヘリミpネLLCLLfL綿ssfpハハハワハfLワノpワワハfワマf貿fs唸aノヘネr"
|
||||
DATA 868147 ," CハppハハpCpCハハハハCハハppハハハハ猝ハハハpハハハCハハハCハハpハハ猝ハハハCCハハハヘfマ泅ネYマ瀾p珥WCpョf籾ハfハp猝帽Cヘpp朴瀁猩Xfワ貿燒ヘ袰ハョ瀁ワハハワfョハハCハハハ。ワCrワワ渋aNハヘミハワハヲハハ犇pャネ奔LN珥トsP勿ワワXトCf"
|
||||
DATA 1654573 ,"猝ヘfヘヘffpfヘワネ淤ノ豊朴CハffLヘネfヘfff孳jXC猩豊ヘ貿fpワf瀁CNラjyLffヘaP囑ヘLマノヘネ淤ム貿ハiヘ貿ヘ貿籾ヘ孟綿Osネミa澂pfハマf<EFBE8F>iヘ圈マ紡paf。Nミルネラsナ<73>sネsPノミ湎ワfョョワ袁ヘワハ衞ハワヲノ潘PネLネL燒模"
|
||||
DATA 465183 ," ハハハハハCpppハハハハハハハハハCpハハハ術ハ礁ハC修Cハハ術ワハCハハハハハハハCハハfXヘヘヘムノモヘXムハハC珥瀾ハハ獎fppヘマミワf瀾fpハハハf勿fハハハw朴ワf珥fハハffハf蚪ハハワハf瀁。fワハf猝瀾f。pハハ玳fp鐘fL鋒ネノL澂モ綿硝ハワ烝マfワ"
|
||||
DATA 4013855 ,"ワXヘ籾Xfネワpfa帽pワC猝模fPfノハ面ムf囑f貿ハffヘf面ヘ貿ハXfp瀁エヘ<EFBE8D>YハエP孟zrffヘノハ烟L貿澹fffffヘf貿ffネLネW豊エネffヘfヘマヘムネ濆ユノpfpfff壙N<E5A399>jミネ~ルsaaノミハワpハワ袰fsミfワワワffネ模ヘヘXYLLL。豊<EFBDA1>"
|
||||
DATA 469791 ," 礁CpCハハハpp礁ハCハハpハハハハpハハハCハ鐘ハ澆ハハCCハワハハCハpハハハCCハハfヘハ模Yw堝fユワハpC珥ハpヘ。pfワfワ珥f礁ハ賞ワfハ衞ヘヘpfワハハヘ貿fハハ衞瀁ハワハCヘハワミノヘハ珥pprハrffヘpfpハハハfハpfNャネミネNLムャi猝Nヘハf帽X<7F>"
|
||||
DATA 999231 ,"LNネ豊ハノ號nPR燠XハCハネワff柾ffff牟P巵ハワハr瑯ユzルワワX模ハワr塰敲ヘL貿訓Nネ忘ノヘXヘヘff囑貿勿瀁ヘワa末籾ノ猜LLワ殱ハヘ猩NX猩ノ|XクトXafpハasエ}ネワ末s悍寤Nヘs丞面ワハハXNネNワワ衞ワノヘL}綿模L潘L<E6BD98>"
|
||||
DATA 196865 ," 緒ハC緒pCpハハハハ礁ハpハ礁礁Cハ猝ハ修CハハハCハC術p修ハハCハ礁Cハ猝瀁ハヘXXXヘXfハpハ燒rハCpハf猝珥f壟ハpfdハp玳pワfハff面ハワハ貿ラハfハ珥ワp。rワハハヘヘCpfハョョハ玳灑fpワョハfハfハワp貿fワ万LNミネLCLハョハ炳ヘup"
|
||||
DATA 1648387 ,"ヘ・槐クjNpゥノゥマffLハハpf珥ハハfCfョXfョfワヘfffワfハヘfワX貿f瀾ワfワ衞猩ネNf鳳ムNPルaaワヘf勿p末ヘff門ヒf獎ミ模籾澑LLョ瀁ノネaノ毛ヘwLヘヘユ屍式蘿LヘノsヘLsL<73>uz娟ヘP憔ワハワCワハハノpfCワ蘿rヘXXfX籾模ヘLf模"
|
||||
DATA 598315 ," 緒ハハハハ礁ハハpハハ鐘ハCpハハハCCpfハハハfハハハCハハハワf修ハハ礁CpC衞ハXXヘノ籾ユX<EFBE95>殫ハ。Cハハ猝ワfョfョfハfハpノハハ礁ハハfハハCハハハXヘfハf猝pワ豊ハワハハ衞猝ハfワf賞ハハ帽ハCfppf瀾Cハハrハワ袰ミネネLエ珥zネNャ鐶ハワfミX面y"
|
||||
DATA 1647419 ,"霾榾zクpノsルヘnnヘ朴爍ハョ猝ワffワpaf玳XワX勿ノヘ猩ワワ猝fヘfハ澆ノワハワLマ貿L面塹~Lffヘ塋ヘ玳fffワ門f貿紡ヘXヘXf燒獅ミfX~zaネXノXヘユYヘpfハネヘfNハpナNャネ烱孕勿ネ勿ワハCワC猾f猝ワpワpワpXf籾aLヘNヘネハネ"
|
||||
DATA 65823 ," pハCwCハハハハハCハ猝ハハCハハハハハハ面CハpハハCハXハ礁ハCハハpハ澆猝衞pp燒XハXワfノmユXwハハpハハハハハハハワfハハハヘLハワ珥ハワハヘワCハワpヲハハrワハハ瀁瀁ハ。fハハ砲灑ハョハfCワハハ勿fCョョpも猝ワp衞fハXヘXネネYLワLjャネ猖pfXネ淕ノ"
|
||||
DATA 69895 ,"LシヘLp宸トヘ力fワ貿ハLミLヘ猝Cfョpワffワff貿ffヘfハワ瀾f瀁ハ貿ヘハワpX貿ヘ貿LノfafrL唸LワL豊fffffヘハXヘfヘ蘿。fLネrハ模fワLpワワLヘ澂fマムマヘ勿ワヘネXf貿ハNNネノ綿sjsjネpハワワ袰衞ネヘネpワpffffヘffネミXワL勿Ns"
|
||||
DATA 864537 ," XppCハハ礁ハ礁ハハハpハハpハXハCCf澆衞ハCpハヘpハワ礁ハCハハハpハハrハ術rf瀁ノfヘノヘf礁p礁ハハハハハCppハfツワ修XヘハハハLffワ衞ハf燒ハfハ蕕fワ。ハハミハハワfppハpハハハ衞ハp衞ワハ瀁ヘX猝ワfハワハfヘヘワ濆ノハヘハワヘa猝ハfノミ末ユ"
|
||||
DATA 2047795 ,"ゥPNfワjkワLハfハワノLCハfLf猩fffrX睦ハXfハハハハXfはXfヘワfワff唸ハ瑯蘿f模ヘ盜ヘノX。燠貿ネ墟fpCfヘfワfヘヘfヘヘff勿ハfLヘCfワiヘfLfXヘfマXノiiLワpXネ繭LLハN巵ネノPj娟Nトワヘp袰ョpワLハネfハワf孟ノN模恬猜ラLL<4C>"
|
||||
DATA 3096371 ," ヘpハハppCC烱ppハハハワハハC猝澆ハハハハハハEpハハハハハCハハCCハハハ術ハpハハハハpヘXヘGヘYQp術ハハワハ燒pfffハCワ修ヲネヘfハXハハpワワハハpハワf壘玳ヘ猝ffハハワハハハハpワハハCハハハ瀁ハハハハハrrヘワfハハXワ面fヘハ蘿X猩ffワノf唳澪勿"
|
||||
DATA 1642761 ,"LL塒猝ハLラ杢spfヘfネ瀁繭fハp模L門fハハワハCハfハffヲrハハffヘ繭喃f瀁ハノfffffノ獎L模fXfヘf貿fffrヘLワヘヘ燒fヘ末fハ珥。豊ミヘヘワワ蘿貿マママpfワョワLヘ鋒fヘネP嫗PNミLユネミハpハC螳ワip塹ハ賞ョハ貿r<E8B2BF>嵋Pネャu扠ヘ"
|
||||
DATA 1650461 ," ハハハハ礁ハハハハハハハハハワハハハ猝CハfハpハハfXXハCハハハpCハffp猝Cpハ尚瀁XGmfママXfハワハCハハハpヘr猝ハCハハ澆pワハfワハ。prワハハハハハワハfppfワハp燒綿pハハfハハCハハpハワfLXLfハp爍ハpワヘr蚪Cヘ壟rLヘ珥ノ籾ハワ賞゚嵋鎭Nヘ"
|
||||
DATA 69377 ,"Xハヘa。娟裹fヘf緬ヘfワ嗔Cp帽瀁ff勿ワXf嗔pョLハワワ瑯fff圍珥門蘿rハfCハワXハハノfLヘ猩ヘワワf面貿ffワffワハr囑ワ勿ノWヘネf朴fヘヘノfワfXfハムX末ハfp~ノエN脈Nネ獎ャ~鳳NネヘwハハハハpハfCノユハハョワ貿fョ~ノャN牀猜Nネワ"
|
||||
DATA 81697 ," CC澆ハハハハCハ猝修ハハハハハハCハpハハハハ猝wハX瀾ハワ蕕面ハ唸ワハハ術ハfXX<58>赦ヘムネヘヘXpCppハpハハXハハL嗔ハハfョハハハハハC瀾。賞pfハハハハワハfLfヘ貿烽pハfワCハハぬハハCョハ面瀾fハfハppfハfヘハ珥fハrp囑X澂ヘfrワr猝ヘPネルN"
|
||||
DATA 4144947 ,"ミpLGワfXX澪猝面fミppワハ蚪ワヘョ勿f猝ハハf玳ヘfpXffハfワf澂ネ坩fff瀁fハワf瀁X猩貿ヘヘ囑XfワLfヘ模末豊fヘff濆Wf豊LネL}。pffヘ袰fヘfワノpハワf猩ノLrヘモpヘLL澂<4C>Lワワワワワハハハハ椁袰ワクワワワfX門L戻ヘsネp"
|
||||
DATA 1649935 ," o猝ぬハCハハpハCハハハハハハハハハハXpX濆ヘ勿C緒pハ俊ハハハfXwハpハハハfヘfもヘぱヘmXハXハハCハハハCpCfハ澆ハハハハハpfハハfワXハrョ叔ハワハハハハ帽f燠ハワp。Xハfpハfワハハfハfハハワハハハr猝ハpCハハハぬハノfXCf繭LヘネXfr濆NXfNN豊"
|
||||
DATA 858913 ,"ゥRヘLpfXfpfffワワCfヘハハpワハワ壟猝ヘワハハハワハ瀾iハdヘヘハpワ蝟L籾ヘfワハワワfワXf末ハfヘp裹ワ豊ffワfワ。fハffハハ末ff貿ヘXヘ模L櫻ノNノfノヘワm瀁fヘ蘿ョハpfrワネヘLpLノfヘヘャエ淙ミワprハCppハwヘpfrfXヘafノ貿XノX渭漫if"
|
||||
DATA 3227411 ," 猝ハCハp澆CハハハCハハ礁Cハハpハハハハ礁ヘ唸wハCハハハハハprワf猝ハpCハハハヘはノ<E381AF>XワワハCpワ礁ハハ叔澆ハハpハハハwハハfCハfハワ礁ハハ猝X瀁朴pハf珥瀁珥pハfGffハ面ハハ猩猝pハワハハハハハハワワXヘf哭fハLラp繭fpハハワ豊ヘiLゥゥ"
|
||||
DATA 2834207 ,"ヘヘラ朦s猝ハハハハワfX囑f豊ヘLヘXX模ノマ豊Xノ哭模fノ泱X嗔貿貿f燒ハワヘワハ瀁ワ勿籾ワノfffハネヘffp袰fヘョ末瀁f籾豊f唸猜PLfLネff勿ffXffmXムpワ瀁ハ瀁ヘ豊ミfXムL~クヘfミfワハ蚪pハワワPネハワfワハネハfX湎fffヘLffハ"
|
||||
DATA 2834223 ," ハハ珥瀁猝ハハXpハハハハ礁ppハハppハwCハfワハppョpワ猝ヘ猩ハハCp礁XXfXハ喃Ymムハワヘハ澆ハハハハハハハハハハハハハXハ礁ハfpョョdpCCX猝ハXハ燒貿燠ハハffハヘ猝礁ハfCワpfハワfp喃ハハワXハpハワワfハワワハ貿ハ澂ラハヘヘワハワC}L末aLW"
|
||||
DATA 4013843 ,"貿ネLヘラLjハハ瀁瀁CXLNLネネ泅ノネネネネ墟aLLヘLノヘヘ牀ヘヘL猩ノiL泱ネ櫚ネ蘖fLLaハfrワLヘf貿ワaワfハハヘ模貿ヘヘミLヘf模ff豊aLミ嗷ネsXヘXヘ勿ノ<E58BBF>瀁pdLヘハfワffX朴綿N淤ネfヘハXハワpハ衞ハL猝rfワfCハN玳p渭^囑ワp"
|
||||
DATA 1646349 ," ハ猝f瀁fffハハ唸澆ワハハハワハハ灑fハGXワfョハハハハハワ魔ワハ9C礁ぬハハ。ノXハfぬXXXf猝瀁pハ鐘fハr衞ハハハハハC礁ワハハワワCハfハハハX瀁fハハfXハfョpp毀fpハハ猝CC面ハp~瀁f囑ヘrpハワ瀾X猝fハハ猝p毀fヘハハLハfワLヘノ模f"
|
||||
DATA 2699583 ,"喨NヘハヨL鞨ワミp猝ハヘ緬ネネ堝L穆Lネ<4C>LノミLなノXXネXfrノXヘヘヘ・瀁ヘaLfLfヘXLノヘヘ燒貿f珥L瀾ヘワffノL綿LffiL豊漫fャCLfヘLLワワXマffハ<66>ワヘハffLXワヘ瀾fハ瀁XノYャネノネワワハハワpワpワヘPワハfffワ蝟fffハョ豊ワpハX"
|
||||
DATA 602921 ," f瀁fX貿ノヘヘモfハC猝ハCハfハハ瀾ワハハハヘ瀁衞ョハpハハ模ハX9ハハハ玳Xfw塹mノノワXネf壘L濆ハハハf゙ppf衞ワpハハCX勿fハワヲf~ffワワハハrワ灑ハハp猝pハ面fハ猝ハハpハpワfXCf。L。fハfppワfワヲLハXワハf袰ハf瀁ハハ瀁ハPワff燒ヘ"
|
||||
DATA 73495 ,"Xjヘ牝ヘu遑psuNXp貿ffな模fヘiX豊X綿ノLノ綿~ネ朴猩ノ模f帽は獎ヘ猜末fノLヘヘハヘ袁rf貿豊fワf籾ハ塰Lョpffaaf妄NヘLaハ面ffXL淕X。ヘaffワfXハ貿~ミC烽ハヘヘネPユP淙瀁ワワpハpp蝴Ndワiハfpfワネ帽fハfワ<66>ハム"
|
||||
DATA 466751 ," 珥珥壟燠囹ヘ濆珥ハハCハハハCハヘ瀁ハXfXXワfハワハpC模ヘXノハハdハwfワfハヘマヘハ猩YX喃哭ヘハハハ礁ハrヘ瀁礁ワ衞瀁ワヲpヘ猩猝Xワハfハハハハワワハ玳ョハハハハハfppハヘユワハワハppfハpヘpハ。ハハワpワX濆ワハpワハワffLヘハfpワネネノネ姚渭"
|
||||
DATA 593707 ,"ワrワNノ淙ノハfX嫻fワヘヘXヘfヘvfヘエユミヘzネL模ノiLfハハ^ノノネLLL孟塋ハ毀渭ヘにヘ啾fXヘヘ鳳ラ籾ffCff瀁豊Lワf燒ワ朴ヘヘミネノNヘネdヘワffXffワfLハムワffヘX唸ミfミワ濛トミネLLノ湎fワpワハョハCpLハハ藕fハハC濆瀁Lワ蘿ノヘC"
|
||||
DATA 469273 ," ハハfハ珥豊燠塹ヘヘハハp唸ハ珥ワfXぃXワfハXハワXrX叔Xノノ毀ハハハハCヘfマヘヘ瀁XRXヘ囹LネCハCハ賞ヘ貿ハpヘハf瀁ハXハハf瀁ワハfハffXハワfハfヘpハffppハ。澆ハpハハハハワfハハ猝ハfノ珥pハ猝Cハfョハハハ。ffヘワヘハハハf~ミXXノヘノXL"
|
||||
DATA 467223 ,"ネLネfミネノ爍XX末ハ繭zヘfXrL模ヘXヘノLナLノyNpXハネXハ<58>N猩ヘ塰ネヘマネノrミネLノfヘfヘワマトエ巵瀁fハワワ猝ヘノGfョN門pネネネヘ紡ハノワワ藕XムヘffXネヘぬワfL豊L喃ヘrP猜NNハaLLハハハョp。ハワワワLpハワワハ。ff貿pハハワCワfワャ"
|
||||
DATA 67333 ," fハrノpfrfハヘr囹X毀ハハp珥ハfワfXハ袰ヲXハヲハハfハdC塹LヘハハCハ猝XX濆Xハ司XXヘノ繭LXハハハCハC。X澆ヘ貿瀁r貿CハワハfハrXハハヘハワハpハハfffpハハハハppハCハ濆ハハf蘿pfCr猖CラpハrfョハXワN珥f袁fノハワ猝瀁Xffト歐ノL"
|
||||
DATA 465153 ,"ゥLNLトPヘ淨aャノ塰fにPノネYノaLヘヘ猖ミLネ}Psa猜ユヘXLャネNハヘ模ヘ猖ャノ墟NエネNャミLャ末ャfヘX瀁ハハワ燒ワffLユ珥模ffヘ模ヘLノワミpハハpワ衞XヘXヘXヘワハヘ豊ノNノXヘ潘ネN嵎PャノNハprワワ袰ハワワヘハハワハffCヘpfワfffpCハミX"
|
||||
DATA 995647 ," rハf繭燠囑f壟猖灑ハハハヘハ猝rハXワfワワヲハハハハハハハdヘX猩ハハ升ハハ猝fヘヘマXハノmYハハノ籾玳Cpハハヘ面pヘf籾ワハLffワハハハ燠rfハハf珥fハ猝ヘヘfハハfハハfハハCハハ瀁ハ衞XppCハpX珥升ハハョハハハ豊X朴澆pppハ叔猝喃模Lz<4C>"
|
||||
DATA 465167 ,"ヘ麿LネYノネ塰PPLネャNzノLPPLXヘネヘ<EFBE88>ノL~ノ哭ネPLLノネ咾Xネミ囹ヘaナネa綿LハNaヘsヘssPネエマLネヘヘffC貿fワf瀁fエL灑LC。f豊ネ豊ネネぬハハ袰XfヘヘP帽ハワエネヘLミNNNP娟ャネaミNネミfヘ面ワハハハハpXワワCハXLミネハ衞ハf。fjト尹"
|
||||
DATA 2047763 ," ハヘハハ塹猝fX壟壟fハCpfハ濆<EFBE8A>ハハハハfハハハハワハハハp硝fノCワハハハハワヲ瀁fXXCハハ囹Lハハハハハfヘ帽ヘf珥C瀁ヘffハXf瀁帽面澆猖Xfハヘa猩面珥猝ハワハハf。ワfはp嵋ャ豊Na面ハpハハfハ鋒ワ豊Cハノ猝ヲナwヘ玳ワfハYj"
|
||||
DATA 860439 ,"pLナノトネャ圀s霈ミNトP啀PP哢PPネラミPLャユノネPミネネ鋒ナNpハネLYPミャヘP以ネトsNsャsN}ネャネノネノハf帽fヘハヘワヘ瀁fffLXLwLハfノ模ヘヘLLNfワffヲネfワ綿fムf潘娟ャ伊ヘaネャネノノノミミPャ繭塹ネハハ。衞ハワハワワfpLfワハノXaーsXハヘ"
|
||||
DATA 469265 ," 猝ハハ灑珥rf猩珥rfハハCpハpfXハハハハまXハハハハハハハハ燒壟緒CハハヘヘハfXヘff某X術ハ9ヘ囂緒C章はヘ貿f末ハL囑fハヘハL貿ヘNハXLf紡ャaヘ猖瀁f珥fハハハfハ猝pハa猖rワL。トゥハハXハハXw孕sネヘCsハワdハノハハ猝ワLワ泱ノ"
|
||||
DATA 858383 ,"LノノPY娟ノjziNNトNルネナネPNエネPLネP弃NaPNャャNLaネLネネ鳳ネLPラNャナLノャネ<EFBDAC>NNノaヘ毳aノL紡Xミ貿燒fハfXハfLrヘノネNPネノネNノャPネノネrfハffワワXぁfヘハ狷ノLナミネネヘネLLLネノノャネネヘL伊Lrppハp衞fワワ面ハ潘ワミNP<4E>pノf"
|
||||
DATA 69401 ," ヘ猩fハ瀁唸毀ハXXXCハハワハハハ礁XXハ瀁ワXハワハハハハCハXヘ瀁ョ術ハハハ猩ヘXマ産マヘ猝CpハハハヘCCハCpハf濆ハ味澂囹a猩ハハCfXワネX濆f澂fXXf塹澑pハL繭LrC猖pハハp喃L牀ヘャネ面CハfCpョXネトルトC嵎玳ハハ瀾XXfL<66>Xハ"
|
||||
DATA 70925 ,"PトNノLs嵎NャjL屁N撥PPPPネ~zャPネ孕NsLaLNN嵎ノミPネPネPPNャノN~PPノLネ遼ネノミノN哭ハネ濆LfハミaXfハハfヘfffヘ壟ネPネY殱zネLNナN澆勿ハfハfハネハfャャネ澑ネャN啀ネミノaNNノ}ノNナミミLNCワハp衞ff丞ヘPネPハCfハヘ瀁模濆"
|
||||
DATA 474907 ," ハハハ濆濆珥Xハハ猝猝ハハXハfハハハハpハョハfハハfp猝ハ衞はX<E381AF>術ハハハハ^f濆<66>ヘヘ修rハ猝fハCppCfハヘ瀁瀁XヘヘpハXヘハハp模LヘLハハにハaハLヘネワネネNN猩塋嘯ハエLLヲpL繭PL綿NLハハXヘハハpヘネLwCnPハハハ姚ワ濆ハffXムYル"
|
||||
DATA 863007 ,"sネP嬲エャルz握ネLa嬲jリuNs巍Nss廸嶢リjミ娜j麟}孺NPネsjNLP<4C>ネs<EFBE88>悍P嵎Pミネaネ籾ネ燒f。。ネaモpL綿pワ澑fミ哢ヘネNPNL塋ミLNfワfハffXネdXネaNN嵎ネPNNLPNャネネ~ミPネネ淙aミハCョワハfハワfワ朴Cワハ毀ネfヘfノネミX"
|
||||
DATA 999195 ," CGXハ{wr珥ワXヘヘヘCハ。ハ礁ハハハ。礁ワXwハfハハpハハハ鐘喃fCpハハヘヘハ^XワmXヘマCCハ珥fLハCCp章壟燒p模珥哭ヘヘfハ省ネ豊L猝ネfノ塰aヘヘaネ哭ノノネネネネ貿Nハハハ緬~娟ャPMssハpfLハハハ猩ハハP娟Cハハハ<EFBE8A>pハXfノノハノL"
|
||||
DATA 867105 ,"XujPsssユ據ト娟j媚b孕娟ルPPsネ屁崙kロ孕N嵎N宀嵎s}ssリNNPトssjトzjsPネラPPネPr哢ネャPノfネミユPネsトネPノネネネPミヘsP以LP慂ネネLワハ燠ヘfXネ燠址PPネPNャャNャ巉ネトミzルャNネネLネャpワハハワハョワワf模P蘿ヘff模ネネfLヘ"
|
||||
DATA 999211 ," 珥f面猝rヘヘ瀁珥XハハハCハハハハハハワpワハヘXハハハハrハハハ魔ヘハ衞CwヲfヘXfヘママXヘ写ハハpハハヘハpハワハ珥模咾LャX櫚Xネノハハハa。L鋒C澂ナLネノ綿fヘ塲PネPヘ塹蚰ハPハヘ珥ネネネ娜ミネsノハハハjハハハ瀾PラノPNpfハ薇Cppヘヘ猩f<E78CA9>u"
|
||||
DATA 605995 ,"uNル佞YPsj尢u<E5B0A2>懸yゥト掏リネss娜LusPzj・jsNNルP鬯ネPNsPネNj娟巍PjPsャPPNjネャsjラ娟娜ネトa塋娟sNャjsネjN啀ネPネPミPN蘖緬澂ヘNノLャネノノネLャNネNミトPs崙ネsNネNNエLネネミPネCppョワハハハハXfaCfネヘ珥ハヘffネfミ"
|
||||
DATA 1785635 ," Cハハrワ珥ぬヘ珥猩Xハハハハハf術ワ烱ハハハXハハハGハハpCヘヘハpハハハfハ瀘XGXヘRユ蕕礁ハXfハ毀C繭PLノノ面fネ塹猜ャハCハ澂LaノワX謂ノ<E8AC82>ネL澂sノ}以PノノネpネfハエwヘネjネsャPLネぬCハuワワ。ハNLPPPCハfハjネCpハfXXヘヘヘM"
|
||||
DATA 737073 ,"NPjトP澑jj扼崙孛孛ロj屁MPzss徊jPPPsPネ屁j娜ミルusLs<4C>s屁トネ徭sMネNネusNネN屁尢ネ悍s寤PヘPNP岻PNミラネネP来NPNネP<EFBE88>ヘノCNネネL緬ネネ猜ャNYネNャ威NNネネNNPPエ娟NネNネ謂ハCハ螳ff瀾ハネp紡櫚ネネノLL泱P"
|
||||
DATA 198919 ," ハpハrハ珥ヘ猝ハXf瀁fハハハハ玳ハCXハXハfXpハハハXハハハハヘノハハ修rハハハffヲハ沁ヘf<EFBE8D>ハハハハXヘCハ猝C9珥塹籾塋LLノャノo章燠末ハX綿ャa猜aLノP<EFBE89>嚠ャLP櫚s玳CハXPLYネN<EFBE88>sC修XャハハfCPナネ徊ppfワZノpワfワXXヘヘ|NP"
|
||||
DATA 81727 ,"ト湊ロPヘPsNjト孕洛李桂蓉ネjNuu湧耀~P孛z娜ル孕jNN曜<4E>us娜sNネj孕PネjNP娟sト屆zPNsjsPエNsLsyャuャネネsャミPルNNルsPノLsNミノ<EFBE90>Ua獗ヘネャノLネネLネャN址墟PN鎹ャNノNY<4E>Yp。CワrCf蘿Lfrfノ~淙Yネ淙Nネ<4E>"
|
||||
DATA 67855 ," ハハC猝ハ珥ハワf9fヘ猝XハハハfハXワハCハ玳fワfワハハハC術ハハワ緒ハwハハハXェf9XムェハハpfYナCハLワハハヘヘワヘヘ模fャffaヘCCハネ塲ヘLハXヘP囑Nャネト握PノネャネLPYャLノLCXfNヘ壟}<7D>aハpCヘナ修ハyャノネトPfifNノミ朴XpXfXワX孳"
|
||||
DATA 69391 ,"u孕PネノナPPPPト屏巒屁孛孕ネu嬲uj桂リ嬲sPuNPルコP巒嬲穆jルャPsjsN娜ネロトヤsjルPミリ徊ネsPラ孳廸us娜Nミ嶢娟孕NN嵋ssj流PsPネネネノPネNLNaネNLNネネLNPヘネ塋NNNトネノノNN<4E>PpハCョワfハハハ砲ハfLfノaミヘ猜ノワノ"
|
||||
DATA 69383 ," ハ瀾Cハヘf珥ffG珥fXハXXXwpCwハワハCワハXXpp礁Cハ熄Crワワf玳ハワXffハfd伺ワハハfXXXハpf礁ネfCXネf珥ヘ模喃ヘノpCハネLトヘネワX猖ミ<E78C96>L珥PノノヘNャヘノ啾ヘネ塋ヘハXLネN啾ネ以CハハハノpョハミヘL澂ハpハハNsネョCpfLfノPj孕"
|
||||
DATA 868159 ,"PトsuLLネトャネロsuネz崙su鯑s君u」悍Nロnun」ネNZ孕u慂PロネsPリzネs耀ミsPs燬屁sネ捏jz屆sネN崙jPssPPsャPNsPsNsャNネN娟<4E>sNノネNトNトラノネ~N異ミaLLL<4C>ネノヘ豊ネネNネ・PネネネLネLrpハハハワワfワfハノヘ~Xヘfハfヘ末ヘL"
|
||||
DATA 78123 ," 燠fワ濆繭喃燒ハハハハXハXハハハハハfXfXヲpハXハハ猝ハpハ礁ワ礁ワXワfハXXヘXぬは賞ハfXマfハハハハ鐘PL爍ヘffハ猖ヘ籾LCCハャ猩塲ハワX帽ノ綿ネヘ<EFBE88>ヘネLノヘfワヘヘ<EFBE8D>ハハハf喃NLネモノネワXハppョワ小XヘNャワハfハNャaXネ毀ノネトャャ嵋"
|
||||
DATA 1782079 ,"zトNノLssトPャsト娟P孺MbjルjuP巍ロuコ嵎su嵋ミuyNkjラs屁s」ネャaNjNNsPネ孕sPNsヘNP嵎NjNPjPbLPN嵎トPNャ娜ssNP娟sト耀ssNネPャ岻sネ塋ト娜NPミネNネネPネャネNノNsノミ娜ネPミ豊面ハワハハハハCrハfネエハ模勿fヘfヘfX"
|
||||
DATA 1916735 ," wハハ珥fハ珥も。貿ハ壘ハまfハX。XワXfワXハハpハハfハハCハ礁ハハCワハハf赦X猝ハヘUXdp猩^Xノハハハ重烽fC壟瀁豊ヘLミLャ衞ハハLLXヘXネ猩猩ャLヘノNヘネ豊ヘXミf牀ネメハハ。ハネLL<4C>Wワ牋術ぬワワハネノ潘ぬCfネノ豊ネミネノノヘヘLN弸"
|
||||
DATA 198401 ,"jNPネNzルャssj寤娜ゥ君zzト」<EFBE84>ロゥ憲ルルsj異娜z湧ミノル徭sP孵ヤ娟NsャエャsミネPsPネzsNsルトネトミネャミノPNNNNトzNs嶢PミPネsN孕PPノNネNネネネP<EFBE88>sPネネN塋a廸ャネネPNネャャNノノsPネミネLネNpハCワハワワpワハヘ塰ff喃ヘ貿珥PX"
|
||||
DATA 4013871 ," ハヘノヘ喃ハヘヘハ玳zXノfハワpワXヘfハワヘfワワ゚ハCハハrXハ礁CCワハ礁ハハヘXヘXヘXX湫CC<43>ハ蘿ワハCハpCネ模rヘノ猜ネ澂ノヘ毀ハハCヘネffハfヘ繭ヘYネL模ノヘ燒燒pナノ塹CハfハハLノ猜ネNワfハワワハCfハXネLL朴ハハワ綿ネXfネミaPノ嵋YノN"
|
||||
DATA 4144959 ,"湧P嵎ネj悍s嶢PN姚PネNssルs・Pネ屁ロ孕尢娟yPPトロNPPs孕ノ嬲ャトPjルトsP猶トj娜ャャNPNsP案}NヘPネヘヘトャNuャネPN啀PsPャaノネネ豊櫚ャネLヘ鋒ャ陽N塋YLャネNミャNャNネPャネャ嶢ネNャミネノハCハハワワワハハワネ繭ャ貿ハNヘfLトfヘ"
|
||||
DATA 2965311 ," ヘ澂珥珥f瀁pf喃猝pXXfXXヘpマfCワCrX瀁ハハハワ集緒ハハ珥ワノ沁X<7F>ヘfXpハハノpハノハハハハハL囹豊塋ネヘLヘaヘハハfハハハノfワ喃ノネfヘヘXLヘ獎fL猩ノネ衵X囑CハハハfノLヘyヘf模ハfワfハCノワネヘ綿礁fヘ末ネネ緬ャLネネネ豊ノノ"
|
||||
DATA 999219 ,"ネPネトsミNトネPsPネN憙s婪zsト娜P屁PNs嵎ロjPsjPルト~sロsjZPNミ弃PPLusラユルルト孕Psト屁ネMLsャPNャャsネNjPPsPsPエネネ<EFBE88>NネaPネネLヘネNsPネ屐ネトNネエクトネノNsRaナLャノPノノノミネ塰ネノネネまワワXrハワワfLノfヘワヘ豊Lfffハヘ"
|
||||
DATA 4144927 ," 囑f珥Xも烽ナ。ヘヘナaハハ濆rヘ烽ヘ猩X面fXfハfヘハハハワヘワワX礁ハヲハf勿ユXムノハpハC櫚ヘC礁ハ珥ネヘr貿ミ喃ヘヘ燠ffハp術瀁f猩ハL貿ffヘffヘX<EFBE8D>ヘfヘノヘャネfワCハXヘ豊LヘャネX喃pハハハハワfネハ單ワハXLネネP伊L塰ネ~ネミLネロ"
|
||||
DATA 4144700 ,"PPsNャャPャNPリsNLssPN曜ラzャ餘ノネaネPM塁Nj娜sPP嬲PPzNミャsj湧耀jPャ耀sネP嵎P捏ネPN<50>嵎<EFBFBD>トsNN娟P岻嵎ネネラミPPラPヘノLルャミネ櫻NネトPトエミネャネネトPミクNsネLネLノノャPノネャミLネネネ賞ョハハワハワfLモワヘミャC模貿f~ヘ"
|
||||
DATA 2105360 ," rpXffヘヘヘrヘ唸貿X濆ハXf面X9ヘヲハぬXXハハ猝ハハCハハハハヲdハXハfXXXGrノハハナfト末ハハハpヘノf豊Xヘ喃ハ濆瀁ffハハCXハヘ瀾^fハハハ瀾ハXハ貿猝ャハ倏猩ネ。ハハfa塋ノネャャヘネ猝ワwワワワハLfXハョハハ哭ノPナLネXエネsNNネネN"
|
||||
DATA 16160 ,"トNャ屁P孕嵎トPPbPPNjネラzトネ娜ネエP~sNPjsNPP敲PN岻ャPPs崙敍PsPPネNミN悽ネラ<EFBE88>PNP娜ネsミsL<73>ノ崙sネネネNPPLネネNN娟トノャネネNノLLナネネNNLネネPXネa綿ヘ~ャaエPネャNノヘネ鋒LLユャヘトワpワハ袰ハワワネネfハYノ紡ワ瀁ノマ<EFBE89>"
|
||||
DATA 4112 ," L囹。猩LL繭猩壟燠ハハXハハワ猩fヘfXヘCfヘXハハハCCハワf礁pハXハX^ハワヘハム<EFBE91>wCハワヘ^ネXfハfワノ猩fXf瀁ヘ。面珥ハfハハハCハハハワ籾ffハpXCハワ澪緬ノ末ャノヘヘャハぬヘナaャノネLナネナハハpワワハハハCG袰ワPNN泝麿ZネLPノPPXノノ"
|
||||
DATA 2699836 ,"LネネYPネNトユP以娜洳PルssP娜MPsszkャ嵎~トNャ屁NNルミsNエNPネzsトNLN嶢Ps<50>PPNリPNネN~リssネミPトPネャNPノ~ャzネネNLNNsNネャNネネNPャネPNャトLネャNYャヘ哢a塲ネネNネazノネL盜ノヘノ豊LLLワヘCr蘿蘿LノfヘヘLヘネ塋ネfワX<EFBE9C>"
|
||||
DATA 8255 ," GfハGハワハノ咾ヘ瀁XハハハrハXハハ9fLmヘハハハハ賞。ハワワノ礁ハCXハpXハXヘrぱdハf。ノXヘ囑ぬ瀁ハffワにハワハ猝ヘfLヘヘハハpハハハワヘLCハハノfハCfネノ燒潘猩猩ヘLff猖ノNネ<4E>ヘLノハハハハpハワ猖毀ハXXャミ毎ネミLャノャユLaPNネ<4E>"
|
||||
DATA 2631721 ,"嗽PpネPjネNYャNネネヘ泝ネヘjP廸ミ娜NPssNPLネP峩ャ嬾ャPLトネN孕PNN<4E>PL<50>NノNネトz圀PPNZネ孕asLLネネ慴ミト嶢PPNPaネネャNネ伊鋒ノ<E98B92>ミPノPPミネYPNノzネネaYノノネナLネネノノYミネ綿LL哭壟pハワハXfヘミムネ豊fL氓ノfャL猩"
|
||||
DATA 4128 ," z燠猝ハf瀁XXヘXワハヲハ瀁ワヘXョ礁濘ワワハヲpハpワp重X礁ワハヲXハfXXユr<EFBE95>牋ハハXム塹ヘfXハfヘハf猝。aハ燒猝ハfXハハハハハLLヲCNヘヘハハCfノfハ嘯fYaヘ末ネaノノワヲXノノPLPネネノNハハハワハp瀁ノ面fハ^ネミLトャノ~LネヘネLネネPPラ"
|
||||
DATA 4128800 ,"エjPzネノNトP洳ネaャネエNsャNNラNネミPネPトラ~泝sネ嬲sjs~Ps崙NャネNトNsヘミNルミエ~ネネPノP巉PN慂P淨sミNsNネネネャャミネネラネノミミzネトネPネP塋ネノNNネノNヘfネネ濛PPネPネYネノノネエノLヘLヘネャヘヘvネYCワワハ帽ワネfNNXL塰ャLネLfノ"
|
||||
DATA 1048608 ," ヘ囹ワ猩ヘfpzfナナXヘfハハハハハfハXXXfXXワCハハハハハ礁ハpハハハp礁Xf^XfaノハXノ礁XハハYX<58>豊fネ。Sヘ<EFBCB3>ハfLp澆ハfX礁ハハヘCワヘ緬a模ャノノネ櫚ヘNY哢ナナネiXハョハXノノ嚠Lミ<4C>LCXハハCハハ啾礁ワXヘ囹PネノモsYヘネ威sssヘP"
|
||||
DATA 2101248 ,"sPPYjs易NLLネNLノPネ嵎PsトNsNP豊P岻ssPsノネPPネN弃s塋PNsネPャ}rトネミヘャNト娜ネマsネPsネネPaPユzLミノネネPャNネLPヘ姚ャNLsNミナネLNマLNYネノネネ洳LノLネaN洳aノユaネノャネノ綿ミNヘ囑ノLミノハハワpf蘿ネYヘLLエLL緬ノraヘX"
|
||||
DATA 3948095 ," XC嘯9珥zfrもヘヘ瀁fX<66>ハfワwfX玳ワワハハハハCpワワハfハfワfハハXX9^ヘXハハハハCRノワ緬L哭珀ヘモXLミャヘヘ址ノネネヘff面ハヘナネzヘミLiミャ籾ネネ<EFBE88>ヘノ綿ヘ砲pハ濆ネ猖ネLLノミヘpXハfCハハfエハハ玳ヘヘ鋒ネLネノjネネ墟LPNノ<4E>"
|
||||
DATA 2697256 ,"~PPャzノネ~NNナャ岻PLャNトssNエNトミミPNP崙NネsjネPLPネネsNミト巍ネネNNLP}asエャNPネPz~ミノNNネネネNトPルネaミネ弃ノヘネルエノヘ燒ミネヘネャLミネヘミミPNNリネネrネaャNノLネP緬塰N緬PネネXLヘネネPミ哭ミLぬpXヘハ衒ネハヘ緬綿塋ネミLヘ"
|
||||
DATA 2105376 ," X猝珥Crハ猩f9猩rハハXXハpXハXハfハXfハワXハハハハ澆CC礁ハハハハiヘヘマUXヘUrXハハヘ^塰模ヘfノ哭猖睦哭塰模ノノヘヘXLハfワハハXネネネノa伊鋒ネXネXpネ囹aノLヘノCdCWXP猩ノネLネ塹ワハハハワバPfpワfハハX紡緬ノノPャノpノノネネネノ"
|
||||
DATA 63 ,"嵎PjZsPャネsNトNNネPNヘyPャPPNネPLL娟PネネノノNノネLミP}ajNPネsネs洳ネNトノ猜ャ<E78C9C>PN娟uNネネネLNト脈ノLaミLネLaネノ<EFBE88>ヘaネネミLネLネルLL<4C>PPNPマLネネネユノマミPネ~LネネsネノLムネノLNヘLネネa豊rL衙ノwワfノaLネノaネナノノLノ哭f"
|
||||
DATA 16128 ," frLヘ猝rハハ瀁fX瀁ハppXハXXCハワワヘェCョ叔ワハp礁瀾ハハC術fXハムfムヲ^X写ハハXヘX啾モヘf囹ネ珥ff燠模L啾嗔帽ハハハノにヘYミヘ緬ネ塰ヘヘLノfネネLネLL礁ffXLャネネaネ燒ネpハXハワfXノノwハpヘユハX綿aaLャネLネノャXエ~ユ"
|
||||
DATA 16191 ,"ノノ蘖sL綿sYPsネネPN淤ノPPネネミ哭猜ャミLヘネP嵎ネトトfネネミPネsャャミPNNトネPネネNPミャネノPNミPz以PネミノN姚ノノN哭NLエ威PャネNLfLミネPネネN~LノネヘネトネネャミsユノN彗ャLaャXワヘXネLノノfNネネXLヘャ妄fCpムワpLLaャミLLノ}LノXヘヘ"
|
||||
DATA 4128768 ," 猝Lも珥ハハ灑ワ珥ハXョCハワワCぬハ猝f礁ワXハワハハハハハCCハハワXpヘffm袁士|ハXヲ写ヘノ墟f塹ノ猜aノネ塹L濆LLミヘナぬハハp繭ヘノ<EFBE8D>ネL塰ネネPネヘノネムネLミヘLpffLノケヘネLネネfネNCワワワハハワLd衞潘Pャ哢ノ伊ヘ模ネNネLネNネネ"
|
||||
DATA 4128831 ,"ャL塹ネL脈ネネネトネトNNNYNssネNネノャネャNネ娜ノヘYPネネPャノLネPNノLトネ娟LPネネ~PNzNNLネNネLP}威P廸~ャrPネャャNノPミNネ耗PLネノPノネfネaN~a豊aミPネNトネミNノノネネノP塋LヘネネLLLヘヘノネf貿孟ネpハヘヘfdヘユノネネYヘヘネネヘa囑<61>"
|
||||
DATA 4144896 ," ヘ貿fppワハ模帽<E6A8A1>fハハハハハハはXfXXwXハXハハppハハpハハ叔ワハハハヘXハヘトノfXm緒ワヘpにワ墟Xf啾fL喃ノL模ヘ獏Lヘ址ノ毀猝ヘヘ塰ミLLヘ囑fXノネLネCLP塹ミLNハ瀁Xネ澂ヘノ猩Lノ勿ハハワハfハPハハハヲネネLXロ~ノN~哭fネヘネaノャN"
|
||||
DATA 4144959 ,"ネャXfャNN猖LPLLNエsLPネネNN嵎Nノsャ嵎PNP娟aミPリャP~櫚PLミNネミミPsP~sNネPPト娜LPネノネナネネPzネL~PLネノaネLaネLNミNミ以ネLネネノネ}ヘミsLヘpネネユ塋ネfミ緬ネネナネ塋afaャLfNモヘヘ繭マffXLミff~ヘfワLfLミノヘ墟ノネ~ャネXノ"
|
||||
DATA 0 ," 猩毀fハfネヘハ啾燒X猝XfハXヘfハハヲハXハワXXヲ術ハpCワハハハハX瀁ハfCYヘハXトマワヲ醜fハLf燠f猖唸壟ヘヘ瀾ノノ゚ヘ帽ヘ瀁rf鐘ノLノXLL貿ヘLネ塹ネノヘ囹pネネ墟ハpfXネ獸ャネネネノ繭ハワハハCpXミrハpハLマPャネヘNaネトzヘャ以NzネP"
|
||||
DATA 0 ,"トラYヘPネノfネNノヘネトネユネLP綿N嵎LネNNネLPNaネ<61>ネsfネ綿ネネミネNネネP淙ャNNネネ<EFBE88>NPネLミfNLノノNミネLトネノネノPミミノLヘ<4C>NャLネLノ以ミ娜籾ノネNP囹エPミLト~NLLPヘノノネLYLLXネヘネエ玳毛ネネ淙fiネハfネハfP燒ヘf猖ノノユネLヘ末"
|
||||
DATA 0 ," rXfハf猝もfX濆燠ハヲハGハC猝ハf猝ハCハXハXハハハハハCワ章pXワfヘXXC殃燹pハハノfはハaノrヘヘ燠Xf末ノX<EFBE89>は塰猩毀pハャfワ緬ノノハ<EFBE89>PノNLノネaハ繭ャsノノ猝ハfヘネNヘネネネネミヘャCハpヘワハXネハワハrネユノネLネ烝Lャ末Nャノ塰ネN"
|
||||
DATA 0 ,"ユPPf塲孕LaャャP渺Nネ~燒ネャNネネネトネノjsPPPャャPPャLPP耀NミネネャネユミネネPネエネLNYaトネLNLネネ豊NsL慄ナネネ哭LヘLネ哢Nノaノ鋒Xヘ末ノL澑fノP~ネノネ歛嚠ノLネモミ紡ノPネ綿ネエ址模ヘネネ伊ノノaネXLXワfPヘヘ貿LLLノ塹貿ヘ<E8B2BF>"
|
||||
DATA 0 ," ワX壘籾ぬfハノ猩はffハハハfワハハC猝ヘfハョヲ猝pハハハハハ修ハrハXXXユマfヘXワヘfハハ濆瀾LXLfヘネヘエ紡貿ヘX哭L脈猩哭ノハハハハf脈L嗔トLノ豊ヘノヘ綿豊ネヘXハハヲf<EFBDA6>fL墟ヘノノネナョワXヲpハpハCワハLハヘヘLトLノLナ娜淙塰ネヘPャ"
|
||||
DATA 0 ,"NネNネ綿ネYャLネNャsトP嫐ャャPトPNネYネネPャNャNネLャネ淙嵎NャトネLPノLノLNaネネャャPャNYネsミノ娟ノ鋒sナミ哭L啀弃ネノネLミャネL姚L<E5A79A>娜。猖豊屐LネLノ緬蘖ヘL脈ノネX紡LネャネLネャネャャヘ鋒ネfLr末faネ瀁pfLネPネL塰塰ノヘfワワ"
|
||||
DATA 0 ," Xf珥f9珥X喃Xfハ圜ハハXワXワハpヘハワハ猝術ハハハハハ礁ハハCハXワfXヘヘmi叔修<E58F94>LノヘヘLLヘノネXノ籾faa喃ネネ猝塰LfpCハL猜XヘLNfNLネヘヘ塰f塋ヘ面ヘハX瀁ヘ猖ナL哢rNLヘワQワdハvハハハfLノ塋Lノヘヘネネネaノはワ渙L"
|
||||
DATA 0 ,"娜ャ櫚ヘNXaネャ綿Y<E7B6BF>トネャミaネネネャネネLネ}ノャPノLLネャPNネャXNL哢ネ綿・塋PネネLネPネネNネ綿LzPLPネムノノ綿ミLミ圈Pミャミャ綿ネネafネネミLネfwノLLャネ盆ャLャャネノ櫚Lヘヘノネノ繭LネヘaノLミネLノネLネヘ獎YfLノノ猩Lノヘ模ノaLLff瀁f"
|
||||
DATA 0 ," ハ玳ハfハfGヘヘfハヘ壟ハハワfpハハヲ叔ハハハCハハハハハハハハdCハハpwfCヘヘノハwヘfXハfワfXノ貿濆勿ノ末ワff末ヘネ模繭ノffヘノワ模Lネヘ貿ヘ哭ネネヘ猖ヘ模ffヘネ塹ハワXfヘノヘ帽末ユヘノネヘヘfハ修LLNワハヘミfPLネヘネ豊ノミヘヘf獎LL<4C>"
|
||||
DATA 0 ,"PPネYN綿ネ盜LノノミャネYャネsPトNLfLネャ姚ネLネネミノPLノネLャノ塋ネネPLLヘLLネノネNPト櫻<EFBE84>YヘノNsaNネノNノ鋒トャネLネP渙ャネネPャNミネミネノネヘfヘ豊NミN淙LヘPPエaNヘモPPネャ繭猖ヘf綿PNネャ塋猝ャa模ヘヘノL帽ネ緬マヘ緬aaヘXハヘ<EFBE8A>"
|
||||
DATA 0 ," ワハは猝ff猝珥ハ9ハCCpハハハハハハヲハf蚰ハワCハハワCハハCCハョハXp猝XハfXⅤXfヘヘX。珥9ノヘハXff猩<66>ヘヘffヘf貿ワf澪塹塰壟ャXf燒fXネヘ塋XノX~ミL牀ワハヲf末帽囑綿ノ末ハfp囑ネLネXネミャネfaノ哭ネモ豊薛ネャヘf繭"
|
||||
DATA 0 ,"淤LLネネNネャノネナャPヘノノLネネノ啾ャLネネノネネヘモLNネ脈LNネネャノP孟N~<7E>PネネネiネLNネP伊ノa~Y泅なヘ塋ヘネユノネNNノミaノLXネノミNノネノLネミ淤f勿ネヘミNネユノノネLLLネネミネLノネミ帽末LヘネネL泱ミネヘff模ネ末ノネNYN塹豊ヘネノLLi玳"
|
||||
DATA 0 ," ハ瀁p猝ハハXX猝瀁澆ハpハfまハXま賞fワワハ猝礁賞ハワハdワハrハヘfヘハヘbCワXXXXLfW玳ハヘfr喃ヘノノLノヘf朴frモナLfネ塹ヘヘネYXXX澂fLN唸ヘ燠ノPfX瀾fワノPXハ末LfNノネfム珥ネノネ唸Xネ豊ノヘノヘ圈塰ノLヘネN囑ネノノ"
|
||||
DATA 0 ,"塰ノノLネャノノネミPノN~ネャa紡塰LミャX緬ノ~ノャa伊sノNネaノネネノNヘノネPネネミネN~ミLネLネネネャNャネP墟ミLネ嚠NNNPPaN塋Nネ塋ノネノPネネPNノネミネネネネネLネミヘaヘなsマネネLPミミ孟ワワfノ渙塰aネノネP豊綿ミノネLfヘpXノLaLpLNLL喃ヘa"
|
||||
DATA 0 ," ヲXワrハ猝瀁ハ珥猩瀁ワハハCワwヘヘfハえ^Xp。ハハ重ワC緒CCハハ瀁ヲハハヘpmXワpハハトXXffX模r勿ネワLヘLヘノノノヘ燒ヘXfハノモ塹猩瀁ノXネffL澂fヘ貿Xワ。Xヘヘ壘ハハムハノノノヘヘ喃ffャaヘヘ塋ヘノiャ。ヘ緬ヘヘrネ猖aエ緬LaXヘネ啀ネa"
|
||||
DATA 0 ,"ネ啾ネヘミ姚塹ナャNネノヘf脈<66>蘖ミLノ塹PエaX嚠ノ繭トノネノs囹ヘャャaPPNLNaノネネヘノLネ~Nネネネaヘ薇ネ墟ノ綿Lミャネネ址ヘaミネ緬ヘLLネネa囹PLネノfヘfネLLノャ烝ャP淤LXLはfff緬ネaネネLLノミノ哭aノノネミfネネaLネヘ塹ヘヘノノa帽"
|
||||
DATA 0 ," 瀁ハハハハハヘf9Xハハ玳ハハハョXハワfヘヲハハワハハハCハハハpfハ術ハワハヘfハXヘユfム赦写ff写af貿X。C毀ヘ塰XノLヘ烽貿Lネハハ猩猩ヘaネLワfヘヘヘfワLヘヘ燠Nヘ墟ヘ砲ハ濆faノヘp末ハヘノNユ模ネpLヘネfL貿LネL唸Xfネネ哭ネヘなノナ豊<EFBE85>"
|
||||
DATA 0 ,"Lネ墸ユaNャャノネノネミネ緬猜fLfネPネネネネLLL鋒モヘミナaミミヘ<EFBE90>綿ヘミミNネ塋ミネLN伊ネネネヘノノネャネ豊ノLPY毯piLャネX豊ネkfハミfネヘLネP緬ミP蘖fノfム蘖L緬LノXネfャ牟fワヘネXノ模fLaLネ櫚LネLLヘネネ綿孟XLXfLpf模模緬fノXハ"
|
||||
DATA 0 ," 珥猩牋ハCハ珥fハハハハハハハハハハ叔ヘCョXワ緒賞ワ賞礁p賞礁ハXワ瀁ヘXヲハヘ|mワm事Xヘfヘ忘<EFBE8D>ワノ唸猩XLノヘヘffLハGLヘ<4C>ノャヘハffネYノヘネネrヘLfLネ模LrハXスネLノLヘXヘ模ミネfノ籾ワfLfヘ~渭ャネ啾ノ燒ヘヘ塹L<E5A1B9>ミネネL<EFBE88>"
|
||||
DATA 0 ,"LP猜ミ穆ノfネヘネネPノN鋒ネfミノネPネLノネNネY啾ャLL<4C>NLヘaミL鋒LミノネノNLaネN緬PL濛LNLNロ~ネネネLaノaaL徘ノXYヘミfaLャLノ澂ネネネノノヘネヘヘLネミネ籾fヘL歛LネヘfXワワfヘfr濛Lヘ歛ヘN゚豊ノエLヘヘ<EFBE8D>LワXノハ洳睦ヘミX砲<58>"
|
||||
DATA 0 ," 瀁ハハ濆ハ瀁ワXQXCハハワハXワハハfffp。ハハハハハハ賞ワハハハハrハfrハfXヘハ伺|ハ^ヘクXワハぃ櫚ネ壘ナノXLLヘハpXLLヘ哭fノノネヘヘ鳳rYXユノネネ濆ヘノヘ喃ミrLヘfヘrワfワaノLネa瀁f緬ノネハ勿afXLLノヘLミユ塹LネXヘノエャミヘネLネL煦"
|
||||
DATA 0 ,"ノネネPネミヘトノノノLaネLネNNャPノネャネ囹ャNネミノヘLノネ耗iャ耗aLLrX模豊澂Nネf燠ラネL鳳ミヘ孟~ヘPナエネミ塋燠XノN鋒ャNネL瀁猜ネaネLLヘノネ脈ネ繭ヘLノa淤マLLfヘミヘfノャf帽ff衞ネLネPL綿ネLネノヘミネN猜ネネミヘ毀ヘノネノ模ャ岻ャエ"
|
||||
DATA 0 ," ハ濆fハもハハハ猝ハ猝ハハfワ瀾ワヲワpハワ礁Xハワ礁Cハハ賞ワハハハハハXハハC<EFBE8A>失瀁ェ盜fワノ。fハXfLXワfヘノLpヘ瀁fXネトNネネノ滅ノLXLナノ綿ノネ澂LヘPネa喃fLヘf咾pヲノスャネ。ネヘノヘfaヘ喃LLヘ猩ヘノハfLノノN倏ヘワffN哭ヘaL塰ミL"
|
||||
DATA 0 ,"zLヘiミャ繭エLネノヘネYLノノミネトネPャネハナNネミLャネノヘネLfヘワヘN衙ヘNミネヘLL孟貿哭}ネネネネネ}LヘャャNヘsネネL孟ミ籾Lナエヘラaノaハ猜豊LヘネL塰モヘノトネヘLLヘaLWLfノL朴ヘ牀ワ貿模ワヘヘ猜fネネノノ豊LLノNヘヘネヘヘafノヘノノLミヘノネヘノ<EFBE8D>"
|
||||
DATA 0 ," 猝9ハdfCハハもfハもハワワハp玳ハワワハCハノワハfハCハハpハpCワハfハXffXハムXXX写ハUXpワLノ模ミ哭ffェ塋ヘfノハヘLLノヘヘ緬紡ヘネLトLネノネふa繭aLL末ヘL唸ノハワョwfrネネLネモ喃LヘノLXナノノLfヘノXヘfミャネLネN壟afネネLfノaネネ"
|
||||
DATA 0 ,"壼牀aノLXヘPLエノ繭Lノ哭iNネPノネネ娜NネネLミ貿ノL紡ノ塋ヘPネ緬ミヘヘはaaL猩ミヘネNNネN游Y豊aネ塹fYモ脈エ澂ヘノャネPャNノLノLa~猖LネfPノfネLマミLエLノノ游ネLャノLネワ貿ハiノfffハヘ緬ネネノネネLaノfXヘ啀ミL<EFBE90>ネネL珥ネミヘャ"
|
||||
DATA 0 ," ハハハハXハf澆fハffハfハョワハハワXワワョワハハハCハハCワ修ハ礁賞ハpハffXヘハハm<EFBE8A>ヘノヲハwムヲハワrノ哭貿濆ヘヘ<EFBE8D>ヘネヘX゚模L燒ノXネLヘLヘヘX勿模LヘLLネヘヘヘ猩門ハwXノrエLノ緬ネLミヘ盆L緬ヘ綿zXヘLネ鋒LネネノヘaネヘL塋Nネ握ヘ"
|
||||
DATA 0 ,"LXX塋ネLaヘノヘネLffヘネNノfヘPヘネPLネネャNL囑なfノノノネヘ穆ミLネLノヘiNトXrfL燒PネNネノf澑ノネaLノLLネネノX鳳L~ネノネネネN勿ヘヘヘ豊末Lノネノネノヘネiヘノ耗マLGf渭ネネトハヘヘワiC沺~豊ヘfzネノヘヘLノヘ~玳ia囹綿LfワaミLヘLヘ"
|
||||
DATA 0 ," ハハ珥ョハ瀾濆ハ珥ハハハハワ叔ワfXwfハpハCハ礁Cハ術fハョCC衞叔ハヲpハfヘマXマXネ~XXハハヘ燒ヘYヘwワヘヘLノヘpヘヘミノffff籾ワLLノヘノ籾ネ<E7B1BE>X貿豊ヘヘ繭f貿ネワワXfハ豊ネfLネLLノノネ濛嗔ハ瀁~ノPネfXf塋ヘャ~L哭f塰澪ヘネヘN"
|
||||
DATA 0 ,"緬塰ネ模|ネネfヘノfLPN~エLsノネ勿貿トヘャaLヘff塹L綿ヘエf」ノネミヘネs~ノNLヘffムLノヘネネノfャネ囑ミNャ勿ミヘノfLネLPヘヘノミネ囑fヘヘワPヘヘヘネノ緬Yネ燒N澑rヘXaヘ味ネ綿緬末f蘿ヘハfヘネノ模iaLヘネLノaミLYNヘL繭XワXネLL豊ヘaヘ"
|
||||
DATA 0 ," ハハハ猝ハハ珥猝ハQハハハハハワfワョpハハCハハワハCヲCワハワハ賞ワハハハ醜fXfXG㌶ハヲ^ハヘハハヘf喨Gモffノヘヘ塹ネfノヘfヘ豊fミネヘfLハfネXヘLf末LNLfヘf囹f猩ハ瀁ハXノヘ塰aL塋澑LLミYヘネネLエハiネffXネLCネネノLaミXvヘミヘf"
|
||||
DATA 0 ,"ノNネノネャLマヘャ哢鋒PネLzエミ貿XぬネャヘNャハヘ哭Lf}LXノLミワヘ灑L綿澑ハaハLヘネ娟NヘLLネャ盆LPノヘヘャネX澂ノネNLPノネPヘヘワヘ綿嘸ヘ塹ノヘネネLミユ澂fムネノ籾PネモノノffLLfヘ豊fハ~ヘfノヘXヘノヘ貿ミハLユヘヘaX貿fミLL貿ヘ貿ヘノ"
|
||||
DATA 0 ," ハハハハハハpハハpハハハハワCハハpハ濆pえハ礁礁緒ワハ礁衞CハfハワハffワワfハfrハXXヘ|ハ猝ヘfノヘfpヘ豊LLノノ模fXヘrヘpノノノャヘノワヘネノヘ模緬ハハ帽a燒ネL猾面ハワムfヘヘネaLL猩盆ノLネミノヘエXワ鳳豊ノ末jXfLLLノノノ塹ャ<E5A1B9>Xf"
|
||||
DATA 0 ,"pPLヘLf哭ノYLャLヘノャャPネミY佞XXP穆aヘネノ帽C緬ネ貿f妄ヘノsャN孟ノトヘ瀁ヘNノミNネL毛Lノ囲ネャL塰NL忘Lネネ嵎ヘL~淤L櫚ヘXf貿aネノ綿Lノ渙LLfヘ綿裄ノヘi塹fLN~CャYヘ貿ネLLネaハLネャLfヘLヘLヘノワLLfネLノ末f猩X"
|
||||
DATA 0 ," ハfハハハp猝ハpp猝ハハワハハハpXXハfハCヲハCハ賞ハハハCワワ修C礁CfXヘヘ死㊦ヲハX9fハ猩XハヘヘヘXfXヘL<EFBE8D>ヘヘヘfネワirヘハ歿rワNヘ潘ノfヘヘaモノヘ<EFBE89>ネヘノfノfワヘハハXXワワPノLiヘ澂ノノL伊ミaマヘ模漫L塹ネヘネノPネ塋ネネヘヘミノLLネ"
|
||||
DATA 0 ,"ャNノNヘネミ<EFBE88>ネヘfXネPネエネLfヘLノLネネLネLPハPNPヘ瀾ヘNNfネネャ姚ネネNワCノpLネトN~ヘヘネヘNネネネャャノネ末マノaNaネ圈ャネネLヘaノfヘヘzfffPfエLLヘLL末ネLXネャユ綿ノL塹緬L渭fノXユヘミノ燒ネN綿蝪豊fノ繭~烽囑ノ末ヘXノL"
|
||||
DATA 0 ," X猝ワハrppハハハハハハハハハぬXfワハハワwワCハワ袰ワ賞俊Xハハワ醜ハXワCハpマ獅ムm^ハハXpヲハハヘ瀾ノ烽LL繭Lミ籾XX模。ヘL塹ヘノワヘfLノ19塰豊Lf緬ノネョ藺ヘrfワワrffヘノノヘヘLヘX猜XaLネャノafiヘ緬ユヘヘL塋蘖NYLネNLaノネ緬ヘ"
|
||||
DATA 0 ,"LノLャLネLfLネXネトネLネャネネ緬燒~CLLノ獎LネヘネPトLPャノネネモノヘャP淙囑ネハネLノ}LャjヘミX塋マPヘ獨PLネワミネXユネヘャネネL淙XNf瀁模帽ノaLノ緬ャネヘ<EFBE88>ミ漫ヘLLLネヘャf脈ヘネ塹μヘ模XLヘ裄fノネナNf叔Xハヘ薛Lに模緬貿塹ヘ"
|
||||
DATA 0 ," ハハハXハpハハハハpハハハハハハハXワワdワd袰ワハ賞ハハハハ。澆ハワワハハハハXヲワハf<EFBE8A>ffXXpハヘfXワヘワXXノ嘯模喃a脈モ模LノワffノXナョハLfLXヘ緬ヘXノXf模ヘYヘX瑯ワXfミXヘLネヘfノネノネネpネLネネ~LYノネネヘ塰ノ澂ノ綿ぁネ綿XX~蘖エネ"
|
||||
DATA 0 ,"ノ末ノa塰ネミャネネユネネネノャヘネ綿~LネLノLノヘミLノノNネLyPネノノネネノミLトPL瑯ネ猜ネネエャ緬ノヘヘャafNヘノヘネLャネLネノaLノNヘ猖Laヘf瀁ハLヘ薛ヘ脈哭ノ渭ネネネNハミ瀁ヘネPネノLャ哭ノャXXXワミ面XL<58>ヘノャハ猩ャネ綿aLヘpLLヘ喃Lf豊f"
|
||||
DATA 0 ," ハハfハf瀾Cハハ唸珥CハハハワワXワハ賞ハハ礁礁Cハにヘハハハ礁術ハfXfXXXX^wXXCネXXfハ<66>ヘ灑ffXノ燒は濆囑<E6BF86>ノノネfヘXヘ<58>fXヘwXネXXLヘヘfネfミネfワ貿殆叔XXfヲfネX豊瀾faノ模ネ豊ネネハXハノXヘ囑ノ晒fミノ塲唸LネヘヘLネ"
|
||||
DATA 0 ,"P緬ヘノノネネネノヘa蝟fネ塋fYノLノネLXL壞ノヘャノノネネヘfネネNネヘネノLヘネLL壟鋒ム燒ミノヘヘノト緬LL址XャLノャ緬L塋址ノXネノネ綿ヘLaノヘ帽裹ャヘヘネ塰ネfXネヘLLiヘハ貿aP模ヘネノノマエノ貿貿帽fワヘLXL塹aヘネffaLXLヘハヘfワ蘿瀁哭"
|
||||
DATA 0 ," ハC猝ハハハXfハC壟礁ハワハfハハXハハハワワハハハ猩ハぬヘ毀ハCpCハCXXヲワXfハXXⅤハヘ<EFBE8A>ハ礁塋ハfヘfワマfXヘノX末ヘ濆ヘX豊fヘfノXハaマワネヘXハミノミネノノヘヘネノ゚ffワハXXfハハネLヘワヘXヘ哭吠Lヘヘネノネネャハネ<EFBE8A>r猝ムネLャノミLaヘネネノX味"
|
||||
DATA 0 ,"fャfノネャfネLハノffネネネネネノfネネヘノLネLfXノL塰ミネYネXsノネ渮淙ヘマ鳳ャヘaヘ櫻fXヘネヘャ啀ネャネミjノ豊緬ヘ緬ネネXムヘネ~ャLXネL~ヘfノノf面LモLヘネノマヘノヘヘaLワ<4C>ワヘヘヘLネLfヘ緬fr勿Lワf貿末fヘネヘLハヘL貿f哭ヘヘ珥ワワff末<66>"
|
||||
DATA 0 ," r濆ヘpハ瀾ハw猝礁ハハ礁ハXwワXXCワハワCbfp籾面p緒ハ賞ハfハX模fX写XワCヘXヘハXCヘXヘXヘ猩ヘafヘヘXLffハワXXfCノfはrワ猝ネpLCワネPLノノaネfL淤XヘハL豊PノヘfLPXp什穆豊ヘノLヘ~ネfヘミヘazヘワfヘノネLノL末ネLネ豊X"
|
||||
DATA 0 ,"Nノ忘Pヘ<50>ノヘLハネミ哭猜ネ脈Xfヘ猖ノf勿。瀁ネヘャャネノネa繭iナネヘ緬rネ綿fff蠧vYネLノネsネf猜ヘC姚ネネネ帽<EFBE88>Pノ淤a末LモマネノfpCネヘfpf淙ノヂ籾fネLf貿ワPfヘヘ猩ノL模ヘヘネpfハfワハハヘヘ壟ヘ猩aヘL味ヘfヘfヘ魔貿塹猖"
|
||||
|
17
tests/qbasic_testcases/misc/frac1.bas
Normal file
17
tests/qbasic_testcases/misc/frac1.bas
Normal file
|
@ -0,0 +1,17 @@
|
|||
DIM XX(1 TO 3) AS DOUBLE, YY(1 TO 3) AS DOUBLE, X AS DOUBLE, Y AS DOUBLE
|
||||
DIM I AS INTEGER
|
||||
SCREEN 12
|
||||
WINDOW (0, 0)-(1.6, 1.2)
|
||||
XX(1) = 0
|
||||
YY(1) = 0
|
||||
XX(2) = 2.4 / SQR(3)
|
||||
YY(2) = 0
|
||||
XX(3) = 1.2 / SQR(3)
|
||||
YY(3) = 1.2
|
||||
DO
|
||||
I = INT(RND(1) * 3) + 1
|
||||
X = .5 * (X + XX(I))
|
||||
Y = .5 * (Y + YY(I))
|
||||
PSET (X, Y)
|
||||
LOOP UNTIL INKEY$ = CHR$(27)
|
||||
|
19
tests/qbasic_testcases/misc/frac2.bas
Normal file
19
tests/qbasic_testcases/misc/frac2.bas
Normal file
|
@ -0,0 +1,19 @@
|
|||
CLS
|
||||
SCREEN 8
|
||||
s1 = 225
|
||||
f1 = 1.4
|
||||
s2 = 225
|
||||
f2 = .35
|
||||
x = .4
|
||||
y = .1
|
||||
FOR i = 1 TO 2000
|
||||
x1 = y + 1 - 1.4 * x * x
|
||||
y = .3 * x
|
||||
IF s1 * (x1 + f1) < 640 AND x1 + f1 > 0 THEN
|
||||
IF s2 * (y + f2) < 350 AND y + f2 > 0 THEN
|
||||
PSET (s1 * (x1 + f1), s2 * (y + f2))
|
||||
END IF
|
||||
END IF
|
||||
x = x1
|
||||
NEXT
|
||||
|
21
tests/qbasic_testcases/misc/frac3.bas
Normal file
21
tests/qbasic_testcases/misc/frac3.bas
Normal file
|
@ -0,0 +1,21 @@
|
|||
SCREEN 12
|
||||
WINDOW (-5, 0)-(5, 10)
|
||||
RANDOMIZE TIMER
|
||||
COLOR 10
|
||||
DO
|
||||
SELECT CASE RND
|
||||
CASE IS < .01
|
||||
X = 0
|
||||
Y = .16 * Y
|
||||
CASE .01 TO .08
|
||||
X = .2 * X - .26 * Y
|
||||
Y = .23 * X + .22 * Y + 1.6
|
||||
CASE .08 TO .15
|
||||
X = -.15 * X + .28 * Y
|
||||
Y = .26 * X + .24 * Y + .44
|
||||
CASE ELSE
|
||||
X = .85 * X + .04 * Y
|
||||
Y = -.04 * X + .85 * Y + 1.6
|
||||
END SELECT
|
||||
PSET (X, Y)
|
||||
LOOP UNTIL INKEY$ = CHR$(27)
|
708
tests/qbasic_testcases/misc/frog.bas
Normal file
708
tests/qbasic_testcases/misc/frog.bas
Normal file
|
@ -0,0 +1,708 @@
|
|||
'RETRO.BAS by Matt Bross, 1997
|
||||
'HOMEPAGE - http://www.GeoCities.Com/SoHo/7067/
|
||||
'EMAIL - oh_bother@GeoCities.Com
|
||||
DEFINT A-Z
|
||||
DECLARE SUB BYE ()
|
||||
DECLARE SUB ShowHiScore ()
|
||||
DECLARE SUB DELAY (SEC!)
|
||||
DECLARE SUB FrogINTRO ()
|
||||
DECLARE SUB OptScn (SPECIAL)
|
||||
DECLARE SUB Frogger (TLIVES%, ODIF%, OT%, OD!)
|
||||
DECLARE SUB NewHiScore (SCORE%)
|
||||
|
||||
TYPE ScoreType
|
||||
SCORE AS LONG
|
||||
PERSON AS STRING * 3
|
||||
END TYPE
|
||||
|
||||
DIM SHARED HISCORE(9) AS ScoreType
|
||||
|
||||
SCREEN 7: CLS
|
||||
RANDOMIZE TIMER + VAL(DATE$) + RND
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%INTRO AND GAME%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
FrogINTRO
|
||||
ShowHiScore
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%BEGIN DATA%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
FroggerGraphics:
|
||||
'frog
|
||||
DATA 9,9,0,-32612,0,-32612,20,-32578,0,-32598,0,-32513,0,-32513,-32567,-32513
|
||||
DATA 0,54,8,62,0,54,0,127,0,127,28,127,0,99,34,-32541,0,-32575,-32575,-32575
|
||||
DATA 0,0
|
||||
'car1
|
||||
DATA 9,9,-32513,-32513,-32513,0,-32575,-32575,-32513,0,-32575,-32575,-32541,0
|
||||
DATA 0,0,-32541,0,0,128,-32513,128,0,0,-32513,0,0,0,-32578,0,0,0,28,65,-32578
|
||||
DATA -32578,-32578,0
|
||||
'car2
|
||||
DATA 9,9,-32513,-32513,-32513,0,-32513,-32575,-32575,0,-32541,-32575,-32575,0
|
||||
DATA -32541,0,0,0,255,-32768,-32768,-32768,-32513,0,0,0,-32578,0,0,0,28,0,0
|
||||
DATA 65,-32578,-32578,-32578,0
|
||||
'log1
|
||||
DATA 9,9,-32640,-32513,127,-32640,0,-32513,-32513,64,0,-32513,-32513,64,0
|
||||
DATA -32513,-32513,64,0,-32513,-32513,64,0,-32513,-32513,64,0,-32513,-32513
|
||||
DATA 64,0,-32513,-32513,64,-32640,-32513,127,-32640
|
||||
'lily
|
||||
DATA 9,9,-32547,-32513,0,-32513,-32632,127,0,127,0,-32513,0,-32513,8,-32513,0
|
||||
DATA -32521,-32632,-32513,0,119,-32567,-32513,0,-32586,-32575,255,0,255
|
||||
DATA -32541,127,0,93,-32513,-32513,0,-32541
|
||||
'water
|
||||
DATA 9,9,-32513,-32513,0,-32513,-32513,219,0,219,-32513,146,0,146,-32513,73,0
|
||||
DATA 73,-32513,-32513,0,-32513,-32513,219,0,219,-32513,146,0,146,-32513,73,0
|
||||
DATA 73,-32513,-32513,0,-32513
|
||||
'road
|
||||
DATA 9,9,-32513,-32513,-32513,0,-32513,-32513,-32513,0,-32513,-32513,-32513,0
|
||||
DATA -32513,-32513,-32513,0,-32513,-32513,-32513,127,-32513,-32513,-32513,0
|
||||
DATA -32513,-32513,-32513,0,-32513,-32513,-32513,0,-32513,-32513,-32513,0
|
||||
'exit1
|
||||
DATA 9,9,-32513,0,0,-32513,-32513,127,127,-32640,-32576,64,64,-32577,-32576
|
||||
DATA 64,64,-32577,-32576,64,64,-32577,-32576,64,64,-32577,-32576,64,64,-32577
|
||||
DATA -32576,64,64,-32577,-32576,64,64,-32577
|
||||
FroggerIntroPalette:
|
||||
DATA 1,0,7,2,8,7,4,5,7,7,10,10,10,8,7,15
|
||||
FroggerIntroGraphics:
|
||||
'title1
|
||||
DATA 57,87,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3976,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,0,-3841,0,0,0,-24576,0,0,0,0,0,0,0,0,0,0,0,-1793,0,0,0,-16369
|
||||
DATA 0,0,0,0,0,0,0,0,0,0,768,-1793,0,0,0,-3969,0,0,0,0,0,0,0,0,0,0,7936
|
||||
DATA -1793,0,0,256,28927,0,0,0,0,0,0,0,0,0,0,16128,-1793,0,0,3840,28784
|
||||
DATA 0,0,0,0,0,0,0,8192,0,0,32512,-3841,0,0,1536,-8159,0,0,0,0,0,0,0,-8192
|
||||
DATA 0,0,-256,-3841,0,0,2048,-8189,0,0,0,0,0,0,0,-8190,0,0,-253,-7937,0
|
||||
DATA 0,20224,-16361,0,0,0,0,0,0,0,-16363,0,0,-249,-16129,0,0,-26623,-32513
|
||||
DATA 0,0,0,0,0,0,0,-32705,0,0,-241,-16129,0,0,-20477,127,0,0,0,0,0,0,0
|
||||
DATA 63,0,0,-481,15615,0,0,8199,-16322,0,0,0,0,0,0,0,30,0,0,-225,1023,128
|
||||
DATA 0,16399,-994,0,0,0,0,0,0,0,30,0,0,-225,1790,96,0,16399,-2019,0,0,0
|
||||
DATA 0,0,0,0,28,0,0,-193,1276,32,0,16399,-1765,192,0,0,0,0,0,0,24,0,0,-129
|
||||
DATA 1272,32,0,24604,-1225,0,0,0,0,0,0,0,48,0,0,-129,1272,16,0,12344,-1673
|
||||
DATA 192,0,0,0,0,0,0,112,0,0,-1,-31503,16,0,2096,31470,96,0,0,0,0,0,0,224
|
||||
DATA 0,256,-1,29935,16,0,26466,2496,160,0,0,0,0,0,768,192,0,768,-1,7904
|
||||
DATA 8,0,-10265,0,192,0,0,0,0,0,1536,0,0,1792,-1,608,8,256,-8977,128,112
|
||||
DATA 0,0,0,0,0,1024,0,0,3840,-257,832,8,768,-15889,128,144,0,0,0,0,0,0
|
||||
DATA 0,0,7936,-769,64,232,1792,-27665,128,0,0,0,0,0,0,0,0,0,16128,-257
|
||||
DATA 64,56,3840,4591,128,0,0,0,0,0,0,0,0,0,16128,-1537,64,16,7936,32495
|
||||
DATA 128,0,0,0,0,0,0,0,0,0,32512,-1537,64,16,7936,32494,128,0,0,0,0,0,0
|
||||
DATA 0,0,0,-256,-1537,192,16,16128,-308,0,0,0,0,0,0,0,0,0,0,-255,-769,192
|
||||
DATA 16,32256,32732,0,0,0,0,0,0,0,0,0,0,-255,-1281,128,16,31744,-232,0
|
||||
DATA 0,0,0,0,0,0,0,0,0,-255,-1793,128,16,32256,-200,0,0,0,0,0,0,0,0,0,0
|
||||
DATA -255,-513,192,32,-512,-208,0,0,0,0,0,0,0,0,0,0,-255,-3329,192,32,-512
|
||||
DATA -208,0,0,0,0,0,0,0,0,0,0,-205,-8449,64,32,-512,-14,128,0,0,0,0,0,0
|
||||
DATA 0,0,0,-197,-769,96,64,-8704,-14,160,0,0,0,32,0,0,0,0,0,-217,-3841
|
||||
DATA 48,64,-9191,-14,208,0,0,0,16,0,0,0,0,0,-221,-11777,40,128,-8931,-10
|
||||
DATA 248,0,0,256,40,0,0,0,0,0,-221,-513,52,128,-9955,-10,220,0,0,256,20
|
||||
DATA 0,0,0,0,0,-205,-16385,-73,0,-9443,-9,236,0,0,768,164,0,0,0,0,0,-185
|
||||
DATA -4865,19548,0,-27847,-17,-3857,0,0,0,76,0,0,0,0,0,-185,-3329,-391
|
||||
DATA 0,-18631,-49,-1801,0,0,512,112,0,0,0,0,0,-153,255,-16404,128,-18631
|
||||
DATA -33,-1805,0,0,0,224,0,0,0,0,0,-185,16639,32566,240,-18629,-97,-2079
|
||||
DATA 0,0,0,32,0,0,0,0,0,-185,8446,-221,254,14139,-65,15808,224,0,0,0,0
|
||||
DATA 0,0,0,0,-185,254,-224,235,28475,-65,2016,92,0,0,32,0,0,0,0,0,-153
|
||||
DATA 254,3904,-32519,20283,-65,128,254,0,0,0,0,0,0,0,0,-185,24820,128,-32514
|
||||
DATA 32571,-1,0,1,0,0,0,0,0,0,0,0,-185,205,128,-32765,-197,-1,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,-185,192,128,0,-197,-1,0,0,0,0,0,0,0,0,0,0,-121,6608,0,0
|
||||
DATA -133,-257,0,0,0,6144,0,0,0,0,0,0,-121,5504,0,0,-133,-257,0,0,0,5120
|
||||
DATA 0,0,0,0,0,0,-121,-4672,0,0,-133,-257,0,0,0,-5120,0,0,0,0,0,0,-313
|
||||
DATA -17024,0,0,-133,-257,0,0,0,-17408,0,0,0,0,0,0,-1401,-9340,0,0,-133
|
||||
DATA -769,0,0,0,-10236,0,0,0,0,0,0,-1401,-17729,0,0,-133,-769,0,0,0,-18241
|
||||
DATA 0,0,0,0,0,0,-377,-2823,0,0,-135,-1793,0,0,0,-3847,0,0,0,0,0,0,-9329
|
||||
DATA -19233,0,0,-143,-1793,0,0,768,-20257,0,0,0,0,0,0,-3509,-1793,0,0,-207
|
||||
DATA -3841,0,0,512,-3841,0,0,0,0,0,0,-31919,-28469,0,0,-224,-7937,0,0,768
|
||||
DATA -32565,0,0,0,0,0,0,-30383,-7970,0,0,32544,255,0,0,2304,222,0,0,0,0
|
||||
DATA 0,0,865,87,0,0,-256,252,0,0,768,84,0,0,0,0,0,0,-6656,188,0,0,7936
|
||||
DATA 248,0,0,1536,184,0,0,0,0,0,0,8960,248,0,0,7936,240,0,0,768,240,0,0
|
||||
DATA 0,0,0,0,13056,248,0,0,3840,240,0,0,768,240,0,0,0,0,0,0,4352,248,0
|
||||
DATA 0,3840,240,0,0,256,240,0,0,0,0,0,0,7168,248,0,0,3840,240,0,0,3072
|
||||
DATA 240,0,0,0,0,0,0,7680,124,0,0,3840,248,0,0,3584,120,0,0,0,0,0,0,7936
|
||||
DATA 28,0,0,3840,248,0,0,3840,24,0,0,0,0,0,0,32512,140,0,0,1792,248,0,0
|
||||
DATA 0,8,0,0,0,0,0,0,-253,228,0,0,16128,248,0,0,0,0,0,0,0,0,0,0,-241,244
|
||||
DATA 0,0,-255,248,0,0,0,0,0,0,0,0,0,0,-225,252,0,0,-241,240,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,-193,248,0,0,-993,0,0,0,0,0,0,0,0,0,0,0,-385,0,0,0,56,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,0,-8000,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,30832,0,0,0
|
||||
DATA -32753,0,0,0,0,0,0,0,0,0,0,0,-14577,-8057,0,0,14336,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,16128,-3969,0,0,0,-8057,0,0,0,-8185,0,0,0,0,0,0,0,-7937,0
|
||||
DATA 0,0,8,0,0,0,8,0,0,0,0,0,0,0,-1921,0,0,0,-16345,0,0,0,-16345,0,0,0
|
||||
DATA 0,0,0,0,-385,0,0,0,14352,0,0,0,14352,0,0,0,0,0,0,0,31800,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
'title2
|
||||
DATA 54,81,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,-7951,0,0,0,0,0,0,0,0,0,0,0,0,0,-7951,0,0,2048,0,0,0,8192,0,0,0
|
||||
DATA 0,0,256,-24322,0,0,0,0,0,0,16385,0,0,0,0,0,256,-7937,0,0,2816,64,0
|
||||
DATA 0,8192,0,0,0,0,0,256,-3842,0,0,0,64,0,0,1,0,0,0,0,0,256,-7945,0,0
|
||||
DATA 2,32,0,0,24,0,0,0,0,0,16128,-3841,0,0,-19455,80,0,0,0,0,0,0,0,0,16128
|
||||
DATA -3841,0,0,-7671,32,0,0,16384,0,0,0,32,0,32512,-24322,0,0,16514,240
|
||||
DATA 0,0,1,0,0,0,0,0,-256,24829,0,0,-32766,176,0,0,16386,0,0,0,0,0,-249
|
||||
DATA -24321,0,2304,-24824,0,0,1280,16384,0,0,5376,0,0,-243,16607,0,0,-8440
|
||||
DATA 0,0,4098,-20448,0,0,2560,0,0,-225,-7937,0,512,-256,16,0,4100,2048
|
||||
DATA 0,0,7424,0,0,-489,2047,192,1024,-16640,48,0,8456,-16384,0,0,7680,0
|
||||
DATA 0,-193,1258,64,1792,4352,184,0,16384,16396,128,0,0,0,0,-129,16626
|
||||
DATA 64,1792,2304,-24574,0,8192,-12028,0,0,0,0,0,-4225,-23324,32,3584,5120
|
||||
DATA 16386,0,4144,-6133,160,0,0,0,0,30079,1093,32,15872,2576,184,0,-21888
|
||||
DATA 16529,96,0,0,0,768,-1,-19272,48,20736,25856,74,0,1024,-32750,0,0,0
|
||||
DATA 0,1792,-1,7792,16,-3326,-32262,16512,0,256,352,160,0,0,0,3840,-257
|
||||
DATA 688,16,-2298,-7447,233,0,512,0,224,0,0,0,7936,-1,864,208,-221,-31520
|
||||
DATA 92,0,2048,80,32,0,0,0,16128,-1,16,112,-2289,-23836,-32618,0,0,10240
|
||||
DATA 0,0,0,0,32512,-1,144,32,-1265,1484,20490,4096,0,5376,0,0,0,0,-256
|
||||
DATA -257,80,32,-1177,735,180,0,0,2560,128,0,0,0,-255,-257,80,544,-3105
|
||||
DATA 9375,80,0,0,0,0,0,0,0,-255,-1,48,32,1407,-13793,16,0,80,8192,0,0,0
|
||||
DATA 0,-255,-257,32,32,1791,20751,16,0,8192,128,0,0,0,0,-255,-257,32,0
|
||||
DATA 3807,21020,12448,0,256,2176,0,0,0,0,-255,-1,184,8192,3775,16522,4184
|
||||
DATA 0,0,0,0,0,0,0,-253,-257,88,64,7799,-23024,-28644,48,256,-32768,40
|
||||
DATA 0,0,0,-214,-1,140,5184,3819,25408,8208,1,0,1040,16,0,0,0,-201,-257
|
||||
DATA 6,2176,17486,22612,4272,0,256,2720,96,0,0,0,-253,-1,37,-31616,3754
|
||||
DATA -29744,16627,112,384,81,0,0,0,0,-221,-1,16038,-11264,-12224,22980
|
||||
DATA 1089,8,0,-32768,0,0,-31232,0,-201,-1,21499,2048,-3864,9312,1156,512
|
||||
DATA 0,26656,0,0,-29952,0,-217,-257,-16409,-16256,-12208,6608,1032,56,256
|
||||
DATA 16385,8,0,1536,0,-187,-769,-10466,-22416,6200,-26368,2052,18,768,10842
|
||||
DATA 132,0,1537,0,-16537,-2817,27299,-25604,20737,21568,16,16384,2816,1448
|
||||
DATA 0,0,0,0,-185,-7425,8002,-18200,-13559,9608,0,0,5376,8408,20,0,0,0
|
||||
DATA -185,-7937,946,-28420,20997,68,4,40,6912,-22280,0,0,0,0,32611,-3841
|
||||
DATA 2,-31744,-17919,15626,-22384,-32752,1280,17728,64,0,0,0,-189,25342
|
||||
DATA 4,-18432,-11115,23191,49,4,2561,-30048,40,0,0,0,-189,255,4,-20480
|
||||
DATA -5380,-30556,4181,4,22785,81,0,0,0,0,-189,-32514,200,-28672,22751
|
||||
DATA 12309,-22452,44,27137,-24058,0,0,0,0,-189,253,168,-31744,-19974,17799
|
||||
DATA 17476,48,28674,0,0,0,-32768,0,-61,2046,104,0,12663,-27328,2050,29
|
||||
DATA -18432,-30718,128,0,0,0,-637,1524,216,1280,-23813,9386,29,152,20489
|
||||
DATA 1,20,0,0,0,-893,-3628,208,1024,16637,10254,1,569,43,10752,160,0,144
|
||||
DATA 0,-893,-6149,96,19456,16637,4104,12312,657,4108,128,4,0,8352,0,-53
|
||||
DATA 32495,160,1024,21757,149,0,56,5124,64,0,0,72,0,-4729,-2101,192,24576
|
||||
DATA 9470,8238,0,152,9744,0,0,0,209,0,-860,11791,64,20736,4350,-32555,0
|
||||
DATA 266,1248,0,0,0,40,0,25516,29223,128,20736,-9807,165,0,3584,10241,0
|
||||
DATA 0,0,80,0,-860,11791,64,21248,4096,-32560,0,17160,480,0,0,2048,32,0
|
||||
DATA -4857,-2101,192,0,1106,32,0,-24424,10768,0,0,512,16400,0,-30654,-3897
|
||||
DATA 0,0,11552,12,0,-30961,533,0,0,512,16,0,20032,24609,0,2560,3584,176
|
||||
DATA 0,16901,9232,0,0,256,64,0,1536,-24519,0,3328,1032,16,0,-24574,18450
|
||||
DATA 0,0,2048,160,0,1024,-4036,0,1280,544,12,0,4864,1,0,0,3072,48,0,1536
|
||||
DATA 28734,0,1280,16457,128,0,-24568,2049,0,0,512,0,0,3840,4349,0,1280
|
||||
DATA 176,104,0,16384,-32766,0,0,3328,0,0,16128,-12033,0,1280,16708,32,0
|
||||
DATA -32766,0,0,0,0,0,0,-256,-3841,0,1280,-8183,0,0,512,0,0,0,0,0,0,-256
|
||||
DATA -16129,0,768,12367,32,0,0,72,0,0,0,0,0,-253,248,0,1024,770,80,0,0
|
||||
DATA 0,0,0,0,0,0,3590,0,0,2048,-10240,8,0,-3839,-32734,0,0,0,0,0,-30965
|
||||
DATA 3264,0,1024,8232,144,0,21000,16,0,0,0,0,0,29456,-264,0,0,1420,0,0
|
||||
DATA 16,2,0,0,0,0,0,800,-4065,0,0,-24528,0,0,544,2112,0,0,0,0,0,64,-16889
|
||||
DATA 0,-24576,2048,0,0,0,20480,0,0,0,0,0,128,-2801,128,16384,0,16384,0
|
||||
DATA 128,2560,0,0,256,128,0,0,-29949,0,0,1024,64,0,0,8192,0,0,0,8,0,0,-16383
|
||||
DATA 0,0,0,16,0,0,0,0,0,0,0,0,0,-16384,0,0,256,0,0,0,0,0,0,0,0,0,0,-16384
|
||||
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,-32767,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0
|
||||
DATA 0,0,0,-32768,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
'title3
|
||||
DATA 55,82,0,0,48,0,0,0,0,0,0,32,0,0,0,0,0,0,16,0,0,0,0,0,0,32,0,0,0,0
|
||||
DATA 0,0,96,0,0,0,0,0,0,64,0,0,0,0,0,0,64,0,0,0,0,0,0,32,0,0,0,0,0,0,-7952
|
||||
DATA 0,0,0,16,0,0,65,0,0,0,0,0,0,16465,0,0,16384,0,0,0,-32608,0,0,0,0,0
|
||||
DATA 0,-7951,0,0,8192,16,0,0,81,0,0,0,0,0,256,16483,0,0,16384,0,0,0,-32638
|
||||
DATA 0,0,0,0,0,256,-32605,0,0,256,0,0,0,16448,0,0,0,0,0,768,16597,0,0,768
|
||||
DATA 0,0,512,-32520,0,0,0,0,0,768,16633,0,0,2304,0,0,256,-32554,0,0,0,0
|
||||
DATA 0,768,85,0,0,0,192,0,0,234,0,0,0,0,0,512,-16134,0,0,-1536,0,0,256
|
||||
DATA 5,0,0,0,0,0,256,21,0,0,8452,0,0,2560,-32546,0,0,0,0,0,11776,-16129
|
||||
DATA 0,0,-16374,0,0,5376,0,0,0,0,0,0,-6400,16639,0,0,8,128,0,-4096,16384
|
||||
DATA 0,0,0,0,0,-16637,254,0,256,256,128,0,24576,16384,0,0,0,0,0,-235,-16132
|
||||
DATA 0,8192,2816,0,0,523,160,0,0,0,0,0,-5607,-3345,128,3072,18184,1,0,5890
|
||||
DATA 12344,0,0,0,0,0,-233,-18945,0,0,26112,-16246,0,10,16408,0,0,0,0,0
|
||||
DATA -193,-21254,192,0,256,67,0,-2781,4190,0,0,0,0,0,22301,16630,64,256
|
||||
DATA 512,-32624,0,-21978,10413,0,0,0,0,0,-4113,24818,32,-30976,512,-12261
|
||||
DATA 0,21784,-16307,0,0,0,0,256,-2057,20708,32,514,6656,16552,0,-21992
|
||||
DATA 165,0,0,0,0,3840,-1026,-29779,32,15878,16512,112,0,17729,1844,0,0
|
||||
DATA 0,0,14080,30167,1916,160,22279,-32162,16400,14336,-24408,3176,32,0
|
||||
DATA 0,0,-1280,-1025,584,192,-18425,18088,176,12288,21829,1952,128,0,0
|
||||
DATA 0,7937,30719,1476,576,21543,-30638,-32688,-16384,-22102,3856,0,0,0
|
||||
DATA 0,-22016,-5,144,64,-22134,-9542,248,21761,17748,32,0,0,1024,0,22273
|
||||
DATA 32725,1092,64,-11245,24645,8272,-22528,-21974,146,0,0,2048,0,-255
|
||||
DATA -1,230,96,21763,-20090,4344,0,20736,72,0,0,0,0,-255,30079,226,32,-24053
|
||||
DATA 13665,84,2,-30200,520,112,0,0,0,-2034,-18310,1015,2256,1,128,80,1537
|
||||
DATA 17541,-32504,48,322,7,0,-1785,22524,1016,3104,512,2128,4208,1616,-24575
|
||||
DATA 6927,224,262,8,128,-201,-1281,-15880,-32632,0,1280,8,76,0,4354,8,0
|
||||
DATA 5,32,-29,-3585,3042,2200,0,1024,8388,22,512,14617,24,0,14,0,-57,-1
|
||||
DATA -3075,4348,0,0,128,172,0,-13310,12,4,16,80,-2105,-2049,-4916,10342
|
||||
DATA -32768,0,4112,10450,2048,-24013,138,128,128,224,-2073,-1,-6408,4346
|
||||
DATA 0,0,1144,2156,0,-7929,0,0,64,128,-191,-1,29904,-24388,0,10240,8441
|
||||
DATA 22,0,28679,66,0,32,0,-18653,16351,2946,5290,0,17408,4112,2120,96,-6863
|
||||
DATA 228,64,2248,0,32515,22527,5120,11264,0,512,13921,18,2048,-29143,192
|
||||
DATA 128,-11104,0,-8397,-5633,-28152,7296,0,20484,14944,64,512,3079,64
|
||||
DATA 32,-24560,0,7937,-11777,1025,1024,8224,256,22211,-16334,3840,7423
|
||||
DATA 0,192,32,0,-253,-1409,6314,2048,160,-24319,32290,16404,1152,-13068
|
||||
DATA 0,-32768,2144,0,-255,-2561,20492,3072,64,1281,31777,8208,2816,-29450
|
||||
DATA 0,0,100,64,-1455,-22481,-22491,1536,4330,12112,-21936,5465,1984,1269
|
||||
DATA 0,-32767,160,0,-2799,-19121,-32523,2640,20727,264,2600,2052,25248
|
||||
DATA 265,244,8192,-2928,0,-504,31,-32544,29962,-8136,-26609,0,17666,12048
|
||||
DATA 133,6,0,208,0,-2814,2143,-16169,14336,16469,4207,2048,10887,20384
|
||||
DATA 25,0,0,9872,0,-1270,2192,-32745,256,-11927,12300,64,5252,-9170,-32676
|
||||
DATA 0,0,-32733,0,29957,528,13,512,-20076,28799,128,11144,-31154,128,0
|
||||
DATA 0,256,0,14495,-30559,40,0,1,-32202,0,-15668,16734,84,0,0,8,0,4373
|
||||
DATA -6909,112,8704,-6078,28,0,-21112,1556,142,0,0,16385,0,11818,8216,248
|
||||
DATA 1024,-15615,14,0,-3949,-28416,12,0,1024,0,0,18224,5320,96,512,1924
|
||||
DATA 232,0,30881,816,152,0,0,0,0,11818,-20196,252,1024,-7360,78,0,-28271
|
||||
DATA 4356,12,0,0,0,0,5397,-6369,242,-24064,12352,-30712,0,-20711,4684,6
|
||||
DATA 0,0,0,0,2624,-129,224,-28672,0,0,0,15616,16516,0,0,0,0,0,1344,29695
|
||||
DATA 192,-32768,42,0,0,5120,-17366,128,0,0,0,0,2816,-1281,160,0,0,4096
|
||||
DATA 0,5120,1280,192,0,0,0,0,1280,5616,0,0,3072,-32760,0,2560,-2302,96
|
||||
DATA 0,0,0,0,2816,-13316,224,0,0,0,0,1536,13507,0,0,0,0,0,5376,-2161,32
|
||||
DATA 0,4104,-32768,0,4096,2176,96,0,0,0,0,24576,-2032,128,0,784,16384,0
|
||||
DATA 16384,1792,0,0,0,0,0,-16384,29696,224,0,0,3,0,0,19456,96,0,0,16,0
|
||||
DATA 1,2816,32,0,0,0,0,1,1024,0,0,0,0,0,2,768,0,0,0,12,0,2,0,0,0,0,0,0
|
||||
DATA 4,1536,0,512,0,0,0,4,0,0,0,0,0,0,24,1024,0,8192,0,8,0,8,512,0,0,0
|
||||
DATA 0,0,32,3072,0,2048,0,0,0,32,0,0,0,0,0,0,64,4096,0,16384,0,44,0,0,0
|
||||
DATA 0,0,0,0,0,0,6144,0,0,0,0,0,0,0,0,0,0,0,0,128,12288,0,0,0,0,0,128,8192
|
||||
DATA 0,0,0,0,0,0,12288,0,0,0,0,0,0,0,0,0,0,0,0,0,24576,0,0,0,128,0,0,8192
|
||||
DATA 0,0,0,0,0,0,-16384,0,0,0,0,0,0,0,0,0,0,0,0,0,16384,0,0,0,0,0,0,-32768
|
||||
DATA 0,0,0,0,0,0,-32767,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,128,0,0,0,0,0
|
||||
DATA 0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,2048,0,0,0,2,0,0,0,0,0
|
||||
'title4
|
||||
DATA 55,82,0,0,0,0,0,16384,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,256,-16157,0,0,0,0,0,0,0,0,0,0,128,0,256,16483,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,256,-16157,0,0,0,0,0,0,0,0,0,0,0,0,256,-16191,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,256,-16157,0,0,0,0,0,0,0,0,0,0,0,0,768,71,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,768,-32569,0,0,0,0,0,0,0,0,0,1282,0,0,1280,-32552,0,0,0
|
||||
DATA 0,0,0,0,0,0,1280,0,0,1792,-32518,0,0,0,0,0,0,0,0,0,-31488,0,0,1792
|
||||
DATA 114,0,0,0,0,0,0,0,0,0,2560,0,0,3840,245,0,0,0,0,0,0,0,0,0,2048,0,0
|
||||
DATA 1280,213,0,0,0,0,0,0,0,0,0,3072,0,0,1792,243,0,0,0,0,0,0,0,0,0,32
|
||||
DATA 0,0,21760,84,0,0,0,0,0,0,0,0,0,-4859,0,0,-2044,-32766,0,0,0,0,0,3840
|
||||
DATA 252,0,0,400,0,0,16413,-32512,0,0,0,0,0,-256,252,0,1280,0,128,0,0,1792
|
||||
DATA 128,0,0,0,0,-32753,-16185,0,4096,10,0,0,29984,12480,64,0,0,0,0,-30708
|
||||
DATA -8057,0,28928,12288,2,0,-254,6216,64,0,0,0,0,5237,4124,0,2048,768
|
||||
DATA 136,3328,-1273,24828,192,0,0,0,-32000,-21821,2723,0,4,3072,21,-26624
|
||||
DATA -8385,-6061,128,0,0,0,1536,1,-10432,0,16568,6696,-32768,16641,-10305
|
||||
DATA -3868,0,0,0,0,15872,10794,514,0,513,4,209,-32767,-1027,11517,128,0
|
||||
DATA 0,0,-16384,2305,513,0,62,2562,208,257,-769,245,0,0,0,0,-9213,10784
|
||||
DATA -32736,96,0,256,2,8960,-1,-22274,0,0,0,0,-1018,3652,-16383,2272,2
|
||||
DATA 2048,0,257,-1,9462,0,0,0,0,-32754,0,-8191,256,32001,-2187,-4050,512
|
||||
DATA -30078,8329,0,124,136,0,-28643,64,13326,8440,257,-32536,171,518,5888
|
||||
DATA 11008,0,-16788,28928,64,25121,32512,-8180,17568,256,1024,23747,26
|
||||
DATA -32768,-15612,2,-355,-3328,28,17125,-18688,-16242,12,-30720,27136
|
||||
DATA -7444,22,2184,-13206,16,30653,4416,19,-1342,-8193,20367,62,4,2128
|
||||
DATA 0,63,20480,8,192,-20351,29729,191,-1088,28667,4095,2076,1028,8256
|
||||
DATA 25120,55,16384,32,128,29200,3219,223,-1086,28667,3054,8240,1108,0
|
||||
DATA -14832,20495,0,1025,8,29216,4243,235,-3327,-2561,-31105,8256,-24572
|
||||
DATA 24,2603,86,6816,640,100,6152,256,212,9249,-4081,-3329,3104,8208,7432
|
||||
DATA 1089,2096,2080,16413,714,-8509,16631,188,1041,-4081,-8462,1120,-32760
|
||||
DATA 18952,-32535,4272,2176,-14270,532,32483,1527,16,9248,-4081,-20225
|
||||
DATA 7520,4120,1801,5195,128,2320,1031,642,-4669,8438,176,-7935,-4081,20605
|
||||
DATA -22824,16400,-17401,1583,16,1792,-32708,32,-20466,760,80,528,3,24847
|
||||
DATA 794,-15360,2305,-32688,-116,312,19481,4,0,-7938,128,264,1,-7734,4866
|
||||
DATA 3712,2112,2096,32708,240,11784,0,0,13759,0,12,33,15904,4096,11777
|
||||
DATA 32583,241,-349,1488,12320,0,0,-32584,8,12289,1,5760,-13824,1536,32558
|
||||
DATA 240,-240,-22800,6144,0,0,81,0,28675,3585,15488,10240,16384,3552,0
|
||||
DATA -12416,-24386,-16270,0,0,17,32,32257,2304,26752,2560,808,20619,132
|
||||
DATA -31852,-22028,4111,0,0,84,0,-6400,898,-1918,1280,9232,19475,0,2218
|
||||
DATA 857,33,0,512,236,0,5376,716,-32665,-10240,58,-32654,32,4,-32197,24
|
||||
DATA 0,0,16385,0,3584,16255,-7937,-32768,16,-32684,0,316,-30323,72,0,0
|
||||
DATA 0,0,256,-24769,-32577,0,-32768,4,64,24,26688,64,0,0,0,0,0,-1,254,-32768
|
||||
DATA 1,-32508,192,48,0,8,0,0,0,0,0,-241,222,0,-12288,8192,0,48,0,0,0,0
|
||||
DATA 0,0,0,-1025,254,-32768,0,0,0,48,1024,8,0,0,0,0,256,-26817,-32579,0
|
||||
DATA 16384,40,64,280,20528,66,0,0,0,0,0,0,0,0,0,156,0,192,128,120,0,0,0
|
||||
DATA 0,0,0,0,0,-32768,0,0,256,0,16,0,0,0,0,0,0,0,0,0,0,0,1664,0,48,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,0,3200,0,16,0,0,0,0,0,0,0,0,0,0,0,4096,0,96,0,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,8192,0,64,0,0,0,0,0,0,0,0,0,0,0,-16384,0,192,0,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,-32767,256,128,0,0,0,0,0,0,0,0,0,0,0,2,256,128,0,0
|
||||
DATA 0,0,0,0,0,0,0,0,0,4,768,0,0,0,0,0,0,0,0,0,0,0,0,24,1536,0,0,0,0,0
|
||||
DATA 0,0,0,0,0,0,0,16,1024,0,0,0,0,0,0,0,0,0,0,0,0,32,3072,0,0,0,0,0,64
|
||||
DATA 0,0,0,0,0,0,64,1024,0,0,0,0,0,0,0,0,0,0,0,0,0,6144,0,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,128,4096,0,0,0,0,0,0,0,0,0,0,0,0,0,12288,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,0,24576,0,0,0,0,0,0,0,0,0,0,0,0,0,24576,0,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,-16384,0,0,0,0,0,0,0,0,0,0,0,0,0,-32767,0,0,0,0,0,0,0,0,0,0
|
||||
DATA 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0
|
||||
DATA 0,0,0,0
|
||||
'title5
|
||||
DATA 57,22,0,-241,248,0,0,0,0,0,0,0,0,0,0,0,0,0,768,240,-8185,0,0,-241
|
||||
DATA 248,0,0,0,0,0,0,0,0,0,15360,0,7680,0,768,-1,-7937,0,0,0,0,0,0,0,0
|
||||
DATA 0,-16383,0,256,192,16128,-1,-257,0,0,0,0,0,0,0,0,0,6,0,0,48,-255,-1
|
||||
DATA -1,192,-512,0,0,0,0,0,0,0,24,0,0,12,-249,-1,-1,240,-32255,0,0,0,31744
|
||||
DATA 0,0,0,32,0,0,2,-241,-1,-1,252,6673,0,15360,0,-7168,0,0,0,64,0,0,1
|
||||
DATA -225,-1,-1,254,-17631,-12289,-6145,248,17408,0,6144,0,64,0,0,1,-225
|
||||
DATA -1,-1,254,-16864,30860,18992,136,16640,-30861,-18993,112,128,0,0,-32768
|
||||
DATA -193,-1,-1,255,-19136,-19677,-25754,40,18432,19676,25753,208,128,0
|
||||
DATA 0,-32768,-193,-1,-1,255,-31424,-22714,-19634,72,30720,22712,19633
|
||||
DATA 176,128,0,0,-32768,-193,-1,-1,255,-17088,-20619,-28834,120,16384,20616
|
||||
DATA 28833,128,128,0,0,-32768,-193,-1,-1,255,-19647,11895,-17572,96,16384
|
||||
DATA -11896,17571,128,64,0,0,1,-225,-1,-1,254,4641,28728,-14752,32,-7936
|
||||
DATA -28729,14751,192,64,0,0,1,-225,-1,-1,252,-3295,-8209,-130,226,0,0
|
||||
DATA 129,0,32,0,0,2,-249,-1,-1,240,24,7424,-32646,12,0,0,129,0,24,0,0,12
|
||||
DATA -255,-1,-1,192,6,5888,-32658,48,0,2048,145,0,6,0,0,48,16128,-1,-257
|
||||
DATA 0,-16383,6144,-32271,192,0,1792,14,0,-16383,0,256,192,768,-1,-7937
|
||||
DATA 0,15360,3840,7839,0,0,0,0,0,15360,0,7680,0,0,-241,248,0,768,240,-8185
|
||||
DATA 0,0,0,0,0,768,240,-8185,0,0,0,0,0,0,-241,248,0,0,0,0,0,0,-241,248
|
||||
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
||||
SUB BYE
|
||||
SCREEN 0, 0, 0, 0: WIDTH 80, 25: CLS
|
||||
PRINT "FROGGER! Written in *QB*. Matt Bross, 1997"
|
||||
PRINT "HOMEPAGE - http://www.GeoCities.Com/SoHo/7067/"
|
||||
PRINT "EMAIL - oh_bother@GeoCities.Com"
|
||||
END
|
||||
END SUB
|
||||
|
||||
SUB DELAY (SEC!)
|
||||
FOR V = 0 TO SEC! * 70: WAIT &H3DA, 8: WAIT &H3DA, 8, 8: NEXT
|
||||
END SUB
|
||||
|
||||
SUB Frogger (TLIVES, ODIF, OT, OD!)
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%GRAPHICS ARRAYS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
REM $DYNAMIC
|
||||
DIM FROG(37), car1(37), car2(37), log1(37), lily(37), water(37), road(37)
|
||||
DIM exit1(37): RESTORE FroggerGraphics
|
||||
FOR i = 0 TO 37: READ FROG(i): NEXT: FOR i = 0 TO 37: READ car1(i): NEXT
|
||||
FOR i = 0 TO 37: READ car2(i): NEXT: FOR i = 0 TO 37: READ log1(i): NEXT
|
||||
FOR i = 0 TO 37: READ lily(i): NEXT: FOR i = 0 TO 37: READ water(i): NEXT
|
||||
FOR i = 0 TO 37: READ road(i): NEXT: FOR i = 0 TO 37: READ exit1(i): NEXT
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%INFORMATION ARRAYS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
DIM FrogLev(23, 15)
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%VARIABLES%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
NewGame: LIVES = TLIVES: SCORE = 0: DIF = ODIF: D! = OD!
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%LOAD HIGH SCORE TABLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
OPEN "hiscore.dat" FOR BINARY AS #1
|
||||
'FOR i = 0 TO 9: GET #1, , HISCORE(i): NEXT
|
||||
CLOSE
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%LOAD LEVEL%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
NextLev: CLS
|
||||
FOR Y = 0 TO 15: FOR X = 0 TO 23
|
||||
SELECT CASE Y
|
||||
CASE 0: IF INT(RND * DIF) = 0 THEN FrogLev(X, Y) = 8 ELSE FrogLev(X, Y) = 9
|
||||
CASE 1 TO 6: FrogLev(X, Y) = 6
|
||||
IF INT(RND * DIF) = 0 THEN
|
||||
IF Y AND 1 THEN FrogLev(X, Y) = 4 ELSE FrogLev(X, Y) = 5
|
||||
END IF
|
||||
CASE 8 TO 14: FrogLev(X, Y) = 7
|
||||
IF INT(RND * (100 - DIF)) = 0 THEN
|
||||
IF Y AND 1 THEN FrogLev(X, Y) = 2 ELSE FrogLev(X, Y) = 3
|
||||
END IF
|
||||
END SELECT
|
||||
NEXT: NEXT
|
||||
|
||||
FOR Y = 0 TO 6
|
||||
FY = -1: FX = -1: EX = -1
|
||||
FOR X = 0 TO 23
|
||||
IF FrogLev(X, Y) = 4 AND Y AND 1 THEN FY = 0
|
||||
IF FrogLev(X, Y) = 5 THEN FX = 0
|
||||
IF FrogLev(X, Y) = 8 THEN EX = 0
|
||||
NEXT
|
||||
IF Y AND 1 THEN
|
||||
IF FY = -1 THEN FrogLev(INT(RND * 23), Y) = 4
|
||||
ELSE
|
||||
IF FX = -1 AND Y <> 0 THEN
|
||||
IF Y = 3 OR Y = 6 THEN EX = 11 ELSE EX = 0
|
||||
FrogLev(INT(RND * 11) + EX, Y) = 5
|
||||
END IF
|
||||
END IF
|
||||
IF EX = -1 AND Y = 0 THEN FrogLev(INT(RND * 11), Y) = 8
|
||||
NEXT
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%RESTART POINT%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
ReStart: FX = 11: FY = 15: SEC = OT: ForStep = DIF: SideStep = DIF \ 2
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%DRAW LEVEL%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
FOR Y = 0 TO 15: FOR X = 0 TO 23
|
||||
EX = X * 9 + 50: EY = Y * 9 + 20
|
||||
SELECT CASE FrogLev(X, Y)
|
||||
CASE 2: PUT (EX, EY), car1, PSET
|
||||
CASE 3: PUT (EX, EY), car2, PSET
|
||||
CASE 4: PUT (EX, EY), log1, PSET
|
||||
CASE 5: PUT (EX, EY), lily, PSET
|
||||
CASE 6: PUT (EX, EY), water, PSET
|
||||
CASE 7: PUT (EX, EY), road, PSET
|
||||
CASE 8: PUT (EX, EY), exit1, PSET
|
||||
CASE ELSE: LINE (EX, EY)-(EX + 8, EY + 8), 0, BF
|
||||
END SELECT
|
||||
NEXT: NEXT
|
||||
LOCATE 2, 14: PRINT SPACE$(12)
|
||||
LINE (0, 178)-(45, 186), 0, BF
|
||||
IF LIVES > 5 THEN SLIVES = 5 ELSE SLIVES = LIVES
|
||||
FOR X = 0 TO SLIVES - 1: PUT (X * 9, 178), FROG, PSET: NEXT
|
||||
LOCATE 22, 1: PRINT "LIVES": LOCATE 1, 16: PRINT "FROGGER!"
|
||||
LOCATE 22, 9: PRINT "SCORE": LOCATE 23, 9: PRINT SCORE
|
||||
LOCATE 22, 16: PRINT "TIME": LOCATE 23, 16: PRINT SEC
|
||||
LOCATE 22, 23: PRINT "LEVEL": LOCATE 23, 23: PRINT DIF
|
||||
LOCATE 22, 31: PRINT "HISCORE": LOCATE 23, 31: PRINT HISCORE(0).SCORE
|
||||
PUT (149, 155), FROG, PSET: IF LIVES <= 0 THEN GOTO LOSE
|
||||
DO: LOOP UNTIL INKEY$ <> ""
|
||||
T& = TIMER MOD 86400: DO: LOOP UNTIL TIMER >= T&: T& = TIMER
|
||||
'------------------------>BEGIN MAIN LOOP OF FROGGER GAME<-------------------
|
||||
DEF SEG = 0
|
||||
DO
|
||||
'**********************************GET KEY***********************************
|
||||
|
||||
|
||||
'a = INP(&H60): WHILE LEN(INKEY$): WEND
|
||||
'SELECT CASE a
|
||||
' CASE &H48: OFX = FX: OFY = FY: FY = FY - 1
|
||||
'SCORE = SCORE + ForStep: KeyPress = -1
|
||||
' CASE &H50: OFX = FX: OFY = FY: FY = FY + 1
|
||||
'KeyPress = -1
|
||||
' CASE &H4B: OFX = FX: OFY = FY: FX = FX - 1
|
||||
'SCORE = SCORE + SideStep: KeyPress = -1
|
||||
' CASE &H4D: OFX = FX: OFY = FY: FX = FX + 1
|
||||
'SCORE = SCORE + SideStep: KeyPress = -1
|
||||
' CASE &H1: GOSUB ABORTGAME
|
||||
' CASE ELSE: KeyPress = 0
|
||||
'END SELECT
|
||||
|
||||
a$ = INKEY$
|
||||
'a = INP(&H60): WHILE LEN(INKEY$): WEND
|
||||
SELECT CASE a$
|
||||
CASE "8": OFX = FX: OFY = FY: FY = FY - 1
|
||||
SCORE = SCORE + ForStep: KeyPress = -1
|
||||
CASE "2": OFX = FX: OFY = FY: FY = FY + 1
|
||||
KeyPress = -1
|
||||
CASE "4": OFX = FX: OFY = FY: FX = FX - 1
|
||||
SCORE = SCORE + SideStep: KeyPress = -1
|
||||
CASE "6": OFX = FX: OFY = FY: FX = FX + 1
|
||||
SCORE = SCORE + SideStep: KeyPress = -1
|
||||
CASE "q": GOSUB ABORTGAME
|
||||
CASE ELSE: KeyPress = 0
|
||||
END SELECT
|
||||
|
||||
|
||||
'********************************MOVE FROG***********************************
|
||||
IF KeyPress THEN
|
||||
LOCATE 23, 9: PRINT SCORE: SOUND 500, .5
|
||||
'*************************CHECK BOUNDS OF THE FROG***************************
|
||||
IF FX < 0 THEN FX = 0
|
||||
IF FX > 23 THEN FX = 23
|
||||
IF FY < 0 THEN FY = 0
|
||||
IF FY > 15 THEN FY = 15
|
||||
END IF
|
||||
'********************************DRAW FROG***********************************
|
||||
IF KeyPress OR FY < 7 THEN PUT (FX * 9 + 50, FY * 9 + 20), FROG, PSET
|
||||
'******************************ERASE OLD CELL********************************
|
||||
IF FX <> OFX OR FY <> OFY THEN
|
||||
EX = OFX * 9 + 50: EY = OFY * 9 + 20
|
||||
SELECT CASE FrogLev(OFX, OFY)
|
||||
CASE 2: PUT (EX, EY), car1, PSET
|
||||
CASE 3: PUT (EX, EY), car2, PSET
|
||||
CASE 4: PUT (EX, EY), log1, PSET
|
||||
CASE 5: PUT (EX, EY), lily, PSET
|
||||
CASE 6: PUT (EX, EY), water, PSET
|
||||
CASE 7: PUT (EX, EY), road, PSET
|
||||
CASE 8: PUT (EX, EY), exit1, PSET
|
||||
CASE ELSE: LINE (EX, EY)-(EX + 8, EY + 8), 0, BF
|
||||
END SELECT
|
||||
END IF
|
||||
|
||||
DO: newtimer! = TIMER: LOOP WHILE newtimer! = lasttimer!
|
||||
lasttimer! = newtimer!
|
||||
|
||||
DO: newtimer! = TIMER: LOOP WHILE newtimer! = lasttimer!
|
||||
lasttimer! = newtimer!
|
||||
|
||||
|
||||
'*****************************CHECK FOR BONUSES******************************
|
||||
IF FrogLev(FX, FY) = 8 THEN GOTO WIN
|
||||
IF SCORE AND SCORE MOD (100 * DIF + 1) = 0 THEN GOSUB LIFEUP
|
||||
'***************************CHECK IF YOU ARE DEAD****************************
|
||||
SELECT CASE FrogLev(FX, FY)
|
||||
CASE 2, 3, 6, 9: GOTO DIE
|
||||
END SELECT
|
||||
IF T& <> FIX(TIMER) THEN T& = TIMER: SEC = SEC - 1: LOCATE 23, 16: PRINT SEC
|
||||
IF SEC <= 0 THEN GOTO DIE
|
||||
'******************************MOVE OBSTICALES*******************************
|
||||
BACK = 23: FORTH = 0
|
||||
FOR Y = 1 TO 14: FOR X = BACK TO FORTH STEP SGN(FORTH - BACK)
|
||||
SELECT CASE FrogLev(X, Y)
|
||||
CASE 2
|
||||
IF X = 0 THEN C2 = 23 ELSE C2 = X - 1
|
||||
SWAP FrogLev(X, Y), FrogLev(C2, Y)
|
||||
PUT (C2 * 9 + 50, Y * 9 + 20), car1, PSET
|
||||
IF FrogLev(X, Y) <> 2 THEN PUT (X * 9 + 50, Y * 9 + 20), road, PSET
|
||||
CASE 3
|
||||
IF X = 23 THEN C2 = 0 ELSE C2 = X + 1
|
||||
SWAP FrogLev(X, Y), FrogLev(C2, Y)
|
||||
PUT (C2 * 9 + 50, Y * 9 + 20), car2, PSET
|
||||
IF FrogLev(X, Y) <> 3 THEN PUT (X * 9 + 50, Y * 9 + 20), road, PSET
|
||||
CASE 4
|
||||
SELECT CASE Y
|
||||
CASE 1, 5
|
||||
IF X = 23 THEN C2 = 0 ELSE C2 = X + 1
|
||||
IF FY = Y AND FX = X THEN OFX = FX: OFY = FY: FX = (FX + 1) MOD 23
|
||||
SWAP FrogLev(X, Y), FrogLev(C2, Y)
|
||||
PUT (C2 * 9 + 50, Y * 9 + 20), log1, PSET
|
||||
IF FrogLev(X, Y) <> 4 THEN PUT (X * 9 + 50, Y * 9 + 20), water, PSET
|
||||
CASE 3
|
||||
IF X = 0 THEN C2 = 23 ELSE C2 = X - 1
|
||||
IF FY = Y AND FX = X THEN OFX = FX: OFY = FY: FX = FX - 1
|
||||
SWAP FrogLev(X, Y), FrogLev(C2, Y)
|
||||
PUT (C2 * 9 + 50, Y * 9 + 20), log1, PSET
|
||||
IF FrogLev(X, Y) <> 4 THEN PUT (X * 9 + 50, Y * 9 + 20), water, PSET
|
||||
END SELECT
|
||||
END SELECT
|
||||
NEXT
|
||||
IF Y > 7 THEN SWAP BACK, FORTH ELSE IF Y AND 1 THEN SWAP BACK, FORTH
|
||||
NEXT
|
||||
SOUND 100, .1
|
||||
|
||||
'DELAY D!
|
||||
|
||||
LOOP
|
||||
'--------------------->END MAIN LOOP OF FROGGER GAME<------------------------
|
||||
DIE: SOUND 500, 5: SOUND 200, 3: SOUND 100, 2
|
||||
LIVES = LIVES - 1: GOTO ReStart
|
||||
|
||||
WIN: PUT ((OFX + 1) * 9 + 50, OFY * 9 + 20), log1, PSET
|
||||
LOCATE 2, 14: PRINT "LEVEL PASSED": DIF = DIF + 1: GOTO NextLev
|
||||
|
||||
LOSE: FOR X = 0 TO 500 STEP 40: SOUND 2000 + X, 1: NEXT
|
||||
SOUND 200, 4: SOUND 100, 2
|
||||
LOCATE 2, 15: PRINT "GAME OVER!"
|
||||
WHILE LEN(INKEY$): WEND: DELAY 1
|
||||
IF SCORE > HISCORE THEN NewHiScore SCORE
|
||||
LOCATE 1, 1: PRINT SPACE$(40)
|
||||
PRINT SPACE$(40)
|
||||
LOCATE 2, 15: PRINT "PLAY AGAIN?"
|
||||
promt: a$ = INPUT$(1)
|
||||
SELECT CASE a$
|
||||
CASE "Y", "y": GOTO NewGame
|
||||
CASE "N", "n": DEF SEG : EXIT SUB
|
||||
CASE ELSE: GOTO promt
|
||||
END SELECT
|
||||
|
||||
ABORTGAME: LOCATE 2, 12: PRINT "ABORT GAME?(Y/N)": a$ = INPUT$(1)
|
||||
SELECT CASE a$
|
||||
CASE "Y", "y": LOCATE 2, 12: PRINT SPACE$(16): GOTO LOSE
|
||||
CASE "N", "n": LOCATE 2, 12: PRINT SPACE$(16): RETURN
|
||||
CASE ELSE: GOTO ABORTGAME
|
||||
END SELECT
|
||||
|
||||
LIFEUP: SOUND 3000, .9: SOUND 3000, .2: SOUND 4000, .1
|
||||
SCORE = SCORE + DIF: LIVES = LIVES + 1
|
||||
IF LIVES > 5 THEN SLIVES = 4 ELSE SLIVES = LIVES - 1
|
||||
PUT (SLIVES * 9, 178), FROG, PSET: RETURN
|
||||
|
||||
END SUB
|
||||
|
||||
REM $STATIC
|
||||
SUB FrogINTRO
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%LOAD TITLE IMAGES%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
CLS : FOR X = 0 TO 15: PALETTE X, 0: NEXT
|
||||
REDIM title1(1393), title2(1135), title3(1149), title4(1149), title5(353)
|
||||
RESTORE FroggerIntroGraphics
|
||||
FOR i = 0 TO 1393: READ title1(i): NEXT
|
||||
FOR i = 0 TO 1135: READ title2(i): NEXT
|
||||
FOR i = 0 TO 1149: READ title3(i): NEXT
|
||||
FOR i = 0 TO 1149: READ title4(i): NEXT
|
||||
FOR i = 0 TO 353: READ title5(i): NEXT
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SET PALETTE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
RESTORE FroggerIntroPalette
|
||||
FOR X = 0 TO 15: READ i: PALETTE X, i: NEXT
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%SHOW MORPHING TITLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
PUT (131, 60), title1, PSET
|
||||
DELAY 1: LINE (131, Y)-(188, 144), 0, BF
|
||||
PUT (131, 60), title2, PSET
|
||||
DELAY .05: LINE (131, 60)-(188, 144), 0, BF
|
||||
PUT (131, 60), title3, PSET
|
||||
DELAY .05: LINE (131, 60)-(188, 144), 0, BF
|
||||
PUT (131, 60), title4, PSET
|
||||
DELAY .05: LINE (131, 60)-(188, 144), 0, BF
|
||||
PUT (131, 88), title5, PSET
|
||||
ERASE title1, title2, title3, title4, title5
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SET STAR PALETTE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
DELAY 1: PALETTE 0, 0: PALETTE 3, 8: PALETTE 5, 7: PALETTE 8, 15
|
||||
LOCATE 16, 11: PRINT "PRESS SPACE TO START"
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%STAR INIT%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
nstar = 100
|
||||
REDIM starX(nstar), starY(nstar), starZ(nstar), OSX(nstar), OSY(nstar)
|
||||
FOR X = 0 TO nstar
|
||||
starX(X) = INT(RND * 320) - 160
|
||||
starY(X) = INT(RND * 200) - 100
|
||||
starZ(X) = INT(RND * 150)
|
||||
NEXT
|
||||
'%%%%%%%%%%%%%%%%%%%%%%%%%%REAL(!) 3D STAR SCROLLER%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
DEF SEG = 0
|
||||
DO
|
||||
FOR X = 0 TO nstar
|
||||
SELECT CASE POINT(OSX(X), OSY(X))
|
||||
CASE 3, 5, 8: PSET (OSX(X), OSY(X)), 0
|
||||
END SELECT
|
||||
IF starZ(X) <= 0 THEN
|
||||
starX(X) = INT(RND * 320) - 160
|
||||
starY(X) = INT(RND * 200) - 100
|
||||
starZ(X) = INT(RND * 150)
|
||||
ELSE
|
||||
SX = 50 * starX(X) \ starZ(X) + 160
|
||||
SY = 50 * starY(X) \ starZ(X) + 100
|
||||
c = starZ(X) \ 50
|
||||
SELECT CASE c
|
||||
CASE 0: c = 8
|
||||
CASE 1: c = 5
|
||||
CASE 2: c = 3
|
||||
END SELECT
|
||||
IF POINT(SX, SY) = 0 THEN PSET (SX, SY), c
|
||||
OSX(X) = SX: OSY(X) = SY
|
||||
starZ(X) = starZ(X) - 1
|
||||
END IF
|
||||
NEXT
|
||||
SELECT CASE INP(&H60)
|
||||
CASE &H39: EXIT DO
|
||||
CASE &H10: IF SPECIAL = 0 THEN SPECIAL = 1
|
||||
CASE &H30: IF SPECIAL = 1 THEN SPECIAL = 2
|
||||
END SELECT
|
||||
LOOP
|
||||
PALETTE: DEF SEG
|
||||
OptScn SPECIAL
|
||||
END SUB
|
||||
|
||||
SUB NewHiScore (SCORE)
|
||||
i = 9: DO: i = i - 1: IF i = 0 THEN EXIT DO
|
||||
IF SCORE > HISCORE(i).SCORE THEN EXIT DO
|
||||
LOOP
|
||||
|
||||
LOCATE 1, 1: PRINT "YOU HAVE A NEW HIGH SCORE"
|
||||
INPUT "PLEASE GIVE 3 OR LESS INITIALS: ", NAME$
|
||||
HISCORE(i).PERSON = NAME$: HISCORE(i).SCORE = SCORE
|
||||
OPEN "hiscore.dat" FOR BINARY AS #1
|
||||
FOR i = 0 TO 9
|
||||
' PUT #1, , HISCORE(i)
|
||||
NEXT
|
||||
CLOSE #1
|
||||
END SUB
|
||||
|
||||
SUB OptScn (SPECIAL)
|
||||
|
||||
CLS : LIVES = 5: DIF = 0: D = 0: OT = 40: choose = 1
|
||||
IF SPECIAL = 2 THEN
|
||||
DO
|
||||
COLOR 15
|
||||
LOCATE 1, 1: PRINT "OPTIONS SCREEN: PRESS ENTER TO EXIT"
|
||||
IF choose = 1 THEN COLOR 4 ELSE COLOR 15
|
||||
LOCATE 2, 1: PRINT "LIVES: "; LIVES
|
||||
IF choose = 2 THEN COLOR 4 ELSE COLOR 15
|
||||
LOCATE 3, 1: PRINT "DIFFICULTY: "; DIF
|
||||
IF choose = 3 THEN COLOR 4 ELSE COLOR 15
|
||||
LOCATE 4, 1: PRINT "TIME: "; OT
|
||||
IF choose = 4 THEN COLOR 4 ELSE COLOR 15
|
||||
LOCATE 5, 1: PRINT "DELAY: "; D / 10; " "
|
||||
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
|
||||
SELECT CASE a$
|
||||
CASE CHR$(13): EXIT DO
|
||||
CASE CHR$(0) + "K"
|
||||
SELECT CASE choose
|
||||
CASE 1: LIVES = LIVES - 1
|
||||
CASE 2: DIF = DIF - 1
|
||||
CASE 3: OT = OT - 1
|
||||
CASE 4: D = D - 1
|
||||
END SELECT
|
||||
CASE CHR$(0) + "H"
|
||||
IF choose = 0 THEN choose = 4 ELSE choose = choose - 1
|
||||
CASE CHR$(0) + "P"
|
||||
IF choose = 4 THEN choose = 0 ELSE choose = choose + 1
|
||||
CASE CHR$(0) + "M"
|
||||
SELECT CASE choose
|
||||
CASE 1: LIVES = LIVES + 1
|
||||
CASE 2: DIF = DIF + 1
|
||||
CASE 3: OT = OT + 1
|
||||
CASE 4: D = D + 1
|
||||
END SELECT
|
||||
END SELECT
|
||||
LOOP
|
||||
END IF
|
||||
|
||||
COLOR 15
|
||||
Frogger LIVES, DIF, OT, D / 10
|
||||
END SUB
|
||||
|
||||
SUB ShowHiScore
|
||||
CLS
|
||||
LOCATE 1, 14: PRINT "HIGH SCORES": PRINT
|
||||
FOR i = 0 TO 9
|
||||
a$ = STR$(i + 1): IF i < 9 THEN a$ = a$ + " "
|
||||
a$ = a$ + STR$(HISCORE(i).SCORE)
|
||||
b$ = HISCORE(i).PERSON
|
||||
LOCATE i + 3, 7: PRINT a$, b$
|
||||
NEXT
|
||||
SLEEP
|
||||
BYE
|
||||
END SUB
|
||||
|
1205
tests/qbasic_testcases/misc/gor64.bas
Normal file
1205
tests/qbasic_testcases/misc/gor64.bas
Normal file
File diff suppressed because it is too large
Load diff
19
tests/qbasic_testcases/misc/gujero.bas
Normal file
19
tests/qbasic_testcases/misc/gujero.bas
Normal file
|
@ -0,0 +1,19 @@
|
|||
'-----------------------------------------------------------------------
|
||||
'GUJERO2.BAS by Antoni Gual 2/2004
|
||||
'For the QBNZ 1/2004 9 liner contest
|
||||
'-----------------------------------------------------------------------
|
||||
'Tunnel effect (more or less)
|
||||
'FFIX recommended. It does compile.
|
||||
'-----------------------------------------------------------------------
|
||||
'DECLARE SUB ffix
|
||||
'ffix
|
||||
1 IF i = 0 THEN SCREEN 13 ELSE IF i = 1 THEN OUT &H3C8, 0 ELSE IF i <= 194 THEN OUT &H3C9, INT((i - 2) / 3)
|
||||
2 IF i <= 194 THEN GOTO 8
|
||||
3 FOR y = -100 TO 99
|
||||
4 FOR x = -160 TO 159
|
||||
5 IF x >= 0 THEN IF y < 0 THEN alpha = 1.57079632679# + ATN(x / (y + .000001)) ELSE alpha = -ATN(y / (x + .000001)) ELSE IF y < 0 THEN alpha = 1.57079632679# + ATN(x / (y + .000001)) ELSE alpha = -1.57079632679# + ATN(x / (y + .000001))
|
||||
6 PSET (x + 160, y + 100), (x * x + y * y) * .00003 * ((INT(-10000 * i + 5.2 * SQR(x * x + y * y)) AND &H3F) XOR (INT((191 * alpha) + 10 * i) AND &H3F))
|
||||
7 NEXT x, y
|
||||
8 i = i + 1
|
||||
9 IF LEN(INKEY$) = 0 THEN GOTO 1
|
||||
|
346
tests/qbasic_testcases/misc/intrprtr.bas
Normal file
346
tests/qbasic_testcases/misc/intrprtr.bas
Normal file
|
@ -0,0 +1,346 @@
|
|||
DECLARE SUB LLISTSTMT ()
|
||||
DECLARE SUB LPRINTSTMT ()
|
||||
DECLARE SUB INITGETSYM (N AS INTEGER)
|
||||
DECLARE SUB VALIDLINENUM ()
|
||||
DECLARE SUB DOCMD ()
|
||||
DECLARE SUB CLEARVARS ()
|
||||
DECLARE SUB LISTSTMT ()
|
||||
DECLARE SUB GOTOSTMT ()
|
||||
DECLARE SUB IFSTMT ()
|
||||
DECLARE SUB INPUTSTMT ()
|
||||
DECLARE SUB PRINTSTMT ()
|
||||
DECLARE SUB SKIPTOEOL ()
|
||||
DECLARE SUB IDSTMT ()
|
||||
DECLARE SUB GETSYM ()
|
||||
DECLARE SUB EXPECT (S AS STRING)
|
||||
DECLARE SUB GOTOLINE ()
|
||||
DECLARE FUNCTION EXPRESSION% ()
|
||||
DECLARE FUNCTION ADDEXPR% ()
|
||||
DECLARE FUNCTION TERM% ()
|
||||
DECLARE FUNCTION FACTOR% ()
|
||||
DECLARE FUNCTION GETVARINDEX% ()
|
||||
DECLARE FUNCTION ACCEPT% (S AS STRING)
|
||||
DECLARE SUB GETCH ()
|
||||
DECLARE SUB READSTR ()
|
||||
DECLARE SUB READIDENT ()
|
||||
DECLARE SUB READINT ()
|
||||
|
||||
DIM SHARED CH$, THELIN$, PGM$(2000), TOK$
|
||||
|
||||
|
||||
DIM SHARED VARS(26) AS INTEGER, CURLINE AS INTEGER, NUM AS INTEGER
|
||||
DIM SHARED TEXTP AS INTEGER, ERRORS AS INTEGER
|
||||
|
||||
|
||||
DO
|
||||
ERRORS = 0
|
||||
LINE INPUT "> ", PGM$(0)
|
||||
IF PGM$(0) <> "" THEN
|
||||
CALL INITGETSYM(0)
|
||||
IF LEFT$(TOK$, 1) >= "0" AND LEFT$(TOK$, 1) <= "9" THEN
|
||||
CALL VALIDLINENUM
|
||||
PGM$(NUM) = MID$(PGM$(0), TEXTP, LEN(PGM$(0)) - TEXTP + 1)
|
||||
ELSE
|
||||
CALL DOCMD
|
||||
END IF
|
||||
END IF
|
||||
LOOP
|
||||
|
||||
FUNCTION ACCEPT% (S AS STRING)
|
||||
ACCEPT% = 0
|
||||
IF TOK$ = S THEN ACCEPT% = 1: CALL GETSYM
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION ADDEXPR%
|
||||
DIM N
|
||||
N = TERM%
|
||||
ADDEL:
|
||||
IF TOK$ = "+" THEN CALL GETSYM: N = N + TERM%: GOTO ADDEL
|
||||
IF TOK$ = "-" THEN CALL GETSYM: N = N - TERM%: GOTO ADDEL
|
||||
ADDEXPR% = N
|
||||
END FUNCTION
|
||||
|
||||
SUB CLEARVARS
|
||||
DIM I AS INTEGER
|
||||
FOR I = 1 TO 26
|
||||
VARS(I) = 0
|
||||
NEXT I
|
||||
END SUB
|
||||
|
||||
SUB DOCMD
|
||||
DIM I AS INTEGER
|
||||
AGAIN:
|
||||
IF ERRORS <> 0 THEN EXIT SUB
|
||||
WHILE TOK$ = ""
|
||||
IF CURLINE = 0 OR CURLINE >= 1999 THEN EXIT SUB
|
||||
CALL INITGETSYM(CURLINE + 1)
|
||||
WEND
|
||||
IF ACCEPT("STOP") OR ACCEPT("END") THEN EXIT SUB
|
||||
IF ACCEPT("NEW") THEN
|
||||
CALL CLEARVARS
|
||||
FOR I = 1 TO 1999
|
||||
PGM$(I) = ""
|
||||
NEXT I
|
||||
EXIT SUB
|
||||
END IF
|
||||
IF ACCEPT("BYE") THEN END
|
||||
IF ACCEPT("LIST") THEN CALL LISTSTMT: GOTO AGAIN
|
||||
IF ACCEPT("LLIST") THEN CALL LLISTSTMT: GOTO AGAIN
|
||||
IF ACCEPT("RUN") THEN
|
||||
CALL CLEARVARS
|
||||
CALL INITGETSYM(1)
|
||||
GOTO AGAIN
|
||||
END IF
|
||||
IF ACCEPT("GOTO") THEN CALL GOTOSTMT: GOTO AGAIN
|
||||
IF ACCEPT("IF") THEN CALL IFSTMT: GOTO AGAIN
|
||||
IF ACCEPT("INPUT") THEN CALL INPUTSTMT: GOTO AGAIN
|
||||
IF ACCEPT("PRINT") THEN CALL PRINTSTMT: GOTO AGAIN
|
||||
IF ACCEPT("LPRINT") THEN CALL LPRINTSTMT: GOTO AGAIN
|
||||
IF ACCEPT("REM") THEN CALL SKIPTOEOL: GOTO AGAIN
|
||||
IF LEFT$(TOK$, 1) >= "A" AND LEFT$(TOK$, 1) <= "Z" THEN
|
||||
CALL IDSTMT
|
||||
GOTO AGAIN
|
||||
END IF
|
||||
PRINT "UNKNOWN TOKEN "; TOK$; " AT LINE "; CURLINE
|
||||
END SUB
|
||||
|
||||
SUB EXPECT (S AS STRING)
|
||||
IF ACCEPT(S) <> 0 THEN EXIT SUB
|
||||
ERRORS = 1
|
||||
PRINT "EXPECTING "; S; " BUT FOUND "; TOK$
|
||||
END SUB
|
||||
|
||||
FUNCTION EXPRESSION%
|
||||
DIM N
|
||||
N = ADDEXPR%
|
||||
EXPRL:
|
||||
IF TOK$ = "=" THEN CALL GETSYM: N = N = ADDEXPR%: GOTO EXPRL
|
||||
IF TOK$ = "<" THEN CALL GETSYM: N = N < ADDEXPR%: GOTO EXPRL
|
||||
IF TOK$ = ">" THEN CALL GETSYM: N = N > ADDEXPR%: GOTO EXPRL
|
||||
IF TOK$ = "<>" THEN CALL GETSYM: N = N <> ADDEXPR%: GOTO EXPRL
|
||||
IF TOK$ = "<=" THEN CALL GETSYM: N = N <= ADDEXPR%: GOTO EXPRL
|
||||
IF TOK$ = ">=" THEN CALL GETSYM: N = N >= ADDEXPR%: GOTO EXPRL
|
||||
EXPRESSION% = N
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION FACTOR%
|
||||
IF ACCEPT("-") THEN
|
||||
FACTOR% = -FACTOR%
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
IF ACCEPT("(") THEN
|
||||
FACTOR% = EXPRESSION
|
||||
CALL EXPECT(")")
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
IF LEFT$(TOK$, 1) >= "0" AND LEFT$(TOK$, 1) <= "9" THEN
|
||||
FACTOR% = NUM
|
||||
CALL GETSYM
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
IF LEFT$(TOK$, 1) >= "A" AND LEFT$(TOK$, 1) <= "Z" THEN
|
||||
FACTOR% = VARS(GETVARINDEX)
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
PRINT "UNEXPECTED SYM "; TOK$; " IN FACTOR": ERRORS = 1
|
||||
END FUNCTION
|
||||
|
||||
SUB GETCH
|
||||
IF TEXTP > LEN(THELIN$) THEN CH$ = "": EXIT SUB
|
||||
CH$ = MID$(THELIN$, TEXTP, 1)
|
||||
TEXTP = TEXTP + 1
|
||||
END SUB
|
||||
|
||||
SUB GETSYM
|
||||
TOK$ = ""
|
||||
WHILE CH$ <= " "
|
||||
IF CH$ = "" THEN EXIT SUB
|
||||
CALL GETCH
|
||||
WEND
|
||||
|
||||
|
||||
TOK$ = CH$
|
||||
IF INSTR(",;=+-*/()", CH$) > 0 THEN CALL GETCH: EXIT SUB
|
||||
IF CH$ = "<" THEN
|
||||
CALL GETCH
|
||||
IF CH$ = "=" OR CH$ = ">" THEN
|
||||
TOK$ = TOK$ + CH$
|
||||
CALL GETCH
|
||||
END IF
|
||||
EXIT SUB
|
||||
END IF
|
||||
IF CH$ = ">" THEN
|
||||
CALL GETCH
|
||||
IF CH$ = "=" THEN TOK$ = TOK$ + CH$: CALL GETCH
|
||||
EXIT SUB
|
||||
END IF
|
||||
IF CH$ = CHR$(34) THEN CALL READSTR: EXIT SUB
|
||||
IF CH$ >= "A" AND CH$ <= "Z" THEN CALL READIDENT: EXIT SUB
|
||||
IF CH$ >= "0" AND CH$ <= "9" THEN CALL READINT: EXIT SUB
|
||||
PRINT "WHAT->"; CH$: ERRORS = 1
|
||||
END SUB
|
||||
|
||||
FUNCTION GETVARINDEX%
|
||||
IF LEFT$(TOK$, 1) < "A" OR LEFT$(TOK$, 1) > "Z" THEN
|
||||
PRINT "NOT A VARIABLE": ERRORS = 1: EXIT FUNCTION
|
||||
END IF
|
||||
GETVARINDEX% = ASC(LEFT$(TOK$, 1)) - ASC("A")
|
||||
CALL GETSYM
|
||||
END FUNCTION
|
||||
|
||||
SUB GOTOLINE
|
||||
CALL VALIDLINENUM
|
||||
CALL INITGETSYM(NUM)
|
||||
END SUB
|
||||
|
||||
SUB GOTOSTMT
|
||||
IF LEFT$(TOK$, 1) >= "0" AND LEFT$(TOK$, 1) <= "9" THEN
|
||||
CALL GOTOLINE
|
||||
EXIT SUB
|
||||
END IF
|
||||
PRINT "LINE NUMBER MUST FOLLOW GOTO": ERRORS = 1
|
||||
END SUB
|
||||
|
||||
SUB IDSTMT
|
||||
DIM VAR AS INTEGER
|
||||
VAR = GETVARINDEX
|
||||
CALL EXPECT("=")
|
||||
VARS(VAR) = EXPRESSION
|
||||
END SUB
|
||||
|
||||
SUB IFSTMT
|
||||
DIM B AS INTEGER
|
||||
IF EXPRESSION = 0 THEN CALL SKIPTOEOL: EXIT SUB
|
||||
B = ACCEPT("THEN")
|
||||
IF LEFT$(TOK$, 1) >= "0" AND LEFT$(TOK$, 1) <= "9" THEN
|
||||
CALL GOTOLINE
|
||||
END IF
|
||||
END SUB
|
||||
|
||||
SUB INITGETSYM (N AS INTEGER)
|
||||
CURLINE = N
|
||||
TEXTP = 1
|
||||
THELIN$ = PGM$(CURLINE)
|
||||
CH$ = " "
|
||||
CALL GETSYM
|
||||
END SUB
|
||||
|
||||
SUB INPUTSTMT
|
||||
DIM VAR AS INTEGER
|
||||
IF TOK$ = CHR$(34) THEN
|
||||
PRINT MID$(TOK$, 2, LEN(TOK$) - 1);
|
||||
CALL GETSYM
|
||||
CALL EXPECT(",")
|
||||
ELSE
|
||||
PRINT "? ";
|
||||
END IF
|
||||
VAR = GETVARINDEX
|
||||
INPUT VARS(VAR)
|
||||
END SUB
|
||||
|
||||
SUB LISTSTMT
|
||||
DIM I AS INTEGER
|
||||
FOR I = 1 TO 1999
|
||||
IF PGM$(I) <> "" THEN PRINT I; " "; PGM$(I)
|
||||
NEXT I
|
||||
PRINT
|
||||
END SUB
|
||||
|
||||
SUB LLISTSTMT
|
||||
OPEN "LPT1" FOR OUTPUT AS #1
|
||||
DIM I AS INTEGER
|
||||
FOR I = 1 TO 1999
|
||||
IF PGM$(I) <> "" THEN PRINT #1, I; " "; PGM$(I)
|
||||
NEXT I
|
||||
PRINT
|
||||
CLOSE #1
|
||||
END SUB
|
||||
|
||||
SUB LPRINTSTMT
|
||||
OPEN "LPT1" FOR OUTPUT AS #1
|
||||
DIM LPRINTNL AS INTEGER
|
||||
LPRINTNL = 1
|
||||
DO WHILE TOK$ <> ""
|
||||
LPRINTNL = 1
|
||||
IF LEFT$(TOK$, 1) = CHR$(34) THEN
|
||||
PRINT #1, MID$(TOK$, 2, LEN(TOK$) - 1);
|
||||
CALL GETSYM
|
||||
ELSE
|
||||
PRINT #1, EXPRESSION;
|
||||
END IF
|
||||
IF ACCEPT(",") = 0 AND ACCEPT(";") = 0 THEN EXIT DO
|
||||
PRINTNL = 0
|
||||
LOOP
|
||||
IF PRINTNL <> 0 THEN PRINT #1, ""
|
||||
CLOSE #1
|
||||
END SUB
|
||||
|
||||
SUB PRINTSTMT
|
||||
DIM PRINTNL AS INTEGER
|
||||
PRINTNL = 1
|
||||
DO WHILE TOK$ <> ""
|
||||
PRINTNL = 1
|
||||
IF LEFT$(TOK$, 1) = CHR$(34) THEN
|
||||
PRINT MID$(TOK$, 2, LEN(TOK$) - 1);
|
||||
CALL GETSYM
|
||||
ELSE
|
||||
PRINT EXPRESSION;
|
||||
END IF
|
||||
|
||||
|
||||
IF ACCEPT(",") = 0 AND ACCEPT(";") = 0 THEN EXIT DO
|
||||
PRINTNL = 0
|
||||
LOOP
|
||||
IF PRINTNL <> 0 THEN PRINT
|
||||
END SUB
|
||||
|
||||
SUB READIDENT
|
||||
TOK$ = ""
|
||||
WHILE CH$ >= "A" AND CH$ <= "Z"
|
||||
TOK$ = TOK$ + CH$
|
||||
CALL GETCH
|
||||
WEND
|
||||
END SUB
|
||||
|
||||
SUB READINT
|
||||
TOK$ = ""
|
||||
WHILE CH$ >= "0" AND CH$ <= "9"
|
||||
TOK$ = TOK$ + CH$
|
||||
CALL GETCH
|
||||
WEND
|
||||
NUM = VAL(TOK$)
|
||||
END SUB
|
||||
|
||||
SUB READSTR
|
||||
TOK$ = CHR$(34)
|
||||
CALL GETCH
|
||||
WHILE CH$ <> CHR$(34)
|
||||
IF CH$ = "" THEN
|
||||
PRINT "STRING NOT TERMINATED": ERRORS = 1: EXIT SUB
|
||||
END IF
|
||||
TOK$ = TOK$ + CH$
|
||||
CALL GETCH
|
||||
WEND
|
||||
CALL GETCH
|
||||
END SUB
|
||||
|
||||
SUB SKIPTOEOL
|
||||
WHILE CH$ <> ""
|
||||
CALL GETCH
|
||||
WEND
|
||||
CALL GETSYM
|
||||
END SUB
|
||||
|
||||
FUNCTION TERM%
|
||||
DIM N
|
||||
N = FACTOR%
|
||||
TERML:
|
||||
IF TOK$ = "*" THEN CALL GETSYM: N = N * FACTOR%: GOTO TERML
|
||||
IF TOK$ = "/" THEN CALL GETSYM: N = N / FACTOR%: GOTO TERML
|
||||
TERM% = N
|
||||
END FUNCTION
|
||||
|
||||
SUB VALIDLINENUM
|
||||
IF NUM > 0 AND NUM <= 1999 THEN EXIT SUB
|
||||
PRINT "LINE NUMBER OUT OF RANGE": ERRORS = 1
|
||||
END SUB
|
69
tests/qbasic_testcases/misc/kite.bas
Normal file
69
tests/qbasic_testcases/misc/kite.bas
Normal file
|
@ -0,0 +1,69 @@
|
|||
'2007 mennonite
|
||||
'public domain
|
||||
|
||||
ON ERROR GOTO 10
|
||||
DIM b AS INTEGER
|
||||
DIM a AS INTEGER
|
||||
DIM atwo AS INTEGER
|
||||
q$ = "...../" + CHR$(92) + "........./__" + CHR$(92) + "......./____" + CHR$(92) + "...../_q____" + CHR$(92) + ".../___b____" + CHR$(92) + "./__________" + CHR$(92)
|
||||
q$ = q$ + CHR$(92) + "__________/." + CHR$(92) + "____6___/..." + CHR$(92) + "____4_/....." + CHR$(92) + "____/......." + CHR$(92) + "__/........." + CHR$(92) + "/....."
|
||||
COLOR , 1
|
||||
|
||||
FOR y = 25 TO 1 STEP -1
|
||||
FOR x = 1 TO 80
|
||||
LOCATE y, x: PRINT CHR$(32);
|
||||
NEXT x
|
||||
NEXT y: LOCATE 1, 1
|
||||
|
||||
RANDOMIZE TIMER
|
||||
FOR a = 1 TO 10
|
||||
strn$ = strn$ + "||" + CHR$(247)
|
||||
NEXT a
|
||||
DO
|
||||
|
||||
FOR y = 25 TO 1 STEP -1
|
||||
FOR x = 1 TO 80
|
||||
LOCATE y, x: PRINT CHR$(32);
|
||||
NEXT x
|
||||
NEXT y: LOCATE 1, 1
|
||||
|
||||
b = b + (RND(1) * 3 - .5 - 1)
|
||||
a = a + (RND(1) * 3 - .5 - 1)
|
||||
IF b < 1 THEN b = 1 ELSE IF b > 10 THEN b = 10
|
||||
IF a < 1 THEN a = 1 ELSE IF a > 67 THEN a = 67
|
||||
FOR y = 1 TO 12
|
||||
FOR x = 1 TO 12
|
||||
one$ = RIGHT$(LEFT$(q$, y * 12 - 12 + x), 1)
|
||||
|
||||
fc = 11
|
||||
IF one$ = "." THEN fc = 1
|
||||
IF one$ = "_" THEN fc = 3
|
||||
IF ASC(UCASE$(one$)) > 64 AND ASC(UCASE$(one$)) < 91 THEN fc = 14
|
||||
IF ASC(UCASE$(one$)) > 47 AND ASC(UCASE$(one$)) < 58 THEN fc = 14
|
||||
|
||||
COLOR fc
|
||||
LOCATE y + b, x + a
|
||||
PRINT one$;
|
||||
NEXT x
|
||||
NEXT y
|
||||
COLOR 15
|
||||
atwo = 0
|
||||
cursorline = b + 12
|
||||
DO WHILE cursorline <= 24
|
||||
LOCATE cursorline + 1, x + a - 6 + atwo
|
||||
atwo = atwo + (RND(1) * 3 - .5 - 1)
|
||||
PRINT RIGHT$(LEFT$(strn$, cursorline), 1);
|
||||
cursorline = cursorline + 1
|
||||
LOOP
|
||||
t = TIMER: DO: LOOP UNTIL t > TIMER + .25 OR t < TIMER - .25
|
||||
LOOP UNTIL INKEY$ = CHR$(27)
|
||||
|
||||
COLOR 7, 0
|
||||
FOR y = 25 TO 1 STEP -1
|
||||
FOR x = 1 TO 80
|
||||
LOCATE y, x: PRINT CHR$(32);
|
||||
NEXT x
|
||||
NEXT y: LOCATE 1, 1
|
||||
END
|
||||
10 RESUME NEXT
|
||||
|
1
tests/qbasic_testcases/misc/land1.raw
Normal file
1
tests/qbasic_testcases/misc/land1.raw
Normal file
File diff suppressed because one or more lines are too long
14
tests/qbasic_testcases/misc/lissaj.bas
Normal file
14
tests/qbasic_testcases/misc/lissaj.bas
Normal file
|
@ -0,0 +1,14 @@
|
|||
'Lissajous by Antoni Gual
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
|
||||
1 IF k = 0 THEN SCREEN 12 ELSE CLS
|
||||
2 i& = (i& + 1) AND &HFFFFF
|
||||
3 k = 6.3 * RND
|
||||
4 l = 6.3 * RND
|
||||
5 n% = (n% + 1) MOD 15
|
||||
6 FOR j& = 0 TO 100000
|
||||
7 PSET (320 + 300 * SIN(.01 * SIN(k) + j&), 240 + 200 * SIN(.01 * SIN(l) * j&)), n% + 1
|
||||
8 NEXT
|
||||
9 IF LEN(INKEY$) = 0 THEN GOTO 1
|
||||
|
14
tests/qbasic_testcases/misc/mandala.bas
Normal file
14
tests/qbasic_testcases/misc/mandala.bas
Normal file
|
@ -0,0 +1,14 @@
|
|||
'Mandala by Antoni gual
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
|
||||
1 SCREEN 12
|
||||
2 v% = RND * 20 + 10
|
||||
3 REDIM VX%(v%), VY%(v%)
|
||||
4 FOR d1% = -1 TO v%
|
||||
5 FOR d2% = d1% + 1 TO v%
|
||||
6 IF d1% = -1 THEN VX%(d2%) = 320 + (SIN(6.283185 * (d2% / v%)) * 239) ELSE LINE (VX%(d1%), VY%(d1%))-(VX%(d2%), VY%(d2%)), (v% MOD 16) + 1
|
||||
7 IF d1% = -1 THEN VY%(d2%) = 240 + (COS(6.283185 * (d2% / v%)) * 239)
|
||||
8 NEXT d2%, d1%
|
||||
9 IF LEN(INKEY$) = 0 THEN GOTO 2
|
||||
|
15
tests/qbasic_testcases/misc/mandelb.bas
Normal file
15
tests/qbasic_testcases/misc/mandelb.bas
Normal file
|
@ -0,0 +1,15 @@
|
|||
'MANDELBROT by Antoni Gual 2003
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
|
||||
'DECLARE SUB ffix
|
||||
'ffix
|
||||
1 IF x& = 0 THEN SCREEN 13 ELSE iter% = 0
|
||||
2 x& = (x& + 123) MOD 64000
|
||||
3 im2 = im * im
|
||||
4 IF iter% THEN im = 2 * re * im + (CSNG(x& \ 320) / 100 - 1) ELSE im = 0
|
||||
5 IF iter% THEN re = re * re - im2 + (CSNG(x& MOD 320) / 120 - 1.9) ELSE re = 0
|
||||
6 iter% = iter% + 1
|
||||
7 IF ABS(re) + ABS(im) > 2 OR iter% > 254 THEN PSET (x& MOD 320, x& \ 320), iter% ELSE GOTO 3
|
||||
8 IF LEN(INKEY$) = 0 THEN GOTO 1
|
||||
|
16
tests/qbasic_testcases/misc/matrix.bas
Normal file
16
tests/qbasic_testcases/misc/matrix.bas
Normal file
|
@ -0,0 +1,16 @@
|
|||
'Matrix by Antoni Gual agual@eic.ictnet.es
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
1 DEF SEG = &HB800
|
||||
2 FOR i% = 0 TO 159 STEP 4
|
||||
' adjust this speed constant for optimal effect
|
||||
' | 0 no speed ;) .05 should be too fast even for a 386
|
||||
' |
|
||||
3 IF RND < .0005 THEN j% = 3840 ELSE j% = -1
|
||||
4 IF j% > 0 THEN POKE j% + i%, PEEK(j% - 160 + i%)
|
||||
5 IF j% > 0 THEN j% = j% - 160
|
||||
6 IF j% > 0 THEN GOTO 4
|
||||
7 IF j% = 0 THEN IF RND > .3 THEN POKE i%, 96 * RND + 32 ELSE POKE i%, 32
|
||||
8 NEXT
|
||||
9 IF LEN(INKEY$) = 0 THEN GOTO 2
|
||||
|
990
tests/qbasic_testcases/misc/mclock.bas
Normal file
990
tests/qbasic_testcases/misc/mclock.bas
Normal file
|
@ -0,0 +1,990 @@
|
|||
' Release: MINI-CLOCK by Folker Fritz
|
||||
' Version: 1.0 (1999-10-31)
|
||||
' Status: 100% Freeware
|
||||
' EMail: folker.fritz@gmx.de
|
||||
' Homepage: http://www.quickbasic.6x.to
|
||||
|
||||
DECLARE SUB FELT (X%, Y%, XX%, YY%, FARBEN%)
|
||||
DECLARE SUB KLPRINT (B$, B%, K%, G%, I%)
|
||||
DECLARE SUB DATUM ()
|
||||
DECLARE SUB FELD (A%, B%, AA%, BB%, C%)
|
||||
SCREEN 12
|
||||
WIDTH 80, 60
|
||||
FELT 0, 0, 639, 479, 7
|
||||
FELT 36, 78, 597, 154, 0
|
||||
|
||||
'CONST PI = 3.141592
|
||||
DIM SHARED PI
|
||||
PI = 3.141592
|
||||
|
||||
SCREEN 12
|
||||
CIRCLE (320, 300), 85, 15
|
||||
XCXX = VAL(MID$(TIME$, 7, 2))
|
||||
XCXY = VAL(MID$(TIME$, 4, 2))
|
||||
XCXZ = VAL(MID$(TIME$, 1, 2))
|
||||
1.1
|
||||
XCXB = PI * 2 / 12 - .0001
|
||||
XCXD = PI * 2 / 60 - .0001
|
||||
XCXE = PI * 2 / 60 - .0001
|
||||
456
|
||||
IF INKEY$ <> "" THEN END
|
||||
IF XCXX <> VAL(MID$(TIME$, 7, 2)) THEN XCXX = VAL(MID$(TIME$, 7, 2)): GFF = 1 ELSE GFF = 0: GOTO 456
|
||||
IF XCXY <> VAL(MID$(TIME$, 4, 2)) THEN XCXY = VAL(MID$(TIME$, 4, 2)): GFG = 1 ELSE GFG = 0
|
||||
IF XCXZ <> VAL(MID$(TIME$, 1, 2)) THEN XCXZ = VAL(MID$(TIME$, 1, 2)): GFH = 1 ELSE GFH = 0
|
||||
XCXC = VAL(MID$(TIME$, 1, 2))
|
||||
XCXF = VAL(MID$(TIME$, 4, 2))
|
||||
XCXG = VAL(MID$(TIME$, 7, 2))
|
||||
IF XCXC > 12 THEN XCXC = XCXC - 12
|
||||
IF XCXC < 4 THEN XCXC = XCXC + 12
|
||||
IF XCXC > 3 THEN XCXC = XCXC - 3
|
||||
IF XCXF < 16 THEN XCXF = XCXF + 60
|
||||
IF XCXF > 15 THEN XCXF = XCXF - 15
|
||||
IF XCXG < 16 THEN XCXG = XCXG + 60
|
||||
IF XCXG > 15 THEN XCXG = XCXG - 15
|
||||
IF GFF = 1 THEN CIRCLE (320, 300), 80, 7, -2 * PI + XCXII, -2 * PI + XCXII: GFF = 1: XCXX = VAL(MID$(TIME$, 7, 2))
|
||||
IF GFG = 1 THEN CIRCLE (320, 300), 60, 7, -2 * PI + XCXHH, -2 * PI + XCXHH: GFG = 0: XCXY = VAL(MID$(TIME$, 4, 2))
|
||||
IF GFH = 1 THEN CIRCLE (320, 300), 40, 7, -2 * PI + XCXAA, -2 * PI + XCXAA: GFH = 1: XCXZ = VAL(MID$(TIME$, 1, 2))
|
||||
XCXA = XCXB * XCXC
|
||||
XCXH = XCXD * XCXF
|
||||
XCXI = XCXE * XCXG
|
||||
XCXAA = XCXA
|
||||
XCXHH = XCXH
|
||||
XCXII = XCXI
|
||||
CIRCLE (320, 300), 40, 15, -2 * PI + XCXA, -2 * PI + XCXA
|
||||
CIRCLE (320, 300), 60, 12, -2 * PI + XCXH, -2 * PI + XCXH
|
||||
CIRCLE (320, 300), 80, 8, -2 * PI + XCXI, -2 * PI + XCXI
|
||||
IF TEMPTIME$ <> TIME$ THEN TEMPTIME$ = TIME$: DATUM
|
||||
KLPRINT MID$(DATE$, 4, 2) + ".", 18, 576, 10, 4
|
||||
KLPRINT MID$(DATE$, 1, 2) + ".", 18, 594, 10, 4
|
||||
KLPRINT MID$(DATE$, 7, 4), 18, 611, 10, 4
|
||||
KLPRINT "MINI-CLOCK Version 1.00", 18, 242, 0, 4
|
||||
KLPRINT "12", 219, 314, 0, 15
|
||||
KLPRINT "3", 310, 409, 0, 15
|
||||
KLPRINT "9", 310, 227, 0, 15
|
||||
KLPRINT "6", 403, 317, 0, 15
|
||||
KLPRINT "1", 231, 364, 0, 15
|
||||
KLPRINT "2", 265, 398, 0, 15
|
||||
KLPRINT "11", 231, 266, 0, 15
|
||||
KLPRINT "10", 265, 233, 0, 15
|
||||
KLPRINT "4", 357, 397, 0, 15
|
||||
KLPRINT "5", 391, 365, 0, 15
|
||||
KLPRINT "8", 357, 239, 0, 15
|
||||
KLPRINT "7", 390, 271, 0, 15
|
||||
COLOR 15
|
||||
A = -1
|
||||
B = -1
|
||||
C = -1
|
||||
D = -1
|
||||
E = -1
|
||||
F = -1
|
||||
LOCATE 14, 27: PRINT "ÛÛ"
|
||||
LOCATE 16, 27: PRINT "ÛÛ"
|
||||
LOCATE 14, 51: PRINT "ÛÛ"
|
||||
LOCATE 16, 51: PRINT "ÛÛ"
|
||||
20
|
||||
IF A <> VAL(MID$(TIME$, 1, 1)) THEN A = VAL(MID$(TIME$, 1, 1)): GOTO 2 ELSE GOTO 1
|
||||
2
|
||||
SELECT CASE A
|
||||
CASE 0:
|
||||
LOCATE 12, 7: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 7: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 7: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 7: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 16, 7: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 7: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 7: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 1
|
||||
LOCATE 12, 7: PRINT " ÛÛ"
|
||||
LOCATE 13, 7: PRINT " ÛÛ"
|
||||
LOCATE 14, 7: PRINT " ÛÛ"
|
||||
LOCATE 15, 7: PRINT " ÛÛ"
|
||||
LOCATE 16, 7: PRINT " ÛÛ"
|
||||
LOCATE 17, 7: PRINT " ÛÛ"
|
||||
LOCATE 18, 7: PRINT " ÛÛ"
|
||||
CASE 2:
|
||||
LOCATE 12, 7: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 7: PRINT " ÛÛ"
|
||||
LOCATE 14, 7: PRINT " ÛÛ"
|
||||
LOCATE 15, 7: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 7: PRINT "ÛÛ "
|
||||
LOCATE 17, 7: PRINT "ÛÛ "
|
||||
LOCATE 18, 7: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
END SELECT
|
||||
1
|
||||
IF B <> VAL(MID$(TIME$, 2, 1)) THEN B = VAL(MID$(TIME$, 2, 1)): GOTO 4 ELSE GOTO 3
|
||||
4
|
||||
SELECT CASE B
|
||||
CASE 0:
|
||||
LOCATE 12, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 16, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 1
|
||||
LOCATE 12, 17: PRINT " ÛÛ"
|
||||
LOCATE 13, 17: PRINT " ÛÛ"
|
||||
LOCATE 14, 17: PRINT " ÛÛ"
|
||||
LOCATE 15, 17: PRINT " ÛÛ"
|
||||
LOCATE 16, 17: PRINT " ÛÛ"
|
||||
LOCATE 17, 17: PRINT " ÛÛ"
|
||||
LOCATE 18, 17: PRINT " ÛÛ"
|
||||
CASE 2:
|
||||
LOCATE 12, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 17: PRINT " ÛÛ"
|
||||
LOCATE 14, 17: PRINT " ÛÛ"
|
||||
LOCATE 15, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 17: PRINT "ÛÛ "
|
||||
LOCATE 17, 17: PRINT "ÛÛ "
|
||||
LOCATE 18, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 3:
|
||||
LOCATE 12, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 17: PRINT " ÛÛ"
|
||||
LOCATE 14, 17: PRINT " ÛÛ"
|
||||
LOCATE 15, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 17: PRINT " ÛÛ"
|
||||
LOCATE 17, 17: PRINT " ÛÛ"
|
||||
LOCATE 18, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 4:
|
||||
LOCATE 12, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 13, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 17: PRINT " ÛÛ"
|
||||
LOCATE 17, 17: PRINT " ÛÛ"
|
||||
LOCATE 18, 17: PRINT " ÛÛ"
|
||||
CASE 5:
|
||||
LOCATE 12, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 17: PRINT "ÛÛ "
|
||||
LOCATE 14, 17: PRINT "ÛÛ "
|
||||
LOCATE 15, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 17: PRINT " ÛÛ"
|
||||
LOCATE 17, 17: PRINT " ÛÛ"
|
||||
LOCATE 18, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 6:
|
||||
LOCATE 12, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 17: PRINT "ÛÛ "
|
||||
LOCATE 14, 17: PRINT "ÛÛ "
|
||||
LOCATE 15, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 7:
|
||||
LOCATE 12, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 17: PRINT " ÛÛ"
|
||||
LOCATE 14, 17: PRINT " ÛÛ"
|
||||
LOCATE 15, 17: PRINT " ÛÛ"
|
||||
LOCATE 16, 17: PRINT " ÛÛ"
|
||||
LOCATE 17, 17: PRINT " ÛÛ"
|
||||
LOCATE 18, 17: PRINT " ÛÛ"
|
||||
CASE 8:
|
||||
LOCATE 12, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 9:
|
||||
LOCATE 12, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 17: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 17: PRINT " ÛÛ"
|
||||
LOCATE 17, 17: PRINT " ÛÛ"
|
||||
LOCATE 18, 17: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
END SELECT
|
||||
3
|
||||
IF C <> VAL(MID$(TIME$, 4, 1)) THEN C = VAL(MID$(TIME$, 4, 1)): GOTO 6 ELSE GOTO 5
|
||||
6
|
||||
SELECT CASE C
|
||||
CASE 0:
|
||||
LOCATE 12, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 16, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 1
|
||||
LOCATE 12, 31: PRINT " ÛÛ"
|
||||
LOCATE 13, 31: PRINT " ÛÛ"
|
||||
LOCATE 14, 31: PRINT " ÛÛ"
|
||||
LOCATE 15, 31: PRINT " ÛÛ"
|
||||
LOCATE 16, 31: PRINT " ÛÛ"
|
||||
LOCATE 17, 31: PRINT " ÛÛ"
|
||||
LOCATE 18, 31: PRINT " ÛÛ"
|
||||
CASE 2:
|
||||
LOCATE 12, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 31: PRINT " ÛÛ"
|
||||
LOCATE 14, 31: PRINT " ÛÛ"
|
||||
LOCATE 15, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 31: PRINT "ÛÛ "
|
||||
LOCATE 17, 31: PRINT "ÛÛ "
|
||||
LOCATE 18, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 3:
|
||||
LOCATE 12, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 31: PRINT " ÛÛ"
|
||||
LOCATE 14, 31: PRINT " ÛÛ"
|
||||
LOCATE 15, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 31: PRINT " ÛÛ"
|
||||
LOCATE 17, 31: PRINT " ÛÛ"
|
||||
LOCATE 18, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 4:
|
||||
LOCATE 12, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 13, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 31: PRINT " ÛÛ"
|
||||
LOCATE 17, 31: PRINT " ÛÛ"
|
||||
LOCATE 18, 31: PRINT " ÛÛ"
|
||||
CASE 5:
|
||||
LOCATE 12, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 31: PRINT "ÛÛ "
|
||||
LOCATE 14, 31: PRINT "ÛÛ "
|
||||
LOCATE 15, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 31: PRINT " ÛÛ"
|
||||
LOCATE 17, 31: PRINT " ÛÛ"
|
||||
LOCATE 18, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 6:
|
||||
LOCATE 12, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 31: PRINT "ÛÛ "
|
||||
LOCATE 14, 31: PRINT "ÛÛ "
|
||||
LOCATE 15, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 7:
|
||||
LOCATE 12, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 31: PRINT " ÛÛ"
|
||||
LOCATE 14, 31: PRINT " ÛÛ"
|
||||
LOCATE 15, 31: PRINT " ÛÛ"
|
||||
LOCATE 16, 31: PRINT " ÛÛ"
|
||||
LOCATE 17, 31: PRINT " ÛÛ"
|
||||
LOCATE 18, 31: PRINT " ÛÛ"
|
||||
CASE 8:
|
||||
LOCATE 12, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 9:
|
||||
LOCATE 12, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 31: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 31: PRINT " ÛÛ"
|
||||
LOCATE 17, 31: PRINT " ÛÛ"
|
||||
LOCATE 18, 31: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
END SELECT
|
||||
5
|
||||
IF D <> VAL(MID$(TIME$, 5, 1)) THEN D = VAL(MID$(TIME$, 5, 1)): GOTO 8 ELSE GOTO 7
|
||||
8
|
||||
SELECT CASE D
|
||||
CASE 0:
|
||||
LOCATE 12, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 16, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 1
|
||||
LOCATE 12, 41: PRINT " ÛÛ"
|
||||
LOCATE 13, 41: PRINT " ÛÛ"
|
||||
LOCATE 14, 41: PRINT " ÛÛ"
|
||||
LOCATE 15, 41: PRINT " ÛÛ"
|
||||
LOCATE 16, 41: PRINT " ÛÛ"
|
||||
LOCATE 17, 41: PRINT " ÛÛ"
|
||||
LOCATE 18, 41: PRINT " ÛÛ"
|
||||
CASE 2:
|
||||
LOCATE 12, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 41: PRINT " ÛÛ"
|
||||
LOCATE 14, 41: PRINT " ÛÛ"
|
||||
LOCATE 15, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 41: PRINT "ÛÛ "
|
||||
LOCATE 17, 41: PRINT "ÛÛ "
|
||||
LOCATE 18, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 3:
|
||||
LOCATE 12, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 41: PRINT " ÛÛ"
|
||||
LOCATE 14, 41: PRINT " ÛÛ"
|
||||
LOCATE 15, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 41: PRINT " ÛÛ"
|
||||
LOCATE 17, 41: PRINT " ÛÛ"
|
||||
LOCATE 18, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 4:
|
||||
LOCATE 12, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 13, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 41: PRINT " ÛÛ"
|
||||
LOCATE 17, 41: PRINT " ÛÛ"
|
||||
LOCATE 18, 41: PRINT " ÛÛ"
|
||||
CASE 5:
|
||||
LOCATE 12, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 41: PRINT "ÛÛ "
|
||||
LOCATE 14, 41: PRINT "ÛÛ "
|
||||
LOCATE 15, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 41: PRINT " ÛÛ"
|
||||
LOCATE 17, 41: PRINT " ÛÛ"
|
||||
LOCATE 18, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 6:
|
||||
LOCATE 12, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 41: PRINT "ÛÛ "
|
||||
LOCATE 14, 41: PRINT "ÛÛ "
|
||||
LOCATE 15, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 7:
|
||||
LOCATE 12, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 41: PRINT " ÛÛ"
|
||||
LOCATE 14, 41: PRINT " ÛÛ"
|
||||
LOCATE 15, 41: PRINT " ÛÛ"
|
||||
LOCATE 16, 41: PRINT " ÛÛ"
|
||||
LOCATE 17, 41: PRINT " ÛÛ"
|
||||
LOCATE 18, 41: PRINT " ÛÛ"
|
||||
CASE 8:
|
||||
LOCATE 12, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 9:
|
||||
LOCATE 12, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 41: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 41: PRINT " ÛÛ"
|
||||
LOCATE 17, 41: PRINT " ÛÛ"
|
||||
LOCATE 18, 41: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
END SELECT
|
||||
7
|
||||
IF E <> VAL(MID$(TIME$, 7, 1)) THEN E = VAL(MID$(TIME$, 7, 1)): GOTO 10 ELSE GOTO 9
|
||||
10
|
||||
SELECT CASE E
|
||||
CASE 0:
|
||||
LOCATE 12, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 16, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 1
|
||||
LOCATE 12, 55: PRINT " ÛÛ"
|
||||
LOCATE 13, 55: PRINT " ÛÛ"
|
||||
LOCATE 14, 55: PRINT " ÛÛ"
|
||||
LOCATE 15, 55: PRINT " ÛÛ"
|
||||
LOCATE 16, 55: PRINT " ÛÛ"
|
||||
LOCATE 17, 55: PRINT " ÛÛ"
|
||||
LOCATE 18, 55: PRINT " ÛÛ"
|
||||
CASE 2:
|
||||
LOCATE 12, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 55: PRINT " ÛÛ"
|
||||
LOCATE 14, 55: PRINT " ÛÛ"
|
||||
LOCATE 15, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 55: PRINT "ÛÛ "
|
||||
LOCATE 17, 55: PRINT "ÛÛ "
|
||||
LOCATE 18, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 3:
|
||||
LOCATE 12, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 55: PRINT " ÛÛ"
|
||||
LOCATE 14, 55: PRINT " ÛÛ"
|
||||
LOCATE 15, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 55: PRINT " ÛÛ"
|
||||
LOCATE 17, 55: PRINT " ÛÛ"
|
||||
LOCATE 18, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 4:
|
||||
LOCATE 12, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 13, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 55: PRINT " ÛÛ"
|
||||
LOCATE 17, 55: PRINT " ÛÛ"
|
||||
LOCATE 18, 55: PRINT " ÛÛ"
|
||||
CASE 5:
|
||||
LOCATE 12, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 55: PRINT "ÛÛ "
|
||||
LOCATE 14, 55: PRINT "ÛÛ "
|
||||
LOCATE 15, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 55: PRINT " ÛÛ"
|
||||
LOCATE 17, 55: PRINT " ÛÛ"
|
||||
LOCATE 18, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 6:
|
||||
LOCATE 12, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 55: PRINT "ÛÛ "
|
||||
LOCATE 14, 55: PRINT "ÛÛ "
|
||||
LOCATE 15, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 7:
|
||||
LOCATE 12, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 55: PRINT " ÛÛ"
|
||||
LOCATE 14, 55: PRINT " ÛÛ"
|
||||
LOCATE 15, 55: PRINT " ÛÛ"
|
||||
LOCATE 16, 55: PRINT " ÛÛ"
|
||||
LOCATE 17, 55: PRINT " ÛÛ"
|
||||
LOCATE 18, 55: PRINT " ÛÛ"
|
||||
CASE 8:
|
||||
LOCATE 12, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 9:
|
||||
LOCATE 12, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 55: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 55: PRINT " ÛÛ"
|
||||
LOCATE 17, 55: PRINT " ÛÛ"
|
||||
LOCATE 18, 55: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
END SELECT
|
||||
9
|
||||
IF F <> VAL(MID$(TIME$, 8, 1)) THEN F = VAL(MID$(TIME$, 8, 1)): GOTO 12 ELSE GOTO 1.1
|
||||
12
|
||||
SELECT CASE F
|
||||
CASE 0:
|
||||
LOCATE 12, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 16, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 1:
|
||||
LOCATE 12, 65: PRINT " ÛÛ"
|
||||
LOCATE 13, 65: PRINT " ÛÛ"
|
||||
LOCATE 14, 65: PRINT " ÛÛ"
|
||||
LOCATE 15, 65: PRINT " ÛÛ"
|
||||
LOCATE 16, 65: PRINT " ÛÛ"
|
||||
LOCATE 17, 65: PRINT " ÛÛ"
|
||||
LOCATE 18, 65: PRINT " ÛÛ"
|
||||
CASE 2:
|
||||
LOCATE 12, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 65: PRINT " ÛÛ"
|
||||
LOCATE 14, 65: PRINT " ÛÛ"
|
||||
LOCATE 15, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 65: PRINT "ÛÛ "
|
||||
LOCATE 17, 65: PRINT "ÛÛ "
|
||||
LOCATE 18, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 3:
|
||||
LOCATE 12, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 65: PRINT " ÛÛ"
|
||||
LOCATE 14, 65: PRINT " ÛÛ"
|
||||
LOCATE 15, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 65: PRINT " ÛÛ"
|
||||
LOCATE 17, 65: PRINT " ÛÛ"
|
||||
LOCATE 18, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 4:
|
||||
LOCATE 12, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 13, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 65: PRINT " ÛÛ"
|
||||
LOCATE 17, 65: PRINT " ÛÛ"
|
||||
LOCATE 18, 65: PRINT " ÛÛ"
|
||||
CASE 5:
|
||||
LOCATE 12, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 65: PRINT "ÛÛ "
|
||||
LOCATE 14, 65: PRINT "ÛÛ "
|
||||
LOCATE 15, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 65: PRINT " ÛÛ"
|
||||
LOCATE 17, 65: PRINT " ÛÛ"
|
||||
LOCATE 18, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 6:
|
||||
LOCATE 12, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 65: PRINT "ÛÛ "
|
||||
LOCATE 14, 65: PRINT "ÛÛ "
|
||||
LOCATE 15, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 7:
|
||||
LOCATE 12, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 65: PRINT " ÛÛ"
|
||||
LOCATE 14, 65: PRINT " ÛÛ"
|
||||
LOCATE 15, 65: PRINT " ÛÛ"
|
||||
LOCATE 16, 65: PRINT " ÛÛ"
|
||||
LOCATE 17, 65: PRINT " ÛÛ"
|
||||
LOCATE 18, 65: PRINT " ÛÛ"
|
||||
CASE 8:
|
||||
LOCATE 12, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 17, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 18, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
CASE 9:
|
||||
LOCATE 12, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 13, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 14, 65: PRINT "ÛÛ ÛÛ"
|
||||
LOCATE 15, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
LOCATE 16, 65: PRINT " ÛÛ"
|
||||
LOCATE 17, 65: PRINT " ÛÛ"
|
||||
LOCATE 18, 65: PRINT "ÛÛÛÛÛÛÛÛ"
|
||||
END SELECT
|
||||
GOTO 1.1
|
||||
|
||||
DEFINT A-Z
|
||||
SUB DATUM
|
||||
KLPRINT TIME$, 18, 5, 10, 4
|
||||
IF MID$(TIME$, 1, 2) <> "00" THEN GOTO 3.1
|
||||
IF MID$(TIME$, 4, 2) <> "00" THEN GOTO 3.1
|
||||
IF MID$(TIME$, 7, 2) <> "00" THEN GOTO 3.1
|
||||
KLPRINT MID$(DATE$, 4, 2) + ".", 18, 576, 10, 4
|
||||
KLPRINT MID$(DATE$, 1, 2) + ".", 18, 594, 10, 4
|
||||
KLPRINT MID$(DATE$, 7, 4), 18, 611, 10, 4
|
||||
3.1 END SUB
|
||||
|
||||
SUB FELT (X, Y, XX, YY, FARBEN)
|
||||
LINE (X, Y)-(X, YY), 15
|
||||
LINE (X, Y)-(XX, Y), 15
|
||||
LINE (X, YY)-(XX, YY), 8
|
||||
LINE (XX, Y)-(XX, YY), 8
|
||||
VIEW (X + 2, Y + 2)-(XX - 2, YY - 2), FARBEN, FARBEN
|
||||
VIEW (0, 0)-(639, 479)
|
||||
END SUB
|
||||
|
||||
SUB KLPRINT (B$, B, K, G, I)
|
||||
C = LEN(B$)
|
||||
B$ = UCASE$(B$)
|
||||
D = K - 6
|
||||
E = B - 14
|
||||
IF G <> 10 THEN E = E - G
|
||||
7.1 : F = F + 1
|
||||
H = F * 6
|
||||
IF F = C + 1 THEN GOTO 198
|
||||
IF G = 10 THEN
|
||||
VIEW (D + H, E)-(D + H + 4, E + 6), 7, 7
|
||||
VIEW (0, 0)-(639, 479)
|
||||
END IF
|
||||
IF MID$(B$, F, 1) = " " THEN
|
||||
GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "A" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "B" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "C" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I
|
||||
PSET (D + H, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "D" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "E" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H, E + 4), I
|
||||
PSET (D + H, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "F" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I
|
||||
PSET (D + H, E + 4), I
|
||||
PSET (D + H, E + 5), I
|
||||
PSET (D + H, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "G" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 3, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "H" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "I" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H + 2, E + 1), I
|
||||
PSET (D + H + 2, E + 2), I
|
||||
PSET (D + H + 2, E + 3), I
|
||||
PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "J" THEN
|
||||
PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H + 3, E + 1), I
|
||||
PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 3, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "K" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 3, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 2, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "L" THEN
|
||||
PSET (D + H, E + 0), I
|
||||
PSET (D + H, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I
|
||||
PSET (D + H, E + 4), I
|
||||
PSET (D + H, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "M" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 1, E + 1), I: PSET (D + H + 3, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 2, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "N" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 1, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 2, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 2, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 3, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "O" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "P" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H, E + 4), I
|
||||
PSET (D + H, E + 5), I
|
||||
PSET (D + H, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "Q" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 2, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 3, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "R" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "S" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "T" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H + 2, E + 1), I
|
||||
PSET (D + H + 2, E + 2), I
|
||||
PSET (D + H + 2, E + 3), I
|
||||
PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "U" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "V" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H + 1, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 1, E + 4), I: PSET (D + H + 3, E + 4), I
|
||||
PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "W" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 2, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 1, E + 5), I: PSET (D + H + 3, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "X" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H + 1, E + 2), I: PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H + 2, E + 3), I
|
||||
PSET (D + H + 1, E + 4), I: PSET (D + H + 3, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "Y" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H + 1, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "Z" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H + 2, E + 3), I
|
||||
PSET (D + H + 1, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "." THEN
|
||||
PSET (D + H + 1, E + 5), I: PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "," THEN
|
||||
PSET (D + H + 1, E + 4), I: PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H + 1, E + 5), I: PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "&" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 3, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 2, E + 2), I
|
||||
PSET (D + H + 1, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 2, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "(" THEN
|
||||
PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H + 1, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I
|
||||
PSET (D + H, E + 4), I
|
||||
PSET (D + H + 1, E + 5), I
|
||||
PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = ")" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I
|
||||
PSET (D + H + 3, E + 1), I
|
||||
PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "1" THEN
|
||||
PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H + 2, E + 1), I: PSET (D + H + 3, E + 1), I
|
||||
PSET (D + H + 1, E + 2), I: PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 3, E + 4), I
|
||||
PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "2" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H + 1, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "3" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "4" THEN
|
||||
PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H + 2, E + 1), I: PSET (D + H + 3, E + 1), I
|
||||
PSET (D + H + 1, E + 2), I: PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H + 3, E + 4), I
|
||||
PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "5" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "6" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "7" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "8" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "9" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "0" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 3, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 1, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = ":" THEN
|
||||
PSET (D + H + 1, E + 1), I: PSET (D + H + 2, E + 1), I
|
||||
PSET (D + H + 1, E + 2), I: PSET (D + H + 2, E + 2), I
|
||||
PSET (D + H + 1, E + 4), I: PSET (D + H + 2, E + 4), I
|
||||
PSET (D + H + 1, E + 5), I: PSET (D + H + 2, E + 5), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "-" THEN
|
||||
PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I
|
||||
PSET (D + H + 3, E + 3), I: PSET (D + H + 4, E + 3), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "$" THEN
|
||||
PSET (D + H + 2, E + 0), I
|
||||
PSET (D + H + 1, E + 1), I: PSET (D + H + 2, E + 1), I: PSET (D + H + 3, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 2, E + 2), I
|
||||
PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I
|
||||
PSET (D + H + 2, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 1, E + 5), I: PSET (D + H + 2, E + 5), I: PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "*" THEN
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 2, E + 1), I: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H + 1, E + 2), I: PSET (D + H + 2, E + 2), I: PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), I: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H + 1, E + 4), I: PSET (D + H + 2, E + 4), I: PSET (D + H + 3, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 2, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
ELSEIF MID$(B$, F, 1) = "/" THEN
|
||||
PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H + 3, E + 1), I
|
||||
PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H + 2, E + 3), I
|
||||
PSET (D + H + 1, E + 4), I
|
||||
PSET (D + H + 1, E + 5), I
|
||||
PSET (D + H, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "\" THEN
|
||||
PSET (D + H, E + 0), I
|
||||
PSET (D + H + 1, E + 1), I
|
||||
PSET (D + H + 1, E + 2), I
|
||||
PSET (D + H + 2, E + 3), I
|
||||
PSET (D + H + 3, E + 4), I
|
||||
PSET (D + H + 3, E + 5), I
|
||||
PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "[" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I
|
||||
PSET (D + H, E + 1), I
|
||||
PSET (D + H, E + 2), I
|
||||
PSET (D + H, E + 3), I
|
||||
PSET (D + H, E + 4), I
|
||||
PSET (D + H, E + 5), I
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "]" THEN
|
||||
PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "_" THEN
|
||||
PSET (D + H, E + 6), I: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "š" OR MID$(B$, F, 1) = "<22>" THEN
|
||||
PSET (D + H, E + 0), I: PSET (D + H + 4, E + 0), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 4, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I
|
||||
ELSEIF MID$(B$, F, 1) = "!" THEN
|
||||
PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H + 1, E + 1), I: PSET (D + H + 2, E + 1), I: PSET (D + H + 3, E + 1), I
|
||||
PSET (D + H + 2, E + 2), I
|
||||
PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H + 2, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = ">" THEN
|
||||
PSET (D + H + 1, E + 0), I
|
||||
PSET (D + H + 2, E + 1), I
|
||||
PSET (D + H + 3, E + 2), I
|
||||
PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H + 3, E + 4), I
|
||||
PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H + 1, E + 6), I: GOTO 123
|
||||
ELSEIF MID$(B$, F, 1) = "@" THEN
|
||||
PSET (D + H, E + 0), 7: PSET (D + H + 1, E + 0), I: PSET (D + H + 2, E + 0), I: PSET (D + H + 3, E + 0), I: PSET (D + H + 4, E + 0), 7
|
||||
PSET (D + H, E + 1), I: PSET (D + H + 1, E + 1), 7: PSET (D + H + 2, E + 1), 7: PSET (D + H + 3, E + 1), 7: PSET (D + H + 4, E + 1), I
|
||||
PSET (D + H, E + 2), I: PSET (D + H + 1, E + 2), 7: PSET (D + H + 2, E + 2), I: PSET (D + H + 3, E + 2), I: PSET (D + H + 4, E + 2), I
|
||||
PSET (D + H, E + 3), I: PSET (D + H + 1, E + 3), 7: PSET (D + H + 2, E + 3), I: PSET (D + H + 3, E + 3), I: PSET (D + H + 4, E + 3), I
|
||||
PSET (D + H, E + 4), I: PSET (D + H + 1, E + 4), 7: PSET (D + H + 2, E + 4), I: PSET (D + H + 3, E + 4), I: PSET (D + H + 4, E + 4), I
|
||||
PSET (D + H, E + 5), I: PSET (D + H + 1, E + 5), 7: PSET (D + H + 2, E + 5), 7: PSET (D + H + 3, E + 5), 7: PSET (D + H + 4, E + 5), 7
|
||||
PSET (D + H, E + 6), 7: PSET (D + H + 1, E + 6), I: PSET (D + H + 2, E + 6), I: PSET (D + H + 3, E + 6), I: PSET (D + H + 4, E + 6), 7
|
||||
ELSEIF MID$(B$, F, 1) = "<" THEN
|
||||
PSET (D + H + 3, E + 0), I
|
||||
PSET (D + H + 2, E + 1), I
|
||||
PSET (D + H + 1, E + 2), I
|
||||
PSET (D + H, E + 3), I
|
||||
PSET (D + H + 1, E + 4), I
|
||||
PSET (D + H + 2, E + 5), I
|
||||
PSET (D + H + 3, E + 6), I: GOTO 123
|
||||
123 END IF
|
||||
IF F - 1 < C THEN GOTO 7.1
|
||||
198 END SUB
|
||||
|
14
tests/qbasic_testcases/misc/message.bas
Normal file
14
tests/qbasic_testcases/misc/message.bas
Normal file
|
@ -0,0 +1,14 @@
|
|||
'SUBLIMIAL MESSAGE GENERATOR -- HIDES MESSAGE IN STRANGE BEEPING NOISES
|
||||
' modify w$ for different subliminal message
|
||||
|
||||
CLS
|
||||
DO WHILE INKEY$ <> CHR$(27)
|
||||
COLOR INT(RND(1) * 16), INT(RND(1) * 16)
|
||||
PRINT " ";
|
||||
w$ = "QB64 RULES"
|
||||
y% = (y% + 1)
|
||||
IF y% > LEN(w$) THEN y% = y% MOD LEN(w$)
|
||||
z% = ASC(MID$(w$, y%, 1))
|
||||
x% = 9 * z% + 100
|
||||
SOUND x%, 1
|
||||
LOOP
|
1922
tests/qbasic_testcases/misc/mzupd2.bas
Normal file
1922
tests/qbasic_testcases/misc/mzupd2.bas
Normal file
File diff suppressed because it is too large
Load diff
778
tests/qbasic_testcases/misc/nib64.bas
Normal file
778
tests/qbasic_testcases/misc/nib64.bas
Normal file
|
@ -0,0 +1,778 @@
|
|||
'
|
||||
' Q B a s i c N i b b l e s
|
||||
'
|
||||
' Copyright (C) Microsoft Corporation 1990
|
||||
'
|
||||
' Nibbles is a game for one or two players. Navigate your snakes
|
||||
' around the game board trying to eat up numbers while avoiding
|
||||
' running into walls or other snakes. The more numbers you eat up,
|
||||
' the more points you gain and the longer your snake becomes.
|
||||
'
|
||||
' To run this game, press Shift+F5.
|
||||
'
|
||||
' To exit QBasic, press Alt, F, X.
|
||||
'
|
||||
' To get help on a BASIC keyword, move the cursor to the keyword and press
|
||||
' F1 or click the right mouse button.
|
||||
'
|
||||
|
||||
|
||||
'Set default data type to integer for faster game play
|
||||
DEFINT A-Z
|
||||
|
||||
'User-defined TYPEs
|
||||
TYPE snakeBody
|
||||
row AS INTEGER
|
||||
col AS INTEGER
|
||||
END TYPE
|
||||
|
||||
'This type defines the player's snake
|
||||
TYPE snaketype
|
||||
head AS INTEGER
|
||||
length AS INTEGER
|
||||
row AS INTEGER
|
||||
col AS INTEGER
|
||||
direction AS INTEGER
|
||||
lives AS INTEGER
|
||||
score AS INTEGER
|
||||
scolor AS INTEGER
|
||||
alive AS INTEGER
|
||||
END TYPE
|
||||
|
||||
'This type is used to represent the playing screen in memory
|
||||
'It is used to simulate graphics in text mode, and has some interesting,
|
||||
'and slightly advanced methods to increasing the speed of operation.
|
||||
'Instead of the normal 80x25 text graphics using chr$(219) "Û", we will be
|
||||
'using chr$(220)"Ü" and chr$(223) "ß" and chr$(219) "Û" to mimic an 80x50
|
||||
'pixel screen.
|
||||
'Check out sub-programs SET and POINTISTHERE to see how this is implemented
|
||||
'feel free to copy these (as well as arenaType and the DIM ARENA stmt and the
|
||||
'initialization code in the DrawScreen subprogram) and use them in your own
|
||||
'programs
|
||||
TYPE arenaType
|
||||
realRow AS INTEGER 'Maps the 80x50 point into the real 80x25
|
||||
acolor AS INTEGER 'Stores the current color of the point
|
||||
sister AS INTEGER 'Each char has 2 points in it. .SISTER is
|
||||
END TYPE '-1 if sister point is above, +1 if below
|
||||
|
||||
'Sub Declarations
|
||||
DECLARE SUB Intro ()
|
||||
DECLARE SUB SpacePause (text$)
|
||||
DECLARE SUB PrintScore (numplayers%, score1%, score2%, lives1%, lives2%)
|
||||
|
||||
DECLARE SUB GetInputs (numplayers, speed, diff$, monitor$)
|
||||
DECLARE SUB DrawScreen ()
|
||||
DECLARE SUB PlayNibbles (numplayers, speed, diff$)
|
||||
DECLARE SUB Set (row, col, acolor)
|
||||
DECLARE SUB Center (row, text$)
|
||||
DECLARE SUB DoIntro ()
|
||||
DECLARE SUB Initialize ()
|
||||
DECLARE SUB SparklePause ()
|
||||
DECLARE SUB Level (WhatToDO, sammy() AS snaketype)
|
||||
DECLARE SUB InitColors ()
|
||||
DECLARE SUB EraseSnake (snake() AS ANY, snakeBod() AS ANY, snakeNum%)
|
||||
DECLARE FUNCTION StillWantsToPlay ()
|
||||
DECLARE FUNCTION PointIsThere (row, col, backColor)
|
||||
|
||||
'Constants
|
||||
'CONST TRUE = -1
|
||||
'CONST FALSE = NOT TRUE
|
||||
'CONST MAXSNAKELENGTH = 1000
|
||||
'CONST STARTOVER = 1 ' Parameters to 'Level' SUB
|
||||
'CONST SAMELEVEL = 2
|
||||
'CONST NEXTLEVEL = 3
|
||||
DIM SHARED TRUE AS INTEGER
|
||||
DIM SHARED FALSE AS INTEGER
|
||||
DIM SHARED MAXSNAKELENGTH AS INTEGER
|
||||
DIM SHARED STARTOVER AS INTEGER
|
||||
DIM SHARED SAMELEVEL AS INTEGER
|
||||
DIM SHARED NEXTLEVEL AS INTEGER
|
||||
|
||||
TRUE = -1
|
||||
FALSE = NOT TRUE
|
||||
MAXSNAKELENGTH = 1000
|
||||
STARTOVER = 1
|
||||
SAMELEVEL = 2
|
||||
NEXTLEVEL = 3
|
||||
|
||||
|
||||
'Global Variables
|
||||
DIM SHARED arena(1 TO 50, 1 TO 80) AS arenaType
|
||||
DIM SHARED curLevel, colorTable(10)
|
||||
|
||||
|
||||
|
||||
RANDOMIZE TIMER
|
||||
GOSUB ClearKeyLocks
|
||||
|
||||
Intro
|
||||
GetInputs numplayers, speed, diff$, monitor$
|
||||
|
||||
|
||||
GOSUB SetColors
|
||||
|
||||
DrawScreen
|
||||
|
||||
|
||||
|
||||
DO
|
||||
PlayNibbles numplayers, speed, diff$
|
||||
LOOP WHILE StillWantsToPlay
|
||||
|
||||
GOSUB RestoreKeyLocks
|
||||
COLOR 15, 0
|
||||
CLS
|
||||
END
|
||||
|
||||
ClearKeyLocks:
|
||||
DEF SEG = 0 ' Turn off CapLock, NumLock and ScrollLock
|
||||
KeyFlags = PEEK(1047)
|
||||
POKE 1047, &H0
|
||||
DEF SEG
|
||||
RETURN
|
||||
|
||||
RestoreKeyLocks:
|
||||
DEF SEG = 0 ' Restore CapLock, NumLock and ScrollLock states
|
||||
POKE 1047, KeyFlags
|
||||
DEF SEG
|
||||
RETURN
|
||||
|
||||
SetColors:
|
||||
IF monitor$ = "M" THEN
|
||||
RESTORE mono
|
||||
ELSE
|
||||
RESTORE normal
|
||||
END IF
|
||||
|
||||
FOR a = 1 TO 6
|
||||
READ colorTable(a)
|
||||
NEXT a
|
||||
RETURN
|
||||
|
||||
'snake1 snake2 Walls Background Dialogs-Fore Back
|
||||
mono: DATA 15,7,7,0,15,0
|
||||
normal: DATA 14,13,12,1,15,4
|
||||
END
|
||||
|
||||
'Center:
|
||||
' Centers text on given row
|
||||
SUB Center (row, text$)
|
||||
LOCATE row, 41 - LEN(text$) / 2
|
||||
PRINT text$;
|
||||
END SUB
|
||||
|
||||
'DrawScreen:
|
||||
' Draws playing field
|
||||
SUB DrawScreen
|
||||
|
||||
'initialize screen
|
||||
VIEW PRINT
|
||||
COLOR colorTable(1), colorTable(4)
|
||||
CLS
|
||||
|
||||
'Print title & message
|
||||
Center 1, "Nibbles!"
|
||||
Center 11, "Initializing Playing Field..."
|
||||
|
||||
'Initialize arena array
|
||||
FOR row = 1 TO 50
|
||||
FOR col = 1 TO 80
|
||||
arena(row, col).realRow = INT((row + 1) / 2)
|
||||
arena(row, col).sister = (row MOD 2) * 2 - 1
|
||||
NEXT col
|
||||
NEXT row
|
||||
|
||||
END SUB
|
||||
|
||||
'EraseSnake:
|
||||
' Erases snake to facilitate moving through playing field
|
||||
SUB EraseSnake (snake() AS snaketype, snakeBod() AS snakeBody, snakeNum)
|
||||
|
||||
FOR c = 0 TO 9
|
||||
FOR b = snake(snakeNum).length - c TO 0 STEP -10
|
||||
tail = (snake(snakeNum).head + MAXSNAKELENGTH - b) MOD MAXSNAKELENGTH
|
||||
Set snakeBod(tail, snakeNum).row, snakeBod(tail, snakeNum).col, colorTable(4)
|
||||
NEXT b
|
||||
NEXT c
|
||||
|
||||
END SUB
|
||||
|
||||
'GetInputs:
|
||||
' Gets player inputs
|
||||
SUB GetInputs (numplayers, speed, diff$, monitor$)
|
||||
|
||||
COLOR 7, 0
|
||||
CLS
|
||||
|
||||
DO
|
||||
LOCATE 5, 47: PRINT SPACE$(34);
|
||||
LOCATE 5, 20
|
||||
INPUT "How many players (1 or 2)"; num$
|
||||
LOOP UNTIL VAL(num$) = 1 OR VAL(num$) = 2
|
||||
numplayers = VAL(num$)
|
||||
|
||||
LOCATE 8, 21: PRINT "Skill level (1 to 100)"
|
||||
LOCATE 9, 22: PRINT "1 = Novice"
|
||||
LOCATE 10, 22: PRINT "90 = Expert"
|
||||
LOCATE 11, 22: PRINT "100 = Twiddle Fingers"
|
||||
LOCATE 12, 15: PRINT "(Computer speed may affect your skill level)"
|
||||
DO
|
||||
LOCATE 8, 44: PRINT SPACE$(35);
|
||||
LOCATE 8, 43
|
||||
INPUT gamespeed$
|
||||
LOOP UNTIL VAL(gamespeed$) >= 1 AND VAL(gamespeed$) <= 100
|
||||
speed = VAL(gamespeed$)
|
||||
|
||||
speed = (100 - speed) * 5 + 1
|
||||
|
||||
DO
|
||||
LOCATE 15, 56: PRINT SPACE$(25);
|
||||
LOCATE 15, 15
|
||||
INPUT "Increase game speed during play (Y or N)"; diff$
|
||||
diff$ = UCASE$(diff$)
|
||||
LOOP UNTIL diff$ = "Y" OR diff$ = "N"
|
||||
|
||||
DO
|
||||
LOCATE 17, 46: PRINT SPACE$(34);
|
||||
LOCATE 17, 17
|
||||
INPUT "Monochrome or color monitor (M or C)"; monitor$
|
||||
monitor$ = UCASE$(monitor$)
|
||||
LOOP UNTIL monitor$ = "M" OR monitor$ = "C"
|
||||
|
||||
' startTime# = TIMER ' Calculate speed of system
|
||||
' FOR i# = 1 TO 1000: NEXT i# ' and do some compensation
|
||||
' stopTime# = TIMER
|
||||
'
|
||||
' speed = speed * .5 / (stopTime# - startTime# + .01)
|
||||
|
||||
|
||||
END SUB
|
||||
|
||||
'InitColors:
|
||||
'Initializes playing field colors
|
||||
SUB InitColors
|
||||
|
||||
|
||||
FOR row = 1 TO 50
|
||||
FOR col = 1 TO 80
|
||||
arena(row, col).acolor = colorTable(4)
|
||||
NEXT col
|
||||
NEXT row
|
||||
|
||||
CLS
|
||||
|
||||
'Set (turn on) pixels for screen border
|
||||
FOR col = 1 TO 80
|
||||
Set 3, col, colorTable(3)
|
||||
Set 50, col, colorTable(3)
|
||||
NEXT col
|
||||
|
||||
|
||||
|
||||
FOR row = 4 TO 49
|
||||
Set row, 1, colorTable(3)
|
||||
Set row, 80, colorTable(3)
|
||||
NEXT row
|
||||
|
||||
|
||||
END SUB
|
||||
|
||||
'Intro:
|
||||
' Displays game introduction
|
||||
SUB Intro
|
||||
SCREEN 0
|
||||
WIDTH 80, 25
|
||||
COLOR 15, 0
|
||||
CLS
|
||||
|
||||
Center 4, "Q B a s i c N i b b l e s"
|
||||
COLOR 7
|
||||
Center 6, "Copyright (C) Microsoft Corporation 1990"
|
||||
Center 8, "Nibbles is a game for one or two players. Navigate your snakes"
|
||||
Center 9, "around the game board trying to eat up numbers while avoiding"
|
||||
Center 10, "running into walls or other snakes. The more numbers you eat up,"
|
||||
Center 11, "the more points you gain and the longer your snake becomes."
|
||||
Center 13, " Game Controls "
|
||||
Center 15, " General Player 1 Player 2 "
|
||||
Center 16, " (Up) (Up) "
|
||||
Center 17, "P - Pause " + CHR$(24) + " W "
|
||||
Center 18, " (Left) " + CHR$(27) + " " + CHR$(26) + " (Right) (Left) A D (Right) "
|
||||
Center 19, " " + CHR$(25) + " S "
|
||||
Center 20, " (Down) (Down) "
|
||||
Center 24, "Press any key to continue"
|
||||
|
||||
PLAY "MBT160O1L8CDEDCDL4ECC"
|
||||
|
||||
SparklePause
|
||||
|
||||
END SUB
|
||||
|
||||
'Level:
|
||||
'Sets game level
|
||||
SUB Level (WhatToDO, sammy() AS snaketype) 'STATIC
|
||||
|
||||
SELECT CASE (WhatToDO)
|
||||
|
||||
CASE STARTOVER
|
||||
curLevel = 1
|
||||
CASE NEXTLEVEL
|
||||
curLevel = curLevel + 1
|
||||
END SELECT
|
||||
|
||||
sammy(1).head = 1 'Initialize Snakes
|
||||
sammy(1).length = 2
|
||||
sammy(1).alive = TRUE
|
||||
sammy(2).head = 1
|
||||
sammy(2).length = 2
|
||||
sammy(2).alive = TRUE
|
||||
|
||||
InitColors
|
||||
|
||||
|
||||
|
||||
SELECT CASE curLevel
|
||||
CASE 1
|
||||
sammy(1).row = 25: sammy(2).row = 25
|
||||
sammy(1).col = 50: sammy(2).col = 30
|
||||
sammy(1).direction = 4: sammy(2).direction = 3
|
||||
|
||||
|
||||
CASE 2
|
||||
FOR i = 20 TO 60
|
||||
Set 25, i, colorTable(3)
|
||||
NEXT i
|
||||
sammy(1).row = 7: sammy(2).row = 43
|
||||
sammy(1).col = 60: sammy(2).col = 20
|
||||
sammy(1).direction = 3: sammy(2).direction = 4
|
||||
|
||||
CASE 3
|
||||
FOR i = 10 TO 40
|
||||
Set i, 20, colorTable(3)
|
||||
Set i, 60, colorTable(3)
|
||||
NEXT i
|
||||
sammy(1).row = 25: sammy(2).row = 25
|
||||
sammy(1).col = 50: sammy(2).col = 30
|
||||
sammy(1).direction = 1: sammy(2).direction = 2
|
||||
|
||||
CASE 4
|
||||
FOR i = 4 TO 30
|
||||
Set i, 20, colorTable(3)
|
||||
Set 53 - i, 60, colorTable(3)
|
||||
NEXT i
|
||||
FOR i = 2 TO 40
|
||||
Set 38, i, colorTable(3)
|
||||
Set 15, 81 - i, colorTable(3)
|
||||
NEXT i
|
||||
sammy(1).row = 7: sammy(2).row = 43
|
||||
sammy(1).col = 60: sammy(2).col = 20
|
||||
sammy(1).direction = 3: sammy(2).direction = 4
|
||||
|
||||
CASE 5
|
||||
FOR i = 13 TO 39
|
||||
Set i, 21, colorTable(3)
|
||||
Set i, 59, colorTable(3)
|
||||
NEXT i
|
||||
FOR i = 23 TO 57
|
||||
Set 11, i, colorTable(3)
|
||||
Set 41, i, colorTable(3)
|
||||
NEXT i
|
||||
sammy(1).row = 25: sammy(2).row = 25
|
||||
sammy(1).col = 50: sammy(2).col = 30
|
||||
sammy(1).direction = 1: sammy(2).direction = 2
|
||||
|
||||
CASE 6
|
||||
FOR i = 4 TO 49
|
||||
IF i > 30 OR i < 23 THEN
|
||||
Set i, 10, colorTable(3)
|
||||
Set i, 20, colorTable(3)
|
||||
Set i, 30, colorTable(3)
|
||||
Set i, 40, colorTable(3)
|
||||
Set i, 50, colorTable(3)
|
||||
Set i, 60, colorTable(3)
|
||||
Set i, 70, colorTable(3)
|
||||
END IF
|
||||
NEXT i
|
||||
sammy(1).row = 7: sammy(2).row = 43
|
||||
sammy(1).col = 65: sammy(2).col = 15
|
||||
sammy(1).direction = 2: sammy(2).direction = 1
|
||||
|
||||
CASE 7
|
||||
FOR i = 4 TO 49 STEP 2
|
||||
Set i, 40, colorTable(3)
|
||||
NEXT i
|
||||
sammy(1).row = 7: sammy(2).row = 43
|
||||
sammy(1).col = 65: sammy(2).col = 15
|
||||
sammy(1).direction = 2: sammy(2).direction = 1
|
||||
|
||||
CASE 8
|
||||
FOR i = 4 TO 40
|
||||
Set i, 10, colorTable(3)
|
||||
Set 53 - i, 20, colorTable(3)
|
||||
Set i, 30, colorTable(3)
|
||||
Set 53 - i, 40, colorTable(3)
|
||||
Set i, 50, colorTable(3)
|
||||
Set 53 - i, 60, colorTable(3)
|
||||
Set i, 70, colorTable(3)
|
||||
NEXT i
|
||||
sammy(1).row = 7: sammy(2).row = 43
|
||||
sammy(1).col = 65: sammy(2).col = 15
|
||||
sammy(1).direction = 2: sammy(2).direction = 1
|
||||
|
||||
CASE 9
|
||||
FOR i = 6 TO 47
|
||||
Set i, i, colorTable(3)
|
||||
Set i, i + 28, colorTable(3)
|
||||
NEXT i
|
||||
sammy(1).row = 40: sammy(2).row = 15
|
||||
sammy(1).col = 75: sammy(2).col = 5
|
||||
sammy(1).direction = 1: sammy(2).direction = 2
|
||||
|
||||
CASE ELSE
|
||||
FOR i = 4 TO 49 STEP 2
|
||||
Set i, 10, colorTable(3)
|
||||
Set i + 1, 20, colorTable(3)
|
||||
Set i, 30, colorTable(3)
|
||||
Set i + 1, 40, colorTable(3)
|
||||
Set i, 50, colorTable(3)
|
||||
Set i + 1, 60, colorTable(3)
|
||||
Set i, 70, colorTable(3)
|
||||
NEXT i
|
||||
sammy(1).row = 7: sammy(2).row = 43
|
||||
sammy(1).col = 65: sammy(2).col = 15
|
||||
sammy(1).direction = 2: sammy(2).direction = 1
|
||||
|
||||
END SELECT
|
||||
END SUB
|
||||
|
||||
'PlayNibbles:
|
||||
' Main routine that controls game play
|
||||
SUB PlayNibbles (numplayers, speed, diff$)
|
||||
|
||||
'Initialize Snakes
|
||||
DIM sammyBody(MAXSNAKELENGTH - 1, 1 TO 2) AS snakeBody
|
||||
DIM sammy(1 TO 2) AS snaketype
|
||||
sammy(1).lives = 5
|
||||
sammy(1).score = 0
|
||||
sammy(1).scolor = colorTable(1)
|
||||
sammy(2).lives = 5
|
||||
sammy(2).score = 0
|
||||
sammy(2).scolor = colorTable(2)
|
||||
|
||||
Level STARTOVER, sammy()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
startRow1 = sammy(1).row: startCol1 = sammy(1).col
|
||||
startRow2 = sammy(2).row: startCol2 = sammy(2).col
|
||||
|
||||
|
||||
curSpeed = speed
|
||||
|
||||
'play Nibbles until finished
|
||||
|
||||
|
||||
SpacePause " Level" + STR$(curLevel) + ", Push Space"
|
||||
gameOver = FALSE
|
||||
DO
|
||||
IF numplayers = 1 THEN
|
||||
sammy(2).row = 0
|
||||
END IF
|
||||
|
||||
number = 1 'Current number that snakes are trying to run into
|
||||
nonum = TRUE 'nonum = TRUE if a number is not on the screen
|
||||
|
||||
playerDied = FALSE
|
||||
PrintScore numplayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives
|
||||
PLAY "T160O1>L20CDEDCDL10ECC"
|
||||
|
||||
DO
|
||||
'Print number if no number exists
|
||||
IF nonum = TRUE THEN
|
||||
DO
|
||||
numberRow = INT(RND(1) * 47 + 3)
|
||||
NumberCol = INT(RND(1) * 78 + 2)
|
||||
sisterRow = numberRow + arena(numberRow, NumberCol).sister
|
||||
LOOP UNTIL NOT PointIsThere(numberRow, NumberCol, colorTable(4)) AND NOT PointIsThere(sisterRow, NumberCol, colorTable(4))
|
||||
numberRow = arena(numberRow, NumberCol).realRow
|
||||
nonum = FALSE
|
||||
COLOR colorTable(1), colorTable(4)
|
||||
LOCATE numberRow, NumberCol
|
||||
PRINT RIGHT$(STR$(number), 1);
|
||||
count = 0
|
||||
END IF
|
||||
|
||||
'Delay game
|
||||
'FOR a# = 1 TO curSpeed: NEXT a#
|
||||
DO: LOOP WHILE TIMER = oldtimer!
|
||||
oldtimer! = TIMER
|
||||
|
||||
'Get keyboard input & Change direction accordingly
|
||||
kbd$ = INKEY$
|
||||
SELECT CASE kbd$
|
||||
CASE "w", "W": IF sammy(2).direction <> 2 THEN sammy(2).direction = 1
|
||||
CASE "s", "S": IF sammy(2).direction <> 1 THEN sammy(2).direction = 2
|
||||
CASE "a", "A": IF sammy(2).direction <> 4 THEN sammy(2).direction = 3
|
||||
CASE "d", "D": IF sammy(2).direction <> 3 THEN sammy(2).direction = 4
|
||||
CASE CHR$(0) + "H": IF sammy(1).direction <> 2 THEN sammy(1).direction = 1
|
||||
CASE CHR$(0) + "P": IF sammy(1).direction <> 1 THEN sammy(1).direction = 2
|
||||
CASE CHR$(0) + "K": IF sammy(1).direction <> 4 THEN sammy(1).direction = 3
|
||||
CASE CHR$(0) + "M": IF sammy(1).direction <> 3 THEN sammy(1).direction = 4
|
||||
CASE "p", "P": SpacePause " Game Paused ... Push Space "
|
||||
CASE ELSE
|
||||
END SELECT
|
||||
|
||||
FOR a = 1 TO numplayers
|
||||
'Move Snake
|
||||
SELECT CASE sammy(a).direction
|
||||
CASE 1: sammy(a).row = sammy(a).row - 1
|
||||
CASE 2: sammy(a).row = sammy(a).row + 1
|
||||
CASE 3: sammy(a).col = sammy(a).col - 1
|
||||
CASE 4: sammy(a).col = sammy(a).col + 1
|
||||
END SELECT
|
||||
|
||||
'If snake hits number, respond accordingly
|
||||
IF numberRow = INT((sammy(a).row + 1) / 2) AND NumberCol = sammy(a).col THEN
|
||||
PLAY "MBO0L16>CCCE"
|
||||
|
||||
IF sammy(a).length < (MAXSNAKELENGTH - 30) THEN
|
||||
sammy(a).length = sammy(a).length + number * 4
|
||||
END IF
|
||||
sammy(a).score = sammy(a).score + number
|
||||
PrintScore numplayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives
|
||||
number = number + 1
|
||||
IF number = 10 THEN
|
||||
EraseSnake sammy(), sammyBody(), 1
|
||||
EraseSnake sammy(), sammyBody(), 2
|
||||
LOCATE numberRow, NumberCol: PRINT " "
|
||||
Level NEXTLEVEL, sammy()
|
||||
PrintScore numplayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives
|
||||
SpacePause " Level" + STR$(curLevel) + ", Push Space"
|
||||
IF numplayers = 1 THEN sammy(2).row = 0
|
||||
number = 1
|
||||
IF diff$ = "P" THEN speed = speed - 10: curSpeed = speed
|
||||
END IF
|
||||
nonum = TRUE
|
||||
IF curSpeed < 1 THEN curSpeed = 1
|
||||
END IF
|
||||
NEXT a
|
||||
|
||||
FOR a = 1 TO numplayers
|
||||
'If player runs into any point, or the head of the other snake, it dies.
|
||||
IF PointIsThere(sammy(a).row, sammy(a).col, colorTable(4)) OR (sammy(1).row = sammy(2).row AND sammy(1).col = sammy(2).col) THEN
|
||||
PLAY "MBO0L32EFGEFDC"
|
||||
|
||||
COLOR , colorTable(4)
|
||||
LOCATE numberRow, NumberCol
|
||||
PRINT " "
|
||||
|
||||
playerDied = TRUE
|
||||
sammy(a).alive = FALSE
|
||||
sammy(a).lives = sammy(a).lives - 1
|
||||
|
||||
'Otherwise, move the snake, and erase the tail
|
||||
ELSE
|
||||
sammy(a).head = (sammy(a).head + 1) MOD MAXSNAKELENGTH
|
||||
sammyBody(sammy(a).head, a).row = sammy(a).row
|
||||
sammyBody(sammy(a).head, a).col = sammy(a).col
|
||||
tail = (sammy(a).head + MAXSNAKELENGTH - sammy(a).length) MOD MAXSNAKELENGTH
|
||||
Set sammyBody(tail, a).row, sammyBody(tail, a).col, colorTable(4)
|
||||
sammyBody(tail, a).row = 0
|
||||
Set sammy(a).row, sammy(a).col, sammy(a).scolor
|
||||
END IF
|
||||
NEXT a
|
||||
|
||||
LOOP UNTIL playerDied
|
||||
|
||||
curSpeed = speed ' reset speed to initial value
|
||||
|
||||
FOR a = 1 TO numplayers
|
||||
EraseSnake sammy(), sammyBody(), a
|
||||
|
||||
'If dead, then erase snake in really cool way
|
||||
IF sammy(a).alive = FALSE THEN
|
||||
'Update score
|
||||
sammy(a).score = sammy(a).score - 10
|
||||
PrintScore numplayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives
|
||||
|
||||
IF a = 1 THEN
|
||||
SpacePause " Sammy Dies! Push Space! --->"
|
||||
ELSE
|
||||
SpacePause " <---- Jake Dies! Push Space "
|
||||
END IF
|
||||
END IF
|
||||
NEXT a
|
||||
|
||||
Level SAMELEVEL, sammy()
|
||||
PrintScore numplayers, sammy(1).score, sammy(2).score, sammy(1).lives, sammy(2).lives
|
||||
|
||||
'Play next round, until either of snake's lives have run out.
|
||||
LOOP UNTIL sammy(1).lives = 0 OR sammy(2).lives = 0
|
||||
|
||||
END SUB
|
||||
|
||||
'PointIsThere:
|
||||
' Checks the global arena array to see if the boolean flag is set
|
||||
FUNCTION PointIsThere (row, col, acolor)
|
||||
IF row <> 0 THEN
|
||||
IF arena(row, col).acolor <> acolor THEN
|
||||
PointIsThere = TRUE
|
||||
ELSE
|
||||
PointIsThere = FALSE
|
||||
END IF
|
||||
END IF
|
||||
END FUNCTION
|
||||
|
||||
'PrintScore:
|
||||
' Prints players scores and number of lives remaining
|
||||
SUB PrintScore (numplayers, score1, score2, lives1, lives2)
|
||||
COLOR 15, colorTable(4)
|
||||
|
||||
IF numplayers = 2 THEN
|
||||
LOCATE 1, 1
|
||||
'PRINT USING "#,###,#00 Lives: # <--JAKE"; score2; lives2
|
||||
PRINT STR$(score2 * 100) + " Lives:"; lives2; " <--JAKE"
|
||||
END IF
|
||||
|
||||
LOCATE 1, 49
|
||||
'PRINT USING "SAMMY--> Lives: # #,###,#00"; lives1; score1
|
||||
PRINT "SAMMY--> Lives:"; lives1; " "; STR$(score1 * 100)
|
||||
|
||||
END SUB
|
||||
|
||||
'Set:
|
||||
' Sets row and column on playing field to given color to facilitate moving
|
||||
' of snakes around the field.
|
||||
SUB Set (row, col, acolor)
|
||||
IF row <> 0 THEN
|
||||
arena(row, col).acolor = acolor 'assign color to arena
|
||||
realRow = arena(row, col).realRow 'Get real row of pixel
|
||||
|
||||
topFlag = arena(row, col).sister + 1 / 2 'Deduce whether pixel
|
||||
'is on topß, or bottomÜ
|
||||
|
||||
' IF arena(row, col).sister = 1 THEN topFlag = 2 ELSE topFlag = 0
|
||||
|
||||
|
||||
sisterRow = row + arena(row, col).sister 'Get arena row of sister
|
||||
sisterColor = arena(sisterRow, col).acolor 'Determine sister's color
|
||||
|
||||
'LOCATE 1, 1: PRINT topFlag, arena(row, col).sister
|
||||
|
||||
LOCATE realRow, col
|
||||
|
||||
IF acolor = sisterColor THEN 'If both points are same
|
||||
COLOR acolor, acolor 'Print chr$(219) "Û"
|
||||
PRINT CHR$(219);
|
||||
ELSE
|
||||
IF topFlag THEN 'Since you cannot have
|
||||
IF acolor > 7 THEN 'bright backgrounds
|
||||
COLOR acolor, sisterColor 'determine best combo
|
||||
PRINT CHR$(223); 'to use.
|
||||
ELSE
|
||||
COLOR sisterColor, acolor
|
||||
PRINT CHR$(220);
|
||||
END IF
|
||||
ELSE
|
||||
IF acolor > 7 THEN
|
||||
COLOR acolor, sisterColor
|
||||
PRINT CHR$(220);
|
||||
ELSE
|
||||
COLOR sisterColor, acolor
|
||||
PRINT CHR$(223);
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
'SLEEP
|
||||
|
||||
END SUB
|
||||
|
||||
'SpacePause:
|
||||
' Pauses game play and waits for space bar to be pressed before continuing
|
||||
SUB SpacePause (text$)
|
||||
|
||||
COLOR colorTable(5), colorTable(6)
|
||||
Center 11, "ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ"
|
||||
Center 12, "Û " + LEFT$(text$ + SPACE$(29), 29) + " Û"
|
||||
Center 13, "ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ"
|
||||
WHILE INKEY$ <> "": WEND
|
||||
WHILE INKEY$ <> " ": WEND
|
||||
COLOR 15, colorTable(4)
|
||||
|
||||
FOR i = 21 TO 26 ' Restore the screen background
|
||||
FOR j = 24 TO 56
|
||||
Set i, j, arena(i, j).acolor
|
||||
NEXT j
|
||||
NEXT i
|
||||
|
||||
END SUB
|
||||
|
||||
'SparklePause:
|
||||
' Creates flashing border for intro screen
|
||||
SUB SparklePause
|
||||
|
||||
COLOR 4, 0
|
||||
a$ = "* * * * * * * * * * * * * * * * * "
|
||||
WHILE INKEY$ <> "": WEND 'Clear keyboard buffer
|
||||
|
||||
WHILE INKEY$ = ""
|
||||
FOR a = 1 TO 5
|
||||
LOCATE 1, 1 'print horizontal sparkles
|
||||
PRINT MID$(a$, a, 80);
|
||||
LOCATE 22, 1
|
||||
PRINT MID$(a$, 6 - a, 80);
|
||||
|
||||
FOR b = 2 TO 21 'Print Vertical sparkles
|
||||
c = (a + b) MOD 5
|
||||
IF c = 1 THEN
|
||||
LOCATE b, 80
|
||||
PRINT "*";
|
||||
LOCATE 23 - b, 1
|
||||
PRINT "*";
|
||||
ELSE
|
||||
LOCATE b, 80
|
||||
PRINT " ";
|
||||
LOCATE 23 - b, 1
|
||||
PRINT " ";
|
||||
END IF
|
||||
NEXT b
|
||||
NEXT a
|
||||
WEND
|
||||
|
||||
END SUB
|
||||
|
||||
'StillWantsToPlay:
|
||||
' Determines if users want to play game again.
|
||||
FUNCTION StillWantsToPlay
|
||||
|
||||
COLOR colorTable(5), colorTable(6)
|
||||
Center 10, "ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ"
|
||||
Center 11, "Û G A M E O V E R Û"
|
||||
Center 12, "Û Û"
|
||||
Center 13, "Û Play Again? (Y/N) Û"
|
||||
Center 14, "ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ"
|
||||
|
||||
WHILE INKEY$ <> "": WEND
|
||||
DO
|
||||
kbd$ = UCASE$(INKEY$)
|
||||
LOOP UNTIL kbd$ = "Y" OR kbd$ = "N"
|
||||
|
||||
COLOR 15, colorTable(4)
|
||||
Center 10, " "
|
||||
Center 11, " "
|
||||
Center 12, " "
|
||||
Center 13, " "
|
||||
Center 14, " "
|
||||
|
||||
IF kbd$ = "Y" THEN
|
||||
StillWantsToPlay = TRUE
|
||||
ELSE
|
||||
StillWantsToPlay = FALSE
|
||||
COLOR 7, 0
|
||||
CLS
|
||||
END IF
|
||||
|
||||
END FUNCTION
|
||||
|
13
tests/qbasic_testcases/misc/pattern.bas
Normal file
13
tests/qbasic_testcases/misc/pattern.bas
Normal file
|
@ -0,0 +1,13 @@
|
|||
'patterns
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
1 SCREEN 13
|
||||
2 t% = RND * 345
|
||||
3 WAIT &H3DA, 8
|
||||
4 FOR i% = 0 TO 199
|
||||
5 FOR j% = 0 TO 319
|
||||
6 k% = ((k% + t% XOR j% XOR i%)) AND &HFF
|
||||
7 PSET (j%, i%), k%
|
||||
8 NEXT j%, i%
|
||||
9 IF LEN(INKEY$) THEN END ELSE GOTO 2
|
||||
|
BIN
tests/qbasic_testcases/misc/ps2battl.mid
Normal file
BIN
tests/qbasic_testcases/misc/ps2battl.mid
Normal file
Binary file not shown.
301
tests/qbasic_testcases/misc/rc-ent6.bas
Normal file
301
tests/qbasic_testcases/misc/rc-ent6.bas
Normal file
|
@ -0,0 +1,301 @@
|
|||
'DECLARE SUB raytrace ()
|
||||
'Antoni Gual raycaster
|
||||
'Modified from Entropy's an 36-lines entry for the Biskbart's
|
||||
'40-lines QB Raycaster Compo of fall-2001
|
||||
'
|
||||
'Added multikey handler
|
||||
'Step emulation
|
||||
'Added different textures, including clouds
|
||||
'Separe
|
||||
'with some of my ideas
|
||||
|
||||
'to do:
|
||||
' add screen buffer
|
||||
' optimize rendering loop
|
||||
' interpolate rays
|
||||
' shadowing
|
||||
' subpixel precision
|
||||
' make it a game???
|
||||
|
||||
'DECLARE SUB ffix ()
|
||||
|
||||
'ffix
|
||||
SCREEN 13
|
||||
|
||||
DIM map(9, 9) AS INTEGER 'the map
|
||||
DIM tex(31, 31, 4) AS INTEGER 'texture array
|
||||
DIM foff(15) AS INTEGER 'walk simulation vertical offset
|
||||
DIM kbd(128) AS INTEGER 'keyboard reader array
|
||||
DIM frames%
|
||||
DIM persplut(200) AS SINGLE 'vertical offsets for roof and floor
|
||||
DIM d1(319) AS INTEGER 'temporal arrays raycaster->renderer
|
||||
DIM d2(319) AS INTEGER
|
||||
DIM tx(319) AS INTEGER
|
||||
DIM tm(319) AS INTEGER
|
||||
DIM dx(319) AS SINGLE
|
||||
DIM dy(319) AS SINGLE
|
||||
|
||||
'read map,do fixed part of persp lut (sky is always in the infinite)
|
||||
FOR i% = 0 TO 99
|
||||
READ map(i% \ 10, i% MOD 10)
|
||||
persplut(i%) = 25590 / (i% - 100)
|
||||
NEXT
|
||||
|
||||
'make texture maps (should be read from file)
|
||||
FOR i% = 0 TO 31
|
||||
FOR j% = 0 TO 31
|
||||
tex(i%, j%, 0) = (i% XOR j%) 'xor walls
|
||||
i1% = i% - 16: j1% = j% - 16
|
||||
tex(i%, j%, 1) = SQR((i1% * i1%) + (j1% * j1%)) 'concentric ground tiles
|
||||
tex(i%, j%, 2) = 16 - SQR((i1% * i1%) + (j1% * j1%))
|
||||
NEXT j%, i%
|
||||
|
||||
'cloudy texture 1
|
||||
d1% = 64
|
||||
d% = 32
|
||||
tex(0, 0, 3) = 32
|
||||
WHILE d% > 1
|
||||
d2% = d% \ 2
|
||||
FOR i% = 0 TO 31 STEP d%
|
||||
FOR j% = 0 TO 31 STEP d%
|
||||
tex((i% + d2%) AND 31, j%, 3) = (tex(i%, j%, 3) + tex((i% + d%) AND 31, j%, 3) + (RND - .5) * d1%) / 2
|
||||
tex(i%, (j% + d2%) AND 31, 3) = (tex(i%, j%, 3) + tex(i%, (j% + d%) AND 31, 3) + (RND - .5) * d1%) / 2
|
||||
tex((i% + d2%) AND 31, (j% + d2%) AND 31, 3) = (tex(i%, j%, 3) + tex((i% + d%) AND 31, (j% + d%) AND 31, 3) + (RND - .5) * d1%) / 2
|
||||
NEXT j%, i%
|
||||
d1% = d1% / 2
|
||||
d% = d2%
|
||||
WEND
|
||||
|
||||
'cloudy texture for sky
|
||||
d1% = 64
|
||||
d% = 32
|
||||
tex(0, 0, 4) = 32
|
||||
WHILE d% > 1
|
||||
d2% = d% \ 2
|
||||
FOR i% = 0 TO 31 STEP d%
|
||||
FOR j% = 0 TO 31 STEP d%
|
||||
tex((i% + d2%) AND 31, j%, 4) = (tex(i%, j%, 4) + tex((i% + d%) AND 31, j%, 4) + (RND - .5) * d1%) / 2
|
||||
tex(i%, (j% + d2%) AND 31, 4) = (tex(i%, j%, 4) + tex(i%, (j% + d%) AND 31, 4) + (RND - .5) * d1%) / 2
|
||||
tex((i% + d2%) AND 31, (j% + d2%) AND 31, 4) = (tex(i%, j%, 4) + tex((i% + d%) AND 31, (j% + d%) AND 31, 4) + (RND - .5) * d1%) / 2
|
||||
NEXT j%, i%
|
||||
d1% = d1% / 2
|
||||
d% = d2%
|
||||
WEND
|
||||
|
||||
|
||||
'fill step-simulation vertical offset
|
||||
pioct! = 3.141592 / 8!
|
||||
FOR i% = 0 TO 15
|
||||
foff(i%) = ABS(COS(i% * pioct!) * 64)
|
||||
NEXT
|
||||
|
||||
|
||||
'set palette
|
||||
OUT &H3C8, 0
|
||||
'grey:walls
|
||||
FOR i% = 0 TO 63
|
||||
OUT &H3C9, i%: OUT &H3C9, i%: OUT &H3C9, i%
|
||||
NEXT
|
||||
'green:ground
|
||||
FOR i% = 0 TO 63
|
||||
OUT &H3C9, 0: OUT &H3C9, 63 - i%: OUT &H3C9, 0
|
||||
NEXT
|
||||
'blue:sky
|
||||
FOR i% = 0 TO 63
|
||||
OUT &H3C9, 63 - i% / 2: OUT &H3C9, 63 - i% / 2: OUT &H3C9, 63
|
||||
NEXT
|
||||
|
||||
|
||||
|
||||
'launch raytracer
|
||||
'erase key buffer and set num lock off
|
||||
DEF SEG = &H40: POKE &H1C, PEEK(&H1A): POKE &H17, PEEK(&H17) AND NOT 32
|
||||
|
||||
tim! = TIMER
|
||||
frames% = 0
|
||||
|
||||
|
||||
|
||||
|
||||
'SUB raytrace
|
||||
rtf = 2048
|
||||
rtl = .0001
|
||||
inf = 3000000
|
||||
incu = .05
|
||||
xpos = 1.5
|
||||
ypos = 1.5
|
||||
angle = 0
|
||||
ini% = 1
|
||||
'frames loop
|
||||
DO
|
||||
|
||||
WAIT &H3DA, 8
|
||||
WAIT &H3DA, 8, 8
|
||||
|
||||
frames% = frames% + 1
|
||||
|
||||
'keyboard input
|
||||
k% = INP(&H60):
|
||||
IF k% THEN
|
||||
kbd(k% AND 127) = -((k% AND 128) = 0)
|
||||
DEF SEG = &H40: POKE &H1C, PEEK(&H1A)
|
||||
IF kbd(1) THEN GOTO EXITDO1
|
||||
turn% = kbd(&H4D) - kbd(&H4B): kbd(&H4D) = 0: kbd(&H4B) = 0
|
||||
mov% = kbd(80) - kbd(72) + ini%
|
||||
END IF
|
||||
'a movement has happened, update and collision detect
|
||||
IF turn% OR mov% THEN
|
||||
angle = angle + turn% * .1
|
||||
xpos2 = mov% * COS(angle) * incu
|
||||
ypos2 = mov% * SIN(angle) * incu
|
||||
|
||||
'calculate walk offsets,and floor part of perspective
|
||||
f% = f% + mov%
|
||||
foff% = foff(f% AND 15)
|
||||
calc = 25600 - 32 * foff%
|
||||
FOR y% = 100 TO 199: persplut(y%) = calc / (y% - 99): NEXT
|
||||
|
||||
IF ini% THEN ini% = 0
|
||||
dxc = COS(angle) * incu
|
||||
dxs = SIN(angle) * incu / 160
|
||||
dyc = COS(angle) * incu / 160
|
||||
dys = SIN(angle) * incu
|
||||
'colision detector
|
||||
|
||||
IF map(INT(ypos - incu), INT(xpos - xpos2 - xpos2 - incu)) = 0 THEN
|
||||
IF map(INT(ypos - incu), INT(xpos - xpos2 - xpos2 + incu)) = 0 THEN
|
||||
IF map(INT(ypos + incu), INT(xpos - xpos2 - xpos2 - incu)) = 0 THEN
|
||||
IF map(INT(ypos + incu), INT(xpos - xpos2 - xpos2 + incu)) = 0 THEN
|
||||
xpos = xpos - xpos2
|
||||
xpos32 = xpos * 32
|
||||
xp1! = (xpos - INT(xpos)) * rtf
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
IF map(INT(ypos - ypos2 - ypos2 - incu), INT(xpos - incu)) = 0 THEN
|
||||
IF map(INT(ypos - ypos2 - ypos2 + incu), INT(xpos - incu)) = 0 THEN
|
||||
IF map(INT(ypos - ypos2 - ypos2 - incu), INT(xpos + incu)) = 0 THEN
|
||||
IF map(INT(ypos - ypos2 - ypos2 + incu), INT(xpos + incu)) = 0 THEN
|
||||
ypos = ypos - ypos2
|
||||
ypos32 = ypos * 32
|
||||
yp1! = (ypos - INT(ypos)) * rtf
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
||||
|
||||
'raycast loop
|
||||
FOR x% = 0 TO 319
|
||||
'INIT RAYCASTER
|
||||
dx = dxc - (x% - 160) * dxs
|
||||
dy = (x% - 160) * dyc + dys
|
||||
dx(x%) = dx
|
||||
dy(x%) = dy
|
||||
SELECT CASE dx
|
||||
CASE IS < -rtl
|
||||
nextxt = -xp1! / dx
|
||||
dxt = -rtf / dx
|
||||
CASE IS > rtl
|
||||
nextxt = (rtf - xp1!) / dx
|
||||
dxt = rtf / dx
|
||||
CASE ELSE
|
||||
nextxt = inf
|
||||
END SELECT
|
||||
SELECT CASE dy
|
||||
CASE IS < -rtl
|
||||
nextyt = -yp1! / dy
|
||||
dyt = -rtf / dy
|
||||
CASE IS > rtl
|
||||
nextyt = (rtf - yp1!) / dy
|
||||
dyt = rtf / dy
|
||||
CASE ELSE
|
||||
nextyt = inf
|
||||
END SELECT
|
||||
sdx% = SGN(dx): sdy% = SGN(dy)
|
||||
xm% = INT(xpos): ym% = INT(ypos)
|
||||
|
||||
'cast a ray and increase distance until a wall is hit
|
||||
DO
|
||||
IF nextxt < nextyt THEN
|
||||
|
||||
xm% = xm% + sdx%
|
||||
IF map(ym%, xm%) THEN ti = rtf / nextxt: GOTO exitdo2
|
||||
nextxt = nextxt + dxt
|
||||
ELSE
|
||||
'ny% = ny% + 1
|
||||
ym% = ym% + sdy%
|
||||
IF map(ym%, xm%) THEN ti = rtf / nextyt: GOTO exitdo2
|
||||
nextyt = nextyt + dyt
|
||||
END IF
|
||||
LOOP
|
||||
exitdo2:
|
||||
'Enter texture index, top, bottom into table for this direction
|
||||
|
||||
tm(x%) = map(ym%, xm%) MOD 5
|
||||
d1% = 99 - INT((800 + foff%) * ti)
|
||||
IF d1% > md1% THEN md1% = d1%
|
||||
d1(x%) = d1%
|
||||
d2% = 102 + INT((800 - foff%) * ti)
|
||||
d2(x%) = d2%
|
||||
IF d2% < md2% THEN md2% = d2%
|
||||
tx(x%) = ((xpos + ypos + (dx + dy) / ti) * 32) AND 31
|
||||
|
||||
NEXT x%
|
||||
END IF
|
||||
|
||||
'rendering loop (too many products and divisions)
|
||||
|
||||
DEF SEG = &HA000
|
||||
FOR x% = 0 TO 319
|
||||
d1% = d1(x%)
|
||||
d2% = d2(x%)
|
||||
tx% = tx(x%)
|
||||
d21% = d2% - d1%
|
||||
dx = dx(x%)
|
||||
dy = dy(x%)
|
||||
p& = x%
|
||||
mmap% = tm(x%)
|
||||
FOR y% = 0 TO 199
|
||||
pl = persplut(y%)
|
||||
SELECT CASE y%
|
||||
'sky
|
||||
CASE IS < d1%
|
||||
tt% = 128 + tex(dx * pl AND 31, dy * pl AND 31, 4)
|
||||
'wall
|
||||
CASE IS < d2%
|
||||
tt% = 10 + tex(32 * (y% - d1%) \ d21%, tx%, mmap%)
|
||||
'ground
|
||||
CASE ELSE
|
||||
tt% = 56 + tex((xpos32 + dx * pl) AND 31, (ypos32 + dy * pl) AND 31, 4)
|
||||
END SELECT
|
||||
POKE p&, tt%
|
||||
p& = p& + 320
|
||||
NEXT y%
|
||||
NEXT x%
|
||||
LOOP
|
||||
EXITDO1:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
COLOR 12
|
||||
LOCATE 1, 1: PRINT frames% / (TIMER - tim!); " fps"
|
||||
a$ = INPUT$(1)
|
||||
END
|
||||
|
||||
'map data
|
||||
DATA 7,8,7,8,7,8,7,8,7,8
|
||||
DATA 7,0,0,0,0,0,0,0,0,8
|
||||
DATA 8,0,9,1,0,2,10,2,0,7
|
||||
DATA 7,0,1,9,0,0,0,10,0,8
|
||||
DATA 8,0,0,0,0,0,0,0,0,7
|
||||
DATA 7,0,3,11,3,11,0,0,0,8
|
||||
DATA 8,0,11,0,0,3,0,0,0,7
|
||||
DATA 7,0,3,0,0,11,0,0,0,8
|
||||
DATA 8,0,0,0,0,0,0,0,0,7
|
||||
DATA 8,7,8,7,8,7,8,7,8,8
|
||||
|
1
tests/qbasic_testcases/misc/replicat.bas
Normal file
1
tests/qbasic_testcases/misc/replicat.bas
Normal file
|
@ -0,0 +1 @@
|
|||
P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="
|
113
tests/qbasic_testcases/misc/ripples.bas
Normal file
113
tests/qbasic_testcases/misc/ripples.bas
Normal file
|
@ -0,0 +1,113 @@
|
|||
CHDIR ".\programs\samples\misc"
|
||||
|
||||
DECLARE SUB ripples (waterheight%, dlay!, amplitude!, wavelength!)
|
||||
DECLARE FUNCTION LoadPcx% (PCX$)
|
||||
DECLARE SUB DELAY (x!)
|
||||
'----------------------------------------------------------------------------
|
||||
'RIPPLES, by Antoni Gual 26/1/2001 agual@eic.ictnet.es
|
||||
'Simulates water reflection in a SCREEN 13 image
|
||||
'----------------------------------------------------------------------------
|
||||
'Who said QBasic is obsolete?
|
||||
'This is a remake of the popular LAKE Java applet.
|
||||
'You can experiment with different images and different values of the
|
||||
'parameters passed to RIPPLES sub.
|
||||
'----------------------------------------------------------------------------
|
||||
'PCX Loader modified from Kurt Kuzba.
|
||||
'Timber Wolf came with PaintShopPro 5, I rescaned it to fit SCREEN13
|
||||
'----------------------------------------------------------------------------
|
||||
'WARNING!: PCX MUST be 256 colors and 320x 200.The loader does'nt check it!!
|
||||
'----------------------------------------------------------------------------
|
||||
'Use as you want, only give me credit.
|
||||
'E-mail me to tell me about!
|
||||
'----------------------------------------------------------------------------
|
||||
DEFINT A-Z
|
||||
SCREEN 13: CLS
|
||||
dummy = LoadPcx("twolf.pcx")
|
||||
IF dummy THEN PRINT "File twolf.pcx not Found!": END
|
||||
ripples 150, .1, 2, 1
|
||||
|
||||
SUB DELAY (x!)
|
||||
'Hope it will not freeze at midnight!
|
||||
T! = TIMER + x!
|
||||
DO: LOOP UNTIL TIMER > T! OR TIMER < x!
|
||||
END SUB
|
||||
|
||||
FUNCTION LoadPcx (PCX$)
|
||||
'LOADS A 320x200x256 PCX. Modified from Kurt Kuzba
|
||||
|
||||
bseg& = &HA000
|
||||
|
||||
|
||||
F = FREEFILE
|
||||
OPEN PCX$ FOR BINARY AS #F
|
||||
IF LOF(F) = 0 THEN CLOSE #F: KILL PCX$: LoadPcx = 1: EXIT FUNCTION
|
||||
|
||||
fin& = LOF(1) - 767: SEEK #F, fin&: p$ = INPUT$(768, 1)
|
||||
p% = 1: fin& = fin& - 1
|
||||
OUT &H3C8, 0: DEF SEG = VARSEG(p$)
|
||||
FOR T& = SADD(p$) TO SADD(p$) + 767: OUT &H3C9, PEEK(T&) \ 4: NEXT
|
||||
|
||||
|
||||
SEEK #F, 129: T& = BOFS&: RLE% = 0
|
||||
DO
|
||||
p$ = INPUT$(256, F): fpos& = SEEK(F): l% = LEN(p$)
|
||||
IF fpos& > fin& THEN l% = l% - (fpos& - fin&): done = 1
|
||||
FOR p& = SADD(p$) TO SADD(p$) + l% - 1
|
||||
DEF SEG = VARSEG(p$): dat% = PEEK(p&): DEF SEG = bseg&
|
||||
IF RLE% THEN
|
||||
FOR RLE% = RLE% TO 1 STEP -1:
|
||||
POKE T&, dat%: T& = T& + 1
|
||||
NEXT
|
||||
ELSE
|
||||
IF (dat% AND 192) = 192 THEN
|
||||
RLE% = dat% AND 63
|
||||
ELSE
|
||||
POKE T&, dat%: T& = T& + 1
|
||||
END IF
|
||||
END IF
|
||||
NEXT
|
||||
LOOP UNTIL done
|
||||
CLOSE F
|
||||
END FUNCTION
|
||||
|
||||
SUB ripples (waterheight, dlay!, amplitude!, wavelength!)
|
||||
'----------------------------------------------------------------------------
|
||||
'Ripples SUB, by Antoni Gual 26/1/2001 agual@eic.ictnet.es
|
||||
'Simulates water reflection in a SCREEN 13 image
|
||||
'----------------------------------------------------------------------------
|
||||
'PARAMETERS:
|
||||
'waterheight in pixels from top
|
||||
'dlay! delay between two recalcs in seconds
|
||||
'amplitude! amplitude of the distortion in pixels
|
||||
'wavelength! distance between two ripples
|
||||
'----------------------------------------------------------------------------
|
||||
|
||||
|
||||
'these are screen size constants, don't touch it!
|
||||
widh = 319
|
||||
height = 199
|
||||
|
||||
REDIM a%(162)
|
||||
DIM r%(0 TO 200)
|
||||
|
||||
'precalc a sinus table for speed
|
||||
FOR i! = 0 TO 200
|
||||
r(i!) = CINT(SIN(i! / wavelength!) * amplitude!)
|
||||
NEXT
|
||||
j = 0
|
||||
|
||||
'the loop!
|
||||
DO
|
||||
'it must be slowed down to look real!
|
||||
DELAY dlay!
|
||||
|
||||
FOR i = 1 TO height - waterheight
|
||||
temp = waterheight - i + r((j + i) MOD 200)
|
||||
GET (1, temp)-(widh, temp), a%()
|
||||
PUT (1, waterheight + i), a%(), PSET
|
||||
NEXT
|
||||
IF j = 200 THEN j = 0 ELSE j = j + 1
|
||||
LOOP UNTIL LEN(INKEY$)
|
||||
|
||||
END SUB
|
||||
|
11
tests/qbasic_testcases/misc/rot13.bas
Normal file
11
tests/qbasic_testcases/misc/rot13.bas
Normal file
|
@ -0,0 +1,11 @@
|
|||
'2007 mennonite
|
||||
'public domain
|
||||
z$="hello"
|
||||
for n = 1 TO len(z$)
|
||||
a$ = right$(left$(z$,n),1)
|
||||
b$ = a$
|
||||
c = asc(ucase$(a$))
|
||||
if c > 64 and c < 91 then b$ = chr$((c - 65 + 13) mod 26 + 65)
|
||||
if asc(a$) > 91 then b$ = lcase$(b$)
|
||||
print b$;
|
||||
next n
|
14
tests/qbasic_testcases/misc/rotozoom.bas
Normal file
14
tests/qbasic_testcases/misc/rotozoom.bas
Normal file
|
@ -0,0 +1,14 @@
|
|||
' OPTIMIZED :) rotozoomer in 9 lines by Antoni Gual
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
|
||||
1 SCREEN 13
|
||||
2 ANG = ANG + .08
|
||||
3 CS% = COS(ANG) * ABS(SIN(ANG)) * 128
|
||||
4 ss% = SIN(ANG) * ABS(SIN(ANG)) * 128
|
||||
5 FOR Y% = -100 TO 99
|
||||
6 FOR X% = -160 TO 159
|
||||
7 PSET (X% + 160, Y% + 100), (((X% * CS% - Y% * ss%) AND (Y% * CS% + X% * ss%)) \ 128)
|
||||
8 NEXT X%, Y%
|
||||
9 IF LEN(INKEY$) = 0 THEN 2
|
||||
|
229
tests/qbasic_testcases/misc/samples.txt
Normal file
229
tests/qbasic_testcases/misc/samples.txt
Normal file
|
@ -0,0 +1,229 @@
|
|||
The following sample programs are also in this folder but not listed below:
|
||||
nib64.bas,gor64.bas,frog.bas,3dexp2.bas,cabsmous.bas,shoot.bas,ripples.bas,carols.bas
|
||||
|
||||
3DBALLS.BAS ***
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: 3D balls
|
||||
Modifications: none
|
||||
|
||||
ACALC.BAS **
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: Analog calculator
|
||||
Modifications: none
|
||||
|
||||
AUDIO.BAS *****
|
||||
Coded by: Galleon
|
||||
Contributed by: Galleon
|
||||
Description: Helps you lean how QB64 Audio works to play .mp3, .wav, .mid, etc.
|
||||
Modifications: none
|
||||
|
||||
AKLABETH.BAS *****
|
||||
Coded by: Richard C Garriott
|
||||
Contributed by: Galleon
|
||||
Description: "Akalabeth: World of Doom" is the predecessor of the Ultima series of role playing games
|
||||
Modifications: i. CLEAR statement commented
|
||||
ii. "END"s instead of restarting to avoid problems associated with (i)
|
||||
|
||||
ASCIPONG.BAS ****
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: ASCII pong
|
||||
Modifications: none
|
||||
|
||||
CHESS.BAS *****
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: Chess, against a computer opponent with AI!
|
||||
Modifications: none
|
||||
|
||||
CUBEROT.BAS **
|
||||
Coded by: Entropy, Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: Rotating cube
|
||||
Modifications: none
|
||||
|
||||
DJSOK.BAS *****
|
||||
Coded by: David Joffe
|
||||
Contributed by: Galleon
|
||||
Description: Sokoban (push blocks to solve a puzzle)
|
||||
Data files: DJSOK.DAT
|
||||
Modifications: Changed path to DJSOK.DAT so it is .\programs\samples\DJSOK.DAT
|
||||
Changed CONSTants to DIM SHAREDs
|
||||
|
||||
FLRMP.BAS **
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: Floor mapper
|
||||
Modifications: none
|
||||
|
||||
FOREST.BAS ***
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: A forest scene with rippling reflecting water
|
||||
Modifications: none
|
||||
|
||||
FRAC1.BAS, FRAC2.BAS, FRAC3.BAS *
|
||||
Coded by: Qbguy?
|
||||
Contributed by: Qbguy
|
||||
Description: Various fractals
|
||||
Modifications: none
|
||||
|
||||
GUJERO.BAS ***
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: A 3D spiral tunnel effect
|
||||
Modifications: i. ffix and its declaration commented
|
||||
|
||||
INTRPRTR.BAS **
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: A BASIC interpreter inside a .BAS program. Very limited functionality, but well written. (A work in progress?)
|
||||
Modifications: none
|
||||
|
||||
KITE.BAS ****
|
||||
Coded by: Mennonite
|
||||
Contributed by: Mennonite
|
||||
Description: Displays a moving kite using ASCII graphics with the message QB64
|
||||
Modifications: none
|
||||
|
||||
LISSAJ.BAS **
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: Draws lines of different wavelengths to create patterns
|
||||
Modifications: none
|
||||
|
||||
MANDALA.BAS ***
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: Connects points around a circle to create patterns
|
||||
Modifications: none
|
||||
|
||||
MANDELB.BAS **
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: A mandelbrot fractal
|
||||
Modifications: i. ffix and its declaration commented
|
||||
|
||||
MATRIX.BAS **
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: Like the code as seen in the movie (too fast)
|
||||
Modifications: none
|
||||
|
||||
MCLOCK.BAS **
|
||||
Coded by: Folker Fritz
|
||||
Contributed by: Galleon
|
||||
Description: A graphical clock (digital and analog)
|
||||
Modifications: CONST changed to DIM SHARED
|
||||
|
||||
MESSAGE.BAS ****
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: A plays a musical secret code representing a line of text
|
||||
Modifications: none
|
||||
|
||||
MZUPD2.BAS ****
|
||||
Coded by: Steve M.
|
||||
Contributed by: Galleon
|
||||
Description: A graphical maze-adventure game
|
||||
Notes: Some graphics look like errors, but the same errors occur in QBASIC
|
||||
Modifications: Workarounds for CLEAR, CONST, variable names containing a .
|
||||
Timing changed (it ran too fast, even after changing the in-game speed)
|
||||
|
||||
PATTERN.BAS *
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: Strange patterns appear out of seemingly random data
|
||||
Modifications: none
|
||||
|
||||
RC-ENT6.BAS *****
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: Raycaster with textured walls, sky & floor using INP(&H60) for input
|
||||
Modifications: i. SUB raytrace integrated into main module
|
||||
ii. ffix and its declaration commented
|
||||
iii. Wait for vertical retrace added
|
||||
|
||||
REPLICAT.BAS ***
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: A one line program which prints itself, character for character, to the screen
|
||||
Modifications: none
|
||||
|
||||
ROT13.BAS ***
|
||||
Coded by: Mennonite
|
||||
Contributed by: Mennonite
|
||||
Description: Encrypts a line of text to make it harder to read
|
||||
Modifications: none
|
||||
|
||||
ROTOZOOM.BAS **
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: An pattern rotates while zooming in and out
|
||||
Modifications: none
|
||||
|
||||
SCRAMBLE.BAS **
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: A slide the square puzzle with some differences
|
||||
Modifications: None
|
||||
|
||||
SINECUBE.BAS ****
|
||||
Coded by: Mennonite
|
||||
Contributed by: Mennonite
|
||||
Description: 3D cube made out of little cubes using a special formula
|
||||
Modifications: none
|
||||
|
||||
SSAVER.BAS *
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: A screensaver which draws randow colored circles
|
||||
Modifications: none
|
||||
|
||||
STRFLD.BAS *
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: A starfield, like the old screen savers (too fast)
|
||||
Modifications: none
|
||||
|
||||
TEMPLE.BAS ****
|
||||
Coded by: John Belew
|
||||
Contributed by: Galleon
|
||||
Description: A text, grid based "dungeons/dragons-like" adventure
|
||||
Modifications: Workarounds for: DRAW, PLAY, DEF functions, KEY ..., CHAIN
|
||||
|
||||
TOWER.BAS ***
|
||||
Coded by: Qbguy
|
||||
Contributed by: Qbguy
|
||||
Description: Tower of Hanoi (stacking puzzle)
|
||||
Modifications: CONST changed to DIM SHARED
|
||||
|
||||
TWIRL2.BAS ***
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: Like seeing 100 flavours of ice cream being mixed together...
|
||||
Modifications: none
|
||||
|
||||
VORTEX.BAS *
|
||||
Coded by: Antoni Gual
|
||||
Contributed by: Galleon
|
||||
Description: A colorful black hole effect (too fast)
|
||||
Modifications: none
|
||||
|
||||
WUMPUS.BAS *****
|
||||
Coded by: Gregory Yob
|
||||
Contributed by: Qbguy
|
||||
Description: The well known BASIC game... "Hunt the Wumpus"
|
||||
Modifications: i. DEF FN statements recoded by Qbguy using a workaround
|
||||
|
||||
XWING.BAS ****
|
||||
Coded by: Michael Know Wausau Wi
|
||||
Contributed by: Galleon
|
||||
Description: Destroy Tie Fighters, Darth Vader and the Death Star in an Xwing (note: Some SOUND effects aren't handled correctly by QB64 yet)
|
||||
Modifications: i. DEFINT relocated for QBASIC compatibility
|
||||
ii. Workaround used to replace PLAY "P..." used for timing
|
||||
iii. Workaround used to replace DRAW "..." statements
|
||||
iv. Workaround used to replace ON KEY(...) statements
|
||||
v. Keyboard controls F1 & F2 changed to SPACEBAR and ENTER
|
117
tests/qbasic_testcases/misc/scramble.bas
Normal file
117
tests/qbasic_testcases/misc/scramble.bas
Normal file
|
@ -0,0 +1,117 @@
|
|||
DECLARE SUB SCRAMBLE ()
|
||||
DECLARE SUB GIVEUP ()
|
||||
DECLARE SUB UP ()
|
||||
DECLARE SUB DOWN ()
|
||||
DECLARE SUB ROTATE (ROW%)
|
||||
DEFINT A-Z
|
||||
DIM SHARED PUZZLE(0 TO 5, 0 TO 5)
|
||||
DIM COLORS(-1 TO 5)
|
||||
CLS
|
||||
FOR I = 0 TO 5
|
||||
READ COLORS(I)
|
||||
FOR J = 0 TO 5
|
||||
PUZZLE(I, J) = J
|
||||
NEXT
|
||||
NEXT
|
||||
DATA 8, 15, 12, 14, 10, 9
|
||||
PUZZLE(5, 5) = -1
|
||||
DO
|
||||
CLS
|
||||
FOR I = 0 TO 5
|
||||
PRINT I + 1;
|
||||
FOR J = 0 TO 5
|
||||
COLOR COLORS(PUZZLE(I, J))
|
||||
PRINT CHR$(219);
|
||||
NEXT
|
||||
COLOR 7: PRINT
|
||||
NEXT
|
||||
PRINT
|
||||
PRINT "Instructions:"
|
||||
PRINT STRING$(13, 196)
|
||||
PRINT " "; CHR$(254); " The object of the game is to restore the puzzle back to its initial state"
|
||||
PRINT SPACE$(3); "from a scrambled state."
|
||||
PRINT " "; CHR$(254); " To scramble the puzzle, press S."
|
||||
PRINT " "; CHR$(254); " To give up and reset the puzzle, type R."
|
||||
PRINT " "; CHR$(254); " To shift a row right, press the number of that row."
|
||||
PRINT " "; CHR$(254); " To move a tile up into the blank space, press the up arrow key."
|
||||
PRINT " "; CHR$(254); " To move a tile down into the blank space, press the down arrow key."
|
||||
N$ = ""
|
||||
WHILE N$ = ""
|
||||
N$ = INKEY$
|
||||
WEND
|
||||
SELECT CASE N$
|
||||
CASE "R", "r"
|
||||
CALL GIVEUP
|
||||
CASE "S", "s"
|
||||
CALL SCRAMBLE
|
||||
CASE "1"
|
||||
CALL ROTATE(0)
|
||||
CASE "2"
|
||||
CALL ROTATE(1)
|
||||
CASE "3"
|
||||
CALL ROTATE(2)
|
||||
CASE "4"
|
||||
CALL ROTATE(3)
|
||||
CASE "5"
|
||||
CALL ROTATE(4)
|
||||
CASE "6"
|
||||
CALL ROTATE(5)
|
||||
CASE CHR$(0) + CHR$(72)
|
||||
CALL UP
|
||||
CASE CHR$(0) + CHR$(80)
|
||||
CALL DOWN
|
||||
CASE CHR$(27)
|
||||
END
|
||||
END SELECT
|
||||
LOOP
|
||||
|
||||
SUB DOWN
|
||||
FOR I = 0 TO 5
|
||||
FOR J = 0 TO 5
|
||||
K = PUZZLE(I, J)
|
||||
IF K = -1 THEN GOTO 2
|
||||
NEXT
|
||||
NEXT
|
||||
2 IF I = 0 THEN EXIT SUB
|
||||
SWAP PUZZLE(I - 1, J), PUZZLE(I, J)
|
||||
END SUB
|
||||
|
||||
SUB GIVEUP
|
||||
FOR I = 0 TO 5
|
||||
FOR J = 0 TO 5
|
||||
PUZZLE(I, J) = J
|
||||
NEXT
|
||||
NEXT
|
||||
PUZZLE(5, 5) = -1
|
||||
END SUB
|
||||
|
||||
SUB ROTATE (ROW)
|
||||
FOR I = 1 TO 5
|
||||
SWAP PUZZLE(ROW, 0), PUZZLE(ROW, I)
|
||||
NEXT
|
||||
END SUB
|
||||
|
||||
SUB SCRAMBLE
|
||||
FOR I = 1 TO 1000
|
||||
J = INT(RND(1) * 8)
|
||||
SELECT CASE J
|
||||
CASE 0 TO 5
|
||||
CALL ROTATE(J)
|
||||
CASE 6
|
||||
CALL UP
|
||||
CASE 7
|
||||
CALL DOWN
|
||||
END SELECT
|
||||
NEXT
|
||||
END SUB
|
||||
|
||||
SUB UP
|
||||
FOR I = 0 TO 5
|
||||
FOR J = 0 TO 5
|
||||
K = PUZZLE(I, J)
|
||||
IF K = -1 THEN GOTO 1
|
||||
NEXT
|
||||
NEXT
|
||||
1 IF I = 5 THEN EXIT SUB
|
||||
SWAP PUZZLE(I + 1, J), PUZZLE(I, J)
|
||||
END SUB
|
1
tests/qbasic_testcases/misc/ship1.raw
Normal file
1
tests/qbasic_testcases/misc/ship1.raw
Normal file
|
@ -0,0 +1 @@
|
|||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><11><><EFBFBD>p)p<><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14><><EFBFBD><EFBFBD><EFBFBD><17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><13><16><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><15><13><><EFBFBD><EFBFBD><EFBFBD><16><11><13><><EFBFBD><EFBFBD><EFBFBD><13><><EFBFBD><EFBFBD><15><><EFBFBD><EFBFBD><15><><EFBFBD><13><><1B><><14><><15><14><><1B><><EFBFBD><16><><EFBFBD><14><><1B><><EFBFBD><15><><EFBFBD><14><><1A><><EFBFBD><04><13>p<EFBFBD><70><EFBFBD><14><><19><><EFBFBD><EFBFBD>p<EFBFBD><16>p<EFBFBD><70><EFBFBD><EFBFBD><16><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><15><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><17><><EFBFBD><18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><17><13><1A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><17><18><1A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><19><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><16><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
276
tests/qbasic_testcases/misc/shoot.bas
Normal file
276
tests/qbasic_testcases/misc/shoot.bas
Normal file
|
@ -0,0 +1,276 @@
|
|||
CHDIR ".\programs\samples\misc"
|
||||
|
||||
DEFLNG A-Z
|
||||
SCREEN 13, , 1, 0
|
||||
|
||||
_SNDPLAYFILE "ps2battl.mid"
|
||||
shootsound = _SNDOPEN("fireball.wav", "SYNC")
|
||||
|
||||
'index,filename(.RAW),width,height
|
||||
DATA 1,ship1,21,27
|
||||
DATA 2,shot1,10,10
|
||||
DATA 3,evil1,93,80
|
||||
DATA 4,land1,320,56
|
||||
DATA 5,boom1,65,75
|
||||
|
||||
DIM SHARED spritedata(1000000) AS _UNSIGNED _BYTE
|
||||
DIM SHARED freespritedata AS LONG
|
||||
DIM SHARED freesprite AS LONG
|
||||
freesprite = 1
|
||||
|
||||
TYPE spritetype
|
||||
x AS INTEGER
|
||||
y AS INTEGER
|
||||
index AS LONG 'an index in the spritedata() array
|
||||
index2 AS LONG 'optional secondary index
|
||||
halfx AS INTEGER
|
||||
halfy AS INTEGER
|
||||
END TYPE
|
||||
DIM SHARED s(1 TO 1000) AS spritetype
|
||||
|
||||
'load sprites
|
||||
FOR i = 1 TO 5
|
||||
b$ = " "
|
||||
READ n
|
||||
READ f$: f$ = f$ + ".raw"
|
||||
READ x, y
|
||||
OPEN f$ FOR BINARY AS #1
|
||||
IF LOF(1) <> x * y THEN SCREEN 0: PRINT "Error loading " + f$: END
|
||||
FOR y2 = y - 1 TO 0 STEP -1
|
||||
FOR x2 = 0 TO x - 1
|
||||
GET #1, , b$
|
||||
PSET (x2, y2), ASC(b$)
|
||||
NEXT
|
||||
NEXT
|
||||
CLOSE #1
|
||||
GET (0, 0)-(x - 1, y - 1), spritedata(freespritedata)
|
||||
s(freesprite).index = freespritedata
|
||||
freespritedata = freespritedata + x * y + 4
|
||||
'create shadow
|
||||
FOR y2 = y - 1 TO 0 STEP -1
|
||||
FOR x2 = 0 TO x - 1
|
||||
IF POINT(x2, y2) <> 254 THEN PSET (x2, y2), 18
|
||||
NEXT
|
||||
NEXT
|
||||
GET (0, 0)-(x - 1, y - 1), spritedata(freespritedata)
|
||||
s(freesprite).index2 = freespritedata
|
||||
freespritedata = freespritedata + x * y + 4
|
||||
s(freesprite).x = x: s(freesprite).y = y
|
||||
s(freesprite).halfx = x \ 2: s(freesprite).halfy = y \ 2
|
||||
freesprite = freesprite + 1
|
||||
NEXT
|
||||
|
||||
TYPE object
|
||||
active AS INTEGER
|
||||
x AS INTEGER
|
||||
y AS INTEGER
|
||||
z AS INTEGER 'height
|
||||
mx AS INTEGER
|
||||
my AS INTEGER
|
||||
sprite AS INTEGER
|
||||
END TYPE
|
||||
|
||||
'create objects
|
||||
DIM o(1 TO 1000) AS object 'all game objects
|
||||
DIM SHARED lastobject AS INTEGER
|
||||
lastobject = 1000
|
||||
|
||||
'create player
|
||||
i = newobject(o())
|
||||
o(i).sprite = 1
|
||||
o(i).z = 50
|
||||
o(i).active = 20
|
||||
player = i
|
||||
|
||||
_MOUSEHIDE
|
||||
|
||||
'gameloop
|
||||
DO
|
||||
|
||||
DO: LOOP WHILE _MOUSEINPUT 'read all available mouse messages until current message
|
||||
|
||||
'set player's position
|
||||
o(player).x = _MOUSEX: o(player).y = _MOUSEY
|
||||
|
||||
'draw land
|
||||
landy = (landy + 1) MOD 56
|
||||
FOR i = -1 TO 4
|
||||
PUT (0, i * 56 + landy), spritedata(s(4).index), _CLIP PSET, 254
|
||||
NEXT
|
||||
|
||||
'draw enemy shadows
|
||||
FOR i = 1 TO lastobject
|
||||
IF o(i).sprite = 3 THEN displayshadow o(i)
|
||||
NEXT
|
||||
|
||||
'draw player's shadow
|
||||
displayshadow o(player)
|
||||
|
||||
'draw enemies
|
||||
FOR i = 1 TO lastobject
|
||||
IF o(i).sprite = 3 THEN
|
||||
display o(i)
|
||||
move o(i)
|
||||
IF o(i).y - s(o(i).sprite).halfy > 200 THEN o(i).y = -1000
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
'draw bullets
|
||||
FOR i = 1 TO lastobject
|
||||
IF o(i).sprite = 2 THEN
|
||||
display o(i)
|
||||
move o(i)
|
||||
IF offscreen(o(i)) THEN freeobject o(i)
|
||||
xshift = INT(RND * 3) - 1
|
||||
o(i).mx = o(i).mx + xshift
|
||||
o(i).my = o(i).my - 1
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
'draw player
|
||||
display o(player)
|
||||
|
||||
'draw explosion(s)
|
||||
FOR i = 1 TO lastobject
|
||||
IF o(i).sprite = 5 THEN
|
||||
FOR i2 = 1 TO o(i).active
|
||||
rad = i2 * 5: halfrad = rad \ 2
|
||||
dx = RND * rad - halfrad: dy = RND * rad - halfrad
|
||||
displayat o(i).x + dx, o(i).y + dy, o(i)
|
||||
NEXT
|
||||
move o(i)
|
||||
o(i).active = o(i).active - 1
|
||||
IF o(i).active = 0 THEN freeobject o(i)
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
'hp bar
|
||||
x = 60
|
||||
y = 185
|
||||
LINE (x - 1, y)-STEP(20 * 10 + 2, 5), 2, B
|
||||
LINE (x, y - 1)-STEP(20 * 10, 5 + 2), 2, B
|
||||
LINE (x, y)-STEP(20 * 10, 5), 40, BF
|
||||
LINE (x, y)-STEP(o(player).active * 10, 5), 47, BF
|
||||
|
||||
PCOPY 1, 0
|
||||
|
||||
'shoot?
|
||||
IF _MOUSEBUTTON(1) THEN
|
||||
i = newobject(o())
|
||||
o(i).sprite = 2
|
||||
o(i).x = o(player).x
|
||||
o(i).y = o(player).y - s(o(player).sprite).halfy
|
||||
o(i).my = -1
|
||||
_SNDPLAYCOPY shootsound
|
||||
END IF
|
||||
|
||||
'bullet->enemy collision
|
||||
FOR i = 1 TO lastobject
|
||||
IF o(i).sprite = 2 THEN 'bullet
|
||||
FOR i2 = 1 TO lastobject
|
||||
IF o(i2).sprite = 3 THEN 'enemy
|
||||
IF collision(o(i), o(i2)) THEN
|
||||
_SNDPLAYCOPY shootsound
|
||||
i3 = newobject(o())
|
||||
o(i3).sprite = 5
|
||||
o(i3).my = o(i2).my \ 2 + 1
|
||||
IF o(i2).active > 1 THEN 'hit (small explosion)
|
||||
o(i2).active = o(i2).active - 1
|
||||
o(i3).x = o(i).x
|
||||
o(i3).y = o(i).y
|
||||
ELSE 'destroyed (large explosion)
|
||||
o(i3).x = o(i2).x
|
||||
o(i3).y = o(i2).y
|
||||
o(i3).active = 15
|
||||
freeobject o(i2) 'enemy
|
||||
END IF
|
||||
freeobject o(i) 'bullet
|
||||
EXIT FOR
|
||||
END IF 'collision
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
'ship->enemy collision
|
||||
i = player
|
||||
FOR i2 = 1 TO lastobject
|
||||
IF o(i2).sprite = 3 THEN 'enemy
|
||||
IF collision(o(i), o(i2)) THEN
|
||||
o(i).active = o(i).active - 1
|
||||
IF o(i).active = 0 THEN END
|
||||
EXIT FOR
|
||||
END IF 'collision
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
'add new enemy?
|
||||
addenemy = addenemy + 1
|
||||
IF addenemy = 50 THEN
|
||||
addenemy = 0
|
||||
i = newobject(o())
|
||||
o(i).sprite = 3
|
||||
o(i).x = RND * 320
|
||||
o(i).y = RND * -1000 - s(o(i).sprite).halfy
|
||||
o(i).my = 3 + RND * 6
|
||||
o(i).z = 25 + o(i).my * 8
|
||||
o(i).active = 15 'hp
|
||||
END IF
|
||||
|
||||
'speed limit main loop to 18.2 frames per second
|
||||
DO: nt! = TIMER: LOOP WHILE nt! = lt!
|
||||
lt! = nt!
|
||||
|
||||
LOOP
|
||||
'end main loop
|
||||
|
||||
SUB move (o AS object)
|
||||
o.x = o.x + o.mx
|
||||
o.y = o.y + o.my
|
||||
END SUB
|
||||
|
||||
SUB display (o AS object)
|
||||
PUT (o.x - s(o.sprite).halfx, o.y - s(o.sprite).halfy), spritedata(s(o.sprite).index), _CLIP PSET, 254
|
||||
END SUB
|
||||
|
||||
SUB displayat (x AS INTEGER, y AS INTEGER, o AS object)
|
||||
PUT (x - s(o.sprite).halfx, y - s(o.sprite).halfy), spritedata(s(o.sprite).index), _CLIP PSET, 254
|
||||
END SUB
|
||||
|
||||
|
||||
SUB displayshadow (o AS object)
|
||||
PUT (o.x - s(o.sprite).halfx, o.y - s(o.sprite).halfy + o.z), spritedata(s(o.sprite).index2), _CLIP PSET, 254
|
||||
END SUB
|
||||
|
||||
FUNCTION newobject (o() AS object)
|
||||
FOR i = 1 TO lastobject
|
||||
IF o(i).active = 0 THEN
|
||||
o(i).active = 1
|
||||
o(i).mx = 0: o(i).my = 0
|
||||
o(i).z = 0
|
||||
newobject = i
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
NEXT
|
||||
SCREEN 0: PRINT "No more free objects available!": END
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION offscreen (o AS object)
|
||||
IF o.x + s(o.sprite).halfx < 0 THEN offscreen = 1: EXIT FUNCTION
|
||||
IF o.x - s(o.sprite).halfx > 319 THEN offscreen = 1: EXIT FUNCTION
|
||||
IF o.y + s(o.sprite).halfy < 0 THEN offscreen = 1: EXIT FUNCTION
|
||||
IF o.y - s(o.sprite).halfy > 199 THEN offscreen = 1: EXIT FUNCTION
|
||||
END FUNCTION
|
||||
|
||||
SUB freeobject (o AS object)
|
||||
o.active = 0
|
||||
o.sprite = 0
|
||||
END SUB
|
||||
|
||||
FUNCTION collision (o1 AS object, o2 AS object)
|
||||
IF o1.y + s(o1.sprite).halfy < o2.y - s(o2.sprite).halfy THEN EXIT FUNCTION
|
||||
IF o2.y + s(o2.sprite).halfy < o1.y - s(o1.sprite).halfy THEN EXIT FUNCTION
|
||||
IF o1.x + s(o1.sprite).halfx < o2.x - s(o2.sprite).halfx THEN EXIT FUNCTION
|
||||
IF o2.x + s(o2.sprite).halfx < o1.x - s(o1.sprite).halfx THEN EXIT FUNCTION
|
||||
collision = 1
|
||||
END FUNCTION
|
1
tests/qbasic_testcases/misc/shot1.raw
Normal file
1
tests/qbasic_testcases/misc/shot1.raw
Normal file
|
@ -0,0 +1 @@
|
|||
ク<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>クpク<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>クppク<70><EFBDB8><EFBFBD><EFBFBD>クp*pククp*)+*pp*+))+D**D+)+D**D+p)+DD+)p<>p)+DD+)p<><70><EFBFBD>p))p<><70>
|
50
tests/qbasic_testcases/misc/sinecube.bas
Normal file
50
tests/qbasic_testcases/misc/sinecube.bas
Normal file
|
@ -0,0 +1,50 @@
|
|||
'sinecube 2006 mennonite
|
||||
'public domain
|
||||
|
||||
DIM blox(40, 40, 40) AS INTEGER
|
||||
|
||||
SCREEN 12: LINE (0, 0)-(639, 479), , B
|
||||
|
||||
l = 8
|
||||
|
||||
B$ = B$ + "00000000..."
|
||||
B$ = B$ + "llnnnnnnl.."
|
||||
B$ = B$ + "l8lnnnnnnl."
|
||||
B$ = B$ + "l88llllllll"
|
||||
B$ = B$ + "l88l000000l"
|
||||
B$ = B$ + "l88l000000l"
|
||||
B$ = B$ + "l88l000000l"
|
||||
B$ = B$ + "l88l000000l"
|
||||
B$ = B$ + ".l8l000000l"
|
||||
B$ = B$ + "..ll000000l"
|
||||
B$ = B$ + "...llllllll"
|
||||
|
||||
blox(2, 3, 32) = 1
|
||||
|
||||
FOR l = 8 * 32 TO 1 STEP -8
|
||||
|
||||
FOR y = 4 TO 4 * 32 STEP 4
|
||||
FOR x = 8 * 32 TO 1 STEP -8
|
||||
|
||||
mm = SIN(x * y * l * 3.14): if mm<0 then mm=-1 else if mm>0 then mm=1
|
||||
IF blox(x / 8, y / 4, l / 8) = mm + 1 THEN
|
||||
FOR by = 1 TO 11
|
||||
FOR bx = 1 TO 11
|
||||
IF right$(left$(b$,(by - 1) * 11 + bx),1) <> "." THEN
|
||||
z = 11
|
||||
PSET (x + bx - 1 + y - 3, by - 1 + y + l + 4), ASC(right$(left$(b$,(by - 1) * 11 + bx),1)) MOD 16 + (y MOD 2)
|
||||
END IF
|
||||
|
||||
NEXT bx
|
||||
NEXT by
|
||||
|
||||
END IF
|
||||
IF INKEY$ = CHR$(27) THEN END
|
||||
|
||||
NEXT x
|
||||
|
||||
t = TIMER: DO: LOOP UNTIL t <> TIMER
|
||||
|
||||
NEXT y
|
||||
|
||||
NEXT l
|
14
tests/qbasic_testcases/misc/ssaver.bas
Normal file
14
tests/qbasic_testcases/misc/ssaver.bas
Normal file
|
@ -0,0 +1,14 @@
|
|||
REM THIS PROGRAM IS IN T3H PUBLIC DOMAIN
|
||||
|
||||
SCREEN 12
|
||||
LINE (0, 0)-(640, 480), 15, BF
|
||||
DO
|
||||
X = INT(RND(1) * 640)
|
||||
Y = INT(RND(1) * 480)
|
||||
Z = INT(RND(1) * 50) + 10
|
||||
COLOUR = INT(RND(1) * 14) + 1
|
||||
COLOR COLOUR
|
||||
CIRCLE (X, Y), Z, COLOUR
|
||||
PAINT (X, Y), COLOUR
|
||||
IF INKEY$ = CHR$(27) THEN EXIT DO
|
||||
LOOP
|
13
tests/qbasic_testcases/misc/strfld.bas
Normal file
13
tests/qbasic_testcases/misc/strfld.bas
Normal file
|
@ -0,0 +1,13 @@
|
|||
'Starfield by Antoni gual
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
|
||||
1 SCREEN 13
|
||||
2 a$ = STRING$(400 * 6, CHR$(0))
|
||||
3 IF CVI(MID$(a$, j + 5, 2)) = 0 THEN MID$(a$, j + 1, 6) = MKI$(RND * 20000 - 10000) + MKI$(RND * 20000 - 10000) + MKI$(100 * RND + 1)
|
||||
4 PSET (160 + CVI(MID$(a$, j + 1, 2)) / CVI(MID$(a$, j + 5, 2)), 100 + CVI(MID$(a$, j + 3, 2)) / CVI(MID$(a$, j + 5, 2))), 0
|
||||
5 MID$(a$, j + 5, 2) = MKI$(CVI(MID$(a$, j + 5, 2)) - 1)
|
||||
6 IF CVI(MID$(a$, j + 5, 2)) > 0 THEN PSET (160 + CVI(MID$(a$, j + 1, 2)) / CVI(MID$(a$, j + 5, 2)), 100 + CVI(MID$(a$, j + 3, 2)) / CVI(MID$(a$, j + 5, 2))), 32 - CVI(MID$(a$, j + 5, 2)) \ 8
|
||||
7 j = (j + 6) MOD (LEN(a$))
|
||||
8 IF LEN(INKEY$) = 0 THEN 3
|
||||
|
1522
tests/qbasic_testcases/misc/temple.bas
Normal file
1522
tests/qbasic_testcases/misc/temple.bas
Normal file
File diff suppressed because it is too large
Load diff
159
tests/qbasic_testcases/misc/tower.bas
Normal file
159
tests/qbasic_testcases/misc/tower.bas
Normal file
|
@ -0,0 +1,159 @@
|
|||
DECLARE SUB INSTRUCT ()
|
||||
DECLARE SUB AUTO ()
|
||||
DECLARE SUB PLAYGAME ()
|
||||
DECLARE SUB MOVEPILE (N%, START%, FINISH%)
|
||||
DECLARE SUB MOVEDISC (START%, FINISH%)
|
||||
DECLARE SUB SHOWDISCS ()
|
||||
DEFINT A-Z
|
||||
|
||||
'CONST NUMDISCS = 8 ' alter this line to change number of discs
|
||||
DIM SHARED NUMDISCS
|
||||
NUMDISCS = 8
|
||||
|
||||
DIM SHARED TOWERS(0 TO 2, 1 TO NUMDISCS), TOP(0 TO 2), COLORS(1 TO NUMDISCS), NUMMOVES AS LONG
|
||||
CLS
|
||||
TOP(0) = NUMDISCS: TOP(1) = 0: TOP(2) = 0
|
||||
FOR I = 1 TO NUMDISCS
|
||||
TOWERS(0, I) = NUMDISCS - I + 1
|
||||
READ COLORS(I)
|
||||
NEXT
|
||||
DATA 6, 9, 4, 10, 11, 12, 13, 14
|
||||
DATA 6, 9, 4, 10, 11, 12, 13, 14
|
||||
LOCATE 1, 26
|
||||
PRINT CHR$(218); STRING$(14, CHR$(196)); CHR$(191)
|
||||
LOCATE 2, 26
|
||||
PRINT CHR$(179); "TOWER OF HANOI"; CHR$(179)
|
||||
LOCATE 3, 26
|
||||
PRINT CHR$(192); STRING$(14, CHR$(196)); CHR$(217)
|
||||
PRINT STRING$(80, CHR$(196))
|
||||
PRINT
|
||||
PRINT "1: AUTO"
|
||||
PRINT "2: HUMAN"
|
||||
PRINT STRING$(20, CHR$(196))
|
||||
WHILE CHOICE <> 1 AND CHOICE <> 2
|
||||
INPUT "CHOOSE ONE: ", CHOICE
|
||||
WEND
|
||||
IF CHOICE = 1 THEN CALL AUTO ELSE CALL PLAYGAME
|
||||
|
||||
SUB AUTO
|
||||
CALL SHOWDISCS
|
||||
CALL MOVEPILE(NUMDISCS, 0, 2)
|
||||
END SUB
|
||||
|
||||
SUB INSTRUCT
|
||||
PRINT "The TOWER OF HANOI is a mathematical game or puzzle. It consists"
|
||||
PRINT "of three pegs and a number of discs which can slide onto any peg."
|
||||
PRINT "The puzzle starts with the discs stacked in order of size on one peg."
|
||||
PRINT
|
||||
PRINT "The object of the game is to move the entire stack onto another peg,"
|
||||
PRINT "obeying the following rules:"
|
||||
PRINT TAB(2); CHR$(248); " Only one disc may be moved at a time."
|
||||
PRINT TAB(2); CHR$(248); " Each move consists of taking the upper disc from"
|
||||
PRINT TAB(4); "one peg and sliding it onto another peg, on top of any discs"
|
||||
PRINT TAB(4); "that may already be on that peg."
|
||||
PRINT TAB(2); CHR$(248); " No disc may be placed on top of another disc."
|
||||
PRINT "PRESS ANY KEY TO CONTINUE..."
|
||||
NULL$ = INPUT$(1)
|
||||
END SUB
|
||||
|
||||
SUB MOVEDISC (START, FINISH)
|
||||
DIM T AS SINGLE
|
||||
TOWERS(FINISH, TOP(FINISH) + 1) = TOWERS(START, TOP(START))
|
||||
TOP(FINISH) = TOP(FINISH) + 1
|
||||
TOWERS(START, TOP(START)) = 0
|
||||
TOP(START) = TOP(START) - 1
|
||||
NUMMOVES = NUMMOVES + 1
|
||||
CALL SHOWDISCS
|
||||
T = TIMER
|
||||
WHILE TIMER - T < .2:
|
||||
IF INKEY$ = CHR$(27) THEN END
|
||||
WEND
|
||||
END SUB
|
||||
|
||||
SUB MOVEPILE (N, START, FINISH)
|
||||
IF N > 1 THEN CALL MOVEPILE(N - 1, START, 3 - START - FINISH)
|
||||
CALL MOVEDISC(START, FINISH)
|
||||
IF N > 1 THEN CALL MOVEPILE(N - 1, 3 - START - FINISH, FINISH)
|
||||
END SUB
|
||||
|
||||
SUB PLAYGAME
|
||||
DO
|
||||
INPUT "WOULD YOU LIKE INSTRUCTIONS"; NULL$
|
||||
NULL$ = UCASE$(LEFT$(LTRIM$(NULL$), 1))
|
||||
IF NULL$ = "Y" THEN CALL INSTRUCT: EXIT DO
|
||||
IF NULL$ = "N" THEN EXIT DO
|
||||
LOOP
|
||||
CALL SHOWDISCS
|
||||
DO
|
||||
LOCATE 1, 1
|
||||
COLOR 7
|
||||
PRINT "TYPE NUMBER OF START PEG FOLLOWED BY NUMBER OF END PEG"
|
||||
PRINT "LEFT = 1", "MIDDLE = 2", "RIGHT=3"
|
||||
DO
|
||||
KEY$ = INKEY$
|
||||
SELECT CASE KEY$
|
||||
CASE CHR$(27)
|
||||
END
|
||||
CASE "1"
|
||||
START = 0
|
||||
EXIT DO
|
||||
CASE "2"
|
||||
START = 1
|
||||
EXIT DO
|
||||
CASE "3"
|
||||
START = 2
|
||||
EXIT DO
|
||||
END SELECT
|
||||
LOOP
|
||||
DO
|
||||
KEY$ = INKEY$
|
||||
SELECT CASE KEY$
|
||||
CASE CHR$(27)
|
||||
END
|
||||
CASE "1"
|
||||
FINISH = 0
|
||||
EXIT DO
|
||||
CASE "2"
|
||||
FINISH = 1
|
||||
EXIT DO
|
||||
CASE "3"
|
||||
FINISH = 2
|
||||
EXIT DO
|
||||
END SELECT
|
||||
LOOP
|
||||
IF TOP(START) = 0 THEN PRINT "There are no discs on that peg.": GOTO 1
|
||||
IF START = FINISH THEN PRINT "The start peg is the same as the end peg.": GOTO 1
|
||||
IF TOP(FINISH) > 0 THEN
|
||||
IF TOWERS(START, TOP(START)) > TOWERS(FINISH, TOP(FINISH)) THEN PRINT "You may not put a larger disc on top of a smaller disc.": GOTO 1
|
||||
END IF
|
||||
CALL MOVEDISC(START, FINISH)
|
||||
IF TOP(0) = 0 AND TOP(1) = 0 THEN EXIT DO
|
||||
IF TOP(0) = 0 AND TOP(2) = 0 THEN EXIT DO
|
||||
1 LOOP
|
||||
END SUB
|
||||
|
||||
SUB SHOWDISCS
|
||||
CLS
|
||||
LOCATE 1, 60: PRINT "MOVES: "; NUMMOVES
|
||||
LOCATE 25, 1
|
||||
PRINT STRING$(80, CHR$(196));
|
||||
FOR I = 1 TO TOP(0)
|
||||
LOCATE 25 - I, I + 1
|
||||
X = TOWERS(0, I)
|
||||
IF X = 0 THEN EXIT FOR
|
||||
COLOR COLORS(X): PRINT STRING$(X * 2, CHR$(219));
|
||||
NEXT
|
||||
FOR I = 1 TO TOP(1)
|
||||
LOCATE 25 - I, I + NUMDISCS * 3
|
||||
X = TOWERS(1, I)
|
||||
IF X = 0 THEN EXIT FOR
|
||||
COLOR COLORS(X): PRINT STRING$(X * 2, CHR$(219));
|
||||
NEXT
|
||||
FOR I = 1 TO TOP(2)
|
||||
LOCATE 25 - I, I + NUMDISCS * 6
|
||||
X = TOWERS(2, I)
|
||||
IF X = 0 THEN EXIT FOR
|
||||
COLOR COLORS(X): PRINT STRING$(X * 2, CHR$(219));
|
||||
NEXT
|
||||
|
||||
END SUB
|
15
tests/qbasic_testcases/misc/twirl2.bas
Normal file
15
tests/qbasic_testcases/misc/twirl2.bas
Normal file
|
@ -0,0 +1,15 @@
|
|||
'Twirl by Antoni Gual, from an idea by Steve Nunnaly
|
||||
'for Rel's 9 LINER contest at QBASICNEWS.COM 1/2003
|
||||
'------------------------------------------------------------------------
|
||||
|
||||
1 IF i THEN CIRCLE (160, 100), i, (i MOD 16) + 32, , , .8 ELSE SCREEN 13
|
||||
2 i = i + 1
|
||||
3 IF i < 200 THEN GOTO 1 ELSE DIM b2%(5000)
|
||||
4 w = (w + .3)
|
||||
5 xmid = 140 + SIN(7 * w / 1000) * 110
|
||||
6 ymid = 80 + SIN(11 * w / 1000) * 59
|
||||
7 GET ((xmid - (SIN(w) * 28)), (ymid - (COS(w) * 20)))-((xmid - (SIN(w) * 28)) + 40, (ymid - (COS(w) * 20)) + 40), b2%
|
||||
8 PUT ((xmid - (SIN(w - .04) * 27.16)), (ymid - (COS(w - .04) * 19.4))), b2%, PSET
|
||||
9 IF LEN(INKEY$) = 0 THEN GOTO 4
|
||||
|
||||
|
BIN
tests/qbasic_testcases/misc/twolf.pcx
Normal file
BIN
tests/qbasic_testcases/misc/twolf.pcx
Normal file
Binary file not shown.
13
tests/qbasic_testcases/misc/vortex.bas
Normal file
13
tests/qbasic_testcases/misc/vortex.bas
Normal file
|
@ -0,0 +1,13 @@
|
|||
' Vortex Antoni Gual 2003
|
||||
' for Rel's 9 liners contest at QBASICNEWS.COM
|
||||
'------------------------------------------------------------------------
|
||||
1 SCREEN 13
|
||||
2 PALETTE LEN(a$) / 3, 0
|
||||
3 a$ = a$ + CHR$(32 - 31 * SIN((LEN(a$) - 60 * ((LEN(a$) MOD 3) = 2) + 60 * ((LEN(a$) MOD 3) = 1)) * 3.14151693# / 128))
|
||||
4 CIRCLE (160, 290 - LEN(a$) ^ .8), LEN(a$) / 2.8, LEN(a$) \ 3, , , .5
|
||||
5 CIRCLE (160, 290 - LEN(a$) ^ .8 + 1), LEN(a$) / 2.8, LEN(a$) \ 3, , , .5
|
||||
6 IF LEN(a$) < 256 * 3 THEN 2 ELSE OUT &H3C8, 0
|
||||
7 J = (J + 1) MOD (LEN(a$) - 3)
|
||||
8 OUT &H3C9, ASC(MID$(a$, J + 1, 1))
|
||||
9 IF LEN(INKEY$) = 0 THEN 7
|
||||
|
229
tests/qbasic_testcases/misc/wumpus.bas
Normal file
229
tests/qbasic_testcases/misc/wumpus.bas
Normal file
|
@ -0,0 +1,229 @@
|
|||
REM *** HUNT THE WUMPUS **
|
||||
DIM p(5)
|
||||
PRINT "INSTRUCTIONS (Y-N)";
|
||||
INPUT i$
|
||||
i$ = UCASE$(i$)
|
||||
IF (i$ = "Y") OR (i$ = "YES") THEN GOSUB 375
|
||||
REM *** SET UP CAVE (DODECAHEDRAL NODE LIST) ***
|
||||
DIM s(20, 3)
|
||||
FOR j = 1 TO 20
|
||||
FOR k = 1 TO 3
|
||||
READ s(j, k)
|
||||
NEXT k
|
||||
NEXT j
|
||||
DATA 2,5,8,1,3,10,2,4,12,3,5,14,1,4,6
|
||||
DATA 5,7,15,6,8,17,1,7,9,8,10,18,2,9,11
|
||||
DATA 10,12,19,3,11,13,12,14,20,4,13,15,6,14,16
|
||||
DATA 15,17,20,7,16,18,9,17,19,11,18,20,13,16,19
|
||||
REM *** LOCATE L ARRAY ITEMS ***
|
||||
REM *** 1-YOU, 2-WUMPUS, 3&4-PITS, 5&6-BATS ***
|
||||
DIM l(6)
|
||||
DIM m(6)
|
||||
170 FOR j = 1 TO 6
|
||||
l(j) = INT(20 * RND(1)) + 1
|
||||
m(j) = l(j)
|
||||
NEXT j
|
||||
REM *** CHECK FOR CROSSOVERS (IE l(1)=l(2), ETC) ***
|
||||
FOR j = 1 TO 6
|
||||
FOR k = 1 TO 6
|
||||
IF j = k THEN GOTO 215
|
||||
IF l(j) = l(k) THEN GOTO 170
|
||||
215 NEXT k
|
||||
NEXT j
|
||||
REM *** SET NO. OF ARROWS ***
|
||||
230 a = 5
|
||||
l = l(1)
|
||||
REM *** RUN THE GAME ***
|
||||
PRINT "HUNT THE WUMPUS"
|
||||
REM *** HAZARD WARNING AND LOCATION ***
|
||||
255 GOSUB 585
|
||||
REM *** MOVE OR SHOOT ***
|
||||
GOSUB 670
|
||||
IF o = 1 THEN GOTO 280
|
||||
IF o = 2 THEN GOTO 300
|
||||
REM *** SHOOT ***
|
||||
280 GOSUB 715
|
||||
IF f = 0 THEN GOTO 255
|
||||
GOTO 310
|
||||
REM *** MOVE ***
|
||||
300 GOSUB 975
|
||||
IF f = 0 THEN GOTO 255
|
||||
310 IF f > 0 THEN GOTO 335
|
||||
REM *** LOSE ***
|
||||
PRINT "HA HA HA - YOU LOSE!"
|
||||
GOTO 340
|
||||
REM *** WIN ***
|
||||
335 PRINT "HEE HEE HEE - THE WUMPUS'LL GET YOU NEXT TIME!!"
|
||||
340 FOR j = 1 TO 6
|
||||
l(j) = m(j)
|
||||
NEXT j
|
||||
PRINT "SAME SETUP (Y-N)";
|
||||
INPUT i$
|
||||
IF (i$ <> "Y") AND (i$ <> "y") THEN GOTO 170
|
||||
GOTO 230
|
||||
375 REM *** INSTRUCTIONS ***
|
||||
PRINT "WELCOME TO 'HUNT THE WUMPUS'"
|
||||
PRINT " THE WUMPUS LIVES IN A CAVE OF 20 ROOMS. EACH ROOM"
|
||||
PRINT "HAS 3 TUNNELS LEADING TO OTHER ROOMS. (LOOK AT A"
|
||||
PRINT "DODECAHEDRON TO SEE HOW THIS WORKS-IF YOU DON'T KNOW"
|
||||
PRINT "WHAT A DODECAHEDRON IS, ASK SOMEONE)"
|
||||
PRINT
|
||||
PRINT " HAZARDS:"
|
||||
PRINT " BOTTOMLESS PITS - TWO ROOMS HAVE BOTTOMLESS PITS IN THEM"
|
||||
PRINT " IF YOU GO THERE, YOU FALL INTO THE PIT (& LOSE!)"
|
||||
PRINT " SUPER BATS - TWO OTHER ROOMS HAVE SUPER BATS. IF YOU"
|
||||
PRINT " GO THERE, A BAT GRABS YOU AND TAKES YOU TO SOME OTHER"
|
||||
PRINT " ROOM AT RANDOM. (WHICH MAY BE TROUBLESOME)"
|
||||
INPUT "HIT RETURN TO CONTINUE"; a$
|
||||
PRINT " WUMPUS:"
|
||||
PRINT " THE WUMPUS IS NOT BOTHERED BY HAZARDS (HE HAS SUCKER"
|
||||
PRINT " FEET AND IS TOO BIG FOR A BAT TO LIFT). USUALLY"
|
||||
PRINT " HE IS ASLEEP. TWO THINGS WAKE HIM UP: YOU SHOOTING AN"
|
||||
PRINT "ARROW OR YOU ENTERING HIS ROOM."
|
||||
PRINT " IF THE WUMPUS WAKES HE MOVES (P=.75) ONE ROOM"
|
||||
PRINT " OR STAYS STILL (P=.25). AFTER THAT, IF HE IS WHERE YOU"
|
||||
PRINT " ARE, HE EATS YOU UP AND YOU LOSE!"
|
||||
PRINT
|
||||
PRINT " YOU:"
|
||||
PRINT " EACH TURN YOU MAY MOVE OR SHOOT A CROOKED ARROW"
|
||||
PRINT " MOVING: YOU CAN MOVE ONE ROOM (THRU ONE TUNNEL)"
|
||||
PRINT " ARROWS: YOU HAVE 5 ARROWS. YOU LOSE WHEN YOU RUN OUT"
|
||||
PRINT " EACH ARROW CAN GO FROM 1 TO 5 ROOMS. YOU AIM BY TELLING"
|
||||
PRINT " THE COMPUTER THE ROOM#S YOU WANT THE ARROW TO GO TO."
|
||||
PRINT " IF THE ARROW CAN'T GO THAT WAY (IF NO TUNNEL) IT MOVES"
|
||||
PRINT " AT RANDOM TO THE NEXT ROOM."
|
||||
PRINT " IF THE ARROW HITS THE WUMPUS, YOU WIN."
|
||||
PRINT " IF THE ARROW HITS YOU, YOU LOSE."
|
||||
INPUT "HIT RETURN TO CONTINUE"; a$
|
||||
PRINT " WARNINGS:"
|
||||
PRINT " WHEN YOU ARE ONE ROOM AWAY FROM A WUMPUS OR HAZARD,"
|
||||
PRINT " THE COMPUTER SAYS:"
|
||||
PRINT " WUMPUS: 'I SMELL A WUMPUS'"
|
||||
PRINT " BAT : 'BATS NEARBY'"
|
||||
PRINT " PIT : 'I FEEL A DRAFT'"
|
||||
PRINT
|
||||
RETURN
|
||||
585 REM *** PRINT LOCATION & HAZARD WARNINGS ***
|
||||
PRINT
|
||||
FOR j = 2 TO 6
|
||||
FOR k = 1 TO 3
|
||||
IF s(l(1), k) <> l(j) THEN GOTO 640
|
||||
SELECT CASE j - 1
|
||||
CASE 1
|
||||
GOTO 615
|
||||
CASE 2
|
||||
GOTO 625
|
||||
CASE 3
|
||||
GOTO 625
|
||||
CASE 4
|
||||
GOTO 635
|
||||
CASE 5
|
||||
GOTO 635
|
||||
END SELECT
|
||||
615 PRINT "I SMELL A WUMPUS!"
|
||||
GOTO 640
|
||||
625 PRINT "I FEEL A DRAFT"
|
||||
GOTO 640
|
||||
635 PRINT "BATS NEARBY!"
|
||||
640 NEXT k
|
||||
NEXT j
|
||||
PRINT "YOU ARE IN ROOM "; l(1)
|
||||
PRINT "TUNNELS LEAD TO "; s(l, 1); " "; s(l, 2); " "; s(l, 3)
|
||||
PRINT
|
||||
RETURN
|
||||
670 REM *** CHOOSE OPTION ***
|
||||
675 PRINT "SHOOT OR MOVE (S-M)";
|
||||
INPUT i$
|
||||
IF (i$ <> "S") AND (i$ <> "s") THEN GOTO 700
|
||||
o = 1
|
||||
RETURN
|
||||
700 IF (i$ <> "M") AND (i$ <> "m") THEN GOTO 675
|
||||
o = 2
|
||||
RETURN
|
||||
715 REM *** ARROW ROUTINE ***
|
||||
f = 0
|
||||
REM *** PATH OF ARROW ***
|
||||
735 PRINT "NO. OF ROOMS (1-5)";
|
||||
INPUT j9
|
||||
IF j9 < 1 THEN GOTO 735
|
||||
IF j9 > 5 THEN GOTO 735
|
||||
FOR k = 1 TO j9
|
||||
760 PRINT "ROOM #";
|
||||
INPUT p(k)
|
||||
IF k <= 2 THEN 790
|
||||
IF p(k) <> p(k - 2) THEN GOTO 790
|
||||
PRINT "ARROWS AREN'T THAT CROOKED - TRY ANOTHER ROOM"
|
||||
GOTO 760
|
||||
790 NEXT k
|
||||
REM *** SHOOT ARROW ***
|
||||
l = l(1)
|
||||
FOR k = 1 TO j9
|
||||
FOR k1 = 1 TO 3
|
||||
IF s(l, k1) = p(k) THEN GOTO 895
|
||||
NEXT k1
|
||||
REM *** NO TUNNEL FOR ARROW ***
|
||||
l = s(l, INT(3 * RND(1)) + 1)
|
||||
GOTO 900
|
||||
840 NEXT k
|
||||
PRINT "MISSED"
|
||||
l = l(1)
|
||||
REM *** MOVE WUMPUS ***
|
||||
GOSUB 935
|
||||
REM *** AMMO CHECK ***
|
||||
a = a - 1
|
||||
IF a > 0 THEN 885
|
||||
880 f = -1
|
||||
885 RETURN
|
||||
REM *** SEE IF ARROW IS AT l(1) OR AT l(2)
|
||||
895 l = p(k)
|
||||
900 IF l <> l(2) THEN 920
|
||||
PRINT "AHA! YOU GOT THE WUMPUS!"
|
||||
f = 1
|
||||
RETURN
|
||||
920 IF l <> l(1) THEN GOTO 840
|
||||
PRINT "OUCH! ARROW GOT YOU!"
|
||||
GOTO 880
|
||||
935 REM *** MOVE WUMPUS ROUTINE ***
|
||||
940 k = INT(4 * RND(1)) + 1
|
||||
IF k = 4 THEN GOTO 955
|
||||
l(2) = s(l(2), k)
|
||||
955 IF l(2) <> l THEN GOTO 970
|
||||
PRINT "TSK TSK TSK - WUMPUS GOT YOU!"
|
||||
f = -1
|
||||
970 RETURN
|
||||
975 REM *** MOVE ROUTINE ***
|
||||
f = 0
|
||||
985 PRINT "WHERE TO";
|
||||
INPUT l
|
||||
IF l < 1 THEN GOTO 985
|
||||
IF l > 20 THEN GOTO 985
|
||||
FOR k = 1 TO 3
|
||||
REM *** CHECK IF LEGAL MOVE ***
|
||||
IF s(l(1), k) = l THEN GOTO 1045
|
||||
NEXT k
|
||||
IF l = l(1) THEN GOTO 1045
|
||||
PRINT "NOT POSSIBLE -";
|
||||
GOTO 985
|
||||
REM *** CHECK FOR HAZARDS ***
|
||||
1045 l(1) = l
|
||||
REM *** WUMPUS ***
|
||||
IF l <> l(2) THEN GOTO 1090
|
||||
PRINT "... OOPS! BUMPED A WUMPUS!"
|
||||
REM *** MOVE WUMPUS ***
|
||||
GOSUB 940
|
||||
IF f = 0 THEN GOTO 1090
|
||||
RETURN
|
||||
REM *** PIT ***
|
||||
1090 IF l = l(3) THEN GOTO 1100
|
||||
IF l <> l(4) THEN GOTO 1120
|
||||
1100 PRINT "YYYYIIIIEEEE . . . FELL IN PIT"
|
||||
f = -1
|
||||
RETURN
|
||||
REM *** BATS ***
|
||||
1120 IF l = l(5) THEN GOTO 1130
|
||||
IF l <> l(6) THEN GOTO 1145
|
||||
1130 PRINT "ZAP--SUPER BAT SNATCH! ELSEWHEREVILLE FOR YOU!"
|
||||
l = INT(20 * RND(1)) + 1
|
||||
GOTO 1045
|
||||
1145 RETURN
|
||||
END
|
816
tests/qbasic_testcases/misc/xwing.bas
Normal file
816
tests/qbasic_testcases/misc/xwing.bas
Normal file
|
@ -0,0 +1,816 @@
|
|||
'CONTROLS:
|
||||
'ARROW KEYS - AIM UP/DOWN/LEFT/RIGHT
|
||||
'SPACE - FIRE CANNON
|
||||
'ENTER - FIRE TORPEDO
|
||||
'1-9 - CHANGE ENGINE SPEED
|
||||
'KEY OFF
|
||||
DEFINT A-Z: DEFSNG G, J, O, S
|
||||
CLS
|
||||
SCREEN 0
|
||||
WIDTH 40
|
||||
PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
|
||||
PRINT "³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³³ 2060-A.BAS ³³"
|
||||
PRINT "³³ XWING ³³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³³ BROUGHT TO YOU BY DATATECH ³³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³³ MICHAEL KNOX WAUSAU WI 54403 ³³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³³ MODIFIED BY GALLEON TO ³³"
|
||||
PRINT "³³ BE QBASIC COMPATIBLE ³³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³³ QB64 DEMO #5: X-WING FIGHTER ³³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³³ ³³"
|
||||
PRINT "³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³"
|
||||
PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
|
||||
PRINT
|
||||
PRINT " PRESS ANY KEY TO CONTINUE"
|
||||
260 A$ = INKEY$: IF A$ = "" THEN 260
|
||||
WIDTH 80
|
||||
CLS
|
||||
REM * STAR PILOT GAME *
|
||||
REM * WRITTEN BY MICHAEL KNOX WAUSAU WI *
|
||||
REM * FOR PUBLIC DOMAIN UNLESS MOVIEMAKERS OBJECT *
|
||||
REM * VERSION 2.0 JANUARY 4, 1996 *
|
||||
REM * PRODUCED BY WILD BOAR PRODUCTIONS *
|
||||
REM * WILD BOAR PRODUCTIONS WAUSAU WI *
|
||||
REM * JANUARY 1996 *
|
||||
'KEY OFF
|
||||
CLS : WIDTH 80: DEF SEG = 0: A = PEEK(&H410): POKE &H410, (A AND &HCF) OR &H20
|
||||
WIDTH 40: SCREEN 1: SCREEN 0: WIDTH 80: WIDTH 40: SCREEN 1: COLOR 0, 1
|
||||
GOTO 1200
|
||||
1100 V = V - 1: IF V < -3 THEN V = -3
|
||||
RETURN
|
||||
1120 W = W - 1: IF W < -5 THEN W = -5
|
||||
RETURN
|
||||
1140 W = W + 1: IF W > 5 THEN W = 5
|
||||
RETURN
|
||||
1160 V = V + 1: IF V > 3 THEN V = 3
|
||||
RETURN
|
||||
1180 RETURN 'KEY(1) ON: KEY(2) ON: KEY(11) ON: KEY(12) ON: KEY(13) ON: KEY(14) ON: RETURN
|
||||
1190 RETURN 'KEY(1) STOP: KEY(2) STOP: KEY(11) STOP: KEY(12) STOP: KEY(13) STOP: KEY(14) STOP: RETURN
|
||||
1200 LOCATE 8, 1: PRINT "****************************************";
|
||||
PRINT "* *";
|
||||
PRINT "* X W I N G F I G H T E R *";
|
||||
PRINT "* *";
|
||||
PRINT "****************************************";
|
||||
SOUND 525.25, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 587.33, 18.2 / 6: SOUND 1046.6, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 587.33, 18.2 / 6
|
||||
SOUND 1046.5, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 698.46, 18.2 / 6: SOUND 587.33, 18.2
|
||||
1270 LOCATE 16, 1: PRINT "DO YOU WANT INSTRUCTIONS (Y OR N)?";
|
||||
K$ = INKEY$: IF K$ = "Y" OR K$ = "y" GOTO 6930
|
||||
IF K$ <> "N" AND K$ <> "n" GOTO 1270
|
||||
1300 CLS
|
||||
IF RESTARTED% THEN END ELSE RESTARTED% = 1
|
||||
RANDOMIZE (VAL(RIGHT$(TIME$, 2)))
|
||||
'ON KEY(1) GOSUB 5350: ON KEY(2) GOSUB 5750: ON KEY(11) GOSUB 1100: ON KEY(12) GOSUB 1120: ON KEY(13) GOSUB 1140: ON KEY(14) GOSUB 1160
|
||||
LOCATE 8, 1: PRINT "IMPERIAL FIGHTER: ": DRAW2$ = "C2;BM145,59;M+0,0;BM+10,1;M+0,-2;M+2,2;M+0,-2;BM+10,-1;M+0,4;BM+6,-4;M+0,4;M+0,-2;M-6,0": GOSUB DRAW2
|
||||
DIM IM(6): DIM IM1(6): DIM IM2(6): DIM IM3(6): GET (145, 59)-(145, 59), IM: GET (145, 59)-(145, 59), IM1: GET (155, 58)-(157, 60), IM2: GET (167, 57)-(173, 61), IM3
|
||||
DIM IM4(13): IM4(0) = 22: IM4(1) = 7: IM4(2) = 128: IM4(3) = -32760: IM4(4) = 2048: IM4(5) = 128: IM4(6) = -22008: IM4(7) = -22358: IM4(8) = 128: IM4(9) = -32760: IM4(10) = 2048: IM4(11) = 128: IM4(12) = 8
|
||||
DIM IM5(20): IM5(0) = 26: IM5(1) = 9: IM5(2) = 128: IM5(3) = -32768!: IM5(4) = 128: IM5(5) = -32768!: IM5(6) = 128: IM5(7) = -32768!: IM5(8) = 128: IM5(9) = -32768!: IM5(10) = -21846: IM5(11) = -32598: IM5(12) = 128
|
||||
IM5(13) = -32768!: IM5(14) = 128: IM5(15) = -32768!: IM5(16) = 128: IM5(17) = -32768!: IM5(18) = 128: IM5(19) = -32768!
|
||||
DIM IM6(44): IM6(0) = 34: IM6(1) = 17: IM6(2) = 2048: IM6(5) = 32: IM6(7) = -32768!: IM6(9) = 512: IM6(12) = -32760: IM6(14) = 8192: IM6(15) = 32: IM6(17) = 2176: IM6(20) = 2: IM6(23) = 128: IM6(25) = 8192: IM6(28) = 8
|
||||
IM6(29) = 128: IM6(30) = 512: IM6(31) = 2: IM6(33) = -30720: IM6(36) = 32: IM6(38) = -32768!: IM6(40) = 512: IM6(43) = 8
|
||||
DIM IM7(44)
|
||||
IM7(0) = 30: IM7(1) = 21: IM7(2) = -22006: IM7(3) = -22358: IM7(4) = 32: IM7(5) = 8192: IM7(6) = -21846: IM7(7) = -32598: IM7(8) = 2048: IM7(9) = 128
|
||||
IM7(10) = 2048: IM7(11) = 128: IM7(12) = 2048: IM7(13) = 128: IM7(14) = 2048: IM7(15) = 128: IM7(16) = 2048: IM7(17) = 128: IM7(18) = 2048: IM7(19) = 128
|
||||
IM7(20) = 2560: IM7(21) = 32: IM7(22) = 2048: IM7(23) = 128: IM7(24) = 8704: IM7(25) = 128: IM7(26) = 2048: IM7(27) = 128: IM7(28) = 2048: IM7(29) = 128
|
||||
IM7(30) = 2048: IM7(31) = 128: IM7(32) = 2048: IM7(33) = 128: IM7(34) = 2048: IM7(35) = 128: IM7(36) = 2048: IM7(37) = 128: IM7(38) = -22518: IM7(39) = -22358
|
||||
IM7(40) = 2592: IM7(41) = 8192: IM7(42) = -21846: IM7(43) = -32598
|
||||
DIM IM8(102)
|
||||
IM8(0) = 50: IM8(1) = 29: IM8(3) = 2048: IM8(7) = 10: IM8(10) = 2048: IM8(11) = 128: IM8(14) = 8200: IM8(17) = 2048: IM8(18) = 8: IM8(21) = 514
|
||||
IM8(25) = -32640: IM8(28) = 8192: IM8(29) = 32: IM8(32) = 2184: IM8(35) = 514: IM8(36) = 2: IM8(38) = 2048: IM8(39) = -32760: IM8(40) = 128: IM8(42) = 8352
|
||||
IM8(43) = -32736: IM8(45) = 8194: IM8(46) = 2176: IM8(47) = 128: IM8(48) = 512: IM8(49) = 34: IM8(50) = -32766: IM8(51) = 128: IM8(52) = 10250: IM8(54) = -24448
|
||||
IM8(55) = 8704: IM8(56) = 32: IM8(58) = 136: IM8(59) = -24446: IM8(61) = -32256: IM8(62) = 514: IM8(63) = 128: IM8(65) = -30592: IM8(66) = 8: IM8(68) = 8192
|
||||
IM8(69) = 8224: IM8(72) = 8200: IM8(73) = 128: IM8(75) = 512: IM8(76) = 34: IM8(79) = -22528: IM8(80) = 128: IM8(83) = 8224: IM8(86) = 2048: IM8(87) = 8
|
||||
IM8(90) = 2050: IM8(94) = 136: IM8(97) = 10240: IM8(101) = 8
|
||||
LOCATE 10, 1: PRINT "DARTH VADER : ": DRAW2$ = "C2;BM145,75;M+0,0;BM+10,1;M+0,-2;M+2,2;M+0,-2;BM+11,-1;M-1,1;M+0,2;M+1,1;BM+4,-4;M+1,1;M+0,2;M-1,1;BM+1,-2;M-6,0": GOSUB DRAW2
|
||||
DIM DV(6): DIM DV1(6): DIM DV2(6): DIM DV3(6): GET (145, 75)-(145, 75), DV: GET (145, 75)-(145, 75), DV1: GET (155, 74)-(157, 76), DV2: GET (167, 73)-(173, 77), DV3
|
||||
DIM DV4(13)
|
||||
DV4(0) = 22: DV4(1) = 7: DV4(2) = 8: DV4(3) = 8320: DV4(4) = 8192: DV4(5) = 128: DV4(6) = -22008: DV4(7) = -22358: DV4(8) = 128: DV4(9) = 8200
|
||||
DV4(10) = 8192: DV4(11) = 8: DV4(12) = 128
|
||||
DIM DV5(20)
|
||||
DV5(0) = 26: DV5(1) = 9: DV5(2) = 8: DV5(3) = 8: DV5(4) = 32: DV5(5) = 2: DV5(6) = 128: DV5(7) = -32768!: DV5(8) = 128: DV5(9) = -32768!
|
||||
DV5(10) = -21846: DV5(11) = -32598: DV5(12) = 128: DV5(13) = -32768!: DV5(14) = 128: DV5(15) = -32768!: DV5(16) = 32: DV5(17) = 2: DV5(18) = 8: DV5(19) = 8
|
||||
DIM DV6(32)
|
||||
DV6(0) = 30: DV6(1) = 15: DV6(2) = -22528: DV6(4) = 2: DV6(6) = 8: DV6(8) = 34: DV6(10) = -32640: DV6(12) = 8320: DV6(14) = 2176: DV6(16) = 512
|
||||
DV6(19) = 2176: DV6(21) = 2080: DV6(23) = 2056: DV6(25) = 8194: DV6(27) = -32768!: DV6(29) = 2: DV6(31) = 168
|
||||
DIM DV7(44)
|
||||
DV7(0) = 32: DV7(1) = 21: DV7(2) = 10752: DV7(3) = -24406: DV7(4) = -32768!: DV7(5) = -30720: DV7(6) = -22014: DV7(7) = 682: DV7(8) = 520: DV7(9) = -30688
|
||||
DV7(10) = 544: DV7(11) = 8224: DV7(12) = 512: DV7(13) = 32: DV7(14) = 512: DV7(15) = 32: DV7(16) = 512: DV7(17) = 32: DV7(18) = 512: DV7(19) = 32
|
||||
DV7(20) = 512: DV7(21) = 136: DV7(22) = 512: DV7(23) = 32: DV7(24) = 2048: DV7(25) = 160: DV7(26) = 512: DV7(27) = 32: DV7(28) = 512: DV7(29) = 32
|
||||
DV7(30) = 512: DV7(31) = 32: DV7(32) = 512: DV7(33) = 32: DV7(34) = 520: DV7(35) = 544: DV7(36) = 546: DV7(37) = 2080: DV7(38) = -21888: DV7(39) = -24534
|
||||
DV7(40) = 546: DV7(41) = -32640: DV7(42) = -22006: DV7(43) = 170
|
||||
DIM DV8(76)
|
||||
DV8(0) = 46: DV8(1) = 25: DV8(3) = 10752: DV8(4) = 128: DV8(6) = -32768!: DV8(7) = 32: DV8(9) = -22526: DV8(10) = 8: DV8(12) = 512: DV8(13) = 2
|
||||
DV8(16) = -32640: DV8(18) = 512: DV8(19) = 8224: DV8(21) = 2048: DV8(22) = 2056: DV8(24) = 8192: DV8(25) = 2082: DV8(27) = -32766: DV8(28) = -30592: DV8(30) = -32248
|
||||
DV8(31) = 10240: DV8(32) = 128: DV8(33) = -30712: DV8(34) = 2048: DV8(35) = 128: DV8(36) = -24536: DV8(37) = 2048: DV8(38) = 128: DV8(39) = -32630: DV8(40) = 2048
|
||||
DV8(41) = 672: DV8(42) = -32760: DV8(44) = 2184: DV8(45) = 10: DV8(47) = 8322: DV8(48) = 32: DV8(50) = -32640: DV8(51) = 128: DV8(53) = -32224: DV8(56) = -30712
|
||||
DV8(59) = -24062: DV8(62) = -32768!: DV8(63) = 168: DV8(65) = 8192: DV8(66) = 136: DV8(68) = 2048: DV8(69) = 136: DV8(71) = 512: DV8(72) = 136: DV8(75) = 168
|
||||
LOCATE 12, 1: PRINT "DEATH STAR : ": DRAW2$ = "C3;BM145,91;M+0,0;BM+11,-1;M-1,1;M+2,0;M-1,1;BM+12,-3;M+1,0;M+1,1;M-3,0;M+0,1;M+3,0;M-1,1;M-1,0": GOSUB DRAW2
|
||||
DRAW2$ = "C3;BM+12,-5;M+2,0;M+1,1;M-4,0;M-1,1;M+6,0;M+0,1;M-6,0;M+0,1;M+6,0;M-1,1;M-4,0;M+1,1;M+2,0": GOSUB DRAW2
|
||||
DIM DS(8): DIM DS1(8): DIM DS2(8): DIM DS3(8): DIM DS4(8): GET (145, 91)-(145, 91), DS: GET (145, 91)-(145, 91), DS1: GET (155, 90)-(157, 92), DS2: GET (167, 89)-(170, 92), DS3: GET (178, 87)-(184, 93), DS4
|
||||
DIM EXPL3(18): DIM EXPL4(18): DIM EXPL5(18): DIM EXPL6(18): DIM EXPL7(18): DIM EXPL8(18)
|
||||
DATA 22,11,0,0,0,8194,0,-32608,-22006,2560,-32598,-22006,128,168,8706,0,0,0,0
|
||||
FOR i = 0 TO 18: READ EXPL3(i): NEXT i
|
||||
DATA 22,11,-30720,2048,136,-30718,-24544,-32608,-22006,-21848,-22358,-22006,-23936,10274,-30206,2048,-32632,-30720,0
|
||||
FOR i = 0 TO 18: READ EXPL4(i): NEXT i
|
||||
DATA 22,11,-30712,512,136,8194,-32760,-24416,-21974,-21976,-22358,-21974,-32608,2216,-30206,512,138,-30712,128
|
||||
FOR i = 0 TO 18: READ EXPL5(i): NEXT i
|
||||
DATA 22,11,-30712,2048,136,8194,-24536,-32608,-22006,-21976,-22358,-22006,-24448,10408,8706,2048,-32632,-30712,128
|
||||
FOR i = 0 TO 18: READ EXPL6(i): NEXT i
|
||||
DATA 22,11,-30688,2048,2080,8194,-32736,-32608,-21974,-22008,-22358,-22006,-24448,10408,8706,2048,-32632,-30688,32
|
||||
FOR i = 0 TO 18: READ EXPL7(i): NEXT i
|
||||
DATA 22,11,-30688,2048,2184,-30718,-24544,-32608,-22006,-21848,-22358,-22006,-23936,10274,-30206,2048,-32632,-30688,32
|
||||
FOR i = 0 TO 18: READ EXPL8(i): NEXT i
|
||||
1920 LOCATE 17, 1: PRINT "SELECT SKILL LEVEL FROM 0 TO 3"
|
||||
S$ = INKEY$: IF S$ <> "0" AND S$ <> "1" AND S$ <> "2" AND S$ <> "3" GOTO 1920
|
||||
SKILL = VAL(S$): CLS
|
||||
DIM LASAR(381)
|
||||
LASAR(0) = 148: LASAR(1) = 40: LASAR(2) = 64: LASAR(11) = 5136: LASAR(20) = 16385: LASAR(21) = 16385: LASAR(29) = 5120: LASAR(31) = 20: LASAR(38) = 256: LASAR(39) = 64: LASAR(40) = 256: LASAR(41) = 64: LASAR(48) = 20
|
||||
LASAR(50) = 5120: LASAR(57) = 16385: LASAR(60) = 16385: LASAR(66) = 5120: LASAR(70) = 20: LASAR(75) = 256: LASAR(76) = 64: LASAR(79) = 256: LASAR(85) = 4: LASAR(89) = 20480: LASAR(94) = 20480: LASAR(99) = 5
|
||||
LASAR(103) = 1280: LASAR(109) = 80: LASAR(113) = 80: LASAR(118) = 1280: LASAR(122) = 5: LASAR(128) = 20480: LASAR(131) = 20480: LASAR(138) = 5: LASAR(140) = 1280: LASAR(148) = 80: LASAR(150) = 80
|
||||
LASAR(157) = 1024: LASAR(159) = 1: LASAR(167) = 16385: LASAR(168) = 5120: LASAR(177) = 276: LASAR(178) = 64: LASAR(186) = 256: LASAR(187) = 84: LASAR(196) = 21505: LASAR(205) = 5120: LASAR(206) = 16385
|
||||
LASAR(214) = 256: LASAR(215) = 64: LASAR(216) = 20: LASAR(224) = 4: LASAR(225) = 256: LASAR(233) = 20480: LASAR(235) = 20480: LASAR(242) = 1280: LASAR(245) = 5: LASAR(252) = 80: LASAR(255) = 80
|
||||
LASAR(261) = 5: LASAR(264) = 1280: LASAR(270) = 20480: LASAR(274) = 20480: LASAR(279) = 1280: LASAR(284) = 5: LASAR(289) = 80: LASAR(294) = 80: LASAR(298) = 1: LASAR(303) = 1024: LASAR(307) = 5120
|
||||
LASAR(313) = 16385: LASAR(316) = 256: LASAR(317) = 64: LASAR(323) = 20: LASAR(326) = 20: LASAR(332) = 256: LASAR(333) = 64: LASAR(335) = 16385: LASAR(342) = 5120: LASAR(344) = 5120: LASAR(352) = 16385
|
||||
LASAR(353) = 256: LASAR(354) = 64: LASAR(362) = 20: LASAR(363) = 20: LASAR(371) = 256: LASAR(372) = 16448: LASAR(381) = 4096
|
||||
REM * INITIALIZE VARIABLES *
|
||||
M = INT(RND * 61) + 10: N = INT(RND * 21) + 10: O = INT(RND * 32001) + 70000!
|
||||
E = INT(RND * 61) + 10: F = INT(RND * 21) + 10: G = 25000
|
||||
H = INT(RND * 61) + 10: i = INT(RND * 21) + 10: J = INT(RND * 32001) + 40000!
|
||||
Q = 5: Z = 3
|
||||
IMX = 38: IMY = 21: IMR1 = 1: IMR2 = 1
|
||||
DVX = 38: DVY = 21: DVR1 = 1: DVR2 = 1
|
||||
IF SKILL = 0 THEN A1 = 5: A2 = 0: BYPASS = 3
|
||||
IF SKILL = 1 THEN A1 = 3: A2 = 0: BYPASS = 2
|
||||
IF SKILL = 2 THEN A1 = 2: A2 = 45: BYPASS = 1
|
||||
IF SKILL = 3 THEN A1 = 2: A2 = 30
|
||||
K$ = "5"
|
||||
LINE (1, 1)-(76, 42), 3, B
|
||||
DRAW2$ = "C3;BM2,21;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+12,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0": GOSUB DRAW2
|
||||
DRAW2$ = "C3;BM38,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,6;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0": GOSUB DRAW2
|
||||
LOCATE 8, 1: PRINT "REPUBLIC X-WING STAR FIGHTER"
|
||||
LOCATE 10, 5: PRINT "TORPEDOES"
|
||||
LOCATE 12, 1: PRINT "HOR. VERT. DIRECTION"
|
||||
LOCATE 15, 1: PRINT "SPEED MACH"
|
||||
LOCATE 17, 1: PRINT "RADAR TARGETS"
|
||||
LOCATE 18, 8: PRINT "KM TO IMPERIAL FIGHTER"
|
||||
LOCATE 19, 8: PRINT "KM TO DARTH VADER"
|
||||
LOCATE 20, 8: PRINT "KM TO DEATH STAR"
|
||||
LOCATE 22, 1: PRINT "TIME REMAINING"
|
||||
'PLAY "T250"
|
||||
SEC1 = VAL(RIGHT$(TIME$, 2))
|
||||
GOSUB 1180
|
||||
REM * MASTER CONTROL ROUTINE *
|
||||
2320 GOSUB 1190
|
||||
PUT (38, 21), DS1
|
||||
LOCATE 10, 1: PRINT Z
|
||||
LOCATE 13, 1: PRINT W; " "; -V
|
||||
LOCATE 15, 12: PRINT Q * 10
|
||||
GS = G - S: IF GS < 0 THEN GS = 0
|
||||
LOCATE 18, 1: PRINT GS
|
||||
JS = J - S: IF JS < 0 THEN JS = 0
|
||||
LOCATE 19, 1: PRINT JS
|
||||
OS = O - S: IF OS < 0 THEN OS = 0
|
||||
LOCATE 20, 1: PRINT OS
|
||||
LOCATE 22, 16: PRINT A1; ":"; A2NEW
|
||||
SOUND 37 * Q, 1
|
||||
PUT (38, 21), DS1
|
||||
GOSUB 1180
|
||||
REM * DISPLAY DEATH STAR *
|
||||
IF O - S = 30000 OR O - S > 30000 GOTO 2840
|
||||
IF O - S < 20000 AND DSTAR2 = 0 THEN DSTAR2 = 1: DSFLAG = 1: DS(0) = DS2(0): DS(1) = DS2(1): DS(2) = DS2(2): DS(3) = DS2(3)
|
||||
IF O - S < 10000 AND DSTAR3 = 0 THEN DSTAR3 = 1: DSFLAG = 2: DS(0) = DS3(0): DS(1) = DS3(1): DS(2) = DS3(2): DS(3) = DS3(3)
|
||||
IF O - S < 5000 AND DSTAR4 = 0 THEN DSTAR4 = 1: DSFLAG = 3: DS(0) = DS4(0): DS(1) = DS4(1): DS(2) = DS4(2): DS(3) = DS4(3): DS(4) = DS4(4): DS(5) = DS4(5): DS(6) = DS4(6): DS(7) = DS4(7): DS(8) = DS4(8)
|
||||
IF FLAG1 <> BYPASS THEN FLAG1 = FLAG1 + 1: GOTO 2550
|
||||
FLAG1 = 0
|
||||
M = M + INT(RND * 5) - 2: N = N + INT(RND * 5) - 2
|
||||
2550 M = M - W: N = N - V
|
||||
IF M < 2 THEN M = 2 + INT(RND * 3)
|
||||
IF M > 69 THEN M = 69 - INT(RND * 3)
|
||||
IF N < 2 THEN N = 2 + INT(RND * 3)
|
||||
IF N > 35 THEN N = 35 - INT(RND * 3)
|
||||
GOSUB 1190
|
||||
PUT (M, N), DS
|
||||
IF DSNEW = 0 THEN DSNEW = 1: GOTO 2680
|
||||
IF DSFLAG = 0 GOTO 2670
|
||||
IF DSFLAG = 1 THEN DSFLAG = 0: PUT (MP, NP), DS1: GOTO 2680
|
||||
IF DSFLAG = 2 THEN DSFLAG = 0: PUT (MP, NP), DS2: GOTO 2680
|
||||
IF DSFLAG = 3 THEN DSFLAG = 0: PUT (MP, NP), DS3: GOTO 2680
|
||||
2670 PUT (MP, NP), DS
|
||||
2680 GOSUB 1180
|
||||
MP = M: NP = N
|
||||
IF O - S > 10000 OR FLAG = 1 GOTO 2840
|
||||
GOSUB 1190
|
||||
FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "*** DEATH STAR WITHIN TORPEDO RANGE ***";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "*** DEATH STAR WITHIN TORPEDO RANGE ***";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
GOSUB 1180
|
||||
FLAG = 1
|
||||
REM * DISPLAY IMPERIAL FIGHTER *
|
||||
2840 GOSUB 1190
|
||||
IF G - S > 26000 THEN GOSUB 1180: GOTO 3910
|
||||
IF G - S < 20000 AND IMPFIGH2 = 0 THEN IMPFIGH2 = 1: IMFLAG = 1: IM(0) = IM2(0): IM(1) = IM2(1): IM(2) = IM2(2): IM(3) = IM2(3): IMX = 37: IMY = 20: IMR1 = 2: IMR2 = 2
|
||||
IF G - S < 10000 AND IMPFIGH3 = 0 THEN IMPFIGH3 = 1: IMFLAG = 2: IM(0) = IM3(0): IM(1) = IM3(1): IM(2) = IM3(2): IM(3) = IM3(3): IM(4) = IM3(4): IM(5) = IM3(5): IM(6) = IM3(6): IMX = 35: IMY = 19: IMR1 = 4: IMR2 = 3
|
||||
IF FLAG2 <> BYPASS THEN FLAG2 = FLAG2 + 1: GOTO 2910
|
||||
FLAG2 = 0
|
||||
E = E + INT(RND * 5) - 2: F = F + INT(RND * 5) - 2
|
||||
2910 E = E - W: F = F - V
|
||||
IF E < 2 THEN E = 2 + INT(RND * 3)
|
||||
IF E > 69 THEN E = 69 - INT(RND * 3)
|
||||
IF F < 2 THEN F = 2 + INT(RND * 3)
|
||||
IF F > 37 THEN F = 37 - INT(RND * 3)
|
||||
PUT (E, F), IM
|
||||
IF IMNEW = 0 THEN IMNEW = 1: GOTO 3020
|
||||
IF IMFLAG = 0 GOTO 3010
|
||||
IF IMFLAG = 1 THEN IMFLAG = 0: PUT (EP, FP), IM1: GOTO 3020
|
||||
IF IMFLAG = 2 THEN IMFLAG = 0: PUT (EP, FP), IM2: GOTO 3020
|
||||
3010 PUT (EP, FP), IM
|
||||
3020 GOSUB 1180
|
||||
EP = E: FP = F
|
||||
IF G - S > 5000 OR FLAG3 = 1 GOTO 3170
|
||||
GOSUB 1190
|
||||
FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
GOSUB 1180
|
||||
FLAG3 = 1
|
||||
3170 IF G > S THEN GOTO 3910
|
||||
REM * IMPERIAL FIGHTER ATTACKS *
|
||||
FLAG3 = 0: IMNEW = 0: IMNEW1 = 0: IMPFIGH2 = 0: IMPFIGH3 = 0: PUT (E, F), IM
|
||||
GOSUB 1190
|
||||
3210 DELTAX = 29 - E: DELTAY = 19 - F
|
||||
IF DELTAX > 0 THEN E = E + 1
|
||||
IF DELTAX < 0 THEN E = E - 1
|
||||
IF DELTAY > 0 THEN F = F + 1
|
||||
IF DELTAY < 0 THEN F = F - 1
|
||||
IF DELTAX = 0 AND DELTAY = 0 GOTO 3320
|
||||
PUT (E, F), IM: IF IMNEW1 = 0 THEN IMNEW1 = 1: GOTO 3290
|
||||
PUT (EP, FP), IM
|
||||
3290 EP = E: FP = F
|
||||
DELAYPERIOD% = 32: GOSUB DELAY 'PLAY "P32"
|
||||
GOTO 3210
|
||||
3320 PUT (EP - 4, FP - 1), IM4
|
||||
PUT (EP, FP), IM
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
PUT (EP - 9, FP - 2), IM5
|
||||
PUT (EP - 4, FP - 1), IM4
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
PUT (EP - 12, FP - 6), IM6
|
||||
PUT (EP - 9, FP - 2), IM5
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
PUT (EP - 9, FP - 7), IM7
|
||||
PUT (EP - 12, FP - 6), IM6
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
PUT (EP - 20, FP - 14), IM8
|
||||
PUT (EP - 9, FP - 7), IM7
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
PUT (EP - 20, FP - 14), IM8
|
||||
FOR J2 = 10000 TO 100 STEP -500
|
||||
SOUND J2, .001 * 18.2
|
||||
NEXT J2
|
||||
FOR A = 1 TO 50: NEXT A
|
||||
FOR J2 = 10000 TO 100 STEP -500
|
||||
SOUND J2, .001 * 18.2
|
||||
NEXT J2
|
||||
G = G + 25000
|
||||
E = INT(RND * 61) + 10: F = INT(RND * 21) + 10
|
||||
K = INT(RND * 10)
|
||||
IF K > SKILL THEN 3790
|
||||
'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
||||
3600 CLS
|
||||
PRINT "BLAM!"
|
||||
FOR J2 = 1000 TO 37 STEP -10
|
||||
SOUND J2, .01 * 18.2
|
||||
NEXT J2
|
||||
PRINT
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
||||
PRINT "YOU HAVE JUST BEEN SHOT DOWN BY AN";
|
||||
PRINT "IMPERIAL SKY FIGHTER!"
|
||||
PRINT
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
||||
PRINT "YOU ARE A HERO!"
|
||||
PRINT
|
||||
PRINT "UNFORTUNATELY, YOU ARE A DEAD HERO AND";
|
||||
PRINT "DEAD HEROES DON'T WIN WARS. DARTH VADER";
|
||||
PRINT "WINS!"
|
||||
PRINT
|
||||
PRINT "********* YOU LOSE!! *********"
|
||||
GOTO 5310
|
||||
3790 FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER MISSED ****";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER MISSED ****";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
IM(0) = IM1(0): IM(1) = IM1(1): IM(2) = IM1(2): IM(3) = IM1(3): IM(4) = IM1(4): IM(5) = IM1(5): IM(6) = IM1(6)
|
||||
GOSUB 1180
|
||||
REM * DISPLAY DARTH VADER *
|
||||
3910 GOSUB 1190
|
||||
IF J - S > 26000 THEN GOSUB 1180: GOTO 5140
|
||||
IF J - S < 20000 AND DVADER2 = 0 THEN DVADER2 = 1: DVFLAG = 1: DV(0) = DV2(0): DV(1) = DV2(1): DV(2) = DV2(2): DV(3) = DV2(3): DVX = 37: DVY = 20: DVR1 = 2: DVR2 = 2
|
||||
IF J - S < 10000 AND DVADER3 = 0 THEN DVADER3 = 1: DVFLAG = 2: DV(0) = DV3(0): DV(1) = DV3(1): DV(2) = DV3(2): DV(3) = DV3(3): DV(4) = DV3(4): DV(5) = DV3(5): DV(6) = DV3(6): DVX = 35: DVY = 19: DVR1 = 4: DVR2 = 3
|
||||
IF FLAG2 <> BYPASS THEN FLAG2 = FLAG2 + 1: GOTO 3980
|
||||
FLAG2 = 0
|
||||
H = H + INT(RND * 5) - 2: i = i + INT(RND * 5) - 2
|
||||
3980 H = H - W: i = i - V
|
||||
IF H < 2 THEN H = 2 + INT(RND * 3)
|
||||
IF H > 69 THEN H = 69 - INT(RND * 3)
|
||||
IF i < 2 THEN i = 2 + INT(RND * 3)
|
||||
IF i > 37 THEN i = 37 - INT(RND * 3)
|
||||
PUT (H, i), DV
|
||||
IF DVNEW = 0 THEN DVNEW = 1: GOTO 4090
|
||||
IF DVFLAG = 0 GOTO 4080
|
||||
IF DVFLAG = 1 THEN DVFLAG = 0: PUT (HP, IP), DV1: GOTO 4090
|
||||
IF DVFLAG = 2 THEN DVFLAG = 0: PUT (HP, IP), DV2: GOTO 4090
|
||||
4080 PUT (HP, IP), DV
|
||||
4090 GOSUB 1180
|
||||
HP = H: IP = i
|
||||
IF J - S > 5000 OR FLAG4 = 1 GOTO 4350
|
||||
GOSUB 1190
|
||||
IF DVGONE = 0 GOTO 4240
|
||||
FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
GOTO 4330
|
||||
4240 FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "**** DARTH VADER ATTACKS ****";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "**** DARTH VADER ATTACKS ****";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
4330 FLAG4 = 1
|
||||
GOSUB 1180
|
||||
4350 IF J > S THEN GOTO 5140
|
||||
REM * DARTH VADER ATTACKS *
|
||||
FLAG4 = 0: DVNEW = 0: DVNEW1 = 0: DVADER2 = 0: DVADER3 = 0: PUT (H, i), DV
|
||||
GOSUB 1190
|
||||
4390 DELTAX = 41 - H: DELTAY = 19 - i
|
||||
IF DELTAX > 0 THEN H = H + 1
|
||||
IF DELTAX < 0 THEN H = H - 1
|
||||
IF DELTAY > 0 THEN i = i + 1
|
||||
IF DELTAY < 0 THEN i = i - 1
|
||||
IF DELTAX = 0 AND DELTAY = 0 GOTO 4500
|
||||
PUT (H, i), DV: IF DVNEW1 = 0 THEN DVNEW1 = 1: GOTO 4470
|
||||
PUT (HP, IP), DV
|
||||
4470 HP = H: IP = i
|
||||
DELAYPERIOD% = 32: GOSUB DELAY 'PLAY "P32"
|
||||
GOTO 4390
|
||||
4500 IF DVGONE = 0 THEN PUT (HP, IP - 1), DV4 ELSE PUT (HP, IP - 1), IM4
|
||||
PUT (HP, IP), DV
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
IF DVGONE = 0 THEN PUT (HP + 3, IP - 2), DV5 ELSE PUT (HP + 3, IP - 2), IM5
|
||||
IF DVGONE = 0 THEN PUT (HP, IP - 1), DV4 ELSE PUT (HP, IP - 1), IM4
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
IF DVGONE = 0 THEN PUT (HP + 2, IP - 6), DV6 ELSE PUT (HP + 2, IP - 6), IM6
|
||||
IF DVGONE = 0 THEN PUT (HP + 3, IP - 2), DV5 ELSE PUT (HP + 3, IP - 2), IM5
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
IF DVGONE = 0 THEN PUT (HP + 1, IP - 6), DV7 ELSE PUT (HP + 1, IP - 6), IM7
|
||||
IF DVGONE = 0 THEN PUT (HP + 2, IP - 6), DV6 ELSE PUT (HP + 2, IP - 6), IM6
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
IF DVGONE = 0 THEN PUT (HP + 2, IP - 6), DV8 ELSE PUT (HP + 2, IP - 6), IM8
|
||||
IF DVGONE = 0 THEN PUT (HP + 1, IP - 6), DV7 ELSE PUT (HP + 1, IP - 6), IM7
|
||||
DELAYPERIOD% = 4: GOSUB DELAY 'PLAY "P4"
|
||||
IF DVGONE = 0 THEN PUT (HP + 2, IP - 6), DV8 ELSE PUT (HP + 2, IP - 6), IM8
|
||||
FOR J2 = 10000 TO 100 STEP -500
|
||||
SOUND J2, .001 * 18.2
|
||||
NEXT J2
|
||||
FOR A = 1 TO 50: NEXT A
|
||||
FOR J2 = 10000 TO 100 STEP -500
|
||||
SOUND J2, .001 * 18.2
|
||||
NEXT J2
|
||||
J = J + 25000
|
||||
H = INT(RND * 61) + 10: i = INT(RND * 21) + 10
|
||||
K = INT(RND * 10)
|
||||
IF K > SKILL + 1 THEN 4910
|
||||
'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
||||
4780 CLS : PRINT "**** B O O M ! ****"
|
||||
FOR J2 = 1000 TO 37 STEP -10
|
||||
SOUND J2, .01 * 18.2
|
||||
NEXT J2
|
||||
PRINT
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
||||
IF DVGONE = 1 THEN PRINT "TOO BAD. YOU HAVE BEEN SHOT DOWN.": GOTO 4880
|
||||
PRINT "YOU HAVE JUST BEEN PERSONALLY SHOT DOWN";
|
||||
PRINT "BY DARTH VADER. THE FORCE WAS NOT WITH";
|
||||
PRINT "YOU."
|
||||
4880 PRINT
|
||||
PRINT "********* YOU LOSE!! *********"
|
||||
GOTO 5310
|
||||
4910 IF DVGONE = 0 GOTO 5030
|
||||
FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER MISSED ****";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "**** IMPERIAL FIGHTER MISSED ****";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DV(0) = DV1(0): DV(1) = DV1(1): DV(2) = DV1(2): DV(3) = DV1(3)
|
||||
GOTO 5140
|
||||
5030 FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "**** DARTH VADER MISSED ****";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "**** DARTH VADER MISSED ****";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DV(0) = DV1(0): DV(1) = DV1(1): DV(2) = DV1(2): DV(3) = DV1(3): DV(4) = DV1(4): DV(5) = DV1(5): DV(6) = DV1(6)
|
||||
REM * X - WING FIGHTER ROUTINE *
|
||||
5140 GOSUB 1180
|
||||
Z$ = INKEY$
|
||||
|
||||
IF LEN(Z$) = 1 THEN
|
||||
IF ASC(Z$) > 48 AND ASC(Z$) <= 57 THEN Q = ASC(Z$) - 48
|
||||
IF Z$ = " " THEN GOSUB 5350
|
||||
IF Z$ = CHR$(13) THEN GOSUB 5750
|
||||
END IF
|
||||
IF LEN(Z$) = 2 THEN
|
||||
IF Z$ = CHR$(0) + "H" THEN GOSUB 1100 'UP
|
||||
IF Z$ = CHR$(0) + "K" THEN GOSUB 1120 'LEFT
|
||||
IF Z$ = CHR$(0) + "M" THEN GOSUB 1140 'RIGHT
|
||||
IF Z$ = CHR$(0) + "P" THEN GOSUB 1160 'DOWN
|
||||
END IF
|
||||
|
||||
S = S + Q * 100
|
||||
IF S > O GOTO 6410
|
||||
REM * TIME ROUTINE *
|
||||
SEC2 = VAL(RIGHT$(TIME$, 2))
|
||||
SECNEW = SEC2
|
||||
IF SECNEW = SECOLD GOTO 5280
|
||||
IF SECNEW < SECOLD THEN N8 = N8 + 1
|
||||
SECOLD = SEC2
|
||||
A2NEW = A2 - (SEC2 + (60 * N8) - SEC1)
|
||||
IF A2NEW < 0 THEN A2NEW = A2NEW + 60: A1 = A1 - 1: A2 = A2 + 60
|
||||
IF A1 < 0 GOTO 6760
|
||||
5280 GOTO 2320
|
||||
REM * DISPLAY SKY FIGHTER *
|
||||
IF J - S < 10000 THEN A = 3
|
||||
5310 REM * NEW GAME *
|
||||
PRINT
|
||||
PRINT "HIT ENTER TO PLAY AGAIN, ESC TO GIVE UP"
|
||||
'5340 B$ = INKEY$: IF B$ = CHR$(13) THEN GOTO 1300 ELSE IF B$ = CHR$(27) THEN CLS : WIDTH 80: SCREEN 0: KEY ON: GOTO 9911 ELSE GOTO 5340
|
||||
5340 B$ = INKEY$: IF B$ = CHR$(13) THEN GOTO 1300 ELSE IF B$ = CHR$(27) THEN CLS : WIDTH 80: SCREEN 0: GOTO 9911 ELSE GOTO 5340
|
||||
5350 REM * FIRE CANNON *
|
||||
'KEY(2) STOP: KEY(11) STOP: KEY(12) STOP: KEY(13) STOP: KEY(14) STOP
|
||||
PUT (2, 2), LASAR
|
||||
FOR J2 = 5000 TO 100 STEP -250
|
||||
SOUND J2, .01 * 18.2
|
||||
NEXT J2
|
||||
PUT (2, 2), LASAR
|
||||
IF G - S < 26000 AND ABS(IMX - E) < IMR1 AND ABS(IMY - F) < IMR2 GOTO 5450
|
||||
IF J - S < 26000 AND ABS(DVX - H) < DVR1 AND ABS(DVY - i) < DVR2 GOTO 5580
|
||||
GOTO 5730
|
||||
5450 FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL3: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL3: NEXT I9
|
||||
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL4: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL4: NEXT I9
|
||||
PUT (E, F), IM
|
||||
IF IMR2 = 1 GOTO 5540
|
||||
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL5: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL5: NEXT I9
|
||||
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL6: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL6: NEXT I9
|
||||
IF IMR2 = 2 GOTO 5540
|
||||
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL7: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL7: NEXT I9
|
||||
FOR I9 = 1 TO 2: PUT (E - 2, F - 3), EXPL8: DELAYPERIOD% = 64: GOSUB DELAY: PUT (E - 2, F - 3), EXPL8: NEXT I9
|
||||
5540 G = G + 25000: E = INT(RND * 61) + 10: F = INT(RND * 21) + 10: FLAG3 = 0: IMNEW = 0: IMPFIGH2 = 0: IMPFIGH3 = 0
|
||||
IMX = 38: IMY = 21: IMR1 = 1: IMR2 = 1
|
||||
IM(0) = IM1(0): IM(1) = IM1(1): IM(2) = IM1(2): IM(3) = IM1(3): IM(4) = IM1(4): IM(5) = IM1(5): IM(6) = IM1(6)
|
||||
GOTO 5730
|
||||
5580 FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL3: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL3: NEXT I9
|
||||
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL4: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL4: NEXT I9
|
||||
PUT (H, i), DV
|
||||
IF DVR2 = 1 GOTO 5670
|
||||
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL5: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL5: NEXT I9
|
||||
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL6: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL6: NEXT I9
|
||||
IF DVR2 = 2 GOTO 5670
|
||||
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL7: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL7: NEXT I9
|
||||
FOR I9 = 1 TO 2: PUT (H - 2, i - 3), EXPL8: DELAYPERIOD% = 64: GOSUB DELAY: PUT (H - 2, i - 3), EXPL8: NEXT I9
|
||||
5670 J = J + 25000: H = INT(RND * 61) + 10: i = INT(RND * 21) + 10: FLAG4 = 0: LOCATE 19, 8: PRINT "KM TO IMPERIAL FIGHTER";
|
||||
DVNEW = 0: DVADER2 = 0: DVADER3 = 0
|
||||
DVX = 38: DVY = 21: DVR1 = 1: DVR2 = 1
|
||||
IF DVGONE = 0 THEN DV3(0) = IM3(0): DV3(1) = IM3(1): DV3(2) = IM3(2): DV3(3) = IM3(3): DV3(4) = IM3(4): DV3(5) = IM3(5): DV3(6) = IM3(6)
|
||||
DV(0) = DV1(0): DV(1) = DV1(1): DV(2) = DV1(2): DV(3) = DV1(3): DV(4) = DV1(4): DV(5) = DV1(5): DV(6) = DV1(6)
|
||||
DVGONE = 1
|
||||
5730 'KEY(2) ON: KEY(11) ON: KEY(12) ON: KEY(13) ON: KEY(14) ON
|
||||
RETURN
|
||||
5750 REM * FIRE TORPEDO *
|
||||
'KEY(1) STOP: KEY(11) STOP: KEY(12) STOP: KEY(13) STOP: KEY(14) STOP
|
||||
IF Z = 0 THEN 3600
|
||||
FOR J2 = 1500 TO 100 STEP -20
|
||||
SOUND J2, .01 * 18.2
|
||||
SOUND 3600 - J2, .01 * 18.2
|
||||
NEXT J2
|
||||
Z = Z - 1
|
||||
IF O - S > 10000 THEN 5990
|
||||
IF POINT(38, 21) <> 3 THEN 5880
|
||||
IF SKILL = 0 GOTO 6100
|
||||
K = INT(RND * 10)
|
||||
IF K > SKILL + 1 THEN 6100
|
||||
5880 FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "**** TORPEDO MISSED ****";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "**** TORPEDO MISSED ****";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
IF Z <= 0 THEN 4780
|
||||
GOTO 6080
|
||||
5990 FOR K = 1 TO 2
|
||||
LOCATE 24, 1: PRINT "**** OUT OF RANGE ****";
|
||||
DELAYPERIOD% = 2: GOSUB DELAY 'PLAY "L2 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
DELAYPERIOD% = 16: GOSUB DELAY 'PLAY "L16 N0"
|
||||
NEXT K
|
||||
LOCATE 24, 1: PRINT "**** OUT OF RANGE ****";
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
LOCATE 24, 1: PRINT " ";
|
||||
6080 'KEY(1) ON: KEY(11) ON: KEY(12) ON: KEY(13) ON: KEY(14) ON
|
||||
RETURN
|
||||
6100 REM * GAME WON *
|
||||
'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
||||
FOR SCALE = 1 TO 24
|
||||
'DRAW "C3;S=SCALE;BM38,21;NM+6,0;NM-6,0;NM+0,-3;NM+0,3;NM-6,3;NM+6,-3;NM-6,-3;NM+6,3;NM+3,-3;NM-3,3;NM+3,3;NM-3,-3;NM+6,2;NM-6,-2;NM-6,1;NM+6,-1;NM+1,3;NM-1,-3"
|
||||
D2S = SCALE
|
||||
DRAW2$ = "C3;BM38,21;NM+6,0;NM-6,0;NM+0,-3;NM+0,3;NM-6,3;NM+6,-3;NM-6,-3;NM+6,3;NM+3,-3;NM-3,3;NM+3,3;NM-3,-3;NM+6,2;NM-6,-2;NM-6,1;NM+6,-1;NM+1,3;NM-1,-3": GOSUB DRAW2
|
||||
D2S = 0
|
||||
NEXT SCALE
|
||||
CLS
|
||||
FOR K = 1 TO 5
|
||||
SOUND 37, .1 * 18.2
|
||||
SCREEN 0: WIDTH 40
|
||||
FOR A = 1 TO 10: NEXT A
|
||||
SCREEN 1: WIDTH 80
|
||||
NEXT K
|
||||
WIDTH 40
|
||||
CLS : PRINT : PRINT : PRINT
|
||||
PRINT "* * * * * * * * * * * * * * * * * * * *";
|
||||
PRINT "* *";
|
||||
PRINT "* *";
|
||||
PRINT "* THE FORCE IS WITH YOU !! *";
|
||||
PRINT "* *";
|
||||
PRINT "* YOU HAVE DESTROYED THE DEATH STAR ! *";
|
||||
PRINT "* *";
|
||||
PRINT "* YOU HAVE SAVED THE REPUBLIC ! *";
|
||||
PRINT "* *";
|
||||
PRINT "* PRINCESS LEAH WILL LOVE YOU ALWAYS! *";
|
||||
PRINT "* *";
|
||||
PRINT "* * * * * * * * * * * * * * * * * * * *"
|
||||
SOUND 525.25, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 587.33, 18.2 / 6: SOUND 1046.6, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 587.33, 18.2 / 6
|
||||
SOUND 1046.5, 18.2: SOUND 783.99, 18.2 / 2: SOUND 698.46, 18.2 / 6: SOUND 659.26, 18.2 / 6: SOUND 698.46, 18.2 / 6: SOUND 587.33, 18.2
|
||||
PRINT
|
||||
GOTO 5310
|
||||
REM * COLLISION WITH DEATH STAR *
|
||||
6410 'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
||||
6420 DELTAX = 35 - M: DELTAY = 18 - N
|
||||
IF DELTAX > 0 THEN M = M + 1
|
||||
IF DELTAX < 0 THEN M = M - 1
|
||||
IF DELTAY > 0 THEN N = N + 1
|
||||
IF DELTAY < 0 THEN N = N - 1
|
||||
IF DELTAX = 0 AND DELTAY = 0 GOTO 6530
|
||||
PUT (M, N), DS
|
||||
PUT (MP, NP), DS
|
||||
MP = M: NP = N
|
||||
DELAYPERIOD% = 32: GOSUB DELAY 'PLAY "P32"
|
||||
GOTO 6420
|
||||
6530 FOR RAD = 4 TO 20
|
||||
CIRCLE (38, 21), RAD, 3
|
||||
DELAYPERIOD% = 32: GOSUB DELAY 'PLAY "P32"
|
||||
NEXT RAD
|
||||
CLS : PRINT "CRASH"
|
||||
FOR J2 = 1000 TO 37 STEP -10
|
||||
SOUND J2, .01 * 18.2
|
||||
NEXT J2
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
||||
PRINT
|
||||
PRINT "DARTH VADER IS LAUGHING AT YOU."
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
||||
PRINT
|
||||
PRINT "YOU HAVE JUST COLLIDED WITH THE DEATH";
|
||||
PRINT "STAR. THEY DID NOT EVEN HEAR THE";
|
||||
PRINT "COLLISION. YOU DID NOT EVEN SCRATCH";
|
||||
PRINT "THE DEATH STAR'S PAINT, BUT YOU ARE ";
|
||||
PRINT "DEAD!"
|
||||
PRINT
|
||||
PRINT "********* YOU LOSE!! *********"
|
||||
PRINT
|
||||
GOTO 5310
|
||||
REM * OUT OF TIME *
|
||||
6760 'KEY(1) OFF: KEY(2) OFF: KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
|
||||
CLS : PRINT "TOO LATE!"
|
||||
FOR J2 = 1000 TO 37 STEP -10
|
||||
SOUND J2, .01 * 18.2
|
||||
NEXT J2
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
||||
PRINT
|
||||
PRINT "DARTH VADER IS LAUGHING AT YOU."
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0": PLAY "L1 N0"
|
||||
PRINT
|
||||
PRINT "THE DEATH STAR HAS JUST DESTROYED";
|
||||
PRINT "PRINCESS LEAH AND THE ENTIRE REBEL";
|
||||
PRINT "STRONGHOLD";
|
||||
PRINT
|
||||
PRINT "********* YOU LOSE!! *********"
|
||||
PRINT
|
||||
GOTO 5310
|
||||
6930 CLS
|
||||
PRINT " STAR PILOT INSTRUCTIONS"
|
||||
PRINT
|
||||
PRINT " THE DEATH STAR SPACE STATION, UNDER";
|
||||
PRINT "THE COMMAND OF DARTH VADER, IS THE MOST";
|
||||
PRINT "POWERFUL WEAPON THE UNIVERSE HAS EVER";
|
||||
PRINT "KNOWN. A FRONTAL ATTACK BY ANY OTHER";
|
||||
PRINT "CRAFT WOULD BE ABSOLUTE SUICIDE. HOWEVER";
|
||||
PRINT "INTELLIGENCE DELIVERED TO OUR REPUBLIC";
|
||||
PRINT "HEADQUARTERS BY THE ANDROIDS R2D2 AND";
|
||||
PRINT "C3PO GIVES A FAINT HOPE OF A SUCCESSFUL";
|
||||
PRINT "ATTACK BY A SMALL ONE OR TWO PASSENGER";
|
||||
PRINT "X-WING FIGHTER."
|
||||
PRINT
|
||||
PRINT " THERE IS A SMALL, UNSHIELDED EXHAUST";
|
||||
PRINT "PORT ON THE SURFACE OF THE DEATH STAR";
|
||||
PRINT "THAT LEADS DIRECTLY TO THE MAIN REACTOR.";
|
||||
PRINT "SINCE IT IS AN EMERGENCY THERMAL PORT IN";
|
||||
PRINT "CASE THE REACTOR OVERHEATS, IT COULD NOT";
|
||||
PRINT "BE SHIELDED."
|
||||
PRINT
|
||||
INPUT " (PRESS ENTER TO CONTINUE)", B$
|
||||
CLS
|
||||
PRINT
|
||||
PRINT " IF YOU CAN SLIP YOUR SMALL FIGHTER";
|
||||
PRINT "PAST THE DEATH STAR'S DEFENSES AND MAKE";
|
||||
PRINT "A DIRECT HIT ON THE THERMAL EXHAUST PORT";
|
||||
PRINT "WITH A TORPEDO, THERE IS A CHANCE THAT";
|
||||
PRINT "THE TORPEDO WILL PENETRATE TO THE";
|
||||
PRINT "MAIN REACTOR AND START A CHAIN REACTION,";
|
||||
PRINT "DESTROYING THE DEATH STAR."
|
||||
PRINT
|
||||
PRINT " IT IS A SLIM CHANCE, BUT IT IS THE";
|
||||
PRINT "ONLY HOPE THE REPUBLIC HAS. OBI-WAN";
|
||||
PRINT "KENOBI GAVE HIS LIFE TO GET THE MESSAGE";
|
||||
PRINT "HERE, SO HE CONSIDERED IT IMPORTANT."
|
||||
PRINT : PRINT : PRINT : PRINT
|
||||
PRINT "PRESS ENTER FOR X-WING FIGHTER ";
|
||||
INPUT " FAMILIARIZATION", B$
|
||||
CLS
|
||||
PRINT " REPUBLIC X-WING FIGHTER "
|
||||
PRINT
|
||||
PRINT " THE X-WING FIGHTER IS A SMALL ONE";
|
||||
PRINT "MAN SPACESHIP THAT IS, QUITE FRANKLY,";
|
||||
PRINT "OBSOLETE. IT IS ARMED ONLY WITH A LASER";
|
||||
PRINT "CANNON AND THREE TORPEDOES. USE THE";
|
||||
PRINT "LASER CANNON TO FIGHT OFF ANY IMPERIAL";
|
||||
PRINT "FIGHTERS AND SAVE THE TORPEDOES FOR THE";
|
||||
PRINT "DEATH STAR."
|
||||
PRINT
|
||||
PRINT " THE TARGET ACQUISITION RADAR CAN";
|
||||
PRINT "DETECT IN EXCESS OF 100,000 KILOMETERS";
|
||||
PRINT "AWAY, BUT CAN ONLY DISPLAY TARGETS WITH-";
|
||||
PRINT "IN 20,000 KM. THEREFORE, YOU WILL BE";
|
||||
PRINT "WARNED OF APPROACHING TARGETS ON YOUR";
|
||||
PRINT "CONTROL PANEL BEFORE THEY ARE DISPLAYED";
|
||||
PRINT "ON THE RADAR SCREEN."
|
||||
PRINT
|
||||
INPUT " (PRESS ENTER TO CONTINUE)", B$
|
||||
CLS
|
||||
PRINT
|
||||
PRINT " THE LASER CANNON IS AN ANTIQUATED";
|
||||
PRINT "WEAPON. TO HIT AN ENEMY, YOU MUST HAVE";
|
||||
PRINT "HIM IN THE EXACT CENTER OF THE CROSS";
|
||||
PRINT "HAIRS ON YOUR RADAR SCREEN. THEN YOU MAY";
|
||||
PRINT "FIRE THE LASER CANNON BY PRESSING THE";
|
||||
PRINT "SPACE BAR ON YOUR CONTROL PANEL."
|
||||
PRINT
|
||||
PRINT " YOUR THREE TORPEDOES ARE COMPUTER";
|
||||
PRINT "GUIDED, BUT ALSO QUITE LIMITED. MAKE";
|
||||
PRINT "SURE THAT YOU ARE WITHIN 10000 KM OF THE";
|
||||
PRINT "DEATH STAR AND THAT YOU HAVE SOME PART";
|
||||
PRINT "OF THE SPACE STATION IN THE CENTER OF";
|
||||
PRINT "THE CROSS HAIRS ON YOUR RADAR SCREEN.";
|
||||
PRINT "EVEN THEN, SINCE IT TAKES A PERFECT HIT";
|
||||
PRINT "ON THE EXHAUST PORT TO DESTROY THE DEATH";
|
||||
PRINT "STAR, YOU MAY REQUIRE MORE THAN ONE";
|
||||
PRINT "TORPEDO. PRESS THE ENTER KEY TO FIRE THE";
|
||||
PRINT "TORPEDO."
|
||||
PRINT
|
||||
INPUT " (PRESS ENTER TO CONTINUE)", B$
|
||||
CLS
|
||||
PRINT
|
||||
PRINT " THE SPEED OF YOUR SHIP IS CONTROLLED";
|
||||
PRINT "BY TYPING THE NUMBERS 1 THROUGH 9 (FOR";
|
||||
PRINT "MACH 10 THROUGH 90 RESPECTIVELY). THE";
|
||||
PRINT "MOVEMENT OF YOUR SHIP IS CONTROLLED BY";
|
||||
PRINT "THE CURSOR CONTROLS. SINCE THESE INPUTS";
|
||||
PRINT "MOVE YOUR SHIP AND NOT THE TARGETS, THE";
|
||||
PRINT "TARGETS APPEAR TO MOVE IN THE OPPOSITE";
|
||||
PRINT "DIRECTION. ALSO, YOU CAN EXPECT THE";
|
||||
PRINT "ENEMY TO TAKE EVASIVE ACTION."
|
||||
PRINT
|
||||
PRINT " WHEN SELECTING THE SKILL LEVEL, 0 IS";
|
||||
PRINT "THE EASIEST GAME AND 3 IS THE HARDEST.";
|
||||
PRINT "SKILL LEVEL 0 PROVIDES THE BEST CHANCE";
|
||||
PRINT "OF BEING MISSED BY THE FIGHTERS AND OF";
|
||||
PRINT "HITTING THE DEATH STAR. LEVEL 0 ALSO";
|
||||
PRINT "PROVIDES THE LARGEST TIME LIMIT BEFORE";
|
||||
PRINT "THE DEATH STAR DESTROYS THE REBEL BASE."
|
||||
PRINT
|
||||
PRINT
|
||||
INPUT "PRESS ENTER FOR TAKE-OFF", B$
|
||||
CLS
|
||||
PRINT "****************************************"
|
||||
PRINT
|
||||
PRINT " MAY THE FORCE BE WITH YOU"
|
||||
PRINT
|
||||
PRINT "****************************************"
|
||||
DELAYPERIOD% = 1: GOSUB DELAY: GOSUB DELAY 'PLAY "L1 N0": PLAY "L1 N0"
|
||||
GOTO 1300
|
||||
9911 CLS
|
||||
END
|
||||
|
||||
'PAUSES FOR THE DURATION OF PLAY "P?" WHERE DELAYPERIOD%=?
|
||||
'EG. DELAYPERIOD%=1: GOSUB DELAY
|
||||
DELAY:
|
||||
TIMERTICKS% = 1 / DELAYPERIOD% * 18.2
|
||||
IF TIMERTICKS% = 0 THEN TIMERTICKS% = 1
|
||||
LASTTIMERVALUE! = TIMER
|
||||
FOR TIMERTICK% = 1 TO TIMERTICKS%
|
||||
DO: TIMERVALUE! = TIMER: LOOP WHILE TIMERVALUE! = LASTTIMERVALUE!
|
||||
LASTTIMERVALUE! = TIMERVALUE!
|
||||
NEXT
|
||||
RETURN
|
||||
|
||||
'DRAW2 IS A WORKAROUND FOR THE DRAW STATEMENT USING STRING DRAW2$
|
||||
'*VERY LIMITED FUNCTIONALITY*
|
||||
DRAW2:
|
||||
IF D2S = 0 THEN D2S2! = 1 ELSE D2S2! = D2S / 4
|
||||
D2D$ = ""
|
||||
DO WHILE LEN(DRAW2$)
|
||||
D2$ = LEFT$(DRAW2$, 1): DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - 1)
|
||||
IF D2$ = "C" THEN
|
||||
D2V = VAL(DRAW2$): D2L = LEN(LTRIM$(RTRIM$(STR$(D2V)))): DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - D2L)
|
||||
D2COL = D2V
|
||||
D2D$ = D2D$ + "C" + STR$(D2COL)
|
||||
END IF
|
||||
IF D2$ = "B" THEN D2NODRAW = 1: D2D$ = D2D$ + "B"
|
||||
IF D2$ = "N" THEN D2NOMOVE = 1: D2D$ = D2D$ + "N"
|
||||
IF D2$ = "M" THEN
|
||||
D2D$ = D2D$ + "M"
|
||||
D2$ = LEFT$(DRAW2$, 1)
|
||||
IF D2$ = "+" OR D2$ = "-" THEN
|
||||
D2RELATIVE = 1
|
||||
IF D2$ = "+" THEN DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - 1): D2D$ = D2D$ + "+"
|
||||
END IF
|
||||
D2V = VAL(DRAW2$): D2L = LEN(LTRIM$(RTRIM$(STR$(D2V)))): DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - D2L)
|
||||
D2X = D2V
|
||||
D2D$ = D2D$ + STR$(D2X) + ","
|
||||
DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - 1) 'SKIP COMMA
|
||||
D2V = VAL(DRAW2$): D2L = LEN(LTRIM$(RTRIM$(STR$(D2V)))): DRAW2$ = RIGHT$(DRAW2$, LEN(DRAW2$) - D2L)
|
||||
D2Y = D2V
|
||||
D2D$ = D2D$ + STR$(D2Y)
|
||||
'ASSUME NODRAW AND NOMOVE ARE USED EXCLUSIVELY
|
||||
IF D2NOMOVE = 0 AND D2NODRAW = 0 THEN
|
||||
IF D2RELATIVE THEN LINE -STEP(D2X * D2S2!, D2Y * D2S2!), D2COL ELSE LINE -(D2X, D2Y), D2COL
|
||||
END IF
|
||||
IF D2NODRAW THEN
|
||||
IF D2RELATIVE THEN PSET STEP(D2X * D2S2!, D2Y * D2S2!), D2COL ELSE PSET (D2X, D2Y), D2COL
|
||||
END IF
|
||||
IF D2NOMOVE THEN
|
||||
'ASSUME RELATIVE
|
||||
LINE -STEP(D2X * D2S2!, D2Y * D2S2!), D2COL: LINE -STEP(-D2X * D2S2!, -D2Y * D2S2!), D2COL
|
||||
END IF
|
||||
D2RELATIVE = 0: D2NODRAW = 0: D2NOMOVE = 0
|
||||
END IF
|
||||
LOOP
|
||||
RETURN
|
||||
|
447
tests/qbasic_testcases/n54/big/3dsviewer/3dsviewer.bas
Normal file
447
tests/qbasic_testcases/n54/big/3dsviewer/3dsviewer.bas
Normal file
|
@ -0,0 +1,447 @@
|
|||
CHDIR ".\programs\samples\n54\big\3dsviewer"
|
||||
|
||||
'----sub declarations
|
||||
'--file stuff
|
||||
DECLARE SUB ReadChunkInfo (ChunkInfoHolder AS ANY, BytePosition AS LONG)
|
||||
DECLARE SUB SkipChunk (ChunkInfoHolder AS ANY, BytePosition AS LONG)
|
||||
DECLARE SUB SearchForChunk (ChunkInfoHolder AS ANY)
|
||||
DECLARE SUB ReadObject ()
|
||||
'--3D engine stuff
|
||||
DECLARE SUB multiplyMatrices (matrixA(), matrixB(), result())
|
||||
DECLARE SUB getScalingMatrix (sX, sY, sZ, result())
|
||||
DECLARE SUB getRotationXMatrix (rX, result())
|
||||
DECLARE SUB getRotationYMatrix (rY, result())
|
||||
DECLARE SUB getRotationZMatrix (rZ, result())
|
||||
DECLARE SUB getTranslationMatrix (tX, tY, tZ, result())
|
||||
DECLARE SUB getCombinedMatrix (sX, sY, sZ, rX, rY, rZ, tX, tY, tZ, temp(), temp2(), result())
|
||||
DECLARE SUB getNewXYZ (X, Y, Z, combinedMatrix())
|
||||
DECLARE SUB getScreenXY (X, Y, Z)
|
||||
|
||||
'----global declarations
|
||||
REM $DYNAMIC
|
||||
DIM SHARED PointsArray(0, 0) AS SINGLE
|
||||
DIM SHARED NewPointsArray(0, 0) AS LONG
|
||||
DIM SHARED FaceArray(0, 0) AS INTEGER
|
||||
REM $STATIC
|
||||
DIM SHARED numberVertices AS INTEGER
|
||||
DIM SHARED numberFaces AS INTEGER
|
||||
DIM SHARED CurrentBytePosition AS LONG
|
||||
DIM SHARED FindChunk$
|
||||
|
||||
'----type definitions
|
||||
TYPE ChunkInfo
|
||||
ID AS INTEGER
|
||||
Size AS LONG
|
||||
Position AS LONG
|
||||
END TYPE
|
||||
|
||||
'----open file
|
||||
CLS
|
||||
PRINT "Would you like to view car.3ds (y/n)?"
|
||||
DO
|
||||
k$ = INKEY$
|
||||
LOOP UNTIL k$<>""
|
||||
IF UCASE$(k$) = "N" THEN
|
||||
INPUT "Please input the file you wish to load:", fileName$
|
||||
ELSE
|
||||
fileName$="car.3ds"
|
||||
END IF
|
||||
OPEN fileName$ FOR BINARY AS #1
|
||||
|
||||
'----initialise variables
|
||||
sX = 5
|
||||
sY = 5
|
||||
sZ = 5
|
||||
rX = 0
|
||||
rY = 0
|
||||
rZ = 0
|
||||
tX = 0
|
||||
tY = 0
|
||||
tZ = 500
|
||||
currentFrame = 0
|
||||
|
||||
'----allocate space for matrix calcs
|
||||
DIM temp(3, 3)
|
||||
DIM temp2(3, 3)
|
||||
DIM result(3, 3)
|
||||
|
||||
'----MAIN PROGRAM
|
||||
CLS
|
||||
PRINT "3DS Object Viewer 0.5"
|
||||
PRINT "---------------------"
|
||||
PRINT "By David Llewellyn"
|
||||
PRINT "24/10/2004"
|
||||
PRINT ""
|
||||
CALL ReadObject
|
||||
PRINT ""
|
||||
PRINT "Press any key to continue"
|
||||
DO
|
||||
LOOP UNTIL INKEY$ > CHR$(0)
|
||||
|
||||
'3D-Section
|
||||
SCREEN 7, , 0, 1
|
||||
Colour = 4
|
||||
oldTime = TIMER
|
||||
|
||||
DO
|
||||
|
||||
CALL getCombinedMatrix(sX, sY, sZ, rX, rY, rZ, tX, tY, tZ, temp(), temp2(), result())
|
||||
CLS
|
||||
|
||||
FOR i = 0 TO numberVertices'load screen coordinates into new array
|
||||
X = PointsArray(0, i)
|
||||
Y = PointsArray(1, i)
|
||||
Z = PointsArray(2, i)
|
||||
CALL getNewXYZ(X, Y, Z, result())
|
||||
CALL getScreenXY(X, Y, Z)
|
||||
NewPointsArray(0, i) = X
|
||||
NewPointsArray(1, i) = Y
|
||||
NEXT i'load screen coordinates into new array
|
||||
|
||||
FOR i = 0 TO numberFaces - 1'draw faces
|
||||
'line from point 0 to 1
|
||||
LINE (NewPointsArray(0, FaceArray(0, i)), NewPointsArray(1, FaceArray(0, i)))-(NewPointsArray(0, FaceArray(1, i)), NewPointsArray(1, FaceArray(1, i))), Colour
|
||||
'line from point 1 to 2
|
||||
LINE (NewPointsArray(0, FaceArray(1, i)), NewPointsArray(1, FaceArray(1, i)))-(NewPointsArray(0, FaceArray(2, i)), NewPointsArray(1, FaceArray(2, i))), Colour
|
||||
'line from point 2 to 0
|
||||
LINE (NewPointsArray(0, FaceArray(2, i)), NewPointsArray(1, FaceArray(2, i)))-(NewPointsArray(0, FaceArray(0, i)), NewPointsArray(1, FaceArray(0, i))), Colour
|
||||
NEXT i'draw faces
|
||||
|
||||
PCOPY 0, 1
|
||||
frames = frames + 1
|
||||
|
||||
A$ = INKEY$
|
||||
rX = rX + .00065
|
||||
rY = rY + .00545
|
||||
IF A$ = "=" THEN tZ = tZ - 5
|
||||
IF A$ = "-" THEN tZ = tZ + 5
|
||||
|
||||
LOOP UNTIL A$ = CHR$(27)
|
||||
|
||||
newTime = TIMER
|
||||
timeTaken = newTime - oldTime
|
||||
SCREEN 13
|
||||
PRINT USING "##.##"; frames / timeTaken
|
||||
PRINT "frames per second"
|
||||
DO
|
||||
LOOP UNTIL INKEY$ > CHR$(0)
|
||||
|
||||
SYSTEM
|
||||
|
||||
SUB getCombinedMatrix (sX, sY, sZ, rX, rY, rZ, tX, tY, tZ, temp(), temp2(), result())
|
||||
|
||||
ERASE temp2
|
||||
CALL getScalingMatrix(sX, sY, sZ, result())
|
||||
CALL getRotationXMatrix(rX, temp())
|
||||
CALL multiplyMatrices(result(), temp(), temp2())'combine with x rotation
|
||||
|
||||
CALL getRotationYMatrix(rY, temp())
|
||||
ERASE result
|
||||
CALL multiplyMatrices(temp2(), temp(), result())'combine with y rotation
|
||||
|
||||
CALL getRotationZMatrix(rZ, temp())
|
||||
ERASE temp2
|
||||
CALL multiplyMatrices(result(), temp(), temp2())'combine with z rotation
|
||||
|
||||
CALL getTranslationMatrix(tX, tY, tZ, temp())
|
||||
ERASE result
|
||||
CALL multiplyMatrices(temp2(), temp(), result())'combine with translation
|
||||
|
||||
END SUB
|
||||
|
||||
SUB getNewXYZ (X, Y, Z, combinedMatrix())
|
||||
|
||||
newX = (combinedMatrix(0, 0) * X) + (combinedMatrix(0, 1) * Y) + (combinedMatrix(0, 2) * Z) + combinedMatrix(0, 3)'new X point
|
||||
newY = (combinedMatrix(1, 0) * X) + (combinedMatrix(1, 1) * Y) + (combinedMatrix(1, 2) * Z) + combinedMatrix(1, 3)'new Y point
|
||||
newZ = (combinedMatrix(2, 0) * X) + (combinedMatrix(2, 1) * Y) + (combinedMatrix(2, 2) * Z) + combinedMatrix(2, 3)'new Z point
|
||||
|
||||
X = newX
|
||||
Y = newY
|
||||
Z = newZ
|
||||
|
||||
END SUB
|
||||
|
||||
SUB getRotationXMatrix (rX, result())
|
||||
|
||||
result(0, 0) = 1
|
||||
result(1, 0) = 0
|
||||
result(2, 0) = 0
|
||||
result(3, 0) = 0
|
||||
|
||||
result(0, 1) = 0
|
||||
result(1, 1) = COS(rX)
|
||||
result(2, 1) = SIN(rX)
|
||||
result(3, 1) = 0
|
||||
|
||||
result(0, 2) = 0
|
||||
result(1, 2) = -SIN(rX)
|
||||
result(2, 2) = COS(rX)
|
||||
result(3, 2) = 0
|
||||
|
||||
result(0, 3) = 0
|
||||
result(1, 3) = 0
|
||||
result(2, 3) = 0
|
||||
result(3, 3) = 1
|
||||
|
||||
END SUB
|
||||
|
||||
SUB getRotationYMatrix (rY, result())
|
||||
|
||||
result(0, 0) = COS(rY)
|
||||
result(1, 0) = 0
|
||||
result(2, 0) = -SIN(rY)
|
||||
result(3, 0) = 0
|
||||
|
||||
result(0, 1) = 0
|
||||
result(1, 1) = 1
|
||||
result(2, 1) = 0
|
||||
result(3, 1) = 0
|
||||
|
||||
result(0, 2) = SIN(rY)
|
||||
result(1, 2) = 0
|
||||
result(2, 2) = COS(rY)
|
||||
result(3, 2) = 0
|
||||
|
||||
result(0, 3) = 0
|
||||
result(1, 3) = 0
|
||||
result(2, 3) = 0
|
||||
result(3, 3) = 1
|
||||
|
||||
END SUB
|
||||
|
||||
SUB getRotationZMatrix (rZ, result())
|
||||
|
||||
result(0, 0) = COS(rZ)
|
||||
result(1, 0) = SIN(rZ)
|
||||
result(2, 0) = 0
|
||||
result(3, 0) = 0
|
||||
|
||||
result(0, 1) = -SIN(rZ)
|
||||
result(1, 1) = COS(rZ)
|
||||
result(2, 1) = 0
|
||||
result(3, 1) = 0
|
||||
|
||||
result(0, 2) = 0
|
||||
result(1, 2) = 0
|
||||
result(2, 2) = 1
|
||||
result(3, 2) = 0
|
||||
|
||||
result(0, 3) = 0
|
||||
result(1, 3) = 0
|
||||
result(2, 3) = 0
|
||||
result(3, 3) = 1
|
||||
|
||||
END SUB
|
||||
|
||||
SUB getScalingMatrix (sX, sY, sZ, result())
|
||||
|
||||
result(0, 0) = sX
|
||||
result(1, 0) = 0
|
||||
result(2, 0) = 0
|
||||
result(3, 0) = 0
|
||||
|
||||
result(0, 1) = 0
|
||||
result(1, 1) = sY
|
||||
result(2, 1) = 0
|
||||
result(3, 1) = 0
|
||||
|
||||
result(0, 2) = 0
|
||||
result(1, 2) = 0
|
||||
result(2, 2) = sZ
|
||||
result(3, 2) = 0
|
||||
|
||||
result(0, 3) = 0
|
||||
result(1, 3) = 0
|
||||
result(2, 3) = 0
|
||||
result(3, 3) = 1
|
||||
|
||||
END SUB
|
||||
|
||||
SUB getScreenXY (X, Y, Z)
|
||||
|
||||
IF Z = 0 THEN
|
||||
X = X * 280
|
||||
Y = Y * 240
|
||||
ELSE
|
||||
X = (X * 280) / Z
|
||||
Y = (Y * 240) / Z
|
||||
END IF
|
||||
|
||||
X = INT(X + 160)
|
||||
Y = INT(Y + 100)
|
||||
|
||||
END SUB
|
||||
|
||||
SUB getTranslationMatrix (tX, tY, tZ, result())
|
||||
|
||||
result(0, 0) = 1
|
||||
result(1, 0) = 0
|
||||
result(2, 0) = 0
|
||||
result(3, 0) = 0
|
||||
|
||||
result(0, 1) = 0
|
||||
result(1, 1) = 1
|
||||
result(2, 1) = 0
|
||||
result(3, 1) = 0
|
||||
|
||||
result(0, 2) = 0
|
||||
result(1, 2) = 0
|
||||
result(2, 2) = 1
|
||||
result(3, 2) = 0
|
||||
|
||||
result(0, 3) = tX
|
||||
result(1, 3) = tY
|
||||
result(2, 3) = tZ
|
||||
result(3, 3) = 1
|
||||
|
||||
END SUB
|
||||
|
||||
SUB multiplyMatrices (matrixA(), matrixB(), result())
|
||||
|
||||
FOR i = 0 TO 3
|
||||
FOR j = 0 TO 3
|
||||
FOR k = 0 TO 3
|
||||
result(j, i) = result(j, i) + (matrixB(j, k) * matrixA(k, i))
|
||||
NEXT k
|
||||
NEXT j
|
||||
NEXT i
|
||||
|
||||
END SUB
|
||||
|
||||
SUB ReadChunkInfo (ChunkInfoHolder AS ChunkInfo, BytePosition AS LONG)
|
||||
|
||||
GET #1, BytePosition, ChunkInfoHolder.ID
|
||||
GET #1, BytePosition + 2, ChunkInfoHolder.Size
|
||||
ChunkInfoHolder.Position = BytePosition
|
||||
|
||||
END SUB
|
||||
|
||||
SUB ReadObject
|
||||
|
||||
DIM ChunkH AS ChunkInfo
|
||||
CurrentBytePosition = 1'start of file
|
||||
CALL ReadChunkInfo(ChunkH, CurrentBytePosition)
|
||||
FindChunk$ = "3D3D"
|
||||
CALL SearchForChunk(ChunkH)'CBP should now be 3D3D(EDIT3DS)
|
||||
CALL ReadChunkInfo(ChunkH, CurrentBytePosition)
|
||||
FindChunk$ = "4000"
|
||||
CALL SearchForChunk(ChunkH)'CBP should now be 4000(NAMED_OBJECT)
|
||||
'\/Read & display object name
|
||||
i = 0
|
||||
DO
|
||||
ObjectName$ = " "
|
||||
GET #1, CurrentBytePosition + 6 + i, ObjectName$
|
||||
i = i + 1
|
||||
LOOP UNTIL ASC(ObjectName$) = 0
|
||||
ObjectName$ = STRING$(i - 1, " ")
|
||||
GET #1, CurrentBytePosition + 6, ObjectName$
|
||||
PRINT "Object Name: "; ObjectName$
|
||||
'/\Read & display object name
|
||||
CALL ReadChunkInfo(ChunkH, CurrentBytePosition)
|
||||
ChunkH.Position = CurrentBytePosition + i'skip past name area
|
||||
ChunkH.Size = ChunkH.Size - i'skip past name area
|
||||
FindChunk$ = "4100"
|
||||
CALL SearchForChunk(ChunkH) 'CBP should now be 4100(OBJ_MESH)
|
||||
CALL ReadChunkInfo(ChunkH, CurrentBytePosition)
|
||||
DIM BackupBytePosition AS LONG
|
||||
BackupBytePosition = CurrentBytePosition
|
||||
FindChunk$ = "4110"
|
||||
CALL SearchForChunk(ChunkH)'CBP should now be 4110(MESH_VERTICES)
|
||||
'\/Read & display vertices
|
||||
'Number of vertices
|
||||
CurrentBytePosition = CurrentBytePosition + 6
|
||||
GET #1, CurrentBytePosition, numberVertices
|
||||
PRINT "Number of vertices:"; numberVertices
|
||||
REDIM PointsArray(2, numberVertices) AS SINGLE'allocate space for 3d points
|
||||
REDIM NewPointsArray(1, numberVertices) AS LONG'allocate space for screen points
|
||||
CurrentBytePosition = CurrentBytePosition + 2
|
||||
'Actual vertice data
|
||||
DIM vertex AS SINGLE
|
||||
FOR i = 0 TO numberVertices
|
||||
GET #1, CurrentBytePosition, vertex
|
||||
'PRINT "X-vertex"; vertex
|
||||
PointsArray(0, i) = vertex
|
||||
CurrentBytePosition = CurrentBytePosition + 4
|
||||
GET #1, CurrentBytePosition, vertex
|
||||
'PRINT "Y-vertex"; vertex
|
||||
PointsArray(1, i) = vertex
|
||||
CurrentBytePosition = CurrentBytePosition + 4
|
||||
GET #1, CurrentBytePosition, vertex
|
||||
'PRINT "Z-vertex"; vertex
|
||||
PointsArray(2, i) = vertex
|
||||
CurrentBytePosition = CurrentBytePosition + 4
|
||||
NEXT i
|
||||
'/\Read & display vertices
|
||||
CALL ReadChunkInfo(ChunkH, BackupBytePosition)'ChunkH should now be 4100(OBJ_MESH)
|
||||
FindChunk$ = "4120"
|
||||
CALL SearchForChunk(ChunkH)'CBP should now be 4120(MESH_FACES)
|
||||
'\/Read & display faces
|
||||
'Number of faces
|
||||
CurrentBytePosition = CurrentBytePosition + 6
|
||||
GET #1, CurrentBytePosition, numberFaces
|
||||
PRINT "Number of faces:"; numberFaces
|
||||
REDIM FaceArray(2, numberFaces) AS INTEGER'allocate space for face points
|
||||
CurrentBytePosition = CurrentBytePosition + 2
|
||||
'Actual face data
|
||||
DIM face AS INTEGER
|
||||
FOR i = 0 TO numberFaces
|
||||
GET #1, CurrentBytePosition, face
|
||||
'PRINT "Face-point 1:"; face
|
||||
FaceArray(0, i) = face
|
||||
CurrentBytePosition = CurrentBytePosition + 2
|
||||
GET #1, CurrentBytePosition, face
|
||||
'PRINT "Face-point 2:"; face
|
||||
FaceArray(1, i) = face
|
||||
CurrentBytePosition = CurrentBytePosition + 2
|
||||
GET #1, CurrentBytePosition, face
|
||||
'PRINT "Face-point 3:"; face
|
||||
FaceArray(2, i) = face
|
||||
CurrentBytePosition = CurrentBytePosition + 2
|
||||
GET #1, CurrentBytePosition, face
|
||||
'PRINT "Face-visibility:"; face
|
||||
CurrentBytePosition = CurrentBytePosition + 2
|
||||
NEXT i
|
||||
'\/Read & display faces
|
||||
|
||||
|
||||
END SUB
|
||||
|
||||
SUB SearchForChunk (ChunkInfoHolder AS ChunkInfo)
|
||||
|
||||
DIM InnerBytePosition AS LONG
|
||||
DIM MaxBytePosition AS LONG
|
||||
InnerBytePosition = ChunkInfoHolder.Position + 6
|
||||
MaxBytePosition = ChunkInfoHolder.Position + ChunkInfoHolder.Size
|
||||
ChunkName$ = HEX$(ChunkInfoHolder.ID)
|
||||
|
||||
Found = 0
|
||||
|
||||
DO
|
||||
|
||||
CALL ReadChunkInfo(ChunkInfoHolder, InnerBytePosition)
|
||||
|
||||
IF FindChunk$ = HEX$(ChunkInfoHolder.ID) THEN
|
||||
Found = 1
|
||||
ELSE
|
||||
CALL SkipChunk(ChunkInfoHolder, InnerBytePosition)
|
||||
END IF
|
||||
|
||||
LOOP UNTIL InnerBytePosition >= MaxBytePosition OR Found = 1 OR INKEY$ = CHR$(27) OR ChunkInfoHolder.Size = 0
|
||||
|
||||
IF Found = 0 THEN
|
||||
PRINT ""
|
||||
PRINT FindChunk$; " was not found within "; ChunkName$; "!"
|
||||
PRINT ""
|
||||
SYSTEM
|
||||
ELSE
|
||||
CurrentBytePosition = ChunkInfoHolder.Position
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB SkipChunk (ChunkInfoHolder AS ChunkInfo, BytePosition AS LONG)
|
||||
|
||||
BytePosition = BytePosition + ChunkInfoHolder.Size
|
||||
|
||||
END SUB
|
||||
|
BIN
tests/qbasic_testcases/n54/big/3dsviewer/car.3ds
Normal file
BIN
tests/qbasic_testcases/n54/big/3dsviewer/car.3ds
Normal file
Binary file not shown.
729
tests/qbasic_testcases/n54/big/jpegmake.bas
Normal file
729
tests/qbasic_testcases/n54/big/jpegmake.bas
Normal file
|
@ -0,0 +1,729 @@
|
|||
'JPEG Encoder v2 by Artelius
|
||||
'WARNING: OVERWRITES TEST.JPG
|
||||
DECLARE FUNCTION Atan2! (X AS SINGLE, Y AS SINGLE)
|
||||
DECLARE SUB PutChar (FileNo AS INTEGER, Char AS INTEGER)
|
||||
|
||||
DECLARE SUB JPEG.Precalc ()
|
||||
DECLARE SUB JPEG.Begin (FileNo AS INTEGER, W AS INTEGER, H AS INTEGER, Sampling() AS INTEGER, State AS ANY, QT() AS INTEGER, Huff() AS INTEGER)
|
||||
DECLARE SUB JPEG.Block.Output (B() AS INTEGER, State AS ANY, QT() AS INTEGER, Huff() AS INTEGER)
|
||||
DECLARE SUB JPEG.StandardQT (quality AS SINGLE, QT() AS INTEGER)
|
||||
DECLARE SUB JPEG.Finish (State AS ANY)
|
||||
DECLARE FUNCTION JPEG.Category% (X AS INTEGER)
|
||||
DECLARE FUNCTION JPEG.Cb% (R AS INTEGER, G AS INTEGER, B AS INTEGER)
|
||||
DECLARE FUNCTION JPEG.Cr% (R AS INTEGER, G AS INTEGER, B AS INTEGER)
|
||||
DECLARE FUNCTION JPEG.Y% (R AS INTEGER, G AS INTEGER, B AS INTEGER)
|
||||
|
||||
TYPE JPEGState
|
||||
FileNo AS INTEGER
|
||||
YCount AS INTEGER
|
||||
CbCount AS INTEGER
|
||||
CrCount AS INTEGER
|
||||
YDC AS INTEGER
|
||||
CbDC AS INTEGER
|
||||
CrDC AS INTEGER
|
||||
Position AS INTEGER
|
||||
Leftover AS INTEGER
|
||||
LeftoverBits AS INTEGER
|
||||
END TYPE
|
||||
|
||||
'The following are internal to JPEG.
|
||||
DECLARE SUB JPEG.ACHuff (RLE AS INTEGER, AC AS INTEGER, Huff() AS INTEGER, A AS INTEGER, State AS ANY)
|
||||
DECLARE SUB JPEG.Block.Huffman (B() AS INTEGER, LastDC AS INTEGER, Huff() AS INTEGER, A AS INTEGER, State AS ANY)
|
||||
DECLARE SUB JPEG.Block.Transform (B() AS INTEGER, O() AS INTEGER, QT() AS INTEGER, A AS INTEGER)
|
||||
DECLARE SUB JPEG.DCHuff (DC AS INTEGER, Huff() AS INTEGER, A AS INTEGER, State AS ANY)
|
||||
DECLARE SUB JPEG.GenerateHuffmanTable (Huff() AS INTEGER, A AS INTEGER, B AS INTEGER)
|
||||
DECLARE SUB JPEG.PutBinString (BS AS INTEGER, Length AS INTEGER, State AS ANY)
|
||||
DECLARE SUB JPEG.PutByte (FileNo AS INTEGER, Byte AS INTEGER)
|
||||
DECLARE SUB JPEG.PutRightBinString (BS AS INTEGER, Length AS INTEGER, State AS ANY)
|
||||
DECLARE SUB JPEG.PutWord (FileNo AS INTEGER, Word AS INTEGER)
|
||||
DECLARE FUNCTION JPEG.Shift% (I AS INTEGER, N AS INTEGER)
|
||||
|
||||
DEFINT A-Z
|
||||
|
||||
DIM SHARED Pow2(0 TO 15) AS LONG
|
||||
DIM SHARED Cosine(0 TO 7, 0 TO 7) AS SINGLE
|
||||
DIM SHARED ZigZagX(0 TO 63) AS INTEGER, ZigZagY(0 TO 63) AS INTEGER
|
||||
JPEG.Precalc
|
||||
|
||||
DIM Huff(0 TO 255, 0 TO 1, 0 TO 1, 0 TO 1) AS INTEGER
|
||||
DIM QT(0 TO 7, 0 TO 7, 0 TO 1) AS INTEGER
|
||||
DIM State AS JPEGState
|
||||
|
||||
DIM Sampling(0 TO 2, 0 TO 1) AS INTEGER
|
||||
Sampling(0, 0) = 2 'Sampling factor (x then y) for luminance
|
||||
Sampling(0, 1) = 2
|
||||
Sampling(1, 0) = 1 'Sampling factor for "blue" chrominance
|
||||
Sampling(1, 1) = 1
|
||||
Sampling(2, 0) = 1 'Sampling factor for "red" chrominance
|
||||
Sampling(2, 1) = 1
|
||||
|
||||
|
||||
'Delete file then open for binary
|
||||
OPEN "test.jpg" FOR OUTPUT AS #1
|
||||
CLOSE
|
||||
OPEN "test.jpg" FOR BINARY AS #1
|
||||
|
||||
'Set quality tables
|
||||
'The smaller the paramter, the higher the quality
|
||||
'0.01 is 100% quality
|
||||
JPEG.StandardQT .5, QT()
|
||||
|
||||
'Start image (64x64)
|
||||
JPEG.Begin 1, 128, 128, Sampling(), State, QT(), Huff()
|
||||
|
||||
|
||||
DIM B(0 TO 7, 0 TO 7) AS INTEGER
|
||||
|
||||
FOR SuperY = 0 TO 127 STEP 16
|
||||
FOR SuperX = 0 TO 127 STEP 16
|
||||
|
||||
'Output the luminance blocks
|
||||
|
||||
FOR BlockY = 0 TO 15 STEP 8
|
||||
FOR BlockX = 0 TO 15 STEP 8
|
||||
FOR OffY = 0 TO 7: FOR OffX = 0 TO 7
|
||||
X! = OffX + BlockX + SuperX - 63.5
|
||||
Y! = OffY + BlockY + SuperY - 63.5
|
||||
D! = SQR(X! * X! + Y! * Y!) / 6 + Atan2(X!, Y!)
|
||||
R = 255
|
||||
G = 255 - (COS(D!) + 1) * 127.5
|
||||
B = 255 - (COS(D!) + 1) * 127.5
|
||||
B(OffX, OffY) = JPEG.Y(R, G, B)
|
||||
NEXT OffX, OffY
|
||||
JPEG.Block.Output B(), State, QT(), Huff()
|
||||
NEXT BlockX, BlockY
|
||||
|
||||
'Output the blue chrominance block
|
||||
|
||||
FOR OffY = 0 TO 7: FOR OffX = 0 TO 7
|
||||
X! = OffX * 2 + SuperX - 63
|
||||
Y! = OffY * 2 + SuperY - 63
|
||||
D! = SQR(X! * X! + Y! * Y!) / 6 + Atan2(X!, Y!)
|
||||
R = 255
|
||||
G = 255 - (COS(D!) + 1) * 127.5
|
||||
B = 255 - (COS(D!) + 1) * 127.5
|
||||
B(OffX, OffY) = JPEG.Cb(R, G, B)
|
||||
NEXT OffX, OffY
|
||||
JPEG.Block.Output B(), State, QT(), Huff()
|
||||
|
||||
'Output the red chrominance block
|
||||
|
||||
FOR OffY = 0 TO 7: FOR OffX = 0 TO 7
|
||||
X! = OffX * 2 + SuperX - 63
|
||||
Y! = OffY * 2 + SuperY - 63
|
||||
D! = SQR(X! * X! + Y! * Y!) / 6 + Atan2(X!, Y!)
|
||||
R = 255
|
||||
G = 255 - (COS(D!) + 1) * 127.5
|
||||
B = 255 - (COS(D!) + 1) * 127.5
|
||||
B(OffX, OffY) = JPEG.Cr(R, G, B)
|
||||
NEXT OffX, OffY
|
||||
JPEG.Block.Output B(), State, QT(), Huff()
|
||||
|
||||
NEXT SuperX, SuperY
|
||||
|
||||
|
||||
JPEG.Finish State
|
||||
|
||||
CLOSE
|
||||
|
||||
END
|
||||
|
||||
Huff0:
|
||||
DATA 0
|
||||
DATA 1, 0
|
||||
DATA 5, 1, 2, 3, 4, 5
|
||||
DATA 1, 6
|
||||
DATA 1, 7
|
||||
DATA 1, 8
|
||||
DATA 1, 9
|
||||
DATA 1, 10
|
||||
DATA 1, 11
|
||||
DATA 0, 0, 0, 0, 0, 0, 0
|
||||
|
||||
Huff1:
|
||||
DATA 0
|
||||
DATA 3, 0, 1, 2
|
||||
DATA 1, 3
|
||||
DATA 1, 4
|
||||
DATA 1, 5
|
||||
DATA 1, 6
|
||||
DATA 1, 7
|
||||
DATA 1, 8
|
||||
DATA 1, 9
|
||||
DATA 1, 10
|
||||
DATA 1, 11
|
||||
DATA 0, 0, 0, 0, 0
|
||||
|
||||
Huff2:
|
||||
DATA 0
|
||||
DATA 2, 1, 2
|
||||
DATA 1, 3
|
||||
DATA 3, 0, 4, &H11
|
||||
DATA 3, 5, &H12, &H21
|
||||
DATA 2, &H31, &H41
|
||||
DATA 4, 6, &H13, &H51, &H61
|
||||
DATA 3, 7, &H22, &H71
|
||||
DATA 5, &H14, &H32, &H81, &H91, &HA1
|
||||
DATA 5, &H08, &H23, &H42, &HB1, &HC1
|
||||
DATA 4, &H15, &H52, &HD1, &HF0
|
||||
DATA 4, &H24, &H33, &H62, &H72
|
||||
DATA 0
|
||||
DATA 0
|
||||
DATA 1, &H82
|
||||
DATA 125, &H09, &H0A, &H16, &H17, &H18, &H19, &H1A, &H25, &H26, &H27, &H28, &H29, &H2A, &H34, &H35, &H36
|
||||
DATA &H37, &H38, &H39, &H3A, &H43, &H44, &H45, &H46, &H47, &H48, &H49, &H4A, &H53, &H54, &H55, &H56
|
||||
DATA &H57, &H58, &H59, &H5A, &H63, &H64, &H65, &H66, &H67, &H68, &H69, &H6A, &H73, &H74, &H75, &H76
|
||||
DATA &H77, &H78, &H79, &H7A, &H83, &H84, &H85, &H86, &H87, &H88, &H89, &H8A, &H92, &H93, &H94, &H95
|
||||
DATA &H96, &H97, &H98, &H99, &H9A, &HA2, &HA3, &HA4, &HA5, &HA6, &HA7, &HA8, &HA9, &HAA, &HB2, &HB3
|
||||
DATA &HB4, &HB5, &HB6, &HB7, &HB8, &HB9, &HBA, &HC2, &HC3, &HC4, &HC5, &HC6, &HC7, &HC8, &HC9, &HCA
|
||||
DATA &HD2, &HD3, &HD4, &HD5, &HD6, &HD7, &HD8, &HD9, &HDA, &HE1, &HE2, &HE3, &HE4, &HE5, &HE6, &HE7
|
||||
DATA &HE8, &HE9, &HEA, &HF1, &HF2, &HF3, &HF4, &HF5, &HF6, &HF7, &HF8, &HF9, &HFA
|
||||
|
||||
Huff3:
|
||||
DATA 0
|
||||
DATA 2, 0, 1
|
||||
DATA 1, 2
|
||||
DATA 2, 3, &H11
|
||||
DATA 4, 4, 5, &H21, &H31
|
||||
DATA 4, 6, &H12, &H41, &H51
|
||||
DATA 3, 7, &H61, &H71
|
||||
DATA 4, &H13, &H22, &H32, &H81
|
||||
DATA 7, 8, &H14, &H42, &H91, &HA1, &HB1, &HC1
|
||||
DATA 5, 9, &H23, &H33, &H52, &HF0
|
||||
DATA 4, &H15, &H62, &H72, &HD1
|
||||
DATA 4, &HA, &H16, &H24, &H34
|
||||
DATA 0
|
||||
DATA 1, &HE1
|
||||
DATA 2, &H25, &HF1
|
||||
DATA 119, &H17, &H18, &H19, &H1A, &H26, &H27, &H28, &H29, &H2A, &H35, &H36, &H37, &H38, &H39, &H3A, &H43
|
||||
DATA &H44, &H45, &H46, &H47, &H48, &H49, &H4A, &H53, &H54, &H55, &H56, &H57, &H58, &H59, &H5A, &H63
|
||||
DATA &H64, &H65, &H66, &H67, &H68, &H69, &H6A, &H73, &H74, &H75, &H76, &H77, &H78, &H79, &H7A, &H82
|
||||
DATA &H83, &H84, &H85, &H86, &H87, &H88, &H89, &H8A, &H92, &H93, &H94, &H95, &H96, &H97, &H98, &H99
|
||||
DATA &H9A, &HA2, &HA3, &HA4, &HA5, &HA6, &HA7, &HA8, &HA9, &HAA, &HB2, &HB3, &HB4, &HB5, &HB6, &HB7
|
||||
DATA &HB8, &HB9, &HBA, &HC2, &HC3, &HC4, &HC5, &HC6, &HC7, &HC8, &HC9, &HCA, &HD2, &HD3, &HD4, &HD5
|
||||
DATA &HD6, &HD7, &HD8, &HD9, &HDA, &HE2, &HE3, &HE4, &HE5, &HE6, &HE7, &HE8, &HE9, &HEA, &HF2, &HF3
|
||||
DATA &HF4, &HF5, &HF6, &HF7, &HF8, &HF9, &HFA
|
||||
|
||||
StandardQT:
|
||||
DATA 16, 11, 10, 16, 24, 40, 51, 61
|
||||
DATA 12, 12, 14, 19, 26, 58, 60, 55
|
||||
DATA 14, 13, 16, 24, 40, 57, 69, 56
|
||||
DATA 14, 17, 22, 29, 51, 87, 80, 62
|
||||
DATA 18, 22, 37, 56, 68, 109, 103, 77
|
||||
DATA 24, 35, 55, 64, 81, 104, 113, 92
|
||||
DATA 49, 64, 78, 87, 103, 121, 120, 101
|
||||
DATA 72, 92, 95, 98, 112, 100, 103, 99
|
||||
|
||||
DATA 17, 18, 24, 47, 99, 99, 99, 99
|
||||
DATA 18, 24, 26, 66, 99, 99, 99, 99
|
||||
DATA 24, 26, 56, 99, 99, 99, 99, 99
|
||||
DATA 47, 66, 99, 99, 99, 99, 99, 99
|
||||
DATA 99, 99, 99, 99, 99, 99, 99, 99
|
||||
DATA 99, 99, 99, 99, 99, 99, 99, 99
|
||||
DATA 99, 99, 99, 99, 99, 99, 99, 99
|
||||
DATA 99, 99, 99, 99, 99, 99, 99, 99
|
||||
|
||||
DEFSNG A-Z
|
||||
FUNCTION Atan2! (X AS SINGLE, Y AS SINGLE)
|
||||
|
||||
'Code borrowed from London
|
||||
Atan2 = ATN(Y / X) - ATN(1) * 4 * (X < 0 - 2 * (X < 0 AND Y < 0))
|
||||
|
||||
END FUNCTION
|
||||
|
||||
SUB JPEG.ACHuff (RLE AS INTEGER, AC AS INTEGER, Huff() AS INTEGER, A AS INTEGER, State AS JPEGState)
|
||||
DIM C AS INTEGER, X AS INTEGER
|
||||
C = JPEG.Category(AC)
|
||||
X = RLE * 16 + C
|
||||
JPEG.PutBinString Huff(X, 1, A, 0), Huff(X, 1, A, 1), State
|
||||
JPEG.PutRightBinString AC + (AC < 0), C, State
|
||||
END SUB
|
||||
|
||||
SUB JPEG.Begin (FileNo AS INTEGER, W AS INTEGER, H AS INTEGER, Sampling() AS INTEGER, State AS JPEGState, QT() AS INTEGER, Huff() AS INTEGER)
|
||||
|
||||
DIM I AS INTEGER, J AS INTEGER, X AS INTEGER, Y AS INTEGER, T AS INTEGER
|
||||
|
||||
State.FileNo = FileNo
|
||||
|
||||
RESTORE Huff0
|
||||
JPEG.GenerateHuffmanTable Huff(), 0, 0
|
||||
JPEG.GenerateHuffmanTable Huff(), 0, 1
|
||||
JPEG.GenerateHuffmanTable Huff(), 1, 0
|
||||
JPEG.GenerateHuffmanTable Huff(), 1, 1
|
||||
|
||||
|
||||
State.YCount = Sampling(0, 0) * Sampling(0, 1)
|
||||
State.CbCount = Sampling(1, 0) * Sampling(1, 1)
|
||||
State.CrCount = Sampling(2, 0) * Sampling(2, 1)
|
||||
State.YDC = 0
|
||||
State.CbDC = 0
|
||||
State.CrDC = 0
|
||||
|
||||
State.Position = 0
|
||||
|
||||
State.Leftover = 0
|
||||
State.LeftoverBits = 0
|
||||
|
||||
|
||||
'SOI
|
||||
PutChar FileNo, 255
|
||||
PutChar FileNo, 216
|
||||
'APP0
|
||||
PutChar FileNo, 255
|
||||
PutChar FileNo, 224
|
||||
JPEG.PutWord FileNo, 16
|
||||
S$ = "JFIF" + CHR$(0): PUT FileNo, , S$
|
||||
PutChar FileNo, 1
|
||||
PutChar FileNo, 2
|
||||
PutChar FileNo, 0
|
||||
PutChar FileNo, 0
|
||||
PutChar FileNo, 1
|
||||
PutChar FileNo, 0
|
||||
PutChar FileNo, 1
|
||||
PutChar FileNo, 0
|
||||
PutChar FileNo, 0
|
||||
|
||||
'DQT
|
||||
PutChar FileNo, 255
|
||||
PutChar FileNo, 219
|
||||
JPEG.PutWord FileNo, 132
|
||||
|
||||
PutChar FileNo, 0
|
||||
FOR I = 0 TO 63
|
||||
PutChar FileNo, QT(ZigZagX(I), ZigZagY(I), 0)
|
||||
NEXT
|
||||
|
||||
|
||||
|
||||
PutChar FileNo, 1
|
||||
FOR I = 0 TO 63
|
||||
PutChar FileNo, QT(ZigZagX(I), ZigZagY(I), 1)
|
||||
NEXT
|
||||
|
||||
|
||||
|
||||
'DHT
|
||||
PutChar FileNo, 255
|
||||
PutChar FileNo, 196
|
||||
T = 2 + 4 * (16 + 1)
|
||||
RESTORE Huff0
|
||||
FOR I = 1 TO 16 * 4
|
||||
READ X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
T = T + 1
|
||||
NEXT
|
||||
NEXT
|
||||
|
||||
JPEG.PutWord FileNo, T
|
||||
|
||||
PutChar FileNo, 0
|
||||
RESTORE Huff0
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
PutChar FileNo, X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
NEXT
|
||||
NEXT
|
||||
RESTORE Huff0
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
PutChar FileNo, Y
|
||||
NEXT
|
||||
NEXT
|
||||
|
||||
PutChar FileNo, 1
|
||||
RESTORE Huff1
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
PutChar FileNo, X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
NEXT
|
||||
NEXT
|
||||
RESTORE Huff1
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
PutChar FileNo, Y
|
||||
NEXT
|
||||
NEXT
|
||||
|
||||
PutChar FileNo, 16
|
||||
RESTORE Huff2
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
PutChar FileNo, X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
NEXT
|
||||
NEXT
|
||||
RESTORE Huff2
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
PutChar FileNo, Y
|
||||
NEXT
|
||||
NEXT
|
||||
|
||||
PutChar FileNo, 17
|
||||
RESTORE Huff3
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
PutChar FileNo, X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
NEXT
|
||||
NEXT
|
||||
RESTORE Huff3
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
FOR J = 1 TO X
|
||||
READ Y
|
||||
PutChar FileNo, Y
|
||||
NEXT
|
||||
NEXT
|
||||
|
||||
'SOF0
|
||||
PutChar FileNo, 255
|
||||
PutChar FileNo, 192
|
||||
JPEG.PutWord FileNo, 8 + 9
|
||||
PutChar FileNo, 8
|
||||
JPEG.PutWord FileNo, H
|
||||
JPEG.PutWord FileNo, W
|
||||
|
||||
PutChar FileNo, 3
|
||||
|
||||
PutChar FileNo, 1
|
||||
PutChar FileNo, Sampling(0, 0) * 16 + Sampling(0, 1)
|
||||
PutChar FileNo, 0
|
||||
PutChar FileNo, 2
|
||||
PutChar FileNo, Sampling(1, 0) * 16 + Sampling(1, 1)
|
||||
PutChar FileNo, 1
|
||||
PutChar FileNo, 3
|
||||
PutChar FileNo, Sampling(2, 0) * 16 + Sampling(2, 1)
|
||||
PutChar FileNo, 1
|
||||
|
||||
'SOS
|
||||
|
||||
PutChar FileNo, 255
|
||||
PutChar FileNo, 218
|
||||
JPEG.PutWord FileNo, 12
|
||||
|
||||
PutChar FileNo, 3
|
||||
|
||||
PutChar FileNo, 1
|
||||
PutChar FileNo, &H0
|
||||
PutChar FileNo, 2
|
||||
PutChar FileNo, &H11
|
||||
PutChar FileNo, 3
|
||||
PutChar FileNo, &H11
|
||||
|
||||
PutChar FileNo, 0
|
||||
PutChar FileNo, 63
|
||||
PutChar FileNo, 0
|
||||
|
||||
END SUB
|
||||
|
||||
SUB JPEG.Block.Huffman (B() AS INTEGER, LastDC AS INTEGER, Huff() AS INTEGER, A AS INTEGER, State AS JPEGState)
|
||||
DIM DC AS INTEGER, I AS INTEGER
|
||||
DIM C AS INTEGER
|
||||
DC = B(0) - LastDC
|
||||
JPEG.DCHuff DC, Huff(), A, State
|
||||
B(64) = -1
|
||||
|
||||
I = 1
|
||||
DO
|
||||
C = 0
|
||||
IF B(I) = 0 THEN
|
||||
|
||||
DO
|
||||
I = I + 1
|
||||
C = C + 1
|
||||
LOOP WHILE B(I) = 0
|
||||
IF I = 64 THEN
|
||||
|
||||
JPEG.PutBinString Huff(0, 1, A, 0), Huff(0, 1, A, 1), State
|
||||
EXIT DO
|
||||
END IF
|
||||
WHILE C >= 16
|
||||
|
||||
JPEG.PutBinString Huff(&HF0, 1, A, 0), Huff(&HF0, 1, A, 1), State
|
||||
C = C - 16
|
||||
WEND
|
||||
|
||||
END IF
|
||||
|
||||
|
||||
JPEG.ACHuff C, B(I), Huff(), A, State
|
||||
I = I + 1
|
||||
LOOP WHILE I < 64
|
||||
END SUB
|
||||
|
||||
SUB JPEG.Block.Output (B() AS INTEGER, State AS JPEGState, QT() AS INTEGER, Huff() AS INTEGER)
|
||||
|
||||
DIM O(0 TO 64) AS INTEGER
|
||||
State.Position = State.Position + 1
|
||||
IF State.Position > State.YCount + State.CbCount + State.CrCount THEN State.Position = 1
|
||||
IF State.Position <= State.YCount THEN
|
||||
JPEG.Block.Transform B(), O(), QT(), 0
|
||||
JPEG.Block.Huffman O(), State.YDC, Huff(), 0, State
|
||||
State.YDC = O(0)
|
||||
ELSE
|
||||
JPEG.Block.Transform B(), O(), QT(), 1
|
||||
IF State.Position <= State.YCount + State.CbCount THEN
|
||||
JPEG.Block.Huffman O(), State.CbDC, Huff(), 1, State
|
||||
State.CbDC = O(0)
|
||||
ELSE
|
||||
JPEG.Block.Huffman O(), State.CrDC, Huff(), 1, State
|
||||
State.CrDC = O(0)
|
||||
END IF
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB JPEG.Block.Transform (B() AS INTEGER, O() AS INTEGER, QT() AS INTEGER, A AS INTEGER)
|
||||
DIM U AS INTEGER, V AS INTEGER, X AS INTEGER, Y AS INTEGER
|
||||
DIM B2(0 TO 7, 0 TO 7) AS SINGLE
|
||||
DIM T AS SINGLE
|
||||
|
||||
FOR V = 0 TO 7: FOR U = 0 TO 7
|
||||
T = 0
|
||||
FOR X = 0 TO 7
|
||||
T = T + B(X, V) * Cosine(X, U)
|
||||
NEXT X
|
||||
B2(U, V) = T
|
||||
NEXT U, V
|
||||
|
||||
FOR U = 0 TO 7: FOR V = 0 TO 7
|
||||
T = 0
|
||||
FOR Y = 0 TO 7
|
||||
T = T + B2(U, Y) * Cosine(Y, V)
|
||||
NEXT Y
|
||||
T = T / 4
|
||||
IF U = 0 THEN T = T / SQR(2)
|
||||
IF V = 0 THEN T = T / SQR(2)
|
||||
B(U, V) = CINT(T / QT(U, V, A))
|
||||
NEXT V, U
|
||||
|
||||
FOR U = 0 TO 63
|
||||
O(U) = B(ZigZagX(U), ZigZagY(U))
|
||||
NEXT
|
||||
|
||||
END SUB
|
||||
|
||||
FUNCTION JPEG.Category% (X AS INTEGER)
|
||||
DIM T AS INTEGER, I AS INTEGER
|
||||
T = ABS(X)
|
||||
WHILE T
|
||||
T = T \ 2
|
||||
I = I + 1
|
||||
WEND
|
||||
JPEG.Category = I
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION JPEG.Cb% (R AS INTEGER, G AS INTEGER, B AS INTEGER)
|
||||
|
||||
JPEG.Cb = -.1687 * R - .3313 * G + .5 * B
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION JPEG.Cr% (R AS INTEGER, G AS INTEGER, B AS INTEGER)
|
||||
|
||||
JPEG.Cr = .5 * R - .4187 * G - .0813 * B
|
||||
|
||||
END FUNCTION
|
||||
|
||||
SUB JPEG.DCHuff (DC AS INTEGER, Huff() AS INTEGER, A AS INTEGER, State AS JPEGState)
|
||||
DIM C AS INTEGER
|
||||
C = JPEG.Category(DC)
|
||||
JPEG.PutBinString Huff(C, 0, A, 0), Huff(C, 0, A, 1), State
|
||||
JPEG.PutRightBinString DC + (DC < 0), C, State
|
||||
END SUB
|
||||
|
||||
SUB JPEG.Finish (State AS JPEGState)
|
||||
|
||||
DEF SEG = VARSEG(State.Leftover)
|
||||
IF State.LeftoverBits > 8 THEN
|
||||
JPEG.PutByte State.FileNo, PEEK(VARPTR(State.Leftover) + 1)
|
||||
POKE VARPTR(State.Leftover) + 1, State.Leftover AND 255
|
||||
State.LeftoverBits = State.LeftoverBits - 8
|
||||
END IF
|
||||
|
||||
IF State.LeftoverBits THEN
|
||||
JPEG.PutByte State.FileNo, PEEK(VARPTR(State.Leftover) + 1) OR (Pow2(8 - State.LeftoverBits) - 1)
|
||||
END IF
|
||||
DEF SEG
|
||||
|
||||
'EOF marker
|
||||
PutChar State.FileNo, 255
|
||||
PutChar State.FileNo, 217
|
||||
|
||||
END SUB
|
||||
|
||||
SUB JPEG.GenerateHuffmanTable (Huff() AS INTEGER, A AS INTEGER, B AS INTEGER)
|
||||
DIM S AS LONG, I AS INTEGER, J AS INTEGER, T AS INTEGER
|
||||
DIM X AS INTEGER, Y AS INTEGER
|
||||
S = -1
|
||||
|
||||
FOR I = 1 TO 16
|
||||
READ X
|
||||
FOR J = 1 TO X
|
||||
|
||||
IF S = -1 THEN
|
||||
S = 0
|
||||
ELSE
|
||||
S = S + Pow2(T)
|
||||
END IF
|
||||
|
||||
|
||||
READ Y
|
||||
IF S AND 32768 THEN Huff(Y, A, B, 0) = CINT(S AND 32767&) OR -32768 ELSE Huff(Y, A, B, 0) = S
|
||||
Huff(Y, A, B, 1) = I
|
||||
T = 16 - I
|
||||
|
||||
NEXT
|
||||
NEXT
|
||||
END SUB
|
||||
|
||||
SUB JPEG.Precalc
|
||||
DIM X AS INTEGER, Y AS INTEGER, T AS INTEGER, Dir AS INTEGER, L AS LONG
|
||||
|
||||
L = 1
|
||||
FOR X = 0 TO 15
|
||||
Pow2(X) = L
|
||||
L = L + L
|
||||
NEXT
|
||||
FOR Y = 0 TO 7
|
||||
FOR X = 0 TO 7
|
||||
Cosine(X, Y) = COS((2 * X + 1) * Y * .1963495)
|
||||
NEXT X, Y
|
||||
|
||||
X = 0: Y = 0
|
||||
T = 0
|
||||
Dir = 0
|
||||
DO
|
||||
ZigZagX(T) = X
|
||||
ZigZagY(T) = Y
|
||||
T = T + 1
|
||||
IF T = 64 THEN EXIT DO
|
||||
IF Dir THEN
|
||||
IF Y = 7 THEN
|
||||
X = X + 1
|
||||
Dir = 0
|
||||
ELSEIF X = 0 THEN
|
||||
Y = Y + 1
|
||||
Dir = 0
|
||||
ELSE
|
||||
X = X - 1
|
||||
Y = Y + 1
|
||||
END IF
|
||||
|
||||
ELSE
|
||||
IF Y = 0 THEN
|
||||
X = X + 1
|
||||
Dir = 1
|
||||
ELSEIF X = 7 THEN
|
||||
Y = Y + 1
|
||||
Dir = 1
|
||||
ELSE
|
||||
X = X + 1
|
||||
Y = Y - 1
|
||||
END IF
|
||||
END IF
|
||||
LOOP
|
||||
|
||||
|
||||
|
||||
END SUB
|
||||
|
||||
SUB JPEG.PutBinString (BS AS INTEGER, Length AS INTEGER, State AS JPEGState)
|
||||
DIM Temp AS INTEGER
|
||||
|
||||
Temp = BS
|
||||
State.Leftover = State.Leftover OR JPEG.Shift(Temp, State.LeftoverBits)
|
||||
State.LeftoverBits = State.LeftoverBits + Length
|
||||
IF State.LeftoverBits >= 16 THEN
|
||||
DEF SEG = VARSEG(State.Leftover)
|
||||
JPEG.PutByte State.FileNo, PEEK(VARPTR(State.Leftover) + 1)
|
||||
DEF SEG
|
||||
JPEG.PutByte State.FileNo, State.Leftover AND 255
|
||||
State.LeftoverBits = State.LeftoverBits - 16
|
||||
State.Leftover = Temp
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB JPEG.PutByte (FileNo AS INTEGER, Byte AS INTEGER)
|
||||
DIM C AS STRING * 1
|
||||
C = CHR$(Byte)
|
||||
PUT FileNo, , C
|
||||
IF Byte = 255 THEN C = CHR$(0): PUT FileNo, , C
|
||||
END SUB
|
||||
|
||||
SUB JPEG.PutRightBinString (BS AS INTEGER, Length AS INTEGER, State AS JPEGState)
|
||||
|
||||
DIM Temp AS LONG
|
||||
IF Length THEN
|
||||
Temp = (CLNG(BS) AND Pow2(Length) - 1) * Pow2(16 - Length)
|
||||
IF Temp AND 32768 THEN Temp = Temp OR -65536
|
||||
JPEG.PutBinString CINT(Temp), Length, State
|
||||
END IF
|
||||
|
||||
END SUB
|
||||
|
||||
SUB JPEG.PutWord (FileNo AS INTEGER, Word AS INTEGER)
|
||||
DIM C AS STRING * 1
|
||||
C = CHR$(Word \ 256)
|
||||
PUT FileNo, , C
|
||||
C = CHR$(Word AND 255)
|
||||
PUT FileNo, , C
|
||||
END SUB
|
||||
|
||||
FUNCTION JPEG.Shift% (I AS INTEGER, N AS INTEGER)
|
||||
DIM T AS LONG
|
||||
|
||||
IF N = 0 THEN
|
||||
JPEG.Shift = I
|
||||
I = 0
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
T = CLNG(I) AND 65535
|
||||
|
||||
JPEG.Shift = T \ Pow2(N)
|
||||
|
||||
T = (T AND (Pow2(N) - 1)) * Pow2((16 - N) AND 15)
|
||||
IF T AND 32768 THEN I = CINT(T AND 32767&) OR -32768 ELSE I = CINT(T)
|
||||
END FUNCTION
|
||||
|
||||
SUB JPEG.StandardQT (quality AS SINGLE, QT() AS INTEGER)
|
||||
|
||||
DIM I AS INTEGER, X AS INTEGER, Y AS INTEGER, T AS INTEGER
|
||||
RESTORE StandardQT
|
||||
|
||||
FOR I = 0 TO 1: FOR Y = 0 TO 7: FOR X = 0 TO 7
|
||||
READ T
|
||||
|
||||
QT(X, Y, I) = T * quality
|
||||
|
||||
IF QT(X, Y, I) = 0 THEN QT(X, Y, I) = 1
|
||||
NEXT X, Y, I
|
||||
|
||||
END SUB
|
||||
|
||||
FUNCTION JPEG.Y% (R AS INTEGER, G AS INTEGER, B AS INTEGER)
|
||||
|
||||
JPEG.Y = .299 * R + .587 * G + .114 * B - 128
|
||||
|
||||
END FUNCTION
|
||||
|
||||
SUB PutChar (FileNo AS INTEGER, Char AS INTEGER)
|
||||
DIM C AS STRING * 1
|
||||
C = CHR$(Char)
|
||||
PUT FileNo, , C
|
||||
END SUB
|
457
tests/qbasic_testcases/n54/big/tictac.bas
Normal file
457
tests/qbasic_testcases/n54/big/tictac.bas
Normal file
|
@ -0,0 +1,457 @@
|
|||
DECLARE FUNCTION XWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
|
||||
DECLARE FUNCTION OWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
|
||||
DECLARE SUB Winner (Lineup AS INTEGER)
|
||||
DECLARE SUB ShowWin (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER)
|
||||
DECLARE SUB GetUserSignal ()
|
||||
DECLARE SUB EnableMouse (c%)
|
||||
DECLARE SUB DrawSCREEN ()
|
||||
DECLARE SUB xo (Row%, Col%, symbol%)
|
||||
|
||||
DIM SHARED False AS INTEGER, True AS INTEGER: True = NOT False
|
||||
DIM SHARED SymbolBOX(6000) AS INTEGER '<---NOTE
|
||||
|
||||
DIM SHARED cH AS INTEGER: 'Cursor Position Horizontal
|
||||
DIM SHARED cV AS INTEGER: 'Cursor Position Vertical
|
||||
DIM SHARED click AS INTEGER: ' 0=no click, 1=left click, 2=right
|
||||
' EnableMouse 1 = Turn cursor on, return coordinates
|
||||
' EnableMouse 0 = Turn cursor off in order to draw stuff, etc.
|
||||
DIM SHARED cC AS STRING: 'User pressed key
|
||||
' GetUserSignal will set return cC or will return Click
|
||||
|
||||
DIM i AS INTEGER, j AS INTEGER, k AS INTEGER
|
||||
DIM WhoWon AS INTEGER
|
||||
DIM MadeAMove AS INTEGER, MovesMade AS INTEGER
|
||||
|
||||
' ----------------------------------------------------------
|
||||
' Title Screen (Main Program)
|
||||
' -----------------------------------------------------------
|
||||
SCREEN 12
|
||||
RANDOMIZE TIMER
|
||||
DIM Command AS INTEGER, Hard AS INTEGER
|
||||
GOSUB InitializeScreen
|
||||
DO
|
||||
DO: GetUserSignal: LOOP UNTIL click = 1
|
||||
GOSUB FindClickedCommand
|
||||
SELECT CASE Command
|
||||
CASE 1:
|
||||
Hard = False
|
||||
WhoWon = 0
|
||||
GOSUB PlayGame
|
||||
GOSUB ShowWhoWon
|
||||
GOSUB InitializeScreen
|
||||
CASE 2:
|
||||
Hard = True
|
||||
WhoWon = 0
|
||||
GOSUB PlayGame
|
||||
GOSUB ShowWhoWon
|
||||
GOSUB InitializeScreen
|
||||
CASE 3:
|
||||
GOSUB DoHelp
|
||||
GOSUB InitializeScreen
|
||||
CASE 4:
|
||||
EXIT DO
|
||||
END SELECT
|
||||
LOOP
|
||||
COLOR 7: CLS
|
||||
SYSTEM
|
||||
|
||||
' ----------------------------------------------------------
|
||||
' Game Screen
|
||||
' -----------------------------------------------------------
|
||||
DIM SHARED zX(9) AS INTEGER: ' Where all X's are placed
|
||||
DIM SHARED zO(9) AS INTEGER: ' Where all O's are placed
|
||||
DIM SHARED zE(9) AS INTEGER: ' Where empty squares are
|
||||
DIM theRow AS INTEGER, theColumn AS INTEGER, theBox AS INTEGER
|
||||
|
||||
FindClickedPosition:
|
||||
CONST Delta = 4
|
||||
theRow = 0: theColumn = 0: theBox = 0
|
||||
SELECT CASE cH
|
||||
CASE IS < 170 + Delta: RETURN
|
||||
CASE IS < 269 - Delta: theColumn = 1
|
||||
CASE IS < 269 + Delta: RETURN
|
||||
CASE IS < 368 - Delta: theColumn = 2
|
||||
CASE IS < 368 + Delta: RETURN
|
||||
CASE IS < 467 - Delta: theColumn = 3
|
||||
CASE ELSE: RETURN
|
||||
END SELECT
|
||||
SELECT CASE cV
|
||||
CASE IS < 91 + Delta: RETURN
|
||||
CASE IS < 190 - Delta: theRow = 1
|
||||
CASE IS < 190 + Delta: RETURN
|
||||
CASE IS < 289 - Delta: theRow = 2
|
||||
CASE IS < 289 + Delta: RETURN
|
||||
CASE IS < 388 - Delta: theRow = 3
|
||||
CASE ELSE: RETURN
|
||||
END SELECT
|
||||
theBox = (3 * (theRow - 1)) + theColumn
|
||||
RETURN
|
||||
|
||||
' ----------------------------------------------------------
|
||||
' Play Game
|
||||
' -----------------------------------------------------------
|
||||
PlayGame:
|
||||
DrawSCREEN 'draw the screen and create X and O symbols.
|
||||
FOR i = 1 TO 9: zO(i) = False: zX(i) = False: zE(i) = True: NEXT i
|
||||
MovesMade = 0
|
||||
DO
|
||||
GetUserSignal
|
||||
IF click THEN
|
||||
MadeAMove = False
|
||||
GOSUB MakeX
|
||||
IF MadeAMove THEN
|
||||
WhoWon = 1: GOSUB ComputeWin: IF WhoWon = 1 THEN RETURN
|
||||
t% = 0
|
||||
FOR i = 1 TO 9: t% = t% + zX(i): NEXT i
|
||||
IF t% = -5 THEN WhoWon = 0: RETURN
|
||||
MovesMade = MovesMade + 1
|
||||
GOSUB MakeO
|
||||
WhoWon = 2: GOSUB ComputeWin: IF WhoWon = 2 THEN RETURN
|
||||
END IF
|
||||
END IF
|
||||
IF cC = "d" OR cC = CHR$(27) THEN WhoWon = 3
|
||||
IF WhoWon > 0 THEN RETURN
|
||||
LOOP
|
||||
|
||||
MakeX:
|
||||
GOSUB FindClickedPosition
|
||||
IF theBox = 0 THEN RETURN
|
||||
IF NOT zE(theBox) THEN RETURN
|
||||
xo theRow, theColumn, 1: ' Places an X
|
||||
zX(theBox) = True: zE(theBox) = False
|
||||
MadeAMove = True
|
||||
RETURN
|
||||
|
||||
MakeO:
|
||||
GOSUB FindPlaceForO
|
||||
SLEEP 1: WHILE INKEY$ <> "": WEND
|
||||
xo theRow, theColumn, 0: 'Places an O
|
||||
zO(theBox) = True: zE(theBox) = False
|
||||
RETURN
|
||||
|
||||
ComputeWin:
|
||||
IF WhoWon = 1 THEN
|
||||
IF XWin(1, 2, 3, 1) THEN RETURN
|
||||
IF XWin(4, 5, 6, 2) THEN RETURN
|
||||
IF XWin(7, 8, 9, 3) THEN RETURN
|
||||
IF XWin(1, 4, 7, 4) THEN RETURN
|
||||
IF XWin(2, 5, 8, 5) THEN RETURN
|
||||
IF XWin(3, 6, 9, 6) THEN RETURN
|
||||
IF XWin(1, 5, 9, 7) THEN RETURN
|
||||
IF XWin(3, 5, 7, 8) THEN RETURN
|
||||
ELSE
|
||||
IF OWin(1, 2, 3, 1) THEN RETURN
|
||||
IF OWin(4, 5, 6, 2) THEN RETURN
|
||||
IF OWin(7, 8, 9, 3) THEN RETURN
|
||||
IF OWin(1, 4, 7, 4) THEN RETURN
|
||||
IF OWin(2, 5, 8, 5) THEN RETURN
|
||||
IF OWin(3, 6, 9, 6) THEN RETURN
|
||||
IF OWin(1, 5, 9, 7) THEN RETURN
|
||||
IF OWin(3, 5, 7, 8) THEN RETURN
|
||||
END IF
|
||||
WhoWon = 0
|
||||
RETURN
|
||||
|
||||
FindPlaceForO:
|
||||
' See if there is a win for O. If so, take it.
|
||||
' See if there is a threat of a win for X. If so, block it.
|
||||
FOR TestType% = 1 TO 2
|
||||
theBox = 0
|
||||
FOR theRow = 1 TO 3: FOR theColumn = 1 TO 3
|
||||
theBox = theBox + 1
|
||||
IF zE(theBox) THEN
|
||||
tk$ = ""
|
||||
SELECT CASE theBox
|
||||
CASE 1: tk$ = "234759"
|
||||
CASE 2: tk$ = "1358"
|
||||
CASE 3: tk$ = "126957"
|
||||
CASE 4: tk$ = "1756"
|
||||
CASE 5: tk$ = "19283746"
|
||||
CASE 6: tk$ = "4539"
|
||||
CASE 7: tk$ = "148935"
|
||||
CASE 8: tk$ = "2579"
|
||||
CASE 9: tk$ = "153678"
|
||||
END SELECT
|
||||
FOR i = 1 TO LEN(tk$) STEP 2
|
||||
j = VAL(MID$(tk$, i, 1))
|
||||
k = VAL(MID$(tk$, i + 1, 1))
|
||||
IF TestType% = 1 THEN
|
||||
IF zO(j) + zO(k) < -1 THEN RETURN
|
||||
ELSE
|
||||
IF zX(j) + zX(k) < -1 THEN RETURN
|
||||
END IF
|
||||
NEXT i
|
||||
END IF
|
||||
NEXT theColumn: NEXT theRow
|
||||
NEXT TestType%
|
||||
' No move selected above to win or block win, so
|
||||
IF Hard THEN
|
||||
IF MovesMade = 1 THEN
|
||||
IF zE(5) THEN
|
||||
theRow = 2: theColumn = 2: theBox = 5
|
||||
ELSE
|
||||
IF RND > .5 THEN theRow = 1 ELSE theRow = 3
|
||||
IF RND > .5 THEN theColumn = 1 ELSE theColumn = 3
|
||||
theBox = (3 * (theRow - 1)) + theColumn
|
||||
END IF
|
||||
RETURN
|
||||
ELSEIF MovesMade = 2 THEN
|
||||
IF zX(5) THEN
|
||||
tk$ = ""
|
||||
IF zO(1) AND zX(9) THEN
|
||||
tk$ = "37"
|
||||
ELSEIF zO(3) AND zX(7) THEN
|
||||
tk$ = "19"
|
||||
ELSEIF zO(7) AND zX(3) THEN
|
||||
tk$ = "19"
|
||||
ELSEIF zO(9) AND zX(1) THEN
|
||||
tk$ = "37"
|
||||
END IF
|
||||
IF tk$ <> "" THEN
|
||||
IF RND > .5 THEN
|
||||
theBox = VAL(LEFT$(tk$, 1))
|
||||
ELSE
|
||||
theBox = VAL(LEFT$(tk$, 1))
|
||||
END IF
|
||||
theRow = (theBox + 2) \ 3
|
||||
theColumn = theBox - (3 * (theRow - 1))
|
||||
RETURN
|
||||
END IF
|
||||
ELSE
|
||||
DO
|
||||
DO: theBox = 2 * INT(1 + (RND * 4)): LOOP WHILE NOT zE(theBox)
|
||||
SELECT CASE theBox
|
||||
CASE 2: IF NOT zX(8) THEN EXIT DO
|
||||
CASE 4: IF NOT zX(6) THEN EXIT DO
|
||||
CASE 6: IF NOT zX(4) THEN EXIT DO
|
||||
CASE 8: IF NOT zX(2) THEN EXIT DO
|
||||
END SELECT
|
||||
LOOP
|
||||
theRow = (theBox + 2) \ 3
|
||||
theColumn = theBox - (3 * (theRow - 1))
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
' OK, no good move was found. Make a random one
|
||||
DO: theBox = 1 + INT(RND * 9): LOOP WHILE NOT zE(theBox)
|
||||
theRow = (theBox + 2) \ 3
|
||||
theColumn = theBox - (3 * (theRow - 1))
|
||||
RETURN
|
||||
|
||||
Shuffle:
|
||||
DO WHILE LEN(w1$) < 4
|
||||
r% = 1 + INT(RND * 4)
|
||||
IF MID$(w2$, r%, 1) <> "x" THEN
|
||||
w1$ = w1$ + MID$(w2$, r%, 1)
|
||||
MID$(w2$, r%, 1) = "x"
|
||||
END IF
|
||||
LOOP
|
||||
RETURN
|
||||
|
||||
ShowWhoWon:
|
||||
SELECT CASE WhoWon
|
||||
CASE 0: c$ = "Tie! "
|
||||
CASE 1: c$ = "YOU WIN! "
|
||||
CASE 2: c$ = "YOU LOSE! "
|
||||
CASE 3: c$ = "YOU RESIGNED?"
|
||||
END SELECT
|
||||
IF WhoWon < 3 THEN SLEEP 2: WHILE INKEY$ <> "": WEND
|
||||
CLS
|
||||
FOR i = 1 TO 30
|
||||
COLOR 1 + INT(RND * 15)
|
||||
LOCATE i, i + 20
|
||||
PRINT c$;
|
||||
NEXT i
|
||||
SLEEP 3: WHILE INKEY$ <> "": WEND
|
||||
RETURN
|
||||
|
||||
InitializeScreen:
|
||||
CLS
|
||||
COLOR 15
|
||||
LOCATE 4, 23: PRINT "TIC TAC TOE by Paul Meyer & TheBOB"
|
||||
LOCATE 6, 27: PRINT "(C) 2004 - 2007 Dos-Id Games"
|
||||
COLOR 3
|
||||
ds% = 131: dd% = 97: dz% = 75
|
||||
LINE (ds%, 343)-(ds% + dz%, 380), , BF
|
||||
LINE (ds% + (1 * dd%), 343)-(ds% + (1 * dd%) + dz%, 380), , BF
|
||||
LINE (ds% + (2 * dd%), 343)-(ds% + (2 * dd%) + dz%, 380), , BF
|
||||
LINE (ds% + (3 * dd%), 343)-(ds% + (3 * dd%) + dz%, 380), , BF
|
||||
LOCATE 23, 19: PRINT " Easy ";
|
||||
LOCATE , 31: PRINT " Hard ";
|
||||
LOCATE , 43: PRINT " Info ";
|
||||
LOCATE , 55: PRINT " Quit "
|
||||
RETURN
|
||||
|
||||
FindClickedCommand:
|
||||
Command = 0
|
||||
SELECT CASE cV
|
||||
CASE IS < 343: RETURN
|
||||
CASE IS > 380: RETURN
|
||||
END SELECT
|
||||
SELECT CASE cH
|
||||
CASE IS < 130: RETURN
|
||||
CASE IS < 205: Command = 1
|
||||
CASE IS < 227: RETURN
|
||||
CASE IS < 303: Command = 2
|
||||
CASE IS < 325: RETURN
|
||||
CASE IS < 400: Command = 3
|
||||
CASE IS < 421: RETURN
|
||||
CASE IS < 497: Command = 4
|
||||
END SELECT
|
||||
RETURN
|
||||
|
||||
|
||||
DoHelp:
|
||||
CLS
|
||||
COLOR 2
|
||||
LOCATE 3, 1
|
||||
PRINT "Credits"
|
||||
PRINT "-------"
|
||||
PRINT "This game was created by Paul Meyer in the year 2007."
|
||||
PRINT : PRINT "Graphics by TheBob"
|
||||
PRINT : PRINT "Improved mouse driver, modularity, machine play-to-win";
|
||||
PRINT " by QBasic Mac"
|
||||
PRINT : PRINT "History:"
|
||||
PRINT "http://www.network54.com/Forum/190883/message/1175106480"
|
||||
PRINT
|
||||
PRINT "This is freeware, you may change this as much as you want"
|
||||
PRINT "as long as you don't claim it as yours."
|
||||
PRINT
|
||||
PRINT
|
||||
PRINT "About"
|
||||
PRINT "-----"
|
||||
PRINT "This is just a simple TIC TAC TOE game with mouse drivers."
|
||||
PRINT "This game was created in QuickBasic."
|
||||
CALL GetUserSignal
|
||||
CLS
|
||||
RETURN
|
||||
|
||||
SUB DrawSCREEN
|
||||
DIM x AS INTEGER, y AS INTEGER
|
||||
STATIC Finished AS INTEGER
|
||||
CLS
|
||||
OUT &H3C8, 0: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 18
|
||||
OUT &H3C8, 4: OUT &H3C9, 63: OUT &H3C9, 0: OUT &H3C9, 0
|
||||
OUT &H3C8, 9: OUT &H3C9, 0: OUT &H3C9, 12: OUT &H3C9, 48
|
||||
OUT &H3C8, 11: OUT &H3C9, 0: OUT &H3C9, 18: OUT &H3C9, 54
|
||||
COLOR 7: LOCATE 3, 31: PRINT "T I C - T A C - T O E"
|
||||
LINE (170, 90)-(490, 410), 0, BF
|
||||
LINE (160, 81)-(479, 399), 1, BF
|
||||
LINE (155, 76)-(483, 404), 8, B
|
||||
LINE (152, 73)-(487, 407), 8, B
|
||||
LINE (160, 81)-(160, 399), 9
|
||||
LINE (160, 81)-(479, 81), 9
|
||||
LINE (371, 92)-(372, 393), 0, B
|
||||
LINE (271, 92)-(272, 392), 0, B
|
||||
LINE (171, 191)-(472, 192), 0, B
|
||||
LINE (171, 291)-(472, 292), 0, B
|
||||
LINE (369, 90)-(370, 390), 13, B
|
||||
LINE (269, 90)-(270, 390), 13, B
|
||||
LINE (169, 189)-(470, 190), 13, B
|
||||
LINE (169, 289)-(470, 290), 13, B
|
||||
LINE (5, 5)-(634, 474), 8, B
|
||||
LINE (10, 10)-(629, 469), 8, B
|
||||
IF Finished THEN EXIT SUB
|
||||
Finished = True
|
||||
FOR x = 194 TO 500
|
||||
FOR y = 32 TO 46
|
||||
IF POINT(x, y) = 8 THEN PSET (x, y), 7
|
||||
NEXT y
|
||||
NEXT x
|
||||
PSET (188, 108), 0
|
||||
DRAW "E3 F30 E30 F6 G30 F30 G6 H30 G30 H6 E30 H30 E3 BF2 P0,0"
|
||||
PSET (186, 106), 10
|
||||
DRAW "E3 F30 E30 F6 G30 F30 G6 H30 G30 H6 E30 H30 E3 BF2 P10,10"
|
||||
CIRCLE (322, 141), 31, 0
|
||||
CIRCLE (322, 141), 37, 0
|
||||
PAINT STEP(0, 35), 0
|
||||
PSET STEP(0, -35), 0
|
||||
CIRCLE (320, 139), 31, 4
|
||||
CIRCLE (320, 139), 37, 4
|
||||
PAINT STEP(0, 35), 4
|
||||
PSET STEP(0, -35), 1
|
||||
GET STEP(-40, -40)-STEP(81, 81), SymbolBOX
|
||||
GET (179, 98)-(260, 178), SymbolBOX(3000)
|
||||
xo 1, 1, 2: xo 1, 2, 2
|
||||
END SUB
|
||||
|
||||
SUB EnableMouse (c%)
|
||||
STATIC Status AS INTEGER
|
||||
IF Status = 0 AND c% = 0 THEN EXIT SUB
|
||||
STATIC Mx AS STRING
|
||||
IF Mx = "" THEN
|
||||
m$ = "58E85080585080585080850815510C358508058508085080850815C00"
|
||||
n$ = "595BECB70BEAB70BE8BFBE6B7B8E7D33BEC978BEA97BE89FBE697DA80"
|
||||
Mx = SPACE$(57)
|
||||
FOR i% = 1 TO 57
|
||||
H$ = CHR$(VAL("&H" + MID$(m$, i%, 1) + MID$(n$, i%, 1)))
|
||||
MID$(Mx, i%, 1) = H$
|
||||
NEXT i%
|
||||
END IF
|
||||
IF c% = 0 THEN
|
||||
CALL Absolute(2, click, cH, cV, SADD(Mx))
|
||||
Status = 0
|
||||
EXIT SUB
|
||||
END IF
|
||||
IF Status = 0 THEN CALL Absolute(1, click, cH, cV, SADD(Mx))
|
||||
Status = 1
|
||||
CALL Absolute(3, click, cH, cV, SADD(Mx))
|
||||
END SUB
|
||||
|
||||
SUB GetUserSignal
|
||||
DO
|
||||
IF 0 THEN ' Set to 1 for Debugging printout, otherwise 0
|
||||
LOCATE 2, 1
|
||||
PRINT click; "<Click"
|
||||
PRINT cH; "ch (Horizontal)"
|
||||
PRINT cV; "cv (Verticle)"
|
||||
END IF
|
||||
EnableMouse 1
|
||||
IF click > 0 THEN
|
||||
k% = click
|
||||
WHILE click <> 0: EnableMouse 1: WEND
|
||||
click = k%
|
||||
EXIT DO
|
||||
END IF
|
||||
cC = INKEY$
|
||||
LOOP WHILE cC = ""
|
||||
EnableMouse 0
|
||||
END SUB
|
||||
|
||||
FUNCTION OWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
|
||||
IF zO(b1) = 0 OR zO(b2) = 0 OR zO(b3) = 0 THEN EXIT FUNCTION
|
||||
Winner l
|
||||
OWin% = -1
|
||||
END FUNCTION
|
||||
|
||||
SUB Winner (Lineup AS INTEGER)
|
||||
SELECT CASE Lineup
|
||||
CASE 1: LINE (200, 140)-(440, 142), 14, BF: LINE (200, 143)-(440, 144), 0, B
|
||||
CASE 2: LINE (200, 240)-(440, 242), 14, BF: LINE (200, 243)-(440, 244), 0, B
|
||||
CASE 3: LINE (200, 340)-(440, 342), 14, BF: LINE (200, 343)-(440, 344), 0, B
|
||||
CASE 4: LINE (220, 120)-(222, 360), 14, BF: LINE (223, 120)-(223, 360), 0
|
||||
CASE 5: LINE (320, 120)-(322, 360), 14, BF: LINE (323, 120)-(323, 360), 0
|
||||
CASE 6: LINE (420, 120)-(422, 360), 14, BF: LINE (423, 120)-(423, 360), 0
|
||||
CASE 7: PSET (200, 120), 14: DRAW "F240 d H240 d F240 d H240 d C0 F240 d H240"
|
||||
CASE 8: PSET (440, 120), 14: DRAW "G240 d E240 d G240 d E240 d C0 G240 d E240"
|
||||
END SELECT
|
||||
END SUB
|
||||
|
||||
SUB xo (Row AS INTEGER, Col AS INTEGER, symbol AS INTEGER)
|
||||
DIM Index AS INTEGER, x AS INTEGER, y AS INTEGER
|
||||
x = (Col - 1) * 100 + 180
|
||||
y = (Row - 1) * 100 + 100
|
||||
Index = symbol * 3000
|
||||
IF Index < 6000 THEN
|
||||
PUT (x, y), SymbolBOX(Index), PSET
|
||||
ELSE
|
||||
LINE (x, y)-(x + 80, y + 80), 1, BF
|
||||
END IF
|
||||
END SUB
|
||||
|
||||
FUNCTION XWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
|
||||
IF zX(b1) = 0 OR zX(b2) = 0 OR zX(b3) = 0 THEN EXIT FUNCTION
|
||||
Winner l
|
||||
XWin% = -1
|
||||
END FUNCTION
|
711
tests/qbasic_testcases/open_gl/3d_model_viewer.bas
Normal file
711
tests/qbasic_testcases/open_gl/3d_model_viewer.bas
Normal file
|
@ -0,0 +1,711 @@
|
|||
CHDIR "programs\samples\open_gl"
|
||||
|
||||
' This example shows how models with textures or materials can be displayed with OpenGL using QB64
|
||||
'
|
||||
'IMPORTANT:
|
||||
' Whilst the .X file loader is optimized for speed, it is very incomplete:
|
||||
' -only .X files in text file format
|
||||
' -only one object, not a cluster of objects
|
||||
' -if using a texture, use a single texture which will be applied to all materials
|
||||
' -all the 3D models in this example were exported from Blender, a free 3D creation tool
|
||||
' Blender tips: CTRL+J to amalgamate objects, select object to export first, in the UV/image-editor
|
||||
' window you can export the textures built into your .blend file, apply the decimate
|
||||
' modifier to reduce your polygon count to below 10000, preferably ~3000 or less
|
||||
' This program is not a definitive guide to OpenGL in any way
|
||||
' The GLH functions are something I threw together to stop people crashing their code by making
|
||||
' calls to OpenGL with incorrectly sized memory regions. The GLH... prefixed commands are not mandatory or
|
||||
' part of QB64, nor do they represent a complete library of helper commands.
|
||||
' Lighting is not this example's strongest point, there's probably some work to do on light positioning
|
||||
' and vertex normals
|
||||
'
|
||||
'Finally, I hope you enjoy this program as much as I enjoyed piecing it together,
|
||||
' Galleon
|
||||
|
||||
'###################################### GLH SETUP #############################################
|
||||
|
||||
'Used to manage textures
|
||||
TYPE DONT_USE_GLH_Handle_TYPE
|
||||
in_use AS _BYTE
|
||||
handle AS LONG
|
||||
END TYPE
|
||||
|
||||
'Used by GLH RGB/etc helper functions
|
||||
DIM SHARED DONT_USE_GLH_COL_RGBA(1 TO 4) AS SINGLE
|
||||
|
||||
REDIM SHARED DONT_USE_GLH_Handle(1000) AS DONT_USE_GLH_Handle_TYPE
|
||||
|
||||
'.X Format Model Loading Data
|
||||
TYPE VERTEX_TYPE
|
||||
X AS DOUBLE
|
||||
Y AS DOUBLE
|
||||
Z AS DOUBLE
|
||||
NX AS DOUBLE
|
||||
NY AS DOUBLE
|
||||
NZ AS DOUBLE
|
||||
END TYPE
|
||||
REDIM SHARED VERTEX(1) AS VERTEX_TYPE
|
||||
DIM SHARED VERTICES AS LONG
|
||||
TYPE FACE_CORNER_TYPE
|
||||
V AS LONG 'the vertex index
|
||||
TX AS SINGLE 'texture X coordinate
|
||||
TY AS SINGLE 'texture Y coordinate
|
||||
END TYPE
|
||||
TYPE FACE_TYPE
|
||||
V1 AS FACE_CORNER_TYPE
|
||||
V2 AS FACE_CORNER_TYPE
|
||||
V3 AS FACE_CORNER_TYPE
|
||||
Material AS LONG
|
||||
Index AS LONG
|
||||
END TYPE
|
||||
REDIM SHARED FACE(1) AS FACE_TYPE
|
||||
DIM SHARED FACES AS LONG
|
||||
TYPE MATERIAL_RGBAI_TYPE
|
||||
R AS SINGLE
|
||||
G AS SINGLE
|
||||
B AS SINGLE
|
||||
A AS SINGLE
|
||||
Intensity AS SINGLE
|
||||
END TYPE
|
||||
TYPE MATERIAL_TYPE
|
||||
Diffuse AS MATERIAL_RGBAI_TYPE 'regular col
|
||||
Specular AS MATERIAL_RGBAI_TYPE 'hightlight/shine col
|
||||
Texture_Image AS LONG 'both an image and a texture handle are held
|
||||
Texture AS LONG 'if 0, there is no texture
|
||||
END TYPE
|
||||
REDIM SHARED MATERIAL(1) AS MATERIAL_TYPE
|
||||
DIM SHARED MATERIALS AS LONG
|
||||
|
||||
'##############################################################################################
|
||||
|
||||
DIM SHARED AllowSubGL
|
||||
|
||||
SCREEN _NEWIMAGE(1024, 768, 32)
|
||||
|
||||
backdrop = _LOADIMAGE("backdrop_tron.png")
|
||||
|
||||
DIM SHARED rot1
|
||||
DIM SHARED rot2, rot3
|
||||
DIM SHARED scale: scale = 1
|
||||
|
||||
'Load (default) model
|
||||
GLH_Load_Model_Format_X "marty.x", "marty_tmap.png"
|
||||
'draw backdrop
|
||||
_PUTIMAGE , backdrop: _DONTBLEND: LINE (200, 200)-(500, 500), _RGBA(0, 255, 255, 0), BF: _BLEND
|
||||
|
||||
AllowSubGL = 1
|
||||
|
||||
DO
|
||||
'This is our program's main loop
|
||||
_LIMIT 100
|
||||
LOCATE 1, 1
|
||||
PRINT "Mouse Input:"
|
||||
PRINT "{Horizonal Movement}Spin"
|
||||
PRINT "{Vertical Movement}Flip"
|
||||
PRINT "{Wheel}Scale"
|
||||
PRINT
|
||||
PRINT "Keyboard comands:"
|
||||
PRINT "Switch rendering order: {1}GL behind, {2}GL on top, {3}GL only, good for speed"
|
||||
PRINT "Switch/Load model: {A}Zebra, {B}Pig, {C}Car"
|
||||
|
||||
k$ = INKEY$
|
||||
IF k$ = "1" THEN _GLRENDER _BEHIND
|
||||
IF k$ = "2" THEN _GLRENDER _ONTOP
|
||||
IF k$ = "3" THEN _GLRENDER _ONLY
|
||||
|
||||
|
||||
PRINT "Angles:"; rot1, rot2, rot3
|
||||
|
||||
|
||||
IF UCASE$(k$) = "A" THEN
|
||||
AllowSubGL = 0
|
||||
GLH_Load_Model_Format_X "marty.x", "marty_tmap.png"
|
||||
_PUTIMAGE , backdrop: _DONTBLEND: LINE (200, 200)-(500, 500), _RGBA(0, 255, 255, 0), BF: _BLEND
|
||||
AllowSubGL = 1
|
||||
END IF
|
||||
|
||||
IF UCASE$(k$) = "B" THEN
|
||||
AllowSubGL = 0
|
||||
GLH_Load_Model_Format_X "piggy_mini3.x", ""
|
||||
_PUTIMAGE , backdrop: _DONTBLEND: LINE (200, 200)-(500, 500), _RGBA(0, 255, 255, 0), BF: _BLEND
|
||||
AllowSubGL = 1
|
||||
END IF
|
||||
|
||||
IF UCASE$(k$) = "C" THEN
|
||||
AllowSubGL = 0
|
||||
GLH_Load_Model_Format_X "gasprin.x", "gasprin_tmap.png"
|
||||
_PUTIMAGE , backdrop: _DONTBLEND: LINE (200, 200)-(500, 500), _RGBA(0, 255, 255, 0), BF: _BLEND
|
||||
AllowSubGL = 1
|
||||
END IF
|
||||
|
||||
DO WHILE _MOUSEINPUT
|
||||
scale = scale * (1 - (_MOUSEWHEEL * .1))
|
||||
rot1 = _MOUSEX
|
||||
rot2 = _MOUSEY
|
||||
LOOP
|
||||
|
||||
IF k$ = "." THEN rot3 = rot3 + 1
|
||||
IF k$ = "," THEN rot3 = rot3 - 1
|
||||
|
||||
|
||||
|
||||
|
||||
LOOP UNTIL k$ = CHR$(27)
|
||||
END
|
||||
|
||||
'this specially named sub "_GL" is detected by QB64 and adds support for OpenGL commands
|
||||
'it is called automatically whenever the underlying software deems an update is possible
|
||||
'usually/ideally, this is in sync with your monitor's refresh rate
|
||||
SUB _GL STATIC
|
||||
'STATIC was used above to make all variables in this sub maintain their values between calls to this sub
|
||||
|
||||
IF AllowSubGL = 0 THEN EXIT SUB 'we aren't ready yet!
|
||||
|
||||
'timing is everything, we don't know how fast the 3D renderer will call this sub to we use timers to smooth things out
|
||||
T# = TIMER(0.001)
|
||||
IF ETT# = 0 THEN ETT# = T#
|
||||
ET# = T# - ETT#
|
||||
ETT# = T#
|
||||
|
||||
IF sub_gl_called = 0 THEN
|
||||
sub_gl_called = 1 'we only need to perform the following code once
|
||||
'...
|
||||
END IF
|
||||
|
||||
'These settings affect how OpenGL will render our content
|
||||
'!!! THESE SETTINGS ARE TO SHOW HOW ALPHA CAN WORK, BUT IT IS 10x FASTER WHEN ALPHA OPTIONS ARE DISABLED !!!
|
||||
'*** every setting must be reset because SUB _GL cannot guarantee settings have not changed since last time ***
|
||||
_glMatrixMode _GL_PROJECTION 'Select The Projection Matrix
|
||||
_glLoadIdentity 'Reset The Projection Matrix
|
||||
_gluPerspective 45, _WIDTH(0) / _HEIGHT(0), 1, 100 'QB64 internally supports this GLU command for convenience sake, but does not support GLU
|
||||
_glEnable _GL_TEXTURE_2D
|
||||
_glEnable _GL_BLEND
|
||||
_glBlendFunc _GL_SRC_ALPHA, _GL_ONE_MINUS_SRC_ALPHA 'how alpha values are interpretted
|
||||
_glEnable _GL_DEPTH_TEST 'use the zbuffer
|
||||
_glDepthMask _GL_TRUE
|
||||
_glAlphaFunc _GL_GREATER, 0.5 'dont do anything if alpha isn't greater than 0.5 (or 128)
|
||||
_glEnable _GL_ALPHA_TEST
|
||||
_glTexParameteri _GL_TEXTURE_2D, _GL_TEXTURE_MAG_FILTER, _GL_LINEAR
|
||||
_glTexParameteri _GL_TEXTURE_2D, _GL_TEXTURE_MIN_FILTER, _GL_LINEAR
|
||||
'**************************************************************************************************************
|
||||
|
||||
_glMatrixMode _GL_MODELVIEW 'Select The Modelview Matrix
|
||||
_glLoadIdentity 'Reset The Modelview Matrix
|
||||
|
||||
|
||||
|
||||
'setup our light
|
||||
_glEnable _GL_LIGHTING
|
||||
_glEnable _GL_LIGHT0
|
||||
_glLightfv _GL_LIGHT0, _GL_DIFFUSE, GLH_RGB(.8, .8, .8)
|
||||
_glLightfv _GL_LIGHT0, _GL_AMBIENT, GLH_RGB(0.1, 0.1, 0.1)
|
||||
_glLightfv _GL_LIGHT0, _GL_SPECULAR, GLH_RGB(0.3, 0.3, 0.3)
|
||||
|
||||
light_rot = light_rot + ET#
|
||||
_glLightfv _GL_LIGHT0, _GL_POSITION, GLH_RGBA(SIN(light_rot) * 20, COS(light_rot) * 20, 20, 1)
|
||||
|
||||
|
||||
_glTranslatef 0, 0, -20 'Translate Into The Screen
|
||||
_glRotatef rot1, 0, 1, 0
|
||||
_glRotatef rot2, 1, 0, 0
|
||||
_glRotatef rot3, 0, 0, 1
|
||||
|
||||
|
||||
|
||||
current_m = -1
|
||||
FOR F = 1 TO FACES
|
||||
|
||||
m = FACE(F).Material
|
||||
IF m <> current_m THEN 'we don't switch materials unless we have to
|
||||
IF current_m <> -1 THEN _glEnd 'stop rendering triangles so we can change some settings
|
||||
current_m = m
|
||||
IF MATERIAL(m).Texture_Image THEN
|
||||
|
||||
_glEnable _GL_TEXTURE_2D
|
||||
_glDisable _GL_COLOR_MATERIAL
|
||||
_glTexParameteri _GL_TEXTURE_2D, _GL_TEXTURE_MAG_FILTER, _GL_LINEAR 'seems these need to be respecified
|
||||
_glTexParameteri _GL_TEXTURE_2D, _GL_TEXTURE_MIN_FILTER, _GL_LINEAR
|
||||
|
||||
|
||||
IF MATERIAL(m).Texture = 0 THEN
|
||||
MATERIAL(m).Texture = GLH_Image_to_Texture(MATERIAL(m).Texture_Image)
|
||||
END IF
|
||||
GLH_Select_Texture MATERIAL(m).Texture
|
||||
|
||||
_glMaterialfv _GL_FRONT, _GL_DIFFUSE, GLH_RGBA(1, 1, 1, 1)
|
||||
|
||||
ELSE
|
||||
'use materials, disable textures
|
||||
_glDisable _GL_TEXTURE_2D
|
||||
_glDisable _GL_COLOR_MATERIAL
|
||||
|
||||
mult = MATERIAL(m).Diffuse.Intensity 'otherwise known as "power"
|
||||
r = MATERIAL(m).Diffuse.R * mult
|
||||
g = MATERIAL(m).Diffuse.G * mult
|
||||
b = MATERIAL(m).Diffuse.B * mult
|
||||
' _glColor3f r, g, b
|
||||
_glMaterialfv _GL_FRONT, _GL_DIFFUSE, GLH_RGBA(r, g, b, 1)
|
||||
|
||||
mult = MATERIAL(m).Specular.Intensity
|
||||
r = MATERIAL(m).Specular.R * mult
|
||||
g = MATERIAL(m).Specular.G * mult
|
||||
b = MATERIAL(m).Specular.B * mult
|
||||
_glMaterialfv _GL_FRONT, _GL_SPECULAR, GLH_RGBA(r, g, b, 1)
|
||||
|
||||
END IF
|
||||
|
||||
_glBegin _GL_TRIANGLES
|
||||
|
||||
END IF
|
||||
|
||||
FOR s = 1 TO 3
|
||||
|
||||
IF s = 1 THEN v = FACE(F).V1.V
|
||||
IF s = 2 THEN v = FACE(F).V2.V
|
||||
IF s = 3 THEN v = FACE(F).V3.V
|
||||
v = v + 1
|
||||
|
||||
'vertex
|
||||
x = (VERTEX(v).X + 0) * scale
|
||||
y = (VERTEX(v).Y + 0) * scale
|
||||
z = (VERTEX(v).Z + 0) * scale
|
||||
'normal direction from vertex
|
||||
nx = VERTEX(v).NX: ny = VERTEX(v).NY: nz = VERTEX(v).NZ
|
||||
|
||||
|
||||
'corner's texture coordinates
|
||||
IF MATERIAL(m).Texture THEN
|
||||
IF s = 1 THEN tx = FACE(F).V1.TX: ty = FACE(F).V1.TY
|
||||
IF s = 2 THEN tx = FACE(F).V2.TX: ty = FACE(F).V2.TY
|
||||
IF s = 3 THEN tx = FACE(F).V3.TX: ty = FACE(F).V3.TY
|
||||
_glTexCoord2f tx, ty
|
||||
END IF
|
||||
|
||||
_glNormal3d nx, my, nz
|
||||
_glVertex3f x, y, z
|
||||
|
||||
NEXT
|
||||
|
||||
NEXT
|
||||
_glEnd
|
||||
|
||||
END SUB
|
||||
|
||||
|
||||
|
||||
'QB64 OPEN-GL HELPER MACROS (aka. GLH macros) #######################################################################
|
||||
|
||||
SUB GLH_Select_Texture (texture_handle AS LONG) 'turn an image handle into a texture handle
|
||||
IF texture_handle < 1 OR texture_handle > UBOUND(DONT_USE_GLH_HANDLE) THEN ERROR 258: EXIT FUNCTION
|
||||
IF DONT_USE_GLH_Handle(texture_handle).in_use = 0 THEN ERROR 258: EXIT FUNCTION
|
||||
_glBindTexture _GL_TEXTURE_2D, DONT_USE_GLH_Handle(texture_handle).handle
|
||||
END SUB
|
||||
|
||||
FUNCTION GLH_Image_to_Texture (image_handle AS LONG) 'turn an image handle into a texture handle
|
||||
IF image_handle >= 0 THEN ERROR 258: EXIT FUNCTION 'don't allow screen pages
|
||||
DIM m AS _MEM
|
||||
m = _MEMIMAGE(image_handle)
|
||||
DIM h AS LONG
|
||||
h = DONT_USE_GLH_New_Texture_Handle
|
||||
GLH_Image_to_Texture = h
|
||||
_glBindTexture _GL_TEXTURE_2D, DONT_USE_GLH_Handle(h).handle
|
||||
_glTexImage2D _GL_TEXTURE_2D, 0, _GL_RGBA, _WIDTH(image_handle), _HEIGHT(image_handle), 0, &H80E1&&, _GL_UNSIGNED_BYTE, m.OFFSET
|
||||
_MEMFREE m
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION DONT_USE_GLH_New_Texture_Handle
|
||||
handle&& = 0
|
||||
_glGenTextures 1, _OFFSET(handle&&)
|
||||
DONT_USE_GLH_New_Texture_Handle = handle&&
|
||||
FOR h = 1 TO UBOUND(DONT_USE_GLH_Handle)
|
||||
IF DONT_USE_GLH_Handle(h).in_use = 0 THEN
|
||||
DONT_USE_GLH_Handle(h).in_use = 1
|
||||
DONT_USE_GLH_Handle(h).handle = handle&&
|
||||
DONT_USE_GLH_New_Texture_Handle = h
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
NEXT
|
||||
REDIM _PRESERVE DONT_USE_GLH_Handle(UBOUND(DONT_USE_GLH_HANDLE) * 2) AS DONT_USE_GLH_Handle_TYPE
|
||||
DONT_USE_GLH_Handle(h).in_use = 1
|
||||
DONT_USE_GLH_Handle(h).handle = handle&&
|
||||
DONT_USE_GLH_New_Texture_Handle = h
|
||||
END FUNCTION
|
||||
|
||||
|
||||
|
||||
|
||||
SUB GLH_Load_Model_Format_X (Filename$, Optional_Texture_Filename$)
|
||||
|
||||
_AUTODISPLAY 'so loading messages can be seen
|
||||
|
||||
DEFLNG A-Z
|
||||
|
||||
IF LEN(Optional_Texture_Filename$) THEN
|
||||
texture_image = _LOADIMAGE(Optional_Texture_Filename$, 32)
|
||||
IF texure_image = -1 THEN texure_image = 0
|
||||
END IF
|
||||
|
||||
'temporary arrays
|
||||
DIM SIDE_LIST(10000) AS LONG 'used for wrangling triangle-fans/triangle-strips
|
||||
REDIM TEXCO_TX(1) AS SINGLE
|
||||
REDIM TEXCO_TY(1) AS SINGLE
|
||||
REDIM POLY_FACE_INDEX_FIRST(1) AS LONG
|
||||
REDIM POLY_FACE_INDEX_LAST(1) AS LONG
|
||||
|
||||
'buffer file
|
||||
fh = FREEFILE: OPEN Filename$ FOR BINARY AS #fh: file_data$ = SPACE$(LOF(fh)): GET #fh, , file_data$: CLOSE #fh
|
||||
|
||||
file_x = 1
|
||||
file_data$ = UCASE$(file_data$)
|
||||
|
||||
ASC_COMMA = 44
|
||||
ASC_SEMICOLON = 59
|
||||
ASC_LBRAC = 123
|
||||
ASC_RBRAC = 125
|
||||
ASC_SPACE = 32
|
||||
ASC_TAB = 9
|
||||
ASC_CR = 13
|
||||
ASC_LF = 10
|
||||
ASC_FSLASH = 47
|
||||
ASC_DOT = 46
|
||||
ASC_MINUS = 45
|
||||
|
||||
DIM WhiteSpace(255) AS LONG
|
||||
WhiteSpace(ASC_LF) = -1
|
||||
WhiteSpace(ASC_CR) = -1
|
||||
WhiteSpace(ASC_SPACE) = -1
|
||||
WhiteSpace(ASC_TAB) = -1
|
||||
|
||||
DIM FormattingCharacter(255) AS LONG
|
||||
FormattingCharacter(ASC_COMMA) = -1
|
||||
FormattingCharacter(ASC_SEMICOLON) = -1
|
||||
FormattingCharacter(ASC_LBRAC) = -1
|
||||
FormattingCharacter(ASC_RBRAC) = -1
|
||||
|
||||
DIM Numeric(255) AS LONG
|
||||
FOR a = 48 TO 57
|
||||
Numeric(a) = -1
|
||||
NEXT
|
||||
Numeric(ASC_DOT) = -1
|
||||
Numeric(ASC_MINUS) = -1
|
||||
|
||||
PRINT "Loading model:"
|
||||
|
||||
DO
|
||||
|
||||
skip_comment:
|
||||
|
||||
'find start of element
|
||||
x1 = -1
|
||||
FOR x = file_x TO LEN(file_data$)
|
||||
IF WhiteSpace(ASC(file_data$, x)) = 0 THEN x1 = x: EXIT FOR
|
||||
NEXT
|
||||
IF x1 = -1 THEN EXIT DO 'no more data
|
||||
|
||||
a = ASC(file_data$, x1)
|
||||
IF a = ASC_FSLASH THEN 'commend
|
||||
IF ASC(file_data$, x1 + 1) = ASC_FSLASH THEN
|
||||
FOR x = x1 TO LEN(file_data$)
|
||||
a = ASC(file_data$, x)
|
||||
IF a = ASC_CR OR a = ASC_LF THEN file_x = x + 1: GOTO skip_comment '//.....
|
||||
NEXT
|
||||
END IF
|
||||
END IF
|
||||
|
||||
'find end of element
|
||||
x2 = x1
|
||||
FOR x = x1 TO LEN(file_data$)
|
||||
a = ASC(file_data$, x)
|
||||
IF WhiteSpace(a) THEN
|
||||
IF a = ASC_CR OR a = ASC_LF THEN EXIT FOR 'it is the end
|
||||
ELSE
|
||||
'not whitespace
|
||||
IF FormattingCharacter(a) THEN EXIT FOR
|
||||
x2 = x
|
||||
END IF
|
||||
NEXT
|
||||
file_x = x2 + 1
|
||||
|
||||
a2$ = MID$(file_data$, x1, x2 - x1 + 1)
|
||||
|
||||
IF LEN(skip_until$) THEN
|
||||
IF a2$ <> skip_until$ THEN GOTO skip_comment
|
||||
skip_until$ = ""
|
||||
END IF
|
||||
|
||||
|
||||
|
||||
a = ASC(a2$)
|
||||
|
||||
IF Numeric(a) AND a <> ASC_DOT THEN 'faster than VAL, value conversion
|
||||
v = 0
|
||||
dp = 0
|
||||
div = 1
|
||||
IF a = ASC_MINUS THEN neg = 1: x1 = 2 ELSE neg = 0: x1 = 1
|
||||
FOR x = x1 TO LEN(a2$)
|
||||
a2 = ASC(a2$, x)
|
||||
IF a2 = ASC_DOT THEN
|
||||
dp = 1
|
||||
ELSE
|
||||
v = v * 10 + (a2 - 48)
|
||||
IF dp THEN div = div * 10
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
IF dp = 1 THEN
|
||||
v# = v
|
||||
div# = div
|
||||
IF neg THEN value# = (-v#) / div# ELSE value# = v# / div#
|
||||
ELSE
|
||||
IF neg THEN value# = -v ELSE value# = v
|
||||
END IF
|
||||
|
||||
END IF
|
||||
|
||||
IF face_input THEN
|
||||
IF face_input = 3 THEN
|
||||
IF a2$ = ";" THEN
|
||||
IF last_a2$ = ";" THEN face_input = 0
|
||||
SLI = SLI + 1
|
||||
ELSEIF a2$ = "," THEN
|
||||
face_input = 2
|
||||
polygon = polygon + 1
|
||||
ELSE
|
||||
SIDE_LIST(SLI) = value#
|
||||
IF SLI >= 3 THEN
|
||||
FACES = FACES + 1
|
||||
IF FACES > UBOUND(FACE) THEN REDIM _PRESERVE FACE(UBOUND(FACE) * 2) AS FACE_TYPE
|
||||
FACE(FACES).V1.V = SIDE_LIST(1)
|
||||
FACE(FACES).V2.V = SIDE_LIST(SLI - 1)
|
||||
FACE(FACES).V3.V = SIDE_LIST(SLI)
|
||||
IF POLY_FACE_INDEX_FIRST(polygon) = 0 THEN POLY_FACE_INDEX_FIRST(polygon) = FACES
|
||||
POLY_FACE_INDEX_LAST(polygon) = FACES
|
||||
FACE(FACES).Index = polygon
|
||||
END IF
|
||||
|
||||
file_x = file_x + 1: a2$ = ";": a = ASC_SEMICOLON: SLI = SLI + 1
|
||||
|
||||
|
||||
END IF
|
||||
GOTO done
|
||||
END IF
|
||||
IF face_input = 2 THEN
|
||||
SIDES = value#
|
||||
SLI = 0
|
||||
face_input = 3
|
||||
GOTO done
|
||||
END IF
|
||||
IF face_input = 1 THEN
|
||||
POLYGONS = value#
|
||||
REDIM _PRESERVE FACE(POLYGONS * 4) AS FACE_TYPE 'estimate triangles in polygons
|
||||
REDIM POLY_FACE_INDEX_FIRST(POLYGONS) AS LONG
|
||||
REDIM POLY_FACE_INDEX_LAST(POLYGONS) AS LONG
|
||||
polygon = 1
|
||||
face_input = 2
|
||||
FACES = 0
|
||||
GOTO done
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF mesh_input THEN
|
||||
IF mesh_input = 5 THEN
|
||||
IF a = ASC_SEMICOLON THEN
|
||||
mesh_input = 0: face_input = 1
|
||||
IF normals_input = 1 THEN
|
||||
face_input = 0 'face input is unrequired on 2nd pass
|
||||
skip_until$ = "MESHMATERIALLIST"
|
||||
END IF
|
||||
END IF
|
||||
GOTO done
|
||||
END IF
|
||||
IF mesh_input = 4 THEN
|
||||
IF a = ASC_SEMICOLON THEN
|
||||
'ignore
|
||||
ELSEIF a = ASC_COMMA THEN
|
||||
vertex = vertex + 1
|
||||
ELSE
|
||||
IF normals_input = 1 THEN
|
||||
IF plane = 1 THEN VERTEX(vertex).NX = value#
|
||||
IF plane = 2 THEN VERTEX(vertex).NY = value#
|
||||
IF plane = 3 THEN VERTEX(vertex).NZ = value#
|
||||
ELSE
|
||||
IF plane = 1 THEN VERTEX(vertex).X = value#
|
||||
IF plane = 2 THEN VERTEX(vertex).Y = value#
|
||||
IF plane = 3 THEN VERTEX(vertex).Z = value#
|
||||
END IF
|
||||
|
||||
plane = plane + 1
|
||||
IF plane = 4 THEN
|
||||
plane = 1
|
||||
IF vertex = VERTICES THEN mesh_input = 5
|
||||
END IF
|
||||
|
||||
file_x = file_x + 1 'skip next character (semicolon)
|
||||
|
||||
END IF
|
||||
GOTO done
|
||||
END IF
|
||||
IF mesh_input = 3 THEN
|
||||
IF a2$ = ";" THEN mesh_input = 4
|
||||
GOTO done
|
||||
END IF
|
||||
IF mesh_input = 2 THEN
|
||||
VERTICES = value#
|
||||
IF normals_input = 0 THEN
|
||||
REDIM VERTEX(VERTICES) AS VERTEX_TYPE
|
||||
REDIM TEXCO_TX(VERTICES) AS SINGLE
|
||||
REDIM TEXCO_TY(VERTICES) AS SINGLE
|
||||
END IF
|
||||
mesh_input = 3
|
||||
GOTO done
|
||||
END IF
|
||||
IF mesh_input = 1 THEN
|
||||
IF a2$ = "{" THEN mesh_input = 2: plane = 1: vertex = 1
|
||||
GOTO done
|
||||
END IF
|
||||
GOTO done
|
||||
END IF
|
||||
|
||||
IF matlist_input THEN
|
||||
IF matlist_input = 6 THEN
|
||||
IF a2$ = "," THEN
|
||||
'do nothing
|
||||
ELSEIF a2$ = ";" THEN
|
||||
matlist_input = 0
|
||||
ELSE
|
||||
polygon = polygon + 1: m = value#
|
||||
FOR f = POLY_FACE_INDEX_FIRST(polygon) TO POLY_FACE_INDEX_LAST(polygon)
|
||||
FACE(f).Material = m + 1
|
||||
NEXT
|
||||
END IF
|
||||
GOTO done
|
||||
END IF
|
||||
IF matlist_input = 5 AND a2$ = ";" THEN matlist_input = 6: polygon = 0: face_search_start = 1: GOTO done
|
||||
IF matlist_input = 4 THEN matlist_input = 5: GOTO done
|
||||
IF matlist_input = 3 AND a2$ = ";" THEN matlist_input = 4: GOTO done
|
||||
IF matlist_input = 2 THEN MATERIALS = value#: REDIM MATERIAL(MATERIALS) AS MATERIAL_TYPE: matlist_input = 3: GOTO done
|
||||
IF matlist_input = 1 AND a2$ = "{" THEN matlist_input = 2: GOTO done
|
||||
GOTO done
|
||||
END IF
|
||||
|
||||
IF material_input THEN
|
||||
IF material_input = 2 THEN
|
||||
IF a2$ = ";" THEN
|
||||
'do nothing
|
||||
ELSEIF a2$ = "}" THEN
|
||||
material_input = 0
|
||||
ELSE
|
||||
N = material_n
|
||||
IF N = 1 THEN MATERIAL(MATERIAL).Diffuse.R = value#
|
||||
IF N = 2 THEN MATERIAL(MATERIAL).Diffuse.G = value#
|
||||
IF N = 3 THEN MATERIAL(MATERIAL).Diffuse.B = value#
|
||||
IF N = 4 THEN MATERIAL(MATERIAL).Diffuse.A = value#
|
||||
IF N = 5 THEN MATERIAL(MATERIAL).Diffuse.Intensity = value# / 100
|
||||
IF N = 6 THEN MATERIAL(MATERIAL).Specular.R = value#
|
||||
IF N = 7 THEN MATERIAL(MATERIAL).Specular.G = value#
|
||||
IF N = 8 THEN MATERIAL(MATERIAL).Specular.B = value#
|
||||
IF N = 9 THEN MATERIAL(MATERIAL).Specular.A = value#
|
||||
IF N = 10 THEN MATERIAL(MATERIAL).Specular.Intensity = MATERIAL(MATERIAL).Diffuse.Intensity
|
||||
|
||||
'if texture_image
|
||||
material_n = N + 1
|
||||
|
||||
END IF
|
||||
GOTO done
|
||||
END IF
|
||||
IF material_input = 1 AND a2$ = "{" THEN material_input = 2: material_n = 1: GOTO done
|
||||
GOTO done
|
||||
END IF
|
||||
|
||||
IF texco_input THEN
|
||||
IF texco_input = 4 THEN
|
||||
IF a2$ = ";" THEN
|
||||
IF last_a2$ = ";" THEN
|
||||
texco_input = 0
|
||||
GOTO finished
|
||||
END IF
|
||||
plane = plane + 1: IF plane = 3 THEN plane = 1
|
||||
ELSEIF a2$ = "," THEN
|
||||
vertex = vertex + 1
|
||||
ELSE
|
||||
IF plane = 1 THEN
|
||||
TEXCO_TX(vertex) = value#
|
||||
ELSE
|
||||
TEXCO_TY(vertex) = value#
|
||||
END IF
|
||||
END IF
|
||||
GOTO done
|
||||
END IF
|
||||
IF texco_input = 3 THEN
|
||||
IF a2$ = ";" THEN texco_input = 4: plane = 1: vertex = 1
|
||||
GOTO done
|
||||
END IF
|
||||
IF texco_input = 2 THEN
|
||||
'vertices already known
|
||||
texco_input = 3
|
||||
GOTO done
|
||||
END IF
|
||||
IF texco_input = 1 THEN
|
||||
IF a2$ = "{" THEN texco_input = 2
|
||||
GOTO done
|
||||
END IF
|
||||
|
||||
GOTO done
|
||||
END IF
|
||||
|
||||
'mode switch?
|
||||
IF a2$ = "MESHTEXTURECOORDS" THEN texco_input = 1: PRINT "[Texture Coordinates]";: GOTO done
|
||||
IF a2$ = "MESHNORMALS" THEN normals_input = 1: mesh_input = 1: face_input = 0: PRINT "[Normals]";: GOTO done
|
||||
IF a2$ = "MESH" THEN mesh_input = 1: PRINT "[Mesh Vertices & Faces]";: GOTO done
|
||||
IF a2$ = "MESHMATERIALLIST" THEN matlist_input = 1: PRINT "[Face Material Indexes]";: GOTO done
|
||||
IF LEFT$(a2$, 9) = "MATERIAL " THEN
|
||||
material_input = 1: MATERIAL = MATERIAL + 1
|
||||
MATERIAL(MATERIAL).Texture = 0: MATERIAL(MATERIAL).Texture_Image = texture_image
|
||||
PRINT "[Material]";: GOTO done
|
||||
END IF
|
||||
done:
|
||||
|
||||
progress = progress + 1: IF progress > 5000 THEN PRINT ".";: progress = 0
|
||||
|
||||
IF a = ASC_SEMICOLON THEN
|
||||
last_a2$ = a2$
|
||||
ELSE
|
||||
IF LEN(last_a2$) THEN last_a2$ = ""
|
||||
END IF
|
||||
|
||||
LOOP
|
||||
finished:
|
||||
'change texture coords (with are organised per vertex to be organised by face side
|
||||
'that way one vertex can share multiple materials without duplicating the vertex
|
||||
PRINT "[Attaching Texture Coordinates to Face Cornders]";
|
||||
f = 1
|
||||
DO UNTIL f > FACES
|
||||
v = FACE(f).V1.V + 1: FACE(f).V1.TX = TEXCO_TX(v): FACE(f).V1.TY = TEXCO_TY(v)
|
||||
v = FACE(f).V2.V + 1: FACE(f).V2.TX = TEXCO_TX(v): FACE(f).V2.TY = TEXCO_TY(v)
|
||||
v = FACE(f).V3.V + 1: FACE(f).V3.TX = TEXCO_TX(v): FACE(f).V3.TY = TEXCO_TY(v)
|
||||
f = f + 1
|
||||
LOOP
|
||||
PRINT
|
||||
PRINT "Model loaded!"
|
||||
|
||||
DEFSNG A-Z
|
||||
|
||||
END SUB
|
||||
|
||||
FUNCTION GLH_RGB%& (r AS SINGLE, g AS SINGLE, b AS SINGLE)
|
||||
DONT_USE_GLH_COL_RGBA(1) = r
|
||||
DONT_USE_GLH_COL_RGBA(2) = g
|
||||
DONT_USE_GLH_COL_RGBA(3) = b
|
||||
DONT_USE_GLH_COL_RGBA(4) = 1
|
||||
GLH_RGB = _OFFSET(DONT_USE_GLH_COL_RGBA())
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION GLH_RGBA%& (r AS SINGLE, g AS SINGLE, b AS SINGLE, a AS SINGLE)
|
||||
DONT_USE_GLH_COL_RGBA(1) = r
|
||||
DONT_USE_GLH_COL_RGBA(2) = g
|
||||
DONT_USE_GLH_COL_RGBA(3) = b
|
||||
DONT_USE_GLH_COL_RGBA(4) = a
|
||||
GLH_RGBA = _OFFSET(DONT_USE_GLH_COL_RGBA())
|
||||
END FUNCTION
|
||||
|
||||
|
||||
|
BIN
tests/qbasic_testcases/open_gl/gasprin_tmap.png
Normal file
BIN
tests/qbasic_testcases/open_gl/gasprin_tmap.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 328 KiB |
20559
tests/qbasic_testcases/open_gl/piggy_mini3.x
Normal file
20559
tests/qbasic_testcases/open_gl/piggy_mini3.x
Normal file
File diff suppressed because it is too large
Load diff
147
tests/qbasic_testcases/open_gl/simple_example.bas
Normal file
147
tests/qbasic_testcases/open_gl/simple_example.bas
Normal file
|
@ -0,0 +1,147 @@
|
|||
CHDIR "programs\samples\open_gl"
|
||||
|
||||
DIM SHARED AllowSubGL 'we'll set this after we finish our setup immediately below, just in case
|
||||
'there is anything here (there isn't currently though) that SUB _GL will depend on
|
||||
|
||||
TYPE DONT_USE_GLH_Handle_TYPE
|
||||
in_use AS _BYTE
|
||||
handle AS LONG
|
||||
END TYPE
|
||||
REDIM SHARED DONT_USE_GLH_Handle(1000) AS DONT_USE_GLH_Handle_TYPE
|
||||
|
||||
|
||||
SCREEN _NEWIMAGE(1024, 768, 32)
|
||||
|
||||
|
||||
|
||||
backdrop = _LOADIMAGE("xcom_backdrop.jpg")
|
||||
_PUTIMAGE , backdrop
|
||||
_FREEIMAGE backdrop
|
||||
|
||||
_DONTBLEND
|
||||
LINE (200, 200)-(500, 500), _RGBA(0, 255, 255, 0), BF 'create a see-through window (press 1)
|
||||
_BLEND
|
||||
|
||||
AllowSubGL = 1
|
||||
|
||||
DO
|
||||
'This is our program's main loop
|
||||
_LIMIT 100
|
||||
LOCATE 1, 1
|
||||
c = c + 1: PRINT "Mainloop has done nothing"; c; "times"
|
||||
PRINT "Press 1[GL behind], 2[GL on top] or 3[GL only, good for speed] to switch rendering order."
|
||||
k$ = INKEY$
|
||||
IF k$ = "1" THEN _GLRENDER _BEHIND
|
||||
IF k$ = "2" THEN _GLRENDER _ONTOP
|
||||
IF k$ = "3" THEN _GLRENDER _ONLY
|
||||
LOOP UNTIL k$ = CHR$(27)
|
||||
END
|
||||
|
||||
'this specially named sub "_GL" is detected by QB64 and adds support for OpenGL commands
|
||||
'it is called automatically whenever the underlying software deems an update is possible
|
||||
'usually/ideally, this is in sync with your monitor's refresh rate
|
||||
SUB _GL STATIC
|
||||
'STATIC was used above to make all variables in this sub maintain their values between calls to this sub
|
||||
|
||||
IF AllowSubGL = 0 THEN EXIT SUB 'we aren't ready yet!
|
||||
|
||||
'timing is everything, we don't know how fast the 3D renderer will call this sub to we use timers to smooth things out
|
||||
T# = TIMER(0.001)
|
||||
IF ETT# = 0 THEN ETT# = T#
|
||||
ET# = T# - ETT#
|
||||
ETT# = T#
|
||||
|
||||
IF sub_gl_called = 0 THEN
|
||||
sub_gl_called = 1 'we only need to perform the following code once
|
||||
i = _LOADIMAGE("xcom256.png", 32)
|
||||
mytex = GLH_Image_to_Texture(i) 'this helper function converts the image to a texture
|
||||
_FREEIMAGE i
|
||||
END IF
|
||||
|
||||
'These settings affect how OpenGL will render our content
|
||||
'!!! THESE SETTINGS ARE TO SHOW HOW ALPHA CAN WORK, BUT IT IS 10x FASTER WHEN ALPHA OPTIONS ARE DISABLED !!!
|
||||
'*** every setting must be reset because SUB _GL cannot guarantee settings have not changed since last time ***
|
||||
_glMatrixMode _GL_PROJECTION 'Select The Projection Matrix
|
||||
_glLoadIdentity 'Reset The Projection Matrix
|
||||
_gluPerspective 45, _WIDTH(0) / _HEIGHT(0), 1, 100 'QB64 internally supports this GLU command for convenience sake, but does not support GLU
|
||||
_glEnable _GL_TEXTURE_2D
|
||||
_glEnable _GL_BLEND
|
||||
_glBlendFunc _GL_SRC_ALPHA, _GL_ONE_MINUS_SRC_ALPHA 'how alpha values are interpretted
|
||||
_glEnable _GL_DEPTH_TEST 'use the zbuffer
|
||||
_glDepthMask _GL_TRUE
|
||||
_glAlphaFunc _GL_GREATER, 0.5 'dont do anything if alpha isn't greater than 0.5 (or 128)
|
||||
_glEnable _GL_ALPHA_TEST
|
||||
_glTexParameteri _GL_TEXTURE_2D, _GL_TEXTURE_MAG_FILTER, _GL_LINEAR
|
||||
_glTexParameteri _GL_TEXTURE_2D, _GL_TEXTURE_MIN_FILTER, _GL_LINEAR
|
||||
'**************************************************************************************************************
|
||||
|
||||
|
||||
GLH_Select_Texture mytex
|
||||
|
||||
_glMatrixMode _GL_MODELVIEW 'Select The Modelview Matrix
|
||||
_glLoadIdentity 'Reset The Modelview Matrix
|
||||
_glTranslatef 0, 0, -10 'Translate Into The Screen
|
||||
|
||||
_glRotatef rotation1, 0, 1, 0 'spin, spin, spin...
|
||||
_glRotatef rotation2, 1, 0, 0
|
||||
|
||||
_glBegin _GL_QUADS 'we will be drawing rectangles aka. QUADs
|
||||
_glTexCoord2f 0, 0: _glVertex3f 0, 0, 4 'the texture position and the position in 3D space of a vertex
|
||||
_glTexCoord2f 1, 0: _glVertex3f 5, 0, 4
|
||||
_glTexCoord2f 1, 1: _glVertex3f 5, -5, 4
|
||||
_glTexCoord2f 0, 1: _glVertex3f 0, -5, 4
|
||||
_glEnd
|
||||
|
||||
RANDOMIZE USING 1 'generate the same set of random numbers each time
|
||||
_glBegin _GL_TRIANGLES 'the png (almost) only consumes a triangular region of its rectangle
|
||||
FOR t = 1 TO 10
|
||||
_glTexCoord2f 0, 0: _glVertex3f RND * 6 - 3, RND * 6 - 3, RND * 6 - 3
|
||||
_glTexCoord2f 1, 0: _glVertex3f RND * 6 - 3, RND * 6 - 3, RND * 6 - 3
|
||||
_glTexCoord2f 0.5, 1: _glVertex3f RND * 6 - 3, RND * 6 - 3, RND * 6 - 3
|
||||
NEXT
|
||||
_glEnd
|
||||
|
||||
rotation1 = rotation1 + 100 * ET#
|
||||
rotation2 = rotation2 + 200 * ET#
|
||||
|
||||
END SUB
|
||||
|
||||
|
||||
|
||||
'QB64 OPEN-GL HELPER MACROS (aka. GLH macros)
|
||||
|
||||
SUB GLH_Select_Texture (texture_handle AS LONG) 'turn an image handle into a texture handle
|
||||
IF texture_handle < 1 OR texture_handle > UBOUND(DONT_USE_GLH_HANDLE) THEN ERROR 258: EXIT FUNCTION
|
||||
IF DONT_USE_GLH_Handle(texture_handle).in_use = 0 THEN ERROR 258: EXIT FUNCTION
|
||||
_glBindTexture _GL_TEXTURE_2D, DONT_USE_GLH_Handle(texture_handle).handle
|
||||
END SUB
|
||||
|
||||
FUNCTION GLH_Image_to_Texture (image_handle AS LONG) 'turn an image handle into a texture handle
|
||||
IF image_handle >= 0 THEN ERROR 258: EXIT FUNCTION 'don't allow screen pages
|
||||
DIM m AS _MEM
|
||||
m = _MEMIMAGE(image_handle)
|
||||
DIM h AS LONG
|
||||
h = DONT_USE_GLH_New_Texture_Handle
|
||||
GLH_Image_to_Texture = h
|
||||
_glBindTexture _GL_TEXTURE_2D, DONT_USE_GLH_Handle(h).handle
|
||||
_glTexImage2D _GL_TEXTURE_2D, 0, _GL_RGBA, _WIDTH(image_handle), _HEIGHT(image_handle), 0, &H80E1&&, _GL_UNSIGNED_BYTE, m.OFFSET
|
||||
_MEMFREE m
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION DONT_USE_GLH_New_Texture_Handle
|
||||
handle&& = 0
|
||||
_glGenTextures 1, _OFFSET(handle&&)
|
||||
DONT_USE_GLH_New_Texture_Handle = handle&&
|
||||
FOR h = 1 TO UBOUND(DONT_USE_GLH_Handle)
|
||||
IF DONT_USE_GLH_Handle(h).in_use = 0 THEN
|
||||
DONT_USE_GLH_Handle(h).in_use = 1
|
||||
DONT_USE_GLH_Handle(h).handle = handle&&
|
||||
DONT_USE_GLH_New_Texture_Handle = h
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
NEXT
|
||||
REDIM _PRESERVE DONT_USE_GLH_Handle(UBOUND(DONT_USE_GLH_HANDLE) * 2) AS DONT_USE_GLH_Handle_TYPE
|
||||
DONT_USE_GLH_Handle(h).in_use = 1
|
||||
DONT_USE_GLH_Handle(h).handle = handle&&
|
||||
DONT_USE_GLH_New_Texture_Handle = h
|
||||
END FUNCTION
|
BIN
tests/qbasic_testcases/open_gl/xcom256.png
Normal file
BIN
tests/qbasic_testcases/open_gl/xcom256.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
tests/qbasic_testcases/open_gl/xcom_backdrop.jpg
Normal file
BIN
tests/qbasic_testcases/open_gl/xcom_backdrop.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 83 KiB |
34
tests/qbasic_testcases/pete/25lines/3dcube25.bas
Normal file
34
tests/qbasic_testcases/pete/25lines/3dcube25.bas
Normal file
|
@ -0,0 +1,34 @@
|
|||
'3d cube
|
||||
'polygon filled using paint. ;*)
|
||||
'I could probably shorten the code in less than 20 lines but
|
||||
'I'd rather make another 25 liner. ;*)
|
||||
'Relsoft 2003
|
||||
|
||||
1 IF C& = 0 THEN SCREEN 9, , 1, 0 ELSE DIM CubeM!(8, 7), CubeV(12, 2)
|
||||
2 FOR V = 1 TO 8 + 12
|
||||
3 IF V < 9 THEN READ CubeM!(V, 0), CubeM!(V, 1), CubeM!(V, 2) ELSE READ CubeV(V - 8, 0), CubeV(V - 8, 1), CubeV(V - 8, 2)
|
||||
4 NEXT V
|
||||
5 DO
|
||||
6 ax! = (ax! + .01) * -(ax! < 6.283186)
|
||||
7 ay! = (ay! + .01) * -(ay! < 6.283186)
|
||||
8 az! = (az! + .01) * -(az! < 6.283186)
|
||||
9 FOR I = 1 TO 8
|
||||
10 CubeM!(I, 6) = (256 * ((CubeM!(I, 0) * (COS(ay!) * COS(az!)) + CubeM!(I, 1) * (COS(ax!) * -SIN(az!) + SIN(ax!) * SIN(ay!) * COS(az!)) + CubeM!(I, 2) * (-SIN(ax!) * -SIN(az!) + COS(ax!) * SIN(ay!) * COS(az!)))) \ (256 - ((CubeM!(I, 0) * ( _
|
||||
-SIN(ay!)) + CubeM!(I, 1) * (SIN(ax!) * COS(ay!)) + CubeM!(I, 2) * (COS(ax!) * COS(ay!)))))) + 320
|
||||
11 CubeM!(I, 7) = -(256 * ((CubeM!(I, 0) * (COS(ay!) * SIN(az!)) + CubeM!(I, 1) * (COS(ax!) * COS(az!) + SIN(ax!) * SIN(ay!) * SIN(az!)) + CubeM!(I, 2) * (-SIN(ax!) * COS(az!) + COS(az!) * SIN(ay!) * SIN(az!)))) \ (256 - ((CubeM!(I, 0) * (- _
|
||||
SIN(ay!)) + CubeM!(I, 1) * (SIN(ax!) * COS(ay!)) + CubeM!(I, 2) * (COS(ax!) * COS(ay!)))))) + 175
|
||||
12 NEXT I
|
||||
13 LINE (0, 0)-(639, 350), 0, BF
|
||||
14 FOR I = 1 TO 12
|
||||
15 IF (CubeM!(CubeV(I, 2), 6) - CubeM!(CubeV(I, 0), 6)) * (CubeM!(CubeV(I, 1), 7) - CubeM!(CubeV(I, 0), 7)) - (CubeM!(CubeV(I, 1), 6) - CubeM!(CubeV(I, 0), 6)) * (CubeM!(CubeV(I, 2), 7) - CubeM!(CubeV(I, 0), 7)) < -256 THEN
|
||||
16 LINE (CubeM!(CubeV(I, 0), 6), CubeM!(CubeV(I, 0), 7))-(CubeM!(CubeV(I, 1), 6), CubeM!(CubeV(I, 1), 7)), I + 2
|
||||
17 LINE (CubeM!(CubeV(I, 1), 6), CubeM!(CubeV(I, 1), 7))-(CubeM!(CubeV(I, 2), 6), CubeM!(CubeV(I, 2), 7)), I + 2
|
||||
18 LINE (CubeM!(CubeV(I, 2), 6), CubeM!(CubeV(I, 2), 7))-(CubeM!(CubeV(I, 0), 6), CubeM!(CubeV(I, 0), 7)), I + 2
|
||||
19 PAINT ((CubeM!(CubeV(I, 0), 6) + CubeM!(CubeV(I, 1), 6) + CubeM!(CubeV(I, 2), 6)) \ 3, (CubeM!(CubeV(I, 0), 7) + CubeM!(CubeV(I, 1), 7) + CubeM!(CubeV(I, 2), 7)) \ 3), I + 2
|
||||
20 END IF
|
||||
21 NEXT I
|
||||
22 PCOPY 1, 0
|
||||
23 LOOP UNTIL INKEY$ <> ""
|
||||
DATA -80,-80,-80,80,-80,-80,80, 80,-80,-80, 80,-80,-80,-80, 80,80,-80, 80,80, 80, 80, -80, 80, 80
|
||||
DATA 5,1,8,1,4,8,6,5,7,5,8,7,2,6,3,6,7,3,1,2,4,2,3,4,4,3,8,3,7,8,5,6,1,6,2,1
|
||||
|
30
tests/qbasic_testcases/pete/25lines/npplasma.bas
Normal file
30
tests/qbasic_testcases/pete/25lines/npplasma.bas
Normal file
|
@ -0,0 +1,30 @@
|
|||
'///Non Palette rotated plasma
|
||||
'///Relsoft 2003
|
||||
'///Compile and see the speed. Didn't optimize it as much as I want though...
|
||||
|
||||
1 SCREEN 13
|
||||
2 DIM Lsin1%(-1024 TO 1024), Lsin2%(-1024 TO 1024), Lsin3%(-1024 TO 1024)
|
||||
3 FOR I% = -1024 TO 1024
|
||||
4 Lsin1%(I%) = SIN(I% / (128)) * 256 'Play with these values
|
||||
5 Lsin2%(I%) = SIN(I% / (64)) * 128 'for different types of fx
|
||||
6 Lsin3%(I%) = SIN(I% / (32)) * 64 ';*)
|
||||
7 IF I% > -1 AND I% < 256 THEN PALETTE I%, 65536 * (INT(32 - 31 * SIN(I% * 3.14151693# / 128))) + 256 * (INT(32 - 31 * SIN(I% * 3.14151693# / 64))) + (INT(32 - 31 * SIN(I% * 3.14151693# / 32)))
|
||||
8 NEXT I%
|
||||
9 DEF SEG = &HA000
|
||||
10 Dir% = 1
|
||||
11 DO
|
||||
12 Counter& = (Counter& + Dir%)
|
||||
13 IF Counter& > 600 THEN Dir% = -Dir%
|
||||
14 IF Counter& < -600 THEN Dir% = -Dir%
|
||||
15 Rot% = 64 * (((Counter& AND 1) = 1) OR 1)
|
||||
16 StartOff& = 0
|
||||
17 FOR y% = 0 TO 199
|
||||
18 FOR x% = 0 TO 318
|
||||
19 Rot% = -Rot%
|
||||
20 C% = Lsin3%(x% + Rot% - Counter&) + Lsin1%(x% + Rot% + Counter&) + Lsin2%(y% + Rot%)
|
||||
21 POKE StartOff& + x%, C%
|
||||
22 NEXT x%
|
||||
23 StartOff& = StartOff& + 320
|
||||
24 NEXT y%
|
||||
25 LOOP UNTIL INKEY$ <> ""
|
||||
|
29
tests/qbasic_testcases/pete/25lines/starfild.bas
Normal file
29
tests/qbasic_testcases/pete/25lines/starfild.bas
Normal file
|
@ -0,0 +1,29 @@
|
|||
'This is my starfield entry hacked down to 25 lines
|
||||
'It needs a pretty fast computer...looks OK on my 1.5 GHz
|
||||
'JKC 2003
|
||||
|
||||
1 TYPE star
|
||||
x AS INTEGER
|
||||
y AS INTEGER
|
||||
z AS INTEGER
|
||||
END TYPE
|
||||
6 DIM astar(0 TO 300) AS star
|
||||
7 DIM oldstar(0 TO 300) AS star
|
||||
8 FOR i = 0 TO 300
|
||||
9 astar(i).x = RND * 640
|
||||
10 astar(i).y = RND * 480
|
||||
11 astar(i).z = RND * 300
|
||||
12 NEXT i
|
||||
13 SCREEN 11
|
||||
14 DO
|
||||
15 FOR i = 0 TO 300
|
||||
16 IF astar(i).z < 1 THEN astar(i).z = 300 ELSE astar(i).z = astar(i).z - 1
|
||||
17 FOR p% = 0 TO oldstar(i).z
|
||||
18 CIRCLE (oldstar(i).x, oldstar(i).y), p%, 0
|
||||
19 IF astar(i).z <> 300 THEN CIRCLE (INT(2 * astar(i).z + astar(i).x / (1 + astar(i).z / 30)), INT(astar(i).z + astar(i).y / (1 + astar(i).z / 30))), p%
|
||||
20 NEXT p%
|
||||
21 oldstar(i).x = INT(2 * astar(i).z + astar(i).x / (1 + astar(i).z / 30))
|
||||
22 oldstar(i).y = INT(astar(i).z + astar(i).y / (1 + astar(i).z / 30))
|
||||
23 oldstar(i).z = 5 / (1 + astar(i).z / 20)
|
||||
24 NEXT i
|
||||
25 LOOP UNTIL INKEY$ <> ""
|
424
tests/qbasic_testcases/pete/alyman.bas
Normal file
424
tests/qbasic_testcases/pete/alyman.bas
Normal file
|
@ -0,0 +1,424 @@
|
|||
DECLARE SUB endDemo ()
|
||||
DECLARE SUB intro ()
|
||||
DECLARE SUB howToPlay ()
|
||||
DECLARE SUB level2 ()
|
||||
DECLARE FUNCTION rand! (c!)
|
||||
DECLARE SUB level1 ()
|
||||
DIM SHARED heart(10)
|
||||
DIM SHARED missile(4)
|
||||
COMMON SHARED L$, r$, u$, d$
|
||||
locked = 1
|
||||
CALL intro
|
||||
COLOR 3, 0
|
||||
CLS
|
||||
LOCATE 18, 30
|
||||
PRINT "KEY CONFIGURATION..."
|
||||
LOCATE 24, 18
|
||||
PRINT "Enter the key that you want to move LEFT with..."
|
||||
DO
|
||||
L$ = INKEY$
|
||||
LOOP UNTIL L$ <> ""
|
||||
CLS
|
||||
LOCATE 18, 30
|
||||
PRINT "KEY CONFIGURATION..."
|
||||
LOCATE 24, 18
|
||||
PRINT "Enter the key that you want to move RIGHT with..."
|
||||
DO
|
||||
r$ = INKEY$
|
||||
LOOP UNTIL r$ <> ""
|
||||
CLS
|
||||
LOCATE 18, 30
|
||||
PRINT "KEY CONFIGURATION..."
|
||||
LOCATE 24, 18
|
||||
PRINT "Enter the key that you want to move UP with..."
|
||||
DO
|
||||
u$ = INKEY$
|
||||
LOOP UNTIL u$ <> ""
|
||||
CLS
|
||||
LOCATE 18, 30
|
||||
PRINT "KEY CONFIGURATION..."
|
||||
LOCATE 24, 18
|
||||
PRINT "Enter the key that you want to move DOWN with..."
|
||||
DO
|
||||
d$ = INKEY$
|
||||
LOOP UNTIL d$ <> ""
|
||||
CALL level1
|
||||
|
||||
SUB endDemo
|
||||
COLOR 3, 0
|
||||
CLS
|
||||
LOCATE 20, 20
|
||||
PRINT "WELL DONE, YOU HAVE COMPLETED LEVEL ONE OF ALYMAN...."
|
||||
LOCATE 22, 20
|
||||
PRINT "Level One is the only level available on the demo, so"
|
||||
LOCATE 23, 20
|
||||
PRINT "remember to wait for the full game to be completed on"
|
||||
LOCATE 24, 20
|
||||
PRINT "Sunday 24th July 2005 for four additional levels, each"
|
||||
LOCATE 25, 20
|
||||
PRINT "one more difficult than the last..."
|
||||
PLAY "o3l16ef+g+al8b"
|
||||
DO
|
||||
LOOP UNTIL INKEY$ = CHR$(13)
|
||||
END
|
||||
END SUB
|
||||
|
||||
SUB howToPlay
|
||||
COLOR 3, 0
|
||||
CLS
|
||||
PRINT "HOW TO PLAY..."
|
||||
PRINT
|
||||
PRINT
|
||||
PRINT "Dr. Evil and his troublesome followers plan to blow up the"
|
||||
PRINT "world! You, ALYMAN, must put an end to his terrifying plans"
|
||||
PRINT "and save the earth from destruction!"
|
||||
PRINT
|
||||
PRINT "To do so, you must demobilize the bomb at the end of each"
|
||||
PRINT "level. To demobilize the bomb, it is vital that you collect"
|
||||
PRINT "all ten hearts on your way. If you fail to collect just one"
|
||||
PRINT "one of the hearts, then you will not be able to complete"
|
||||
PRINT "the level. In order to open doors, you must hit a"
|
||||
PRINT "corrosponding switch."
|
||||
PRINT
|
||||
PRINT "On your way through each level, there are a number of"
|
||||
PRINT "enemies, weapons, traps and lasers which will kill ALYMAN"
|
||||
PRINT "with just one blow, so be very careful!"
|
||||
PRINT
|
||||
PRINT "Each bomb will not wait forever to explode! In fact, you"
|
||||
PRINT "must demobilize the bomb on each level within 40 seconds"
|
||||
PRINT "before it detonates."
|
||||
PRINT
|
||||
PRINT "Before beginning the game, you will be asked to select"
|
||||
PRINT "a custom key configuration (a key to move left, a key"
|
||||
PRINT "to move right, a key to move up and a key to move down)."
|
||||
PRINT "It is advised that you use the keypad direction keys,"
|
||||
PRINT "although the selection your choice."
|
||||
PRINT
|
||||
PRINT "Good luck!"
|
||||
PRINT
|
||||
PRINT
|
||||
PRINT "Press RETURN to continue..."
|
||||
DO
|
||||
LOOP UNTIL INKEY$ = CHR$(13)
|
||||
COLOR 3, 0
|
||||
CLS
|
||||
END SUB
|
||||
|
||||
SUB intro
|
||||
COLOR 3, 0
|
||||
CLS
|
||||
DO
|
||||
LOCATE 14, 34
|
||||
COLOR rand(15), 0
|
||||
PRINT "ALYMAN"
|
||||
COLOR 3, 0
|
||||
LOCATE 16, 30
|
||||
PRINT "(Demo Version)"
|
||||
LOCATE 18, 18
|
||||
PRINT "Full Game due for completion on 24th July 2005"
|
||||
COLOR 3, 1
|
||||
LOCATE 30, 28
|
||||
PRINT "1 - HOW TO PLAY "
|
||||
LOCATE 32, 28
|
||||
PRINT "2 - PLAY DEMO NOW"
|
||||
FOR t = 1 TO 50
|
||||
NEXT t
|
||||
SELECT CASE INKEY$
|
||||
CASE IS = "1"
|
||||
CALL howToPlay
|
||||
CASE IS = "2"
|
||||
z = 1
|
||||
END SELECT
|
||||
LOOP UNTIL z = 1
|
||||
END SUB
|
||||
|
||||
SUB level1
|
||||
60 FOR i = 1 TO 10
|
||||
heart(i) = 0
|
||||
NEXT i
|
||||
hearts = 0
|
||||
a = 2
|
||||
b = 4
|
||||
c = 14
|
||||
d = 76
|
||||
laser = 0
|
||||
ends = 0
|
||||
missile = -1
|
||||
locked = 1
|
||||
CLS
|
||||
COLOR 3, 0
|
||||
LOCATE 22, 36
|
||||
PRINT "LEVEL ONE"
|
||||
LOCATE 24, 27
|
||||
PRINT "Press RETURN to begin level..."
|
||||
DO
|
||||
LOOP UNTIL INKEY$ = CHR$(13)
|
||||
|
||||
COLOR 7, 0
|
||||
CLS
|
||||
t = TIMER
|
||||
u = TIMER
|
||||
v = TIMER
|
||||
100 DO
|
||||
times = times + 1
|
||||
SELECT CASE TIMER - u
|
||||
CASE IS >= .01
|
||||
missile = missile - 1
|
||||
IF missile = -6 THEN missile = 44
|
||||
u = TIMER
|
||||
CLS
|
||||
END SELECT
|
||||
|
||||
SELECT CASE TIMER - v
|
||||
CASE IS >= 3
|
||||
IF laser = 1 THEN laser = 0 ELSE laser = 1
|
||||
v = TIMER
|
||||
END SELECT
|
||||
|
||||
COLOR 4, 0
|
||||
LOCATE 34, 1
|
||||
PRINT CHR$(16)
|
||||
LOCATE 34, 44
|
||||
PRINT CHR$(17)
|
||||
SELECT CASE laser
|
||||
CASE IS = 1
|
||||
FOR i = 2 TO 43
|
||||
LOCATE 34, i
|
||||
PRINT CHR$(196)
|
||||
NEXT i
|
||||
END SELECT
|
||||
|
||||
ttt = tt
|
||||
tt = INT(40 - (TIMER - t))
|
||||
IF tt < 11 AND tt < ttt THEN PLAY "o4l8d-"
|
||||
LOCATE 1, 1
|
||||
COLOR 14, 0
|
||||
PRINT tt
|
||||
LOCATE 1, 10
|
||||
COLOR 13, 0
|
||||
PRINT CHR$(3); hearts
|
||||
|
||||
COLOR 3, 0
|
||||
LOCATE a, b
|
||||
PRINT CHR$(2)
|
||||
LOCATE a + 1, b - 1
|
||||
PRINT "/"; CHR$(179); "\"
|
||||
LOCATE a + 2, b
|
||||
PRINT CHR$(234)
|
||||
|
||||
COLOR 4, 0
|
||||
LOCATE c, d
|
||||
PRINT CHR$(1)
|
||||
LOCATE c + 1, d - 1
|
||||
PRINT "/"; CHR$(179); "\"
|
||||
LOCATE c + 2, d
|
||||
PRINT CHR$(234)
|
||||
|
||||
|
||||
LOCATE 8, 44
|
||||
COLOR 6, 0
|
||||
PRINT CHR$(17)
|
||||
IF missile < 1 THEN GOTO 70
|
||||
LOCATE 8, missile
|
||||
COLOR 0, 6
|
||||
PRINT CHR$(8)
|
||||
70 IF a > 5 AND a < 9 AND b = missile THEN GOTO 80
|
||||
|
||||
|
||||
COLOR 13, 0
|
||||
LOCATE 5, 68
|
||||
IF heart(1) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 9, 14
|
||||
IF heart(2) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 11, 75
|
||||
IF heart(3) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 22, 57
|
||||
IF heart(4) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 29, 39
|
||||
IF heart(5) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 33, 74
|
||||
IF heart(6) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 36, 75
|
||||
IF heart(7) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 37, 9
|
||||
IF heart(8) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 41, 20
|
||||
IF heart(9) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
LOCATE 44, 17
|
||||
IF heart(10) = 1 THEN PRINT "" ELSE PRINT CHR$(3)
|
||||
|
||||
IF a > 2 AND a < 6 AND b = 68 THEN heart(1) = 1
|
||||
IF a > 6 AND a < 10 AND b = 14 THEN heart(2) = 1
|
||||
IF a > 8 AND a < 12 AND b = 75 THEN heart(3) = 1
|
||||
IF a > 19 AND a < 23 AND b = 57 THEN heart(4) = 1
|
||||
IF a > 26 AND a < 30 AND b = 39 THEN heart(5) = 1
|
||||
IF a > 30 AND a < 34 AND b = 74 THEN heart(6) = 1
|
||||
IF a > 33 AND a < 37 AND b = 75 THEN heart(7) = 1
|
||||
IF a > 34 AND a < 38 AND b = 9 THEN heart(8) = 1
|
||||
IF a > 38 AND a < 42 AND b = 20 THEN heart(9) = 1
|
||||
IF a > 41 AND a < 45 AND b = 17 THEN heart(10) = 1
|
||||
|
||||
hearts = 0
|
||||
FOR i = 1 TO 10
|
||||
IF heart(i) = 1 THEN hearts = hearts + 1
|
||||
NEXT i
|
||||
|
||||
COLOR 7, 0
|
||||
FOR i = 1 TO 48
|
||||
IF locked = 1 THEN GOTO 30
|
||||
IF i = 17 OR i = 18 OR i = 19 THEN GOTO 10
|
||||
30 LOCATE i, 45
|
||||
IF i = 17 OR i = 18 OR i = 19 THEN COLOR 4 ELSE COLOR 7
|
||||
IF i = 17 OR i = 18 OR i = 19 THEN PRINT CHR$(186) ELSE PRINT CHR$(179)
|
||||
10 NEXT i
|
||||
|
||||
IF locked = 0 THEN GOTO 40
|
||||
LOCATE 43, 7
|
||||
COLOR 4, 7
|
||||
PRINT CHR$(254)
|
||||
COLOR 7, 0
|
||||
40 IF a > 40 AND a < 44 AND b = 7 THEN locked = 0
|
||||
IF b = 76 AND a > 41 AND a < 46 AND hearts = 10 THEN fin = 1
|
||||
|
||||
LOCATE 44, 76
|
||||
COLOR 7, 0
|
||||
PRINT CHR$(218)
|
||||
LOCATE 45, 76
|
||||
COLOR 4, 0
|
||||
PRINT CHR$(219)
|
||||
|
||||
SELECT CASE ends
|
||||
CASE IS = 1
|
||||
COLOR 0, 0
|
||||
FOR t = 1 TO 300
|
||||
LOCATE 1, 1
|
||||
PRINT " "
|
||||
NEXT t
|
||||
GOTO 80
|
||||
END SELECT
|
||||
|
||||
IF (c - a) < 3 AND (a - c) < 3 AND b = d THEN ends = 1
|
||||
IF (c - a) < 3 AND (a - c) < 3 AND b = d THEN GOTO 100
|
||||
|
||||
IF laser = 0 OR a < 32 OR a > 34 OR b > 44 THEN GOTO 90
|
||||
FOR t = 1 TO 1000000
|
||||
NEXT t
|
||||
ends = 1
|
||||
GOTO 100
|
||||
|
||||
90 SELECT CASE INKEY$
|
||||
CASE IS = L$
|
||||
b = b - 1
|
||||
CLS
|
||||
CASE IS = r$
|
||||
b = b + 1
|
||||
CLS
|
||||
CASE IS = u$
|
||||
a = a - 1
|
||||
CLS
|
||||
CASE IS = d$
|
||||
a = a + 1
|
||||
CLS
|
||||
END SELECT
|
||||
|
||||
IF b < 45 THEN GOTO 110
|
||||
|
||||
timenow! = TIMER
|
||||
IF timenow! <> oldtime! THEN
|
||||
'chance = rand(130)
|
||||
chance = CINT(RND * 8)
|
||||
SELECT CASE chance
|
||||
CASE IS = 1
|
||||
IF a > c THEN c = c + 1
|
||||
IF a < c THEN c = c - 1
|
||||
CLS
|
||||
CASE IS = 2
|
||||
IF b > d THEN d = d + 1
|
||||
IF b < d THEN d = d - 1
|
||||
CLS
|
||||
END SELECT
|
||||
END IF
|
||||
oldtime! = timenow!
|
||||
|
||||
110 IF d < 47 THEN d = 47
|
||||
IF d > 79 THEN d = 79
|
||||
IF c > 46 THEN c = 46
|
||||
IF c < 12 THEN c = 12
|
||||
IF a < 2 THEN a = 2
|
||||
IF a > 46 THEN a = 46
|
||||
IF b < 4 THEN b = 4
|
||||
IF b > 79 THEN b = 79
|
||||
IF a = 17 AND locked = 0 THEN GOTO 20
|
||||
IF b = 44 THEN b = 43
|
||||
IF b = 46 THEN b = 47
|
||||
20 LOOP UNTIL tt <= 0 OR fin = 1
|
||||
|
||||
SELECT CASE fin
|
||||
CASE IS = 1
|
||||
FOR t = 1 TO 30000
|
||||
NEXT t
|
||||
CALL endDemo
|
||||
END SELECT
|
||||
|
||||
80 SELECT CASE tt
|
||||
CASE IS <= 0
|
||||
FOR i = 1 TO 48
|
||||
FOR j = 1 TO 80
|
||||
COLOR 14, 0
|
||||
LOCATE i, j
|
||||
PRINT CHR$(176)
|
||||
NEXT j
|
||||
NEXT i
|
||||
SOUND 40, 5
|
||||
SOUND 45, 5
|
||||
SOUND 50, 5
|
||||
SOUND 55, 5
|
||||
SOUND 50, 5
|
||||
SOUND 45, 5
|
||||
SOUND 40, 5
|
||||
FOR t = 1 TO 10000
|
||||
NEXT t
|
||||
COLOR 3, 0
|
||||
CLS
|
||||
LOCATE 22, 34
|
||||
PRINT "GAME OVER"
|
||||
LOCATE 24, 27
|
||||
PRINT "Try this level again? (y/n)"
|
||||
50 SELECT CASE INKEY$
|
||||
CASE IS = "y"
|
||||
GOTO 60
|
||||
CASE IS = "Y"
|
||||
GOTO 60
|
||||
CASE IS = "n"
|
||||
END
|
||||
CASE IS = "N"
|
||||
END
|
||||
CASE ELSE
|
||||
GOTO 50
|
||||
END SELECT
|
||||
CASE ELSE
|
||||
COLOR 3, 0
|
||||
CLS
|
||||
LOCATE 22, 34
|
||||
PRINT "GAME OVER"
|
||||
LOCATE 24, 27
|
||||
PRINT "Try this level again? (y/n)"
|
||||
SELECT CASE INKEY$
|
||||
CASE IS = "y"
|
||||
GOTO 60
|
||||
CASE IS = "Y"
|
||||
GOTO 60
|
||||
CASE IS = "n"
|
||||
END
|
||||
CASE IS = "N"
|
||||
END
|
||||
CASE ELSE
|
||||
GOTO 50
|
||||
END SELECT
|
||||
END SELECT
|
||||
END SUB
|
||||
|
||||
FUNCTION rand (c)
|
||||
RANDOMIZE TIMER
|
||||
rand = INT(c * RND(1)) + 1
|
||||
END FUNCTION
|
44
tests/qbasic_testcases/pete/asciiconversion.bas
Normal file
44
tests/qbasic_testcases/pete/asciiconversion.bas
Normal file
|
@ -0,0 +1,44 @@
|
|||
CLS
|
||||
'Start of Declarations
|
||||
DIM num AS INTEGER
|
||||
DIM code AS STRING
|
||||
DIM code1 AS INTEGER
|
||||
DIM num1 AS STRING
|
||||
'End of Declarations
|
||||
|
||||
start:
|
||||
|
||||
PRINT "ASCII code ----> ASCII Character & ASCII Character ----> ASCII Code Converter"
|
||||
PRINT
|
||||
PRINT "1) ASCII code ----> ASCII Character"
|
||||
PRINT
|
||||
PRINT "2) ASCII Character ----> ASCII code"
|
||||
PRINT
|
||||
INPUT "Enter your choice"; selection
|
||||
|
||||
SELECT CASE selection
|
||||
|
||||
CASE 1
|
||||
CLS
|
||||
PRINT "ASCII code ----> ASCII Character"
|
||||
PRINT
|
||||
INPUT "Enter ASCII code"; num
|
||||
PRINT
|
||||
code = CHR$(num)
|
||||
PRINT "The ASCII Character is:"; code
|
||||
|
||||
CASE 2
|
||||
CLS
|
||||
PRINT "ASCII Character ----> ASCII Code Converter"
|
||||
PRINT
|
||||
INPUT "Enter ASCII Character"; num1
|
||||
PRINT
|
||||
code1 = ASC(num1)
|
||||
PRINT "The ASCII Code is:"; code1
|
||||
|
||||
CASE ELSE
|
||||
|
||||
PRINT "Invalid Selection"
|
||||
GOTO start
|
||||
END SELECT
|
||||
|
10
tests/qbasic_testcases/pete/averager.bas
Normal file
10
tests/qbasic_testcases/pete/averager.bas
Normal file
|
@ -0,0 +1,10 @@
|
|||
DO
|
||||
50 REM THIS PROGAM INPUTS QUIZ SCORES AND FINDS THE AVERAGE SCORE
|
||||
60 PRINT "LISTING OF STUDENT NAMES AND QUIZ SCORES"
|
||||
100 INPUT "ENTER NAME AND SCORES: "; STUDENT$, SCORE1, SCORE2, SCORE3, SCORE4, SCORE5
|
||||
200 PRINT "STUDENTS NAME: "; STUDENT$
|
||||
300 PRINT "STUDENT'S SCORES: "; SCORE1; SCORE2; SCORE3; SCORE4; SCORE5
|
||||
400 AVERAGE = (SCORE1 + SCORE2 + SCORE3 + SCORE4 + SCORE5) / 5'FIND THE AVERAGE SCORE
|
||||
500 PRINT "STUDENT'S AVERAGE SCORE IS: "; AVERAGE
|
||||
LOOP UNTIL INKEY$ = "w"
|
||||
|
238
tests/qbasic_testcases/pete/battleship.bas
Normal file
238
tests/qbasic_testcases/pete/battleship.bas
Normal file
|
@ -0,0 +1,238 @@
|
|||
RANDOMIZE TIMER
|
||||
DIM playerbd(0 TO 9, 0 TO 9) AS STRING
|
||||
DIM compbd(0 TO 9, 0 TO 9) AS STRING
|
||||
DIM comphits(0 TO 9, 0 TO 9) AS STRING
|
||||
PRINT "Co-ordinates range from 0 to 9"
|
||||
PRINT "* represents part of ship"
|
||||
PRINT "+ represents hit part of ship."
|
||||
PRINT "------------------------------"
|
||||
PRINT "PLACE SHIP [LENGTH 2]"
|
||||
INPUT "X CO-ORDINATE [0-9]:", x
|
||||
INPUT "Y CO-ORDINATE [0-9]:", y
|
||||
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
||||
playerbd(x, y) = "*"
|
||||
IF LCASE$(DIRECTION$) = "w" THEN
|
||||
playerbd(x - 1, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "e" THEN
|
||||
playerbd(x + 1, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "s" THEN
|
||||
playerbd(x, y + 1) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "n" THEN
|
||||
playerbd(x, y - 1) = "*"
|
||||
END IF
|
||||
PRINT "PLACE SHIP [LENGTH 3]"
|
||||
INPUT "X CO-ORDINATE [0-9]:", x
|
||||
INPUT "Y CO-ORDINATE [0-9]:", y
|
||||
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
||||
playerbd(x, y) = "*"
|
||||
IF LCASE$(DIRECTION$) = "w" THEN
|
||||
playerbd(x - 1, y) = "*"
|
||||
playerbd(x - 2, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "e" THEN
|
||||
playerbd(x + 1, y) = "*"
|
||||
playerbd(x + 2, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "s" THEN
|
||||
playerbd(x, y + 1) = "*"
|
||||
playerbd(x, y + 2) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "n" THEN
|
||||
playerbd(x, y - 1) = "*"
|
||||
playerbd(x, y - 2) = "*"
|
||||
END IF
|
||||
PRINT "PLACE SHIP [LENGTH 3]"
|
||||
INPUT "X CO-ORDINATE [0-9]:", x
|
||||
INPUT "Y CO-ORDINATE [0-9]:", y
|
||||
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
||||
playerbd(x, y) = "*"
|
||||
IF LCASE$(DIRECTION$) = "w" THEN
|
||||
playerbd(x - 1, y) = "*"
|
||||
playerbd(x - 2, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "e" THEN
|
||||
playerbd(x + 1, y) = "*"
|
||||
playerbd(x + 2, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "s" THEN
|
||||
playerbd(x, y + 1) = "*"
|
||||
playerbd(x, y + 2) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "n" THEN
|
||||
playerbd(x, y - 1) = "*"
|
||||
playerbd(x, y - 2) = "*"
|
||||
END IF
|
||||
PRINT "PLACE SHIP [LENGTH 4]"
|
||||
INPUT "X CO-ORDINATE [0-9]:", x
|
||||
INPUT "Y CO-ORDINATE [0-9]:", y
|
||||
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
||||
playerbd(x, y) = "*"
|
||||
IF LCASE$(DIRECTION$) = "W" THEN
|
||||
playerbd(x - 1, y) = "*"
|
||||
playerbd(x - 2, y) = "*"
|
||||
playerbd(x - 3, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "E" THEN
|
||||
playerbd(x + 1, y) = "*"
|
||||
playerbd(x + 2, y) = "*"
|
||||
playerbd(x + 3, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "S" THEN
|
||||
playerbd(x, y + 1) = "*"
|
||||
playerbd(x, y + 2) = "*"
|
||||
playerbd(x, y + 3) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "N" THEN
|
||||
playerbd(x, y - 1) = "*"
|
||||
playerbd(x, y - 2) = "*"
|
||||
playerbd(x, y - 3) = "*"
|
||||
END IF
|
||||
PRINT "PLACE SHIP [LENGTH 5]"
|
||||
INPUT "X CO-ORDINATE [0-9]:", x
|
||||
INPUT "Y CO-ORDINATE [0-9]:", y
|
||||
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
||||
playerbd(x, y) = "*"
|
||||
IF LCASE$(DIRECTION$) = "w" THEN
|
||||
playerbd(x - 1, y) = "*"
|
||||
playerbd(x - 2, y) = "*"
|
||||
playerbd(x - 3, y) = "*"
|
||||
playerbd(x - 4, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "e" THEN
|
||||
playerbd(x + 1, y) = "*"
|
||||
playerbd(x + 2, y) = "*"
|
||||
playerbd(x + 3, y) = "*"
|
||||
playerbd(x + 4, y) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "s" THEN
|
||||
playerbd(x, y + 1) = "*"
|
||||
playerbd(x, y + 2) = "*"
|
||||
playerbd(x, y + 3) = "*"
|
||||
playerbd(x, y + 4) = "*"
|
||||
END IF
|
||||
IF LCASE$(DIRECTION$) = "n" THEN
|
||||
playerbd(x, y - 1) = "*"
|
||||
playerbd(x, y - 2) = "*"
|
||||
playerbd(x, y - 3) = "*"
|
||||
playerbd(x, y - 4) = "*"
|
||||
END IF
|
||||
a = INT(RND(1) * 10)
|
||||
b = INT(RND(1) * 10)
|
||||
FOR c = 1 TO 4
|
||||
compbd(a, b) = "*"
|
||||
DO
|
||||
x = INT(RND(1) * 4)
|
||||
IF x = 0 AND a - c >= 0 THEN
|
||||
FOR d = 1 TO c
|
||||
compbd(a - c, b) = "*"
|
||||
NEXT
|
||||
EXIT DO
|
||||
END IF
|
||||
IF x = 1 AND a + c <= 9 THEN
|
||||
FOR d = 1 TO c
|
||||
compbd(a + c, b) = "*"
|
||||
NEXT
|
||||
EXIT DO
|
||||
END IF
|
||||
IF x = 2 AND b - c >= 0 THEN
|
||||
FOR d = 1 TO c
|
||||
compbd(a, b - c) = "*"
|
||||
NEXT
|
||||
EXIT DO
|
||||
END IF
|
||||
IF x = 3 AND b + c <= 9 THEN
|
||||
FOR d = 1 TO c
|
||||
compbd(a, b + c) = "*"
|
||||
NEXT
|
||||
EXIT DO
|
||||
END IF
|
||||
LOOP
|
||||
NEXT
|
||||
c = 2
|
||||
compbd(a, b) = "*"
|
||||
DO
|
||||
x = INT(RND(1) * 4)
|
||||
IF x = 0 AND a - c >= 0 THEN
|
||||
FOR d = 1 TO c
|
||||
compbd(a - c, b) = "*"
|
||||
NEXT
|
||||
EXIT DO
|
||||
END IF
|
||||
IF x = 1 AND a + c <= 9 THEN
|
||||
FOR d = 1 TO c
|
||||
compbd(a + c, b) = "*"
|
||||
NEXT
|
||||
EXIT DO
|
||||
END IF
|
||||
IF x = 2 AND b - c >= 0 THEN
|
||||
FOR d = 1 TO c
|
||||
compbd(a, b - c) = "*"
|
||||
NEXT
|
||||
EXIT DO
|
||||
END IF
|
||||
IF x = 3 AND b + c <= 9 THEN
|
||||
FOR d = 1 TO c
|
||||
compbd(a, b + c) = "*"
|
||||
NEXT
|
||||
EXIT DO
|
||||
END IF
|
||||
LOOP
|
||||
DO
|
||||
PRINT " 0123456789"
|
||||
FOR a = 0 TO 9
|
||||
PRINT a;
|
||||
FOR b = 0 TO 9
|
||||
IF b < 9 AND playerbd(b, a) = "*" THEN PRINT "*";
|
||||
IF b < 9 AND playerbd(b, a) = "+" THEN PRINT "+";
|
||||
IF b < 9 AND playerbd(b, a) = "" THEN PRINT " ";
|
||||
IF b = 9 AND playerbd(b, a) = "*" THEN PRINT "*"
|
||||
IF b = 9 AND playerbd(b, a) = "" THEN PRINT " "
|
||||
IF b = 9 AND playerbd(b, a) = "+" THEN PRINT "+"
|
||||
NEXT
|
||||
NEXT
|
||||
PRINT "-----------"
|
||||
PRINT " 0123456789"
|
||||
FOR a = 0 TO 9
|
||||
PRINT a,
|
||||
FOR b = 0 TO 9
|
||||
IF b < 9 AND comphits(b, a) = "+" THEN PRINT "+";
|
||||
IF b < 9 AND comphits(b, a) = "" THEN PRINT " ";
|
||||
IF b = 9 AND comphits(b, a) = "" THEN PRINT " "
|
||||
IF b = 9 AND comphits(b, a) = "+" THEN PRINT "+"
|
||||
NEXT
|
||||
NEXT
|
||||
INPUT "FIRE X CO-ORDINATE [0-9]:", x
|
||||
INPUT "FIRE Y CO-ORDINATE [0-9]:", y
|
||||
IF compbd(x, y) = "*" THEN
|
||||
compbd(x, y) = "+"
|
||||
comphits(x, y) = "+"
|
||||
END IF
|
||||
a = INT(RND(1) * 10)
|
||||
b = INT(RND(1) * 10)
|
||||
IF playerbd(a, b) = "*" THEN
|
||||
playerbd(a, b) = "+"
|
||||
END IF
|
||||
countera = 0
|
||||
counterb = 0
|
||||
FOR a = 0 TO 9
|
||||
FOR b = 0 TO 9
|
||||
IF compbd(a, b) = "*" THEN countera = countera + 1
|
||||
NEXT
|
||||
NEXT
|
||||
IF countera = 0 THEN
|
||||
PRINT "YOU WIN"
|
||||
EXIT DO
|
||||
END IF
|
||||
FOR a = 0 TO 9
|
||||
FOR b = 0 TO 9
|
||||
IF playerbd(a, b) = "*" THEN counterb = counterb + 1
|
||||
NEXT
|
||||
NEXT
|
||||
IF counterb = 0 THEN
|
||||
PRINT "YOU LOSE"
|
||||
EXIT DO
|
||||
END IF
|
||||
LOOP
|
523
tests/qbasic_testcases/pete/beatdown/bdt.bas
Normal file
523
tests/qbasic_testcases/pete/beatdown/bdt.bas
Normal file
|
@ -0,0 +1,523 @@
|
|||
' +--+ +---- + --+-- +--+ +-+ | | | |
|
||||
' | + | | | | | + + + | | || |
|
||||
' | + + + + | | | | | | | | | |
|
||||
' +--+ +--- +---+ | | | | | | | | | | |
|
||||
' | + | | | | | | | | | | | | ||
|
||||
' | + | | | | | + + + | | | | ||
|
||||
' +--+ +---- | | | +--+ +-+ +-+-+ | |
|
||||
' Beat Down
|
||||
' 1998 MicroTrip
|
||||
' Version T1.0 Origanally availible on
|
||||
'
|
||||
' 12-14-98
|
||||
' Made in the U.S.A.
|
||||
' Visit our Web Site At
|
||||
' At
|
||||
' http://www.geocities.com/SiliconValley/Platform/8409/qbasic.html
|
||||
' E-Mail me at microtrip@geocities.com
|
||||
' ***Hit `F5' to play!!***
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DECLARE SUB title ()
|
||||
title:
|
||||
CALL title
|
||||
|
||||
COLOR 14
|
||||
LOCATE 24, 32: PRINT "Beat Down V1T"
|
||||
|
||||
|
||||
FOR i = 1 TO 2
|
||||
FOR x = 550 TO 37 STEP -5
|
||||
SOUND x + 5, .2
|
||||
a$ = INKEY$: IF a$ <> "" THEN LET d = 1: EXIT FOR
|
||||
NEXT x
|
||||
IF d = 1 THEN EXIT FOR
|
||||
FOR x = 37 TO 550 STEP 5
|
||||
SOUND x + 5, .2
|
||||
a$ = INKEY$: IF a$ <> "" THEN LET d = 1: EXIT FOR
|
||||
NEXT x
|
||||
IF d = 1 THEN EXIT FOR
|
||||
NEXT i
|
||||
IF d = 1 THEN GOTO you
|
||||
|
||||
'/Title
|
||||
|
||||
'MicroTrip's Title
|
||||
CLS
|
||||
FOR i = 1 TO 15
|
||||
COLOR i
|
||||
LOCATE 12, 35: PRINT "MicroTrip"
|
||||
FOR ii = 1 TO 100000
|
||||
NEXT ii
|
||||
NEXT i
|
||||
'/MicroTrip's Title
|
||||
GOSUB intro
|
||||
IF nn = 0 GOTO you
|
||||
IF nn = 1 GOTO title
|
||||
|
||||
you:
|
||||
'Main Menu
|
||||
snd$ = "on"
|
||||
speed$ = "normale"
|
||||
num = 9
|
||||
oldnum = 9
|
||||
mainmenu:
|
||||
COLOR 14
|
||||
CLS
|
||||
LINE (50, 45)-(550, 150), 14, B
|
||||
LOCATE 5, 33: PRINT "Menu Principale"
|
||||
LINE (60, 55)-(540, 140), 14, B
|
||||
PAINT (51, 46), 10, 14
|
||||
LOCATE 9, 15: PRINT "Comincia il gioco"
|
||||
LOCATE 10, 15: PRINT "Veiw Controls" '*******************
|
||||
LOCATE 11, 15: PRINT "Vilocita"
|
||||
LOCATE 12, 15: PRINT "Suani"
|
||||
LOCATE 13, 15: PRINT "Crediti"
|
||||
LOCATE 14, 15: PRINT "Esci"
|
||||
|
||||
LISTEN$ = "mb T180 o2 P2 P8 L8 GGG L2 E-"
|
||||
FATE$ = "mb P24 P8 L8 FFF L2 D"
|
||||
PLAY LISTEN$ + FATE$
|
||||
|
||||
mm2:
|
||||
LOCATE 11, 24: PRINT " ": LOCATE 11, 24: PRINT speed$
|
||||
LOCATE 12, 21: PRINT " ": LOCATE 12, 21: PRINT snd$; ""
|
||||
IF oldnum <> num THEN LOCATE 14, 13: PRINT " ": LOCATE 9, 13: PRINT " ": LOCATE 10, 13: PRINT " ": LOCATE 11, 13: PRINT " ": LOCATE 12, 13: PRINT " ": LOCATE 13, 13: PRINT " ": oldnum = num
|
||||
LOCATE num, 13: PRINT "o"
|
||||
DO
|
||||
a$ = INKEY$
|
||||
LOOP UNTIL a$ <> ""
|
||||
IF a$ = "" THEN GOTO mm2
|
||||
IF a$ = "8" AND num = 9 THEN num = 14: GOTO mm2
|
||||
IF a$ = "8" THEN num = num - 1: GOTO mm2
|
||||
IF a$ = "2" AND num = 14 THEN num = 9: GOTO mm2
|
||||
IF a$ = "2" THEN num = num + 1: GOTO mm2
|
||||
IF a$ = "5" AND num = 9 THEN GOTO start
|
||||
IF a$ = "4" AND num = 12 THEN
|
||||
IF snd$ = "on" THEN snd$ = "off": GOTO mm2
|
||||
IF snd$ = "off" THEN snd$ = "on": GOTO mm2
|
||||
END IF
|
||||
IF a$ = "6" AND num = 12 THEN
|
||||
IF snd$ = "on" THEN snd$ = "off": GOTO mm2
|
||||
IF snd$ = "off" THEN snd$ = "on": GOTO mm2
|
||||
END IF
|
||||
IF a$ = "4" AND num = 11 THEN
|
||||
IF speed$ = "malto veloce" THEN speed$ = "veloce": GOTO mm2
|
||||
IF speed$ = "veloce" THEN speed$ = "normale": GOTO mm2
|
||||
IF speed$ = "normale" THEN speed$ = "molto lento": GOTO mm2
|
||||
IF speed$ = "molto lento" THEN speed$ = "lento": GOTO mm2
|
||||
IF speed$ = "lento" THEN speed$ = "malto veloce": GOTO mm2
|
||||
END IF
|
||||
IF a$ = "6" AND num = 11 THEN
|
||||
IF speed$ = "malto veloce" THEN speed$ = "malto lento": GOTO mm2
|
||||
IF speed$ = "veloce" THEN speed$ = "malto veloce": GOTO mm2
|
||||
IF speed$ = "normale" THEN speed$ = "veloce": GOTO mm2
|
||||
IF speed$ = "lento" THEN speed$ = "normale": GOTO mm2
|
||||
IF speed$ = "malto lento" THEN speed$ = "lento": GOTO mm2
|
||||
END IF
|
||||
IF a$ = "5" AND num = 13 THEN GOTO credits
|
||||
IF a$ = "5" AND num = 10 THEN GOTO controls
|
||||
IF a$ = "5" AND num = 14 THEN GOTO 666
|
||||
GOTO mm2
|
||||
|
||||
'***********Credits**************
|
||||
credits:
|
||||
CLS
|
||||
PRINT "Direttore della grafica...........Jacob Suckow"
|
||||
PRINT " Titoli..........................Jacob Suckow"
|
||||
PRINT " Menu Principale.................Brian Murphy"
|
||||
PRINT " Sezione combattimento...........Brian Murphy"
|
||||
PRINT " Ending..........................Brian Murphy"
|
||||
PRINT "Direttore della programmazione....Brian Murphy"
|
||||
PRINT " Motore..........................Brian Murphy"
|
||||
PRINT " Menu di systema.................Brian Murphy"
|
||||
PRINT " Altro...........................Brian Murphy"
|
||||
PRINT "Direttore del suono...............Jeremy Suckow"
|
||||
PRINT " Immagine della schermata........Brian Murphy"
|
||||
PRINT " Combattere......................Brian Murphy"
|
||||
PRINT "Traduzione"
|
||||
PRINT " Traduzione in italiano..........Marco Motenelli"
|
||||
PRINT
|
||||
PRINT " 1998 MicroTrip"
|
||||
PRINT " Premu un tasto percontinuare..."
|
||||
WHILE INKEY$ = "": WEND
|
||||
GOTO mainmenu
|
||||
'***********/Credits*************
|
||||
|
||||
'***********Controls*************
|
||||
controls:
|
||||
CLS
|
||||
PRINT "Giocatore 1"
|
||||
PRINT "Sposta a Sinistra...........................................a"
|
||||
PRINT "Sposta a Destra.............................................s"
|
||||
PRINT "Pugno.......................................................q"
|
||||
PRINT "Calcio......................................................w"
|
||||
PRINT
|
||||
PRINT "Giocatore 2"
|
||||
PRINT "Sposta a Sinistra...........................................4"
|
||||
PRINT "Sposta a Destra.............................................6"
|
||||
PRINT "Pugno.......................................................8"
|
||||
PRINT "Calcio......................................................2"
|
||||
PRINT
|
||||
PRINT "Premere Esc in ogni momento per uscire dal combattimeno.....Esc"
|
||||
PRINT
|
||||
PRINT " Premu un tasto percontinuare..."
|
||||
WHILE INKEY$ = "": WEND
|
||||
GOTO mainmenu
|
||||
'************/Controls*************
|
||||
|
||||
start:
|
||||
IF speed$ = "malto lento" THEN speed = 100000
|
||||
IF speed$ = "lento" THEN speed = 50000
|
||||
IF speed$ = "normale" THEN speed = 25000
|
||||
IF speed$ = "veloce" THEN speed = 10000
|
||||
IF speed$ = "malto veloce" THEN speed = 1000
|
||||
|
||||
IF snd$ = "on" THEN snd = 1
|
||||
IF snd$ = "off" THEN snd = 0
|
||||
|
||||
CLS
|
||||
SCREEN 8
|
||||
DEFINT A-F
|
||||
LET a = 20
|
||||
LET B = 20
|
||||
LET c = 20
|
||||
LET d = c
|
||||
LET e = 600
|
||||
LET f = e
|
||||
|
||||
COLOR 15
|
||||
|
||||
'********Ground********
|
||||
LINE (0, 151)-(640, 161), 2, BF
|
||||
LINE (0, 161)-(640, 171), 10, BF
|
||||
LINE (0, 171)-(640, 200), 6, BF
|
||||
|
||||
'********/Ground*******
|
||||
|
||||
1
|
||||
10 IF a <= 0 THEN GOTO 600
|
||||
20 IF B <= 0 THEN GOTO 610
|
||||
|
||||
30 LINE (c, 110)-(c, 130) 'body
|
||||
LINE (c, 130)-(c - 20, 150) 'leg
|
||||
LINE (c, 130)-(c + 20, 150) 'other leg
|
||||
IF c < e THEN LINE (c, 120)-(c + 15, 110)'arm
|
||||
IF c > e THEN LINE (c, 120)-(c - 15, 110)'arm other
|
||||
CIRCLE (c, 105), 10 'head
|
||||
60 LINE (e, 110)-(e, 130)
|
||||
LINE (e, 130)-(e - 20, 150)
|
||||
LINE (e, 130)-(e + 20, 150)
|
||||
IF e > c THEN LINE (e, 120)-(e - 15, 110)
|
||||
IF e < c THEN LINE (e, 120)-(e + 15, 110)
|
||||
CIRCLE (e, 105), 10
|
||||
|
||||
90 LINE (1, 1)-(a * 5, 7), 14, BF 'Life Bar
|
||||
LINE ((a * 5) + 1, 1)-(100, 7), 4, BF
|
||||
|
||||
LINE (540, 1)-((B * 5) + 540, 7), 14, BF 'Life Bar P2
|
||||
LINE ((B * 5) + 540 + 1, 1)-(640, 7), 4, BF
|
||||
|
||||
130 a$ = INKEY$
|
||||
140 IF a$ = "" THEN GOTO 1
|
||||
150 IF a$ = "q" THEN GOTO 200 'punch 1
|
||||
160 IF a$ = "w" THEN GOTO 210 'kick 1
|
||||
170 IF a$ = "a" THEN GOTO 220 'left 1
|
||||
175 IF a$ = "s" THEN GOTO 270 'right 1
|
||||
180 IF a$ = "4" THEN GOTO 230 'left 2
|
||||
185 IF a$ = "6" THEN GOTO 240 'right 2
|
||||
190 IF a$ = "8" THEN GOTO 250 'punch 2
|
||||
195 IF a$ = "2" THEN GOTO 260 'kick 2
|
||||
196 IF a$ = CHR$(27) THEN GOTO 616
|
||||
197 GOTO 1
|
||||
|
||||
200 IF c > e THEN GOTO 205
|
||||
LINE (c, 120)-(c + 15, 110), 0
|
||||
LINE (c, 120)-(c + 30, 120)
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 120)-(c + 15, 110)
|
||||
LINE (c, 120)-(c + 30, 120), 0
|
||||
GOTO 209
|
||||
205 LINE (c, 120)-(c - 30, 120)
|
||||
LINE (c, 120)-(c - 15, 110), 0
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 120)-(c - 15, 110)
|
||||
LINE (c, 120)-(c - 30, 120), 0
|
||||
GOTO 209
|
||||
209 IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
B = B - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
B = B - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 20 = e THEN
|
||||
B = B - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
210 IF c > e THEN GOTO 215
|
||||
LINE (c, 130)-(c + 20, 150), 0
|
||||
LINE (c, 130)-(c + 30, 130)
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 130)-(c + 20, 150)
|
||||
LINE (c, 130)-(c + 30, 130), 0
|
||||
GOTO 219
|
||||
215 LINE (c, 130)-(c - 20, 150), 0
|
||||
LINE (c, 130)-(c - 30, 130)
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 130)-(c - 20, 150)
|
||||
LINE (c, 130)-(c - 30, 130), 0
|
||||
GOTO 219
|
||||
219 IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
B = B - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
B = B - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 20 = e THEN
|
||||
B = B - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
220 IF c < 6 THEN GOTO 1
|
||||
221 c = c - 5
|
||||
222 LINE (d, 110)-(d, 130), 0
|
||||
LINE (d, 130)-(d - 20, 150), 0
|
||||
LINE (d, 130)-(d + 20, 150), 0
|
||||
223 LINE (d, 120)-(d - 15, 110), 0
|
||||
LINE (d, 120)-(d + 15, 110), 0
|
||||
224 CIRCLE (d, 105), 10, 0
|
||||
225 d = c
|
||||
226 GOTO 1
|
||||
|
||||
270 IF c > 595 THEN GOTO 1
|
||||
271 c = c + 5
|
||||
272 LINE (d, 110)-(d, 130), 0
|
||||
LINE (d, 130)-(d - 20, 150), 0
|
||||
LINE (d, 130)-(d + 20, 150), 0
|
||||
273 CIRCLE (d, 105), 10, 0
|
||||
274 LINE (d, 120)-(d - 15, 110), 0
|
||||
LINE (d, 120)-(d + 15, 110), 0
|
||||
275 d = c
|
||||
276 GOTO 1
|
||||
|
||||
230 IF e < 5 THEN GOTO 1
|
||||
231 e = e - 5
|
||||
232 LINE (f, 110)-(f, 130), 0
|
||||
LINE (f, 130)-(f - 20, 150), 0
|
||||
LINE (f, 130)-(f + 20, 150), 0
|
||||
233 CIRCLE (f, 105), 10, 0
|
||||
234 LINE (f, 120)-(f - 15, 110), 0
|
||||
LINE (f, 120)-(f + 15, 110), 0
|
||||
235 f = e
|
||||
236 GOTO 1
|
||||
|
||||
240 IF e > 595 THEN GOTO 1
|
||||
241 e = e + 5
|
||||
242 LINE (f, 110)-(f, 130), 0
|
||||
LINE (f, 130)-(f - 20, 150), 0
|
||||
LINE (f, 130)-(f + 20, 150), 0
|
||||
243 CIRCLE (f, 105), 10, 0
|
||||
244 LINE (f, 120)-(f - 15, 110), 0
|
||||
LINE (f, 120)-(f + 15, 110), 0
|
||||
245 f = e
|
||||
246 GOTO 1
|
||||
|
||||
250 IF c < e THEN GOTO 255
|
||||
LINE (e, 120)-(e + 15, 110), 0
|
||||
LINE (e, 120)-(e + 30, 120)
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 120)-(e + 15, 110)
|
||||
LINE (e, 120)-(e + 30, 120), 0
|
||||
GOTO 259
|
||||
255 LINE (e, 120)-(e - 30, 120)
|
||||
LINE (e, 120)-(e - 15, 110), 0
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 120)-(e - 30, 120)
|
||||
LINE (e, 120)-(e - 30, 120), 0
|
||||
GOTO 259
|
||||
259 IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
a = a - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
a = a - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 25 = e THEN
|
||||
a = a - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
260 IF c < e THEN GOTO 265
|
||||
LINE (e, 130)-(e + 20, 150), 0
|
||||
LINE (e, 130)-(e + 30, 130)
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 130)-(e + 20, 150)
|
||||
LINE (e, 130)-(e + 30, 130), 0
|
||||
GOTO 269
|
||||
265 LINE (e, 130)-(e - 20, 150), 0
|
||||
LINE (e, 130)-(e - 30, 130)
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 130)-(e - 20, 150)
|
||||
LINE (e, 130)-(e - 30, 130), 0
|
||||
GOTO 269
|
||||
269 IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
a = a - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
a = a - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 20 = e THEN
|
||||
a = a - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
|
||||
600 LOCATE 15, 30: PRINT " Player 2 Wins"
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
GOTO 615
|
||||
610 LOCATE 15, 30: PRINT "Player 1 Wins"
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
GOTO 615
|
||||
|
||||
615
|
||||
FOR i = 400 TO 1 STEP -1
|
||||
CIRCLE (320, 100), i
|
||||
PAINT (1, 1), 0
|
||||
CIRCLE (320, 100), i + 1, 0
|
||||
FOR ii = 1 TO speed / 10
|
||||
NEXT ii
|
||||
NEXT i
|
||||
|
||||
616 GOTO mainmenu
|
||||
|
||||
intro:
|
||||
|
||||
'MicroTrip
|
||||
CLS
|
||||
SCREEN 8
|
||||
LOCATE 12, 35: PRINT "MicroTrip"
|
||||
LINE (260, 85)-(350, 97), 1, B
|
||||
PAINT (259, 84), 9, 1
|
||||
PLAY "mb L16 ed L4 e P64 L4 <a P4 > L16 fe L32 f P8 e P8 L4 d P4"
|
||||
PLAY "mb L16 ed L4 e P64 L4 <a P4 > L17 fe L32 f P8 e P8 L4 d P4"
|
||||
IF a$ <> "" THEN RETURN
|
||||
|
||||
'Move Guy
|
||||
|
||||
c = 5
|
||||
e = 1000
|
||||
moveguy:
|
||||
LINE (c, 110)-(c, 130) 'body
|
||||
LINE (c, 130)-(c - 20, 150) 'leg
|
||||
LINE (c, 130)-(c + 20, 150) 'other leg
|
||||
IF c < e THEN LINE (c, 120)-(c + 15, 110)'arm
|
||||
IF c > e THEN LINE (c, 120)-(c - 15, 110)'arm other
|
||||
CIRCLE (c, 105), 10 'head
|
||||
FOR i = 1 TO 9000
|
||||
NEXT i
|
||||
LINE (c, 110)-(c, 130), 9 'body
|
||||
LINE (c, 130)-(c - 20, 150), 9 'leg
|
||||
LINE (c, 130)-(c + 20, 150), 9 'other leg
|
||||
IF c < e THEN LINE (c, 120)-(c + 15, 110), 9'arm
|
||||
IF c > e THEN LINE (c, 120)-(c - 15, 110), 9'arm other
|
||||
CIRCLE (c, 105), 10, 9 'head
|
||||
c = c + 1
|
||||
a$ = INKEY$
|
||||
IF a$ <> "" THEN LET nn = 0: RETURN
|
||||
IF c >= 595 THEN LET nn = 1: RETURN
|
||||
GOTO moveguy
|
||||
|
||||
666
|
||||
|
||||
SUB title
|
||||
|
||||
'Beat Down Title Screen 3D
|
||||
'By Brian Murphy of MicroTrip
|
||||
|
||||
SCREEN 8
|
||||
LINE (50, 50)-(50, 100), 14
|
||||
LINE (50, 50)-(70, 50), 14
|
||||
LINE (50, 100)-(70, 100), 14
|
||||
LINE (70, 50)-(80, 55), 14
|
||||
LINE (70, 100)-(80, 95), 14
|
||||
LINE (80, 55)-(80, 70), 14
|
||||
LINE (80, 95)-(80, 80), 14
|
||||
LINE (80, 70)-(75, 75), 14
|
||||
LINE (80, 80)-(75, 75), 14
|
||||
LINE (75, 75)-(50, 75), 14
|
||||
|
||||
'**************E*************
|
||||
|
||||
LINE (90, 50)-(90, 100), 14
|
||||
LINE (90, 50)-(120, 50), 14
|
||||
LINE (90, 75)-(110, 75), 14
|
||||
LINE (90, 100)-(120, 100), 14
|
||||
|
||||
'**************A*************
|
||||
LINE (145, 50)-(130, 100), 14
|
||||
LINE (145, 50)-(160, 100), 14
|
||||
LINE (137.5, 75)-(152.5, 75), 14
|
||||
|
||||
'*************T**************
|
||||
|
||||
LINE (170, 50)-(200, 50), 14
|
||||
LINE (185, 50)-(185, 100), 14
|
||||
|
||||
'***************D************
|
||||
LINE (260, 50)-(260, 100), 14
|
||||
LINE (260, 50)-(280, 50), 14
|
||||
LINE (260, 100)-(280, 100), 14
|
||||
LINE (280, 50)-(290, 55), 14
|
||||
LINE (280, 100)-(290, 95), 14
|
||||
LINE (290, 55)-(290, 95), 14
|
||||
|
||||
'***************O************
|
||||
LINE (300, 55)-(300, 95), 14
|
||||
LINE (300, 55)-(310, 50), 14
|
||||
LINE (300, 95)-(310, 100), 14
|
||||
LINE (330, 55)-(330, 95), 14
|
||||
LINE (320, 50)-(330, 55), 14
|
||||
LINE (320, 100)-(330, 95), 14
|
||||
LINE (320, 100)-(310, 100), 14
|
||||
LINE (310, 50)-(320, 50), 14
|
||||
|
||||
'**************W*************
|
||||
LINE (340, 50)-(340, 100), 14
|
||||
LINE (370, 50)-(370, 100), 14
|
||||
LINE (340, 100)-(355, 75), 14
|
||||
LINE (370, 100)-(355, 75), 14
|
||||
|
||||
'**************N*************
|
||||
LINE (380, 50)-(380, 100), 14
|
||||
LINE (410, 50)-(410, 100), 14
|
||||
LINE (380, 50)-(410, 100), 14
|
||||
|
||||
'All done
|
||||
|
||||
END SUB
|
||||
|
77
tests/qbasic_testcases/pete/beatdown/bdv11readme.html
Normal file
77
tests/qbasic_testcases/pete/beatdown/bdv11readme.html
Normal file
|
@ -0,0 +1,77 @@
|
|||
<html>
|
||||
<body bgcolor="#000000" text="#00FF00" link="#0000FF" vlink="#00FFFF">
|
||||
<title>Beat Down V1.1 ReadMe</title>
|
||||
<body>
|
||||
<center><font size=72>Beat Down</font></center><br>
|
||||
<center><font size=48>Version 1.1</font></center><br>
|
||||
<center><font size=36>By MicroTrip</font></center><p>
|
||||
|
||||
<font size=28>Story:</font><p>
|
||||
You were framed in the vicious murder of Joe Melzer. Nobody believes that you didn't do it. Why would you, Joe's best friend, kill him? One week before Joe's death on Devil's Night 1998, you and Joe got in a huge fight. He said that Coal Chamber was the best band in the world, and thought that it should be Rammstein. After you both agreed that neither was the best, you asked Joe for your money that he owed you.
|
||||
Joe borrowed some money from you some time ago and never paid you back. He swore on the Bible that he paid back the loan. You two got in a fight again and this time Joe kicked your @$$. Every body knew that you two had been having disagreements.
|
||||
One week later you were brought home by a police officer for being outside at 2:00 AM on Devil's Night. The next Monday at school you found out that Joe had been killed. It was definitaly a murder and it happened at about 2 in the morning on Oct. 30th.
|
||||
On your way back from school you were stopped by the cops. They hauled you to jail for killing your friend, Joe Melzer. At about 10:45 PM you excaped and ran about 3 miles from the jail.
|
||||
The police cought up to you and tried to re-arrest you. Because you were a wanted murderer, he tried to take you down.
|
||||
That's where the fighting begins.
|
||||
|
||||
<pre>
|
||||
<p><font size="28">Controls:</font><p>
|
||||
Menu:<br>
|
||||
On the main menu, you have to use:<br>
|
||||
2 to move cursor down.<br>
|
||||
8 to move cursor up.<br>
|
||||
6 to scroll between sound on and off and to choose speed.<br>
|
||||
4 to scroll between sound on and off and to choose speed.<br>
|
||||
5 to select an object. (i.e. To start)<br>
|
||||
|
||||
In the fighting screen:<br>
|
||||
|
||||
Escape to quit fight.<br>
|
||||
|
||||
Player 1:<br>
|
||||
a to move left.<br>
|
||||
s to move right.<br>
|
||||
q to punch.<br>
|
||||
w to kick.<br>
|
||||
z to long punch.<br>
|
||||
x to long kick.<br>
|
||||
|
||||
Player 2:<br>
|
||||
4 to move left.<br>
|
||||
6 to move right.<br>
|
||||
8 to punch.<br>
|
||||
2 to kick.<br>
|
||||
/ to long punch.<br>
|
||||
0 to long kick.<br>
|
||||
|
||||
|
||||
You can hit any button to exit the intro.<br>
|
||||
</pre>
|
||||
<font size=28>Contact:</font><p>
|
||||
You can contact us at:<p>
|
||||
<a href="mailto:microtrip@geocities.com">microtrip@geocities.com</a><p>
|
||||
Visit our web site at:<br>
|
||||
<a href="http://www.geocities.com/SiliconValley/Platform/8409/qbasic.html">HTTP://www.geocities.com/SiliconValley/Platform/8409/qbasic.html</a><p>
|
||||
|
||||
<font size=28>Beat Down V1.2</font><p>
|
||||
Beat Down V1.2 will be released in mid to late January. It will have new features such as:<p>
|
||||
|
||||
<select size=1>
|
||||
<option>Better graphics
|
||||
<option>More Options
|
||||
<option>Play Against the computer
|
||||
</select><p>
|
||||
|
||||
<a href="http://www.geocities.com/SiliconValley/Platform/8409/qbasic.html">Go to our web site frequently to download more games and updates!</a><p>
|
||||
|
||||
<font size=28>Other Games:</font><p>
|
||||
MicroTrip is currently working on the engine to Stunt Racer BMX. We also would like to get a good graphics artist (for QBasic) to help on our 1st person game, Last Dreams (working title).<br>
|
||||
If you'd like to help on Last Dreams, e-mail us at <a href="mailto:microtrip@geocities.com">microtrip@geocities.com</a>. We'll give you more info then!<p>
|
||||
|
||||
|
||||
Please don't use any part of Beat Down in your own scripts. Ask permission first please! And give us credit for making Beat Down!<p>
|
||||
<h6>>Beat Down (C) MicroTrip, 1998</h6>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
737
tests/qbasic_testcases/pete/beatdown/beatdown.bas
Normal file
737
tests/qbasic_testcases/pete/beatdown/beatdown.bas
Normal file
|
@ -0,0 +1,737 @@
|
|||
' **** ***** * ***** **** *** * * * *
|
||||
' * * * * * * * * * * * * ** *
|
||||
' * * * * * * * * * * * * ** *
|
||||
' **** **** ***** * * * * * * * * * * *
|
||||
' * * * * * * * * * * * * * * * *
|
||||
' * * * * * * * * * * * * * * **
|
||||
' **** ***** * * * **** *** ***** * **
|
||||
' Beat Down
|
||||
' 1998 MicroTrip
|
||||
' V1.1 Origanally availible on
|
||||
' 12-14-98
|
||||
'
|
||||
' Visit our Web Site At
|
||||
' At
|
||||
' http://www.geocities.com/SiliconValley/Platform/8409/qbasic.html
|
||||
' E-Mail me at microtrip@geocities.com
|
||||
' ***Hit `F5' to play!!***
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
title:
|
||||
'Beat Down Title Screen
|
||||
'By Brian Murphy of MicroTrip
|
||||
|
||||
SCREEN 8
|
||||
CLS
|
||||
LINE (50, 50)-(50, 100), 14
|
||||
LINE (50, 50)-(70, 50), 14
|
||||
LINE (50, 100)-(70, 100), 14
|
||||
LINE (70, 50)-(80, 55), 14
|
||||
LINE (70, 100)-(80, 95), 14
|
||||
LINE (80, 55)-(80, 70), 14
|
||||
LINE (80, 95)-(80, 80), 14
|
||||
LINE (80, 70)-(75, 75), 14
|
||||
LINE (80, 80)-(75, 75), 14
|
||||
LINE (75, 75)-(50, 75), 14
|
||||
|
||||
'**************E*************
|
||||
LINE (90, 50)-(90, 100), 14
|
||||
LINE (90, 50)-(120, 50), 14
|
||||
LINE (90, 75)-(110, 75), 14
|
||||
LINE (90, 100)-(120, 100), 14
|
||||
|
||||
'**************A*************
|
||||
LINE (145, 50)-(130, 100), 14
|
||||
LINE (145, 50)-(160, 100), 14
|
||||
LINE (137.5, 75)-(152.5, 75), 14
|
||||
|
||||
'*************T**************
|
||||
LINE (170, 50)-(200, 50), 14
|
||||
LINE (185, 50)-(185, 100), 14
|
||||
|
||||
'***************D************
|
||||
LINE (260, 50)-(260, 100), 14
|
||||
LINE (260, 50)-(280, 50), 14
|
||||
LINE (260, 100)-(280, 100), 14
|
||||
LINE (280, 50)-(290, 55), 14
|
||||
LINE (280, 100)-(290, 95), 14
|
||||
LINE (290, 55)-(290, 95), 14
|
||||
|
||||
'***************O************
|
||||
LINE (300, 55)-(300, 95), 14
|
||||
LINE (300, 55)-(310, 50), 14
|
||||
LINE (300, 95)-(310, 100), 14
|
||||
LINE (330, 55)-(330, 95), 14
|
||||
LINE (320, 50)-(330, 55), 14
|
||||
LINE (320, 100)-(330, 95), 14
|
||||
LINE (320, 100)-(310, 100), 14
|
||||
LINE (310, 50)-(320, 50), 14
|
||||
|
||||
'**************W*************
|
||||
LINE (340, 50)-(340, 100), 14
|
||||
LINE (370, 50)-(370, 100), 14
|
||||
LINE (340, 100)-(355, 75), 14
|
||||
LINE (370, 100)-(355, 75), 14
|
||||
|
||||
'**************N*************
|
||||
LINE (380, 50)-(380, 100), 14
|
||||
LINE (410, 50)-(410, 100), 14
|
||||
LINE (380, 50)-(410, 100), 14
|
||||
|
||||
'************************All done
|
||||
|
||||
|
||||
COLOR 14
|
||||
LOCATE 24, 32: PRINT "Beat Down V1.1"
|
||||
|
||||
|
||||
FOR i = 1 TO 2
|
||||
FOR x = 550 TO 37 STEP -5
|
||||
SOUND x + 5, .2
|
||||
a$ = INKEY$: IF a$ <> "" THEN LET d = 1: EXIT FOR
|
||||
NEXT x
|
||||
IF d = 1 THEN EXIT FOR
|
||||
FOR x = 37 TO 550 STEP 5
|
||||
SOUND x + 5, .2
|
||||
a$ = INKEY$: IF a$ <> "" THEN LET d = 1: EXIT FOR
|
||||
NEXT x
|
||||
IF d = 1 THEN EXIT FOR
|
||||
NEXT i
|
||||
IF d = 1 THEN GOTO you
|
||||
|
||||
'/Title
|
||||
|
||||
|
||||
GOSUB intro
|
||||
IF nn = 0 GOTO you
|
||||
IF nn = 1 GOTO title
|
||||
|
||||
you:
|
||||
'Main Menu
|
||||
snd$ = "on"
|
||||
speed$ = "normal"
|
||||
num = 9
|
||||
oldnum = 9
|
||||
colour1 = 1
|
||||
colour2 = 1
|
||||
mainmenu:
|
||||
COLOR 14
|
||||
CLS
|
||||
LINE (50, 45)-(550, 150), 14, B
|
||||
LOCATE 5, 33: PRINT "Main Menu"
|
||||
LINE (60, 55)-(540, 140), 14, B
|
||||
PAINT (51, 46), 10, 14
|
||||
LOCATE 9, 15: PRINT "Start Game"
|
||||
LOCATE 10, 15: PRINT "Veiw Controls"
|
||||
LOCATE 11, 15: PRINT "Speed"
|
||||
LOCATE 12, 15: PRINT "Sound"
|
||||
LOCATE 13, 15: PRINT "Credits"
|
||||
LOCATE 14, 15: PRINT "Color of player 1"
|
||||
LOCATE 15, 15: PRINT "Color of player 2"
|
||||
LOCATE 16, 15: PRINT "Quit"
|
||||
|
||||
LISTEN$ = "mb T180 o2 P2 P8 L8 GGG L2 E-"
|
||||
FATE$ = "mb P24 P8 L8 FFF L2 D"
|
||||
PLAY LISTEN$ + FATE$
|
||||
|
||||
mm2:
|
||||
LOCATE 11, 21: PRINT " ": LOCATE 11, 21: PRINT speed$
|
||||
LOCATE 12, 21: PRINT " ": LOCATE 12, 21: PRINT snd$; ""
|
||||
LOCATE 14, 33: PRINT " ": LOCATE 14, 33: COLOR colour1: PRINT colour1
|
||||
LOCATE 15, 33: PRINT " ": LOCATE 15, 33: COLOR colour2: PRINT colour2
|
||||
COLOR 14
|
||||
IF oldnum <> num THEN LOCATE 14, 13: PRINT " ": LOCATE 9, 13: PRINT " ": LOCATE 10, 13: PRINT " ": LOCATE 11, 13: PRINT " ": LOCATE 12, 13: PRINT " ": LOCATE 13, 13: PRINT " ": LOCATE 15, 13: PRINT " ": LOCATE 16, 13: PRINT " ": oldnum = num
|
||||
LOCATE num, 13: PRINT "o"
|
||||
DO
|
||||
a$ = INKEY$
|
||||
LOOP UNTIL a$ <> ""
|
||||
IF a$ = "" THEN GOTO mm2
|
||||
IF a$ = "8" AND num = 9 THEN num = 16: GOTO mm2
|
||||
IF a$ = "8" THEN num = num - 1: GOTO mm2
|
||||
IF a$ = "2" AND num = 16 THEN num = 9: GOTO mm2
|
||||
IF a$ = "2" THEN num = num + 1: GOTO mm2
|
||||
IF a$ = "5" AND num = 9 THEN GOTO start
|
||||
IF a$ = "4" AND num = 12 THEN
|
||||
IF snd$ = "on" THEN snd$ = "off": GOTO mm2
|
||||
IF snd$ = "off" THEN snd$ = "on": GOTO mm2
|
||||
END IF
|
||||
IF a$ = "6" AND num = 12 THEN
|
||||
IF snd$ = "on" THEN snd$ = "off": GOTO mm2
|
||||
IF snd$ = "off" THEN snd$ = "on": GOTO mm2
|
||||
END IF
|
||||
IF a$ = "4" AND num = 11 THEN
|
||||
IF speed$ = "fastest" THEN speed$ = "mid-fast": GOTO mm2
|
||||
IF speed$ = "mid-fast" THEN speed$ = "normal": GOTO mm2
|
||||
IF speed$ = "normal" THEN speed$ = "mid-slow": GOTO mm2
|
||||
IF speed$ = "mid-slow" THEN speed$ = "slow": GOTO mm2
|
||||
IF speed$ = "slow" THEN speed$ = "fastest": GOTO mm2
|
||||
END IF
|
||||
IF a$ = "6" AND num = 11 THEN
|
||||
IF speed$ = "fastest" THEN speed$ = "slow": GOTO mm2
|
||||
IF speed$ = "mid-fast" THEN speed$ = "fastest": GOTO mm2
|
||||
IF speed$ = "normal" THEN speed$ = "mid-fast": GOTO mm2
|
||||
IF speed$ = "mid-slow" THEN speed$ = "normal": GOTO mm2
|
||||
IF speed$ = "slow" THEN speed$ = "mid-slow": GOTO mm2
|
||||
END IF
|
||||
IF a$ = "6" AND num = 14 THEN
|
||||
IF colour1 = 15 THEN colour1 = 0: GOTO mm2
|
||||
IF colour1 = 10 THEN colour1 = 12: GOTO mm2
|
||||
colour1 = colour1 + 1
|
||||
END IF
|
||||
IF a$ = "4" AND num = 14 THEN
|
||||
IF colour1 = 0 THEN colour1 = 15: GOTO mm2
|
||||
IF colour1 = 12 THEN colour1 = 10: GOTO mm2
|
||||
colour1 = colour1 - 1
|
||||
END IF
|
||||
IF a$ = "6" AND num = 15 THEN
|
||||
IF colour2 = 15 THEN colour2 = 0: GOTO mm2
|
||||
IF colour2 = 10 THEN colour2 = 12: GOTO mm2
|
||||
colour2 = colour2 + 1
|
||||
END IF
|
||||
IF a$ = "4" AND num = 15 THEN
|
||||
IF colour2 = 0 THEN colour2 = 15: GOTO mm2
|
||||
IF colour2 = 12 THEN colour2 = 10: GOTO mm2
|
||||
colour2 = colour2 - 1
|
||||
END IF
|
||||
IF a$ = "5" AND num = 13 THEN GOTO credits
|
||||
IF a$ = "5" AND num = 10 THEN GOTO controls
|
||||
IF a$ = "5" AND num = 16 THEN GOTO 666
|
||||
GOTO mm2
|
||||
|
||||
'***********Credits**************
|
||||
credits:
|
||||
CLS
|
||||
PRINT "Graphics Director...........Jacob Suckow"
|
||||
PRINT " Title Screen Picture......Brian Murphy"
|
||||
PRINT " Main Menu.................Brian Murphy"
|
||||
PRINT " Fighting Section..........Brian Murphy"
|
||||
PRINT " Ending (Circle)...........Brian Murphy"
|
||||
PRINT "Programming Director........Brian Murphy"
|
||||
PRINT " Engine....................Brian Murphy"
|
||||
PRINT " Menu System...............Brian Murphy"
|
||||
PRINT " Other.....................Brian Murphy"
|
||||
PRINT "Sound Director..............Jeremy Suckow"
|
||||
PRINT " Title Screen..............Brian Murphy"
|
||||
PRINT " MicroTrip Screen..........Brian Murphy"
|
||||
PRINT " Fighting..................Brian Murphy"
|
||||
PRINT
|
||||
PRINT " 1998 MicroTrip"
|
||||
PRINT " Any key to continue..."
|
||||
WHILE INKEY$ = "": WEND
|
||||
GOTO mainmenu
|
||||
'***********/Credits*************
|
||||
|
||||
'***********Controls*************
|
||||
controls:
|
||||
CLS
|
||||
PRINT "Player One"
|
||||
PRINT "Move left.....a"
|
||||
PRINT "Move right....s"
|
||||
PRINT "Punch.........q"
|
||||
PRINT "High Punch....z"
|
||||
PRINT "Kick..........w"
|
||||
PRINT "Low Kick.....x"
|
||||
PRINT
|
||||
PRINT "Player Two"
|
||||
PRINT "Move Left.....4"
|
||||
PRINT "Move Right....6"
|
||||
PRINT "Punch.........8"
|
||||
PRINT "High Punch..../"
|
||||
PRINT "Kick..........2"
|
||||
PRINT "Low Kick......0"
|
||||
PRINT
|
||||
PRINT "To quit.....Esc"
|
||||
PRINT
|
||||
PRINT "Any key to continue..."
|
||||
WHILE INKEY$ = "": WEND
|
||||
GOTO mainmenu
|
||||
'************/Controls*************
|
||||
|
||||
start:
|
||||
IF speed$ = "slow" THEN speed = 100000
|
||||
IF speed$ = "mid-slow" THEN speed = 50000
|
||||
IF speed$ = "normal" THEN speed = 25000
|
||||
IF speed$ = "mid-fast" THEN speed = 10000
|
||||
IF speed$ = "fastest" THEN speed = 1000
|
||||
|
||||
IF snd$ = "on" THEN snd = 1
|
||||
IF snd$ = "off" THEN snd = 0
|
||||
|
||||
CLS
|
||||
SCREEN 8
|
||||
|
||||
LET a = 50
|
||||
LET B = 50
|
||||
LET c = 20
|
||||
LET d = c
|
||||
LET e = 600
|
||||
LET f = e
|
||||
|
||||
COLOR 15
|
||||
|
||||
'********Ground********
|
||||
LINE (0, 151)-(640, 161), 2, BF
|
||||
LINE (0, 161)-(640, 171), 10, BF
|
||||
LINE (0, 171)-(640, 200), 6, BF
|
||||
'********/Ground*******
|
||||
|
||||
'********Top Thing*****
|
||||
LINE (0, 0)-(640, 20), 13, B
|
||||
PAINT (2, 2), 13, 13
|
||||
'********/Top Thing****
|
||||
'********Background****
|
||||
LINE (0, 150)-(640, 21), 11, BF
|
||||
'********/BackGround***
|
||||
|
||||
1
|
||||
10 IF a <= 0 THEN GOTO 600
|
||||
20 IF B <= 0 THEN GOTO 610
|
||||
|
||||
30 LINE (c, 110)-(c, 130), colour1 'body
|
||||
LINE (c, 130)-(c - 20, 150), colour1 'leg
|
||||
LINE (c, 130)-(c + 20, 150), colour1 'other leg
|
||||
IF c < e THEN LINE (c, 120)-(c + 15, 110), colour1'arm
|
||||
IF c > e THEN LINE (c, 120)-(c - 15, 110), colour1'arm other
|
||||
CIRCLE (c, 105), 10, colour1 'head
|
||||
60 LINE (e, 110)-(e, 130), colour2
|
||||
LINE (e, 130)-(e - 20, 150), colour2
|
||||
LINE (e, 130)-(e + 20, 150), colour2
|
||||
IF e > c THEN LINE (e, 120)-(e - 15, 110), colour2
|
||||
IF e < c THEN LINE (e, 120)-(e + 15, 110), colour2
|
||||
CIRCLE (e, 105), 10, colour2
|
||||
|
||||
90 LINE (5, 4)-((a * 5) + 5, 10), 14, BF 'Life Bar
|
||||
IF a <> 50 THEN LINE ((a * 5) + 1 + 5, 4)-(255, 10), 4, BF
|
||||
LINE (4, 3)-((a * 5) + 6, 11), 14, B
|
||||
|
||||
LINE (390, 4)-((B * 5) + 390, 10), 14, BF 'Life Bar P2
|
||||
LINE ((B * 5) + 390 + 1, 4)-(640, 10), 4, BF
|
||||
LINE (389, 3)-((B * 5) + 390 + 1, 11), 14, B
|
||||
|
||||
130 a$ = INKEY$
|
||||
140 IF a$ = "" THEN GOTO 1
|
||||
150 IF a$ = "q" THEN GOTO 200 'punch 1
|
||||
155 IF a$ = "z" THEN GOTO highpunch1
|
||||
160 IF a$ = "w" THEN GOTO 210 'kick 1
|
||||
165 IF a$ = "x" THEN GOTO highkick1
|
||||
170 IF a$ = "a" THEN GOTO 220 'left 1
|
||||
175 IF a$ = "s" THEN GOTO 270 'right 1
|
||||
180 IF a$ = "4" THEN GOTO 230 'left 2
|
||||
185 IF a$ = "6" THEN GOTO 240 'right 2
|
||||
190 IF a$ = "8" THEN GOTO 250 'punch 2
|
||||
IF a$ = "/" THEN GOTO highpunch2
|
||||
195 IF a$ = "2" THEN GOTO 260 'kick 2
|
||||
IF a$ = "0" THEN GOTO highkick2
|
||||
196 IF a$ = CHR$(27) THEN GOTO 616
|
||||
197 GOTO 1
|
||||
|
||||
200 IF c > e THEN GOTO 205
|
||||
LINE (c, 120)-(c + 15, 110), 11
|
||||
LINE (c, 120)-(c + 30, 120), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 120)-(c + 15, 110), colour1
|
||||
LINE (c, 120)-(c + 30, 120), 11
|
||||
GOTO 209
|
||||
205 LINE (c, 120)-(c - 30, 120), colour1
|
||||
LINE (c, 120)-(c - 15, 110), 11
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 120)-(c - 15, 110), colour1
|
||||
LINE (c, 120)-(c - 30, 120), 11
|
||||
GOTO 209
|
||||
209 IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
B = B - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
B = B - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 20 = e THEN
|
||||
B = B - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
|
||||
|
||||
highkick1:
|
||||
IF c > e THEN GOTO hk1
|
||||
LINE (c, 130)-(c + 20, 150), 11
|
||||
LINE (c, 130)-(c + 30, 140), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 130)-(c + 20, 150), colour1
|
||||
LINE (c, 130)-(c + 30, 140), 11
|
||||
GOTO hk1x
|
||||
hk1:
|
||||
LINE (c, 130)-(c - 20, 150), 11
|
||||
LINE (c, 130)-(c - 30, 140), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 130)-(c - 20, 150), colour1
|
||||
LINE (c, 130)-(c - 30, 140), 11
|
||||
GOTO hk1x
|
||||
hk1x:
|
||||
IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
B = B - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
B = B - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 20 = e THEN
|
||||
B = B - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
|
||||
highpunch1:
|
||||
IF c > e THEN GOTO hp1
|
||||
LINE (c, 120)-(c + 15, 110), 11
|
||||
LINE (c, 120)-(c + 30, 110), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 120)-(c + 15, 110), colour1
|
||||
LINE (c, 120)-(c + 30, 110), 11
|
||||
GOTO hp1x
|
||||
hp1:
|
||||
LINE (c, 120)-(c - 15, 110), 11
|
||||
LINE (c, 120)-(c - 30, 110), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 120)-(c - 15, 110), colour1
|
||||
LINE (c, 120)-(c - 30, 110), 11
|
||||
GOTO hp1x
|
||||
hp1x:
|
||||
IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
B = B - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
B = B - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 20 = e THEN
|
||||
B = B - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
|
||||
210 IF c > e THEN GOTO 215
|
||||
LINE (c, 130)-(c + 20, 150), 11
|
||||
LINE (c, 130)-(c + 30, 130), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 130)-(c + 20, 150), colour1
|
||||
LINE (c, 130)-(c + 30, 130), 11
|
||||
GOTO 219
|
||||
215 LINE (c, 130)-(c - 20, 150), 11
|
||||
LINE (c, 130)-(c - 30, 130), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (c, 130)-(c - 20, 150), colour1
|
||||
LINE (c, 130)-(c - 30, 130), 11
|
||||
GOTO 219
|
||||
219 IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
B = B - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
B = B - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 20 = e THEN
|
||||
B = B - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
220 IF c < 6 THEN GOTO 1
|
||||
221 c = c - 5
|
||||
222 LINE (d, 110)-(d, 130), 11
|
||||
LINE (d, 130)-(d - 20, 150), 11
|
||||
LINE (d, 130)-(d + 20, 150), 11
|
||||
223 LINE (d, 120)-(d - 15, 110), 11
|
||||
LINE (d, 120)-(d + 15, 110), 11
|
||||
224 CIRCLE (d, 105), 10, 11
|
||||
225 d = c
|
||||
226 GOTO 1
|
||||
|
||||
270 IF c > 595 THEN GOTO 1
|
||||
271 c = c + 5
|
||||
272 LINE (d, 110)-(d, 130), 11
|
||||
LINE (d, 130)-(d - 20, 150), 11
|
||||
LINE (d, 130)-(d + 20, 150), 11
|
||||
273 CIRCLE (d, 105), 10, 11
|
||||
274 LINE (d, 120)-(d - 15, 110), 11
|
||||
LINE (d, 120)-(d + 15, 110), 11
|
||||
275 d = c
|
||||
276 GOTO 1
|
||||
|
||||
230 IF e < 5 THEN GOTO 1
|
||||
231 e = e - 5
|
||||
232 LINE (f, 110)-(f, 130), 11
|
||||
LINE (f, 130)-(f - 20, 150), 11
|
||||
LINE (f, 130)-(f + 20, 150), 11
|
||||
233 CIRCLE (f, 105), 10, 11
|
||||
234 LINE (f, 120)-(f - 15, 110), 11
|
||||
LINE (f, 120)-(f + 15, 110), 11
|
||||
235 f = e
|
||||
236 GOTO 1
|
||||
|
||||
240 IF e > 595 THEN GOTO 1
|
||||
241 e = e + 5
|
||||
242 LINE (f, 110)-(f, 130), 11
|
||||
LINE (f, 130)-(f - 20, 150), 11
|
||||
LINE (f, 130)-(f + 20, 150), 11
|
||||
243 CIRCLE (f, 105), 10, 11
|
||||
244 LINE (f, 120)-(f - 15, 110), 11
|
||||
LINE (f, 120)-(f + 15, 110), 11
|
||||
245 f = e
|
||||
246 GOTO 1
|
||||
|
||||
250 IF c < e THEN GOTO 255
|
||||
LINE (e, 120)-(e + 15, 110), 11
|
||||
LINE (e, 120)-(e + 30, 120), colour2
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 120)-(e + 15, 110), colour2
|
||||
LINE (e, 120)-(e + 30, 120), 11
|
||||
GOTO 259
|
||||
255 LINE (e, 120)-(e - 30, 120), colour2
|
||||
LINE (e, 120)-(e - 15, 110), 11
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 120)-(e - 30, 120), colour2
|
||||
LINE (e, 120)-(e - 30, 120), 11
|
||||
GOTO 259
|
||||
259 IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
a = a - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
a = a - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 25 = e THEN
|
||||
a = a - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
260 IF c < e THEN GOTO 265
|
||||
LINE (e, 130)-(e + 20, 150), 11
|
||||
LINE (e, 130)-(e + 30, 130), colour2
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 130)-(e + 20, 150), colour2
|
||||
LINE (e, 130)-(e + 30, 130), 11
|
||||
GOTO 269
|
||||
265 LINE (e, 130)-(e - 20, 150), 11
|
||||
LINE (e, 130)-(e - 30, 130), colour2
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 130)-(e - 20, 150), colour2
|
||||
LINE (e, 130)-(e - 30, 130), 11
|
||||
GOTO 269
|
||||
269 IF c + 29 = e OR c - 29 = e OR c + 30 = e OR c - 30 = e THEN
|
||||
a = a - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 24 = e OR c - 24 = e OR c + 25 = e OR c - 25 = e THEN
|
||||
a = a - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF c + 19 = e OR c - 19 = e OR c + 20 = e OR c - 20 = e THEN
|
||||
a = a - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
|
||||
highkick2:
|
||||
IF c < e THEN GOTO hk2
|
||||
LINE (e, 130)-(e + 20, 150), 11
|
||||
LINE (e, 130)-(e + 30, 140), colour2
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 130)-(e + 20, 150), colour2
|
||||
LINE (e, 130)-(e + 30, 140), 11
|
||||
GOTO hk2x
|
||||
hk2:
|
||||
LINE (e, 130)-(e - 20, 150), 11
|
||||
LINE (e, 130)-(e - 30, 140), colour2
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 130)-(e - 20, 150), colour1
|
||||
LINE (e, 130)-(e - 30, 140), 11
|
||||
GOTO hk2x
|
||||
hk2x:
|
||||
IF e + 29 = c OR e - 29 = c OR e + 30 = c OR e - 30 = c THEN
|
||||
a = a - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF e + 24 = c OR e - 24 = c OR e + 25 = c OR e - 25 = c THEN
|
||||
a = a - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF e + 19 = c OR e - 19 = c OR e + 20 = c OR e - 20 = c THEN
|
||||
a = a - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
|
||||
highpunch2:
|
||||
IF c < e THEN GOTO hp2
|
||||
LINE (e, 120)-(e + 15, 110), 11
|
||||
LINE (e, 120)-(e + 30, 110), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 120)-(e + 15, 110), colour1
|
||||
LINE (e, 120)-(e + 30, 110), 11
|
||||
GOTO hp2x
|
||||
hp2:
|
||||
LINE (e, 120)-(e - 15, 110), 11
|
||||
LINE (e, 120)-(e - 30, 110), colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
LINE (e, 120)-(e - 15, 110), colour1
|
||||
LINE (e, 120)-(e - 30, 110), 11
|
||||
GOTO hp2x
|
||||
hp2x:
|
||||
IF e + 29 = c OR e - 29 = c OR e + 30 = c OR e - 30 = c THEN
|
||||
a = a - 2
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF e + 24 = c OR e - 24 = c OR e + 25 = c OR e - 25 = c THEN
|
||||
a = a - 3
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
IF e + 19 = c OR e - 19 = c OR e + 20 = c OR e - 20 = c THEN
|
||||
a = a - 1
|
||||
IF snd = 1 THEN SOUND 50, 1
|
||||
END IF
|
||||
GOTO 1
|
||||
|
||||
|
||||
|
||||
600 FOR iii = 1 TO 8000
|
||||
LOCATE 12, 32: PRINT "Player 1 Losses!"
|
||||
NEXT iii
|
||||
FOR ii = 10 TO 1 STEP -1
|
||||
CIRCLE (c, 105), ii + 1, 11
|
||||
CIRCLE (c, 105), ii, colour1
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
NEXT ii
|
||||
GOTO 615
|
||||
610 FOR iii = 1 TO 8000
|
||||
LOCATE 12, 32: PRINT "Player 2 Losses!"
|
||||
NEXT iii
|
||||
FOR ii = 10 TO 1 STEP -1
|
||||
CIRCLE (e, 105), ii + 1, 11
|
||||
CIRCLE (e, 105), ii, colour2
|
||||
FOR i = 1 TO speed
|
||||
NEXT i
|
||||
NEXT ii
|
||||
GOTO 615
|
||||
|
||||
615
|
||||
FOR i = 400 TO 1 STEP -1
|
||||
CIRCLE (320, 100), i
|
||||
PAINT (1, 1), 11
|
||||
CIRCLE (320, 100), i + 1, 11
|
||||
FOR ii = 1 TO speed / 10
|
||||
NEXT ii
|
||||
NEXT i
|
||||
|
||||
616 GOTO mainmenu
|
||||
|
||||
intro:
|
||||
|
||||
'MicroTrip
|
||||
CLS
|
||||
SCREEN 8
|
||||
COLOR 15
|
||||
LOCATE 12, 35: PRINT "MicroTrip"
|
||||
LINE (260, 85)-(350, 97), 1, B
|
||||
PAINT (259, 84), 9, 1
|
||||
PLAY "mb L16 ed L4 e P64 L4 <a P4 > L16 fe L32 f P8 e P8 L4 d P4"
|
||||
PLAY "mb L16 ed L4 e P64 L4 <a P4 > L17 fe L32 f P8 e P8 L4 d P4"
|
||||
IF a$ <> "" THEN RETURN
|
||||
|
||||
'Move Guy
|
||||
|
||||
c = 5
|
||||
e = 1000
|
||||
moveguy:
|
||||
LINE (c, 110)-(c, 130) 'body
|
||||
LINE (c, 130)-(c - 20, 150) 'leg
|
||||
LINE (c, 130)-(c + 20, 150) 'other leg
|
||||
IF c < e THEN LINE (c, 120)-(c + 15, 110)'arm
|
||||
IF c > e THEN LINE (c, 120)-(c - 15, 110)'arm other
|
||||
CIRCLE (c, 105), 10 'head
|
||||
FOR i = 1 TO 9000
|
||||
NEXT i
|
||||
LINE (c, 110)-(c, 130), 9 'body
|
||||
LINE (c, 130)-(c - 20, 150), 9 'leg
|
||||
LINE (c, 130)-(c + 20, 150), 9 'other leg
|
||||
IF c < e THEN LINE (c, 120)-(c + 15, 110), 9'arm
|
||||
IF c > e THEN LINE (c, 120)-(c - 15, 110), 9'arm other
|
||||
CIRCLE (c, 105), 10, 9 'head
|
||||
c = c + 1
|
||||
a$ = INKEY$
|
||||
IF a$ <> "" THEN LET nn = 0: RETURN
|
||||
IF c >= 595 THEN LET nn = 1: RETURN
|
||||
GOTO moveguy
|
||||
|
||||
'****I have to fill this in later. It won't work right.****
|
||||
story:
|
||||
CLS
|
||||
fart = 0
|
||||
PAINT (1, 1), 0
|
||||
COLOR 4
|
||||
LOCATE 1, 1: PRINT "It was the year 1998 when you and Jake decided to start your"
|
||||
GOTO yeah
|
||||
first:
|
||||
PRINT "own 'wrestling' association. You were sick of how fake all of the "
|
||||
GOTO yeah
|
||||
second:
|
||||
PRINT "others including WCW, WWF and NWO, were. Then, simoultaniously, you both"
|
||||
GOTO yeah
|
||||
third:
|
||||
PRINT "had a good idea. What if your 'wrestling' association wasn't fake? What"
|
||||
GOTO yeah
|
||||
fourth:
|
||||
PRINT "if you had all of the 'wrestlers' sign a Beat Down contract saying that "
|
||||
GOTO yeah
|
||||
fifth:
|
||||
PRINT "they would fight to the death? This was gonna' be a kick @$$ 'fighting'"
|
||||
GOTO yeah
|
||||
sixth:
|
||||
PRINT "association! It would be known as the Beat Down Fighting Association!(BDFA)"
|
||||
GOTO yeah
|
||||
|
||||
endofstory:
|
||||
IF nn = 0 THEN RETURN
|
||||
LET nn = 1: RETURN
|
||||
|
||||
yeah:
|
||||
a$ = INKEY$
|
||||
IF a$ <> "" THEN nn = 0: GOTO endofstory
|
||||
FOR i = 1 TO 1000000
|
||||
NEXT i
|
||||
fart = fart + 1
|
||||
ON poop GOTO first, second, third, fourth, fifth, sixth
|
||||
|
||||
666
|
||||
|
7
tests/qbasic_testcases/pete/beatdown/clickme.bas
Normal file
7
tests/qbasic_testcases/pete/beatdown/clickme.bas
Normal file
|
@ -0,0 +1,7 @@
|
|||
CLS
|
||||
PRINT "1. English 2. Italian"
|
||||
INPUT "#", n
|
||||
IF n = 1 THEN CHAIN "beatdown.bas"
|
||||
IF n = 2 THEN CHAIN "bdt.bas"
|
||||
STOP
|
||||
|
350
tests/qbasic_testcases/pete/bj.bas
Normal file
350
tests/qbasic_testcases/pete/bj.bas
Normal file
|
@ -0,0 +1,350 @@
|
|||
REM M-AZN BLACKJACK
|
||||
REM May 27, 2005
|
||||
REM by M-AZN
|
||||
REM
|
||||
REM dealer hits on 16, stands on 17.
|
||||
REM bet*0.5 bonus for blackjack (Ace and value-10 card)
|
||||
REM when betting, you can press ENTER to bid last bet--
|
||||
REM unless you cant afford it. double-down doubles your bet for that play.
|
||||
REM to quit, enter -1 when betting, or enter q or Q at hit/stand/double.
|
||||
REM ENTER is same as stand. S to stand. H to hit. D to double down.
|
||||
REM can't split (yet).
|
||||
|
||||
startgame:
|
||||
'INITIALIZE
|
||||
|
||||
RANDOMIZE TIMER
|
||||
heart$ = CHR$(3): diamond$ = CHR$(4): club$ = CHR$(5): spade$ = CHR$(6)
|
||||
playerquit = 0
|
||||
oldbet = 10
|
||||
maxhand = 13
|
||||
DIM playercards(maxhand), dealercards(maxhand), deck(52)
|
||||
|
||||
'MAIN LOOP
|
||||
DO
|
||||
CLS
|
||||
playermoney = 500
|
||||
GOSUB splashscreen
|
||||
GOSUB shuffledeck
|
||||
'deckindex = 1
|
||||
GOSUB rungame
|
||||
LOOP
|
||||
END
|
||||
|
||||
rungame:
|
||||
'GAME LOOP
|
||||
DO
|
||||
COLOR 4: PRINT " "; heart$;
|
||||
COLOR 2: PRINT " "; club$;
|
||||
COLOR 5: PRINT " "; diamond$;
|
||||
COLOR 3: PRINT " "; spade$
|
||||
COLOR 7
|
||||
playercardindex = 0
|
||||
dealercardindex = 0
|
||||
done = 0
|
||||
BLACKJACK = 0
|
||||
GOSUB getbet
|
||||
GOSUB getnewhand
|
||||
GOSUB printhand
|
||||
GOSUB printdealerhand
|
||||
GOSUB checkplayerhand
|
||||
GOSUB getcommand
|
||||
GOSUB comparehands
|
||||
IF playermoney = 0 THEN
|
||||
GOSUB playerlost
|
||||
EXIT DO
|
||||
END IF
|
||||
LOOP
|
||||
RETURN
|
||||
|
||||
getbet:
|
||||
IF oldbet > playermoney THEN oldbet = playermoney
|
||||
IF oldbet = 0 THEN oldbet = -1
|
||||
DO
|
||||
COLOR 10
|
||||
PRINT "You have $"; playermoney
|
||||
COLOR 7
|
||||
PRINT "Your bet (-1 to quit) (ENTER = $"; oldbet; ")";
|
||||
INPUT playerbet
|
||||
IF playerbet = 0 THEN playerbet = oldbet
|
||||
LOOP UNTIL playerbet <= playermoney
|
||||
IF playerbet = -1 THEN END
|
||||
oldbet = playerbet
|
||||
playermoney = playermoney - playerbet
|
||||
RETURN
|
||||
|
||||
getcommand:
|
||||
WHILE done = 0
|
||||
PRINT "Your hand value: "; playerhandvalue
|
||||
PRINT "[H]it [S]tand ";
|
||||
IF playercardindex = 2 THEN PRINT "[D]ouble";
|
||||
INPUT nkey$
|
||||
SELECT CASE nkey$
|
||||
CASE "quit", "q", "Q"
|
||||
END
|
||||
CASE "h"
|
||||
GOSUB getnewplayercard
|
||||
CASE "s", ""
|
||||
done = 1
|
||||
CASE "d"
|
||||
IF playercardindex = 2 THEN
|
||||
IF playermoney >= playerbet THEN
|
||||
playermoney = playermoney - playerbet
|
||||
playerbet = playerbet * 2
|
||||
done = 1
|
||||
GOSUB getnewplayercard
|
||||
ELSE
|
||||
PRINT "Not enough money to double down."
|
||||
END IF
|
||||
END IF
|
||||
END SELECT
|
||||
GOSUB printhand
|
||||
GOSUB checkplayerhand
|
||||
WEND
|
||||
RETURN
|
||||
|
||||
shuffledeck:
|
||||
'first card
|
||||
deck(1) = INT(RND * 52)
|
||||
deckindex = 2
|
||||
DO
|
||||
DO
|
||||
cardok = 1
|
||||
newcard = INT(RND * 52)
|
||||
FOR j = 1 TO (deckindex - 1) STEP 1
|
||||
IF newcard = deck(j) THEN
|
||||
cardok = 0
|
||||
EXIT FOR
|
||||
END IF
|
||||
NEXT j
|
||||
LOOP UNTIL cardok = 1
|
||||
deck(deckindex) = newcard
|
||||
deckindex = deckindex + 1
|
||||
LOOP UNTIL deckindex > 52
|
||||
deckindex = 1
|
||||
PRINT "* * * DECK SHUFFLED * * *"
|
||||
RETURN
|
||||
|
||||
getnewcard:
|
||||
IF deckindex > 52 THEN
|
||||
GOSUB shuffledeck
|
||||
deckindex = 1
|
||||
END IF
|
||||
newcard = deck(deckindex)
|
||||
deckindex = deckindex + 1
|
||||
RETURN
|
||||
|
||||
getnewplayercard:
|
||||
GOSUB getnewcard
|
||||
playercardindex = playercardindex + 1
|
||||
playercards(playercardindex) = newcard
|
||||
RETURN
|
||||
|
||||
getnewdealercard:
|
||||
GOSUB getnewcard
|
||||
dealercardindex = dealercardindex + 1
|
||||
dealercards(dealercardindex) = newcard
|
||||
RETURN
|
||||
|
||||
getnewhand:
|
||||
IF (deckindex > 42) THEN GOSUB shuffledeck
|
||||
GOSUB getnewplayercard
|
||||
GOSUB getnewdealercard
|
||||
GOSUB getnewplayercard
|
||||
GOSUB getnewdealercard
|
||||
RETURN
|
||||
|
||||
printhand:
|
||||
PRINT "Your cards:"
|
||||
FOR i = 1 TO playercardindex
|
||||
d = playercards(i) MOD 13 + 1
|
||||
s% = playercards(i) \ 13
|
||||
GOSUB printcard
|
||||
NEXT i
|
||||
RETURN
|
||||
|
||||
printdealerhand:
|
||||
PRINT "Dealer cards:"
|
||||
FOR i = 1 TO dealercardindex
|
||||
d = dealercards(i) MOD 13 + 1
|
||||
s% = dealercards(i) \ 13
|
||||
IF done = 0 AND i > 1 THEN
|
||||
ELSE GOSUB printcard
|
||||
END IF
|
||||
NEXT i
|
||||
RETURN
|
||||
|
||||
printcard:
|
||||
SELECT CASE d
|
||||
CASE 1: PRINT " A ";
|
||||
CASE 2 TO 9: PRINT " "; d;
|
||||
CASE 10: PRINT d;
|
||||
CASE 11: PRINT " J ";
|
||||
CASE 12: PRINT " Q ";
|
||||
CASE 13: PRINT " K ";
|
||||
END SELECT
|
||||
REM PRINT "s"; s%
|
||||
SELECT CASE s%
|
||||
CASE 0
|
||||
COLOR 4
|
||||
PRINT heart$;
|
||||
COLOR 7
|
||||
CASE 1
|
||||
COLOR 5
|
||||
PRINT diamond$;
|
||||
COLOR 7
|
||||
CASE 2
|
||||
COLOR 2
|
||||
PRINT club$;
|
||||
COLOR 7
|
||||
CASE 3
|
||||
COLOR 3
|
||||
PRINT spade$;
|
||||
COLOR 7
|
||||
END SELECT
|
||||
PRINT
|
||||
RETURN
|
||||
|
||||
checkplayerhand:
|
||||
rerun = 0
|
||||
acefound = 0
|
||||
playerdone = 0
|
||||
WHILE playerdone = 0
|
||||
playerhandvalue = 0
|
||||
FOR i = 1 TO playercardindex
|
||||
cardvalue = playercards(i) MOD 13 + 1
|
||||
IF cardvalue > 10 THEN cardvalue = 10
|
||||
IF cardvalue = 1 AND acefound = 0 THEN
|
||||
cardvalue = 11
|
||||
acefound = 1
|
||||
END IF
|
||||
playerhandvalue = playerhandvalue + cardvalue
|
||||
NEXT i
|
||||
playerdone = 1
|
||||
IF playerhandvalue > 21 AND acefound = 0 THEN done = 1
|
||||
IF playerhandvalue = 21 THEN
|
||||
done = 1
|
||||
IF playercardindex = 2 THEN
|
||||
COLOR 15: PRINT "BLACKJACK ";
|
||||
COLOR 13: PRINT "BLACKJACK ";
|
||||
COLOR 11: PRINT "BLACKJACK ";
|
||||
COLOR 9: PRINT "BLACKJACK "
|
||||
COLOR 7
|
||||
BLACKJACK = 1
|
||||
END IF
|
||||
END IF
|
||||
IF playerhandvalue > 21 AND acefound = 1 THEN playerdone = 0
|
||||
IF rerun = 1 THEN
|
||||
IF playerhandvalue > 21 THEN done = 1
|
||||
playerdone = 1
|
||||
END IF
|
||||
rerun = 1
|
||||
WEND
|
||||
RETURN
|
||||
|
||||
checkdealerhand:
|
||||
rerun = 0
|
||||
acefound = 0
|
||||
donehere = 0
|
||||
WHILE donehere = 0
|
||||
dealerhandvalue = 0
|
||||
FOR i = 1 TO dealercardindex
|
||||
cardvalue = dealercards(i) MOD 13 + 1
|
||||
IF cardvalue > 10 THEN cardvalue = 10
|
||||
IF cardvalue = 1 AND acefound = 0 THEN
|
||||
cardvalue = 11
|
||||
acefound = 1
|
||||
END IF
|
||||
dealerhandvalue = dealerhandvalue + cardvalue
|
||||
NEXT i
|
||||
donehere = 1
|
||||
IF acefound = 1 AND dealerhandvalue > 21 THEN donehere = 0
|
||||
IF rerun = 1 THEN donehere = 1
|
||||
rerun = 1
|
||||
WEND
|
||||
RETURN
|
||||
|
||||
comparehands:
|
||||
GOSUB checkdealerhand
|
||||
WHILE dealerhandvalue < 17 AND playerhandvalue <= 21 AND BLACKJACK = 0
|
||||
GOSUB getnewdealercard
|
||||
GOSUB checkdealerhand
|
||||
WEND
|
||||
GOSUB printdealerhand
|
||||
PRINT "Your hand value "; playerhandvalue
|
||||
PRINT "Dealer hand value "; dealerhandvalue
|
||||
IF playerhandvalue > 21 THEN
|
||||
COLOR 6
|
||||
PRINT "You busted"
|
||||
COLOR 7
|
||||
ELSEIF dealerhandvalue > 21 THEN
|
||||
PRINT "Dealer busted"
|
||||
GOSUB playerwins
|
||||
ELSEIF BLACKJACK = 1 THEN
|
||||
COLOR 15
|
||||
PRINT "You have Blackjack!"
|
||||
COLOR 7
|
||||
IF dealerhandvalue = 21 AND dealercardindex = 2 THEN
|
||||
COLOR 15
|
||||
PRINT "Dealer has Blackjack!"
|
||||
COLOR 14
|
||||
PRINT "Push"
|
||||
COLOR 7
|
||||
ELSE
|
||||
GOSUB playerwins
|
||||
END IF
|
||||
ELSEIF dealerhandvalue > playerhandvalue THEN
|
||||
COLOR 6
|
||||
PRINT "You lost"
|
||||
COLOR 7
|
||||
ELSEIF dealerhandvalue < playerhandvalue THEN
|
||||
PRINT "You won"
|
||||
GOSUB playerwins
|
||||
ELSEIF dealerhandvalue = playerhandvalue THEN
|
||||
COLOR 14
|
||||
PRINT "Push"
|
||||
COLOR 7
|
||||
playermoney = playermoney + playerbet
|
||||
END IF
|
||||
RETURN
|
||||
|
||||
playerwins:
|
||||
bonus = 0
|
||||
IF BLACKJACK = 1 THEN bonus = playerbet / 2
|
||||
COLOR 13
|
||||
PRINT "You win $"; playerbet + bonus
|
||||
IF bonus THEN PRINT " ($"; bonus; "bonus)"
|
||||
COLOR 7
|
||||
playermoney = playermoney + 2 * playerbet + bonus
|
||||
RETURN
|
||||
|
||||
playerlost:
|
||||
PRINT : PRINT "ALL YOUR MONEY ARE BELONG TO US"
|
||||
DO
|
||||
INPUT "Do you want to play again"; nkey$
|
||||
SELECT CASE nkey$
|
||||
CASE "n", "N", "no"
|
||||
END
|
||||
CASE "y", "Y", "yes"
|
||||
playerquit = 1
|
||||
EXIT DO
|
||||
END SELECT
|
||||
LOOP
|
||||
RETURN
|
||||
|
||||
splashscreen:
|
||||
LOCATE 3, 38
|
||||
COLOR 13: PRINT "M-AZN"
|
||||
LOCATE 5, 36
|
||||
COLOR 1: PRINT "B";
|
||||
COLOR 2: PRINT "L";
|
||||
COLOR 3: PRINT "A";
|
||||
COLOR 4: PRINT "C";
|
||||
COLOR 5: PRINT "K";
|
||||
COLOR 6: PRINT "J";
|
||||
COLOR 7: PRINT "A";
|
||||
COLOR 8: PRINT "C";
|
||||
COLOR 9: PRINT "K";
|
||||
COLOR 7
|
||||
PRINT : PRINT
|
||||
RETURN
|
636
tests/qbasic_testcases/pete/booger/booger.bas
Normal file
636
tests/qbasic_testcases/pete/booger/booger.bas
Normal file
|
@ -0,0 +1,636 @@
|
|||
CHDIR ".\programs\samples\pete\booger"
|
||||
|
||||
REM
|
||||
REM
|
||||
REM REALiTY Software
|
||||
REM
|
||||
REM BOOGER and the Martians
|
||||
REM
|
||||
REM
|
||||
REM Coded By M.Ware
|
||||
REM
|
||||
REM
|
||||
REM SWFX & GIF Routines used (Thanks dudes !!)
|
||||
REM
|
||||
REM All other coding by REALiTY Software
|
||||
REM
|
||||
REM
|
||||
REM
|
||||
REM This is the 1st game from REALiTY Software
|
||||
REM soon to be one of many ,i already have another BOOGER
|
||||
REM game in the pipeline and have began work on it
|
||||
REM hopefully it wont be too long coming.
|
||||
REM
|
||||
REM BOOGER and the Martians was written in QB4.5 on a 133Mhz
|
||||
REM Pentium but should run on anything Pentium even 486 im not
|
||||
REM sure about 386's etc maybe you could EMAIL me about how
|
||||
REM it works on another machine ?
|
||||
REM
|
||||
REM Anyone out there who knows how to program music ,mail me please
|
||||
REM i havent dabbled in it yet but someone who knows can save a
|
||||
REM lot of time !.
|
||||
REM
|
||||
REM Hope you enjoy the GAME sorry there are not many REMARKS but hey
|
||||
REM thats one of the joys of programming !.
|
||||
REM
|
||||
REM Best of luck ..........................
|
||||
REM
|
||||
REM P.S Maybe someone would like to join forces and make a really
|
||||
REM really really good game ???
|
||||
REM
|
||||
REM EMail me on : Matthew.Ware@virgin.net
|
||||
REM
|
||||
REM As Booger would say L8rs DUDES !!!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
REM -Set Up Those Variables-
|
||||
|
||||
DEFINT A-Z
|
||||
RANDOMIZE TIMER
|
||||
|
||||
DIM SHARED c$(8) 'FM register information for 9 channels
|
||||
c$(0) = "&hB0&h20&h23&h40&h43&h60&h63&h80&h83&hA0&HBD&HC0&HE0&HE3&hB0"
|
||||
c$(1) = "&hB1&h21&h24&h41&h44&h61&h64&h81&h84&hA1&HBD&HC1&HE1&HE4&hB1"
|
||||
c$(2) = "&hB2&h22&h25&h42&h45&h62&h65&h82&h85&hA2&HBD&HC2&HE2&HE5&hB2"
|
||||
c$(3) = "&hB3&h28&h2B&h48&h4B&h68&h6B&h88&h8B&hA3&HBD&HC3&HE8&HEB&hB3"
|
||||
c$(4) = "&hB4&h29&h2C&h49&h4C&h69&h6C&h89&h8C&hA4&HBD&HC4&HE9&HEC&hB4"
|
||||
c$(5) = "&hB5&h2A&h2D&h4A&h4D&h6A&h6D&h8A&h8D&hA5&HBD&HC5&HEA&HED&hB5"
|
||||
c$(6) = "&hB6&h30&h33&h50&h53&h70&h73&h90&h93&hA6&HBD&HC6&HF0&HF3&hB6"
|
||||
c$(7) = "&hB7&h31&h34&h51&h54&h71&h74&h91&h94&hA7&HBD&HC7&HF1&HF4&hB7"
|
||||
c$(8) = "&hB8&h32&h35&h52&h55&h72&h75&h92&h95&hA8&HBD&HC8&HF2&HF5&hB8"
|
||||
DIM sfx$(25)
|
||||
OPEN ".\data\noise.set" FOR INPUT AS #1
|
||||
FOR fxnum% = 0 TO 25
|
||||
INPUT #1, sfx$(fxnum%)
|
||||
NEXT
|
||||
CLOSE #1
|
||||
|
||||
|
||||
DIM Prefix(4095), Suffix(4095), OutStack(4095), shiftout%(8)
|
||||
DIM Ybase AS LONG, powersof2(11) AS LONG, WorkCode AS LONG
|
||||
|
||||
graphics = 39
|
||||
DIM grid(10, 10)
|
||||
DIM sprite(74, 40)
|
||||
DIM spriteback(74, 40)
|
||||
DIM spritemask(74, 40)
|
||||
DIM default(74): frame = 0
|
||||
|
||||
DIM greenback(74)
|
||||
DIM greenmask(74)
|
||||
DIM greensprite(74)
|
||||
aliens = 50
|
||||
DIM alienx!(aliens): DIM alieny!(aliens)
|
||||
DIM alienmove(aliens): DIM aliengrap(aliens)
|
||||
DIM alienspeed!(aliens)
|
||||
DIM floor(8)
|
||||
DIM scroller(1000)
|
||||
DIM comment$(10)
|
||||
DIM word$(32)
|
||||
|
||||
|
||||
comment$(1) = "Wake up dude!"
|
||||
comment$(2) = "Are You Asleep Again!"
|
||||
comment$(3) = "Were sposed to save the world!"
|
||||
comment$(4) = "I need a LEAK !!"
|
||||
comment$(5) = "G E T A M O V E O N"
|
||||
comment$(6) = "I'm the one in danger !!!!"
|
||||
comment$(7) = "Stop thinking and play !"
|
||||
comment$(8) = "The Bikes Overheating !!!"
|
||||
comment$(9) = "PHHURRRP oops ,sorry!"
|
||||
comment$(10) = "Fffarrt ,slipped out!"
|
||||
word$(1) = "Easy Street Dude !!!"
|
||||
leveltoo = 1
|
||||
sndon = 1
|
||||
size = 74
|
||||
level = 1
|
||||
SCREEN 13: CLS: GOSUB grabsprites
|
||||
|
||||
|
||||
|
||||
|
||||
REM -Main Prog Starts Here !!!-
|
||||
|
||||
mainstart:
|
||||
jpdet = 9
|
||||
look1 = 0
|
||||
lives = 3
|
||||
|
||||
SCREEN 13: CLS
|
||||
|
||||
GOSUB titlescreen
|
||||
|
||||
CLS
|
||||
|
||||
restart:
|
||||
|
||||
CLS
|
||||
GOSUB loadlevel ' Gets level data from disc
|
||||
|
||||
PALETTE: CLS
|
||||
|
||||
|
||||
|
||||
REM -Draw Level Contents-
|
||||
|
||||
FOR ground = 200 TO 40 STEP -50
|
||||
FOR layer = 1 TO 8
|
||||
LINE (1, ground - layer)-(319, ground - layer), floor(9 - layer)
|
||||
NEXT layer
|
||||
NEXT ground
|
||||
moving! = 0: movingy! = 0
|
||||
counter = 0: movgot = 0: movgot1 = 3
|
||||
|
||||
FOR howmany = 1 TO 50
|
||||
IF alienx!(howmany) <> 0 AND alienmove(howmany) = 0 THEN PUT (alienx!(howmany), alieny!(howmany)), sprite(size, aliengrap(howmany)), PSET
|
||||
NEXT howmany
|
||||
|
||||
|
||||
|
||||
|
||||
REM -Okey Here Goes the main Routine !!!(HELP)-
|
||||
|
||||
gx! = 4: gy! = 32: anim = 0: jump = 0
|
||||
|
||||
GET (gx!, gy!)-(gx! + 10, gy! + 10), greenback()
|
||||
REM snd = 19: GOSUB snd
|
||||
|
||||
|
||||
mainloop:
|
||||
|
||||
counter = counter + 1: IF counter = 50 THEN counter = 0
|
||||
|
||||
WAIT &H3DA, 8
|
||||
|
||||
PUT (gx!, gy!), greenback(), PSET
|
||||
gx! = gx! + moving!
|
||||
gy! = gy! + movingy!
|
||||
|
||||
IF POINT(gx! + 10, gy! + 10 + movingy!) = 0 AND POINT(gx!, gy! + 10 + movingy!) = 0 THEN movingy! = movingy! + .125
|
||||
IF POINT(gx! + 9, gy! + 9 + movingy!) = land AND POINT(gx!, gy! + 9 + movingy!) = land THEN movingy! = 0: jump = 0
|
||||
IF POINT(gx! - 3, gy! + 4) = land THEN jpdet = 9: GOSUB missit
|
||||
|
||||
IF passd <> 0 THEN GOTO missit
|
||||
|
||||
IF POINT(gx! - 3, gy! + 4) <> 0 OR POINT(gx! - movgot1, gy! + 9) <> 0 THEN GOSUB dead
|
||||
IF POINT(gx! + 11, gy! + 4) <> 0 OR POINT(gx! + movgot, gy! + jpdet) <> 0 THEN GOSUB dead
|
||||
IF POINT(gx! + 4, gy! + 9) <> 0 THEN GOSUB dead
|
||||
|
||||
missit:
|
||||
|
||||
IF POINT(gx! + 5, gy! - 2) <> 0 THEN a$ = "DEFAULT": GOSUB dead
|
||||
IF gx! > 305 AND gy! > 162 THEN GOTO leveldone
|
||||
IF gx! > 305 THEN gx! = 4: gy! = gy! + 50
|
||||
GET (gx!, gy!)-(gx! + 10, gy! + 10), greenback()
|
||||
PUT (gx!, gy!), greenmask(), AND
|
||||
PUT (gx!, gy!), sprite(size, anim), OR
|
||||
|
||||
IF counter > 25 THEN frame = 1 ELSE frame = 0
|
||||
|
||||
GOSUB alienmove
|
||||
|
||||
|
||||
a$ = INKEY$
|
||||
a$ = LCASE$(a$)
|
||||
IF a$ = "x" AND moving! < 2 THEN moving! = moving! + .5
|
||||
IF a$ = "z" AND moving! > 0 THEN moving! = moving! - .25
|
||||
IF a$ = " " AND jump <> 1 THEN jump = 1: jpdet = 4: movingy! = -1.8
|
||||
|
||||
IF a$ = "q" THEN END
|
||||
IF a$ = "s" THEN sndon = sndon + 1: IF sndon > 1 THEN sndon = 0
|
||||
|
||||
IF moving! <> 0 THEN IF anim1 = INT(5 / moving!) THEN anim = anim + 1: IF anim > 1 THEN anim = 0
|
||||
IF moving! <> 0 THEN movgot1 = -3: movgot = 0: look1 = 0: anim1 = anim1 + 1: IF anim1 > INT(5 / moving!) THEN anim1 = 0: snd = 5: GOSUB snd
|
||||
IF jump = 1 THEN jpdet = 4: anim = 11
|
||||
IF jump = 0 THEN jpdet = 9
|
||||
IF moving! = 0 AND look1 = 0 THEN anim = 0: look1 = 1
|
||||
IF moving! = 0 AND jump = 1 THEN anim = 0
|
||||
IF moving! = 0 THEN tick = tick + 1: IF tick = 35 THEN tick = 0: snd = 5: GOSUB snd
|
||||
IF moving! = 0 AND look = 950 THEN anim = 10: snd = 7: GOSUB snd: COLOR 15: t$ = comment$(INT(RND(1) * 9) + 1): v = 1: GOSUB centre
|
||||
IF moving! = 0 THEN movgot1 = 4: movgot = 12
|
||||
IF look = 1290 THEN look1 = 0: anim = 0: v = 1: t$ = " ": look = 0: GOSUB centre
|
||||
look = look + 1: IF look = 1300 THEN look = 0
|
||||
|
||||
|
||||
GOTO mainloop
|
||||
|
||||
|
||||
REM -Routine for alien movement-
|
||||
|
||||
alienmove:
|
||||
|
||||
FOR howmany = 1 TO 50
|
||||
|
||||
GET (0, 0)-(10, 9), default()
|
||||
|
||||
IF alienmove(howmany) = 0 THEN GOTO skip
|
||||
|
||||
PUT (alienx!(howmany), alieny!(howmany)), default(), PSET
|
||||
|
||||
IF alienmove(howmany) = 1 THEN GOTO vert
|
||||
|
||||
IF alienx!(howmany) < 10 OR alienx!(howmany) > 300 THEN alienspeed!(howmany) = -alienspeed!(howmany)
|
||||
IF POINT(alienx!(howmany) - 2, alieny!(howmany) + 4) <> 0 OR POINT(alienx!(howmany) + 12, alieny!(howmany) + 4) <> 0 THEN alienspeed!(howmany) = -alienspeed!(howmany): GOTO turned
|
||||
|
||||
IF POINT(alienx!(howmany) - 2, alieny!(howmany) + 9) <> 0 OR POINT(alienx!(howmany) + 12, alieny!(howmany) + 9) <> 0 THEN alienspeed!(howmany) = -alienspeed!(howmany)
|
||||
|
||||
turned:
|
||||
|
||||
alienx!(howmany) = alienx!(howmany) + alienspeed!(howmany)
|
||||
GOTO placealien
|
||||
|
||||
vert:
|
||||
|
||||
alieny!(howmany) = alieny!(howmany) - alienspeed!(howmany)
|
||||
IF POINT(alienx!(howmany) + 4, alieny!(howmany) - 1) <> 0 OR POINT(alienx!(howmany) + 4, alieny!(howmany) + 10) <> 0 THEN alienspeed!(howmany) = -alienspeed!(howmany)
|
||||
|
||||
placealien:
|
||||
|
||||
PUT (alienx!(howmany), alieny!(howmany)), spritemask(size, aliengrap(howmany)), AND
|
||||
PUT (alienx!(howmany), alieny!(howmany)), sprite(size, aliengrap(howmany) + frame), OR
|
||||
|
||||
|
||||
skip:
|
||||
NEXT howmany
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
dead:
|
||||
|
||||
PUT (gx!, gy!), sprite(size, 21)
|
||||
snd = 4
|
||||
GOSUB snd
|
||||
GOSUB delay
|
||||
GOSUB delay
|
||||
|
||||
IF lives = 0 THEN GOSUB completedead
|
||||
|
||||
pic$ = ".\data\crashed1.bgr"
|
||||
IF lives > 1 THEN pic$ = ".\data\crashed.bgr"
|
||||
|
||||
GOSUB picture
|
||||
GOSUB keypress
|
||||
lives = lives - 1: IF lives > -1 THEN GOTO restart
|
||||
|
||||
completedead:
|
||||
|
||||
|
||||
pic$ = ".\data\totalled.bgr"
|
||||
GOSUB picture
|
||||
GOSUB keypress
|
||||
|
||||
GOTO mainstart
|
||||
|
||||
|
||||
gamecomplete:
|
||||
|
||||
CLS
|
||||
pic$ = ".\data\COMPLETE.bgr"
|
||||
GOSUB picture
|
||||
GOSUB keypress
|
||||
level = 1
|
||||
GOSUB mainstart
|
||||
|
||||
|
||||
|
||||
titlescreen:
|
||||
|
||||
pic$ = ".\data\title.bgr": GOSUB picture
|
||||
GOSUB delay
|
||||
pic$ = ".\data\title1.bgr": GOSUB picture
|
||||
snd = 24
|
||||
GOSUB snd
|
||||
GOSUB keypress
|
||||
pic$ = ".\data\title2.bgr": GOSUB picture
|
||||
GOSUB keypress
|
||||
pic$ = ".\data\title3.bgr": GOSUB picture
|
||||
GOSUB keypress
|
||||
pic$ = ".\data\title4.bgr": GOSUB picture
|
||||
snd = 25: GOSUB snd
|
||||
|
||||
|
||||
x$ = " Right ,now dude ,this is the idea ,i've got this plan !!! ..... Firstly il'e get the Harley out of the garage ,won't go anywhere quick "
|
||||
x$ = x$ + "on a pair of legs !! ,then what ,well lets get to the mothership i thinks and sort the main geezer out ,that bit you can leave to me but i need"
|
||||
x$ = x$ + " your elp getting there !,basically we start at the top and the idea is to get to the bottom and onto the next street but just in case we meet"
|
||||
x$ = x$ + " any Alien dudes i guess we ortta dodge em if poss i don't want to total my bike !, and we don't know what else to expect ,so only one way to find out"
|
||||
x$ = x$ + " and thats to GO FOR IT !!! , OK,OK just in case i thinks the Harley will be alright for a couple of smashes ,maybe 4 i think ,but best none eh ,just hope"
|
||||
x$ = x$ + " it's enuff to get us through the 30 streets !! ,and also finally"
|
||||
x$ = x$ + " THE DUDE (almighty) said that the 'S' key will turn the sound on and off and 'Q' during the game will Quit and most finally if you want to get into the game"
|
||||
x$ = x$ + " quick and the delays between screens and when we crash etc are toooo looonnnggg just hit the SPACEBAR !! L8rs Dude ! "
|
||||
|
||||
scroll = LEN(x$)
|
||||
|
||||
DO
|
||||
|
||||
COLOR 37: v = 23: t$ = word$(level): GOSUB centre
|
||||
|
||||
FOR r = 1 TO scroll
|
||||
|
||||
COLOR 9: LOCATE 19, 37: PRINT MID$(x$, r, 1)
|
||||
IF MID$(x$, r, 1) <> " " THEN snd = 18: GOSUB snd
|
||||
|
||||
FOR left = 1 TO 8
|
||||
|
||||
|
||||
GET (80, 144)-(300, 152), scroller()
|
||||
PUT (79, 144), scroller(), PSET
|
||||
WAIT &H3DA, 8
|
||||
|
||||
a$ = INKEY$
|
||||
a$ = LCASE$(a$)
|
||||
|
||||
IF a$ = "x" AND word$(level + 1) <> "" THEN level = level + 1: v = 23: t$ = " ": GOSUB centre
|
||||
IF a$ = "z" AND level > 1 THEN level = level - 1: v = 23: t$ = " ": GOSUB centre
|
||||
|
||||
IF a$ = "z" OR a$ = "x" THEN v = 23: t$ = word$(level): GOSUB centre
|
||||
IF a$ = " " THEN GOTO doit
|
||||
IF a$ = "q" THEN END
|
||||
|
||||
|
||||
NEXT left
|
||||
NEXT r
|
||||
LOOP
|
||||
|
||||
doit:
|
||||
snd = 25
|
||||
GOSUB snd
|
||||
PALETTE
|
||||
RETURN
|
||||
|
||||
|
||||
leveldone:
|
||||
|
||||
pic$ = ".\data\doneit.bgr": GOSUB picture
|
||||
GOSUB delay
|
||||
GOSUB delay
|
||||
level = level + 1
|
||||
GOTO restart
|
||||
|
||||
keypress:
|
||||
a$ = INKEY$
|
||||
IF a$ = " " THEN RETURN
|
||||
GOTO keypress
|
||||
|
||||
delay:
|
||||
|
||||
FOR r = 1 TO 300
|
||||
FOR rr = 1 TO 20000
|
||||
NEXT rr
|
||||
NEXT r
|
||||
RETURN
|
||||
|
||||
centre:
|
||||
|
||||
place = INT(40 - LEN(t$)) / 2
|
||||
place = place
|
||||
LOCATE v, place: PRINT t$
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
REM -Sound Routine (Thanks DUDE!)
|
||||
|
||||
snd:
|
||||
|
||||
IF sndon = 0 THEN RETURN
|
||||
sfxnum% = snd
|
||||
chan% = VAL(MID$(sfx$(sfxnum%), 61, 4))
|
||||
FOR in = 1 TO 60 STEP 4
|
||||
reg$ = MID$(c$(chan%), in, 4): reg% = VAL(reg$)
|
||||
dat$ = MID$(sfx$(sfxnum%), in, 4): dat% = VAL(dat$)
|
||||
OUT &H388, reg%: FOR d% = 1 TO 6: b% = INP(&H388): NEXT
|
||||
OUT &H389, dat%: FOR d% = 1 TO 35: b% = INP(&H388): NEXT
|
||||
NEXT
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
REM -Level Loader-
|
||||
|
||||
loadlevel:
|
||||
|
||||
|
||||
IF level = 31 THEN GOSUB gamecomplete
|
||||
pic$ = ".\data\loading.bgr": GOSUB picture
|
||||
|
||||
GOSUB delay
|
||||
|
||||
lev$ = STR$(level) + ".lev": lev$ = RIGHT$(lev$, LEN(lev$) - 1)
|
||||
OPEN ".\levels\" + lev$ FOR INPUT AS #1
|
||||
INPUT #1, levelname$
|
||||
t$ = levelname$: word$(level) = t$: v = 5: COLOR 155: GOSUB centre
|
||||
GOSUB delay: GOSUB delay
|
||||
|
||||
FOR r = 1 TO aliens
|
||||
INPUT #1, alienx!(r)
|
||||
INPUT #1, alieny!(r)
|
||||
INPUT #1, alienmove(r)
|
||||
INPUT #1, aliengrap(r)
|
||||
INPUT #1, alienspeed!(r)
|
||||
IF alienmove(r) = 1 THEN alieny!(r) = alieny!(r) - 2
|
||||
IF alienmove(r) <> 1 THEN alieny!(r) = alieny!(r) - 1
|
||||
aliengrap(r) = aliengrap(r) - 1
|
||||
NEXT r
|
||||
FOR r = 1 TO 8
|
||||
INPUT #1, floor(r)
|
||||
NEXT r
|
||||
CLOSE #1
|
||||
land = floor(1)
|
||||
|
||||
RETURN
|
||||
|
||||
REM -Routine to load and grab all sprite/mask etc data-
|
||||
|
||||
grabsprites:
|
||||
FOR howmany = 1 TO graphics
|
||||
fa$ = STR$(howmany) + ".spr"
|
||||
fb$ = RIGHT$(fa$, LEN(fa$) - 1)
|
||||
f$ = ".\data\" + fb$
|
||||
OPEN f$ FOR INPUT AS #1
|
||||
FOR x = 1 TO 10
|
||||
FOR Y = 1 TO 10
|
||||
INPUT #1, grid(x, Y): PSET (x, Y), grid(x, Y)
|
||||
NEXT Y
|
||||
NEXT x
|
||||
CLOSE #1
|
||||
GET (1, 1)-(10, 10), sprite(size, spriteno)
|
||||
IF howmany = 1 THEN GET (1, 1)-(10, 10), greensprite()
|
||||
FOR x = 1 TO 10
|
||||
FOR Y = 1 TO 10
|
||||
IF POINT(x, Y) = 0 THEN PSET (x, Y), 255
|
||||
NEXT Y
|
||||
NEXT x
|
||||
GET (1, 1)-(10, 10), spritemask(size, spriteno)
|
||||
IF howmany = 1 THEN GET (1, 1)-(10, 10), greenmask()
|
||||
spriteno = spriteno + 1
|
||||
NEXT howmany
|
||||
CLS
|
||||
RETURN
|
||||
|
||||
REM -Routine to load pics (Thanks DUDE !)
|
||||
|
||||
picture:
|
||||
|
||||
FOR a% = 0 TO 7: shiftout%(8 - a%) = 2 ^ a%: NEXT a%
|
||||
FOR a% = 0 TO 11: powersof2(a%) = 2 ^ a%: NEXT a%
|
||||
OPEN pic$ FOR BINARY AS #1
|
||||
pic$ = " ": GET #1, , pic$
|
||||
GET #1, , TotalX: GET #1, , TotalY: GOSUB GetByte
|
||||
NumColors = 2 ^ ((a% AND 7) + 1): nopalette = (a% AND 128) = 0
|
||||
GOSUB GetByte: Background = a%
|
||||
GOSUB GetByte: IF a% <> 0 THEN PRINT "Bad screen descriptor.": END
|
||||
IF nopalette = 0 THEN p$ = SPACE$(NumColors * 3): GET #1, , p$
|
||||
DO
|
||||
GOSUB GetByte
|
||||
IF a% = 44 THEN
|
||||
EXIT DO
|
||||
ELSEIF a% <> 33 THEN
|
||||
PRINT "Unknown extension type.": END
|
||||
END IF
|
||||
GOSUB GetByte
|
||||
DO: GOSUB GetByte: pic$ = SPACE$(a%): GET #1, , pic$: LOOP UNTIL a% = 0
|
||||
LOOP
|
||||
GET #1, , XStart: GET #1, , YStart: GET #1, , XLength: GET #1, , YLength
|
||||
XEnd = XStart + XLength: YEnd = YStart + YLength: GOSUB GetByte
|
||||
IF a% AND 128 THEN PRINT "Can't handle local colormaps.": END
|
||||
Interlaced = a% AND 64: PassNumber = 0: PassStep = 8
|
||||
GOSUB GetByte
|
||||
ClearCode = 2 ^ a%
|
||||
EOSCode = ClearCode + 1
|
||||
FirstCode = ClearCode + 2: NextCode = FirstCode
|
||||
StartCodeSize = a% + 1: CodeSize = StartCodeSize
|
||||
StartMaxCode = 2 ^ (a% + 1) - 1: MaxCode = StartMaxCode
|
||||
|
||||
BitsIn = 0: BlockSize = 0: BlockPointer = 1
|
||||
x% = XStart: Y% = YStart: Ybase = Y% * 320&
|
||||
|
||||
SCREEN 13: DEF SEG = &HA000
|
||||
IF nopalette = 0 THEN
|
||||
OUT &H3C7, 0: OUT &H3C8, 0
|
||||
FOR a% = 1 TO NumColors * 3: OUT &H3C9, ASC(MID$(p$, a%, 1)) \ 4: NEXT a%
|
||||
END IF
|
||||
LINE (0, 0)-(319, 199), Background, BF
|
||||
DO
|
||||
GOSUB GetCode
|
||||
IF Code <> EOSCode THEN
|
||||
IF Code = ClearCode THEN
|
||||
NextCode = FirstCode
|
||||
CodeSize = StartCodeSize
|
||||
MaxCode = StartMaxCode
|
||||
GOSUB GetCode
|
||||
CurCode = Code: LastCode = Code: LastPixel = Code
|
||||
IF x% < 320 THEN POKE x% + Ybase, LastPixel
|
||||
x% = x% + 1: IF x% = XEnd THEN GOSUB NextScanLine
|
||||
ELSE
|
||||
CurCode = Code: StackPointer = 0
|
||||
IF Code > NextCode THEN EXIT DO
|
||||
IF Code = NextCode THEN
|
||||
CurCode = LastCode
|
||||
OutStack(StackPointer) = LastPixel
|
||||
StackPointer = StackPointer + 1
|
||||
END IF
|
||||
|
||||
DO WHILE CurCode >= FirstCode
|
||||
OutStack(StackPointer) = Suffix(CurCode)
|
||||
StackPointer = StackPointer + 1
|
||||
CurCode = Prefix(CurCode)
|
||||
LOOP
|
||||
|
||||
LastPixel = CurCode
|
||||
IF x% < 320 THEN POKE x% + Ybase, LastPixel
|
||||
x% = x% + 1: IF x% = XEnd THEN GOSUB NextScanLine
|
||||
|
||||
FOR a% = StackPointer - 1 TO 0 STEP -1
|
||||
IF x% < 320 THEN POKE x% + Ybase, OutStack(a%)
|
||||
x% = x% + 1: IF x% = XEnd THEN GOSUB NextScanLine
|
||||
NEXT a%
|
||||
|
||||
IF NextCode < 4096 THEN
|
||||
Prefix(NextCode) = LastCode
|
||||
Suffix(NextCode) = LastPixel
|
||||
NextCode = NextCode + 1
|
||||
IF NextCode > MaxCode AND CodeSize < 12 THEN
|
||||
CodeSize = CodeSize + 1
|
||||
MaxCode = MaxCode * 2 + 1
|
||||
END IF
|
||||
END IF
|
||||
LastCode = Code
|
||||
END IF
|
||||
END IF
|
||||
LOOP UNTIL doneflag OR Code = EOSCode
|
||||
|
||||
|
||||
|
||||
CLOSE #1
|
||||
doneflag = 0
|
||||
RETURN
|
||||
|
||||
|
||||
GetByte: pic$ = " ": GET #1, , pic$: a% = ASC(pic$): RETURN
|
||||
|
||||
NextScanLine:
|
||||
IF Interlaced THEN
|
||||
Y% = Y% + PassStep
|
||||
IF Y% >= YEnd THEN
|
||||
PassNumber = PassNumber + 1
|
||||
SELECT CASE PassNumber
|
||||
CASE 1: Y% = 4: PassStep = 8
|
||||
CASE 2: Y% = 2: PassStep = 4
|
||||
CASE 3: Y% = 1: PassStep = 2
|
||||
END SELECT
|
||||
END IF
|
||||
ELSE
|
||||
Y% = Y% + 1
|
||||
END IF
|
||||
x% = XStart: Ybase = Y% * 320&: doneflag = Y% > 199
|
||||
RETURN
|
||||
GetCode:
|
||||
IF BitsIn = 0 THEN GOSUB ReadBufferedByte: LastChar = a%: BitsIn = 8
|
||||
WorkCode = LastChar \ shiftout%(BitsIn)
|
||||
DO WHILE CodeSize > BitsIn
|
||||
GOSUB ReadBufferedByte: LastChar = a%
|
||||
WorkCode = WorkCode OR LastChar * powersof2(BitsIn)
|
||||
BitsIn = BitsIn + 8
|
||||
LOOP
|
||||
BitsIn = BitsIn - CodeSize
|
||||
Code = WorkCode AND MaxCode
|
||||
RETURN
|
||||
ReadBufferedByte:
|
||||
IF BlockPointer > BlockSize THEN
|
||||
GOSUB GetByte: BlockSize = a%
|
||||
pic$ = SPACE$(BlockSize): GET #1, , pic$
|
||||
BlockPointer = 1
|
||||
END IF
|
||||
a% = ASC(MID$(pic$, BlockPointer, 1)): BlockPointer = BlockPointer + 1
|
||||
RETURN
|
||||
|
||||
|
||||
REM - I Guess this is the end (FOR NOW!)
|
||||
|
||||
|
||||
|
||||
SUB playsfx (sfx$)
|
||||
|
||||
chan = VAL(MID$(sfx$, 61, 4))
|
||||
FOR in = 1 TO 60 STEP 4
|
||||
reg$ = MID$(c$(chan), in, 4): reg = VAL(reg$)
|
||||
dat$ = MID$(sfx$, in, 4): dat = VAL(dat$)
|
||||
OUT &H388, reg: FOR i1 = 1 TO 6: p = INP(&H388): NEXT
|
||||
OUT &H389, dat: FOR i1 = 1 TO 35: p = INP(&H388): NEXT
|
||||
NEXT
|
||||
|
||||
END SUB
|
||||
|
100
tests/qbasic_testcases/pete/booger/data/1.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/1.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
26
|
||||
26
|
||||
26
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
20
|
||||
8
|
||||
8
|
||||
26
|
||||
1
|
||||
1
|
||||
10
|
||||
4
|
||||
4
|
||||
20
|
||||
20
|
||||
8
|
||||
8
|
||||
26
|
||||
1
|
||||
10
|
||||
10
|
||||
4
|
||||
4
|
||||
9
|
||||
20
|
||||
20
|
||||
20
|
||||
0
|
||||
1
|
||||
65
|
||||
65
|
||||
0
|
||||
4
|
||||
9
|
||||
9
|
||||
9
|
||||
20
|
||||
0
|
||||
0
|
||||
65
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
20
|
||||
9
|
||||
20
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
65
|
||||
0
|
||||
0
|
||||
20
|
||||
20
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
20
|
||||
20
|
||||
26
|
||||
26
|
||||
26
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
20
|
||||
20
|
||||
26
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
26
|
100
tests/qbasic_testcases/pete/booger/data/10.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/10.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
0
|
||||
0
|
||||
16
|
||||
19
|
||||
19
|
||||
19
|
||||
19
|
||||
19
|
||||
19
|
||||
16
|
||||
16
|
||||
19
|
||||
19
|
||||
17
|
||||
17
|
||||
17
|
||||
17
|
||||
17
|
||||
17
|
||||
19
|
||||
19
|
||||
19
|
||||
21
|
||||
4
|
||||
17
|
||||
14
|
||||
17
|
||||
10
|
||||
17
|
||||
21
|
||||
17
|
||||
21
|
||||
21
|
||||
4
|
||||
17
|
||||
14
|
||||
17
|
||||
10
|
||||
17
|
||||
21
|
||||
17
|
||||
21
|
||||
24
|
||||
17
|
||||
17
|
||||
17
|
||||
17
|
||||
17
|
||||
17
|
||||
24
|
||||
24
|
||||
24
|
||||
16
|
||||
24
|
||||
24
|
||||
24
|
||||
24
|
||||
24
|
||||
24
|
||||
16
|
||||
16
|
||||
24
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
16
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/11.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/11.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
65
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
26
|
||||
26
|
||||
26
|
||||
0
|
||||
65
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
20
|
||||
8
|
||||
8
|
||||
26
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
20
|
||||
20
|
||||
8
|
||||
8
|
||||
26
|
||||
1
|
||||
10
|
||||
10
|
||||
10
|
||||
4
|
||||
9
|
||||
20
|
||||
20
|
||||
20
|
||||
0
|
||||
1
|
||||
65
|
||||
65
|
||||
4
|
||||
4
|
||||
9
|
||||
9
|
||||
9
|
||||
20
|
||||
0
|
||||
1
|
||||
65
|
||||
65
|
||||
4
|
||||
4
|
||||
0
|
||||
20
|
||||
9
|
||||
20
|
||||
0
|
||||
1
|
||||
10
|
||||
10
|
||||
10
|
||||
4
|
||||
0
|
||||
0
|
||||
20
|
||||
20
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
20
|
||||
20
|
||||
26
|
||||
26
|
||||
26
|
||||
0
|
||||
0
|
||||
65
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
20
|
||||
20
|
||||
26
|
||||
0
|
||||
0
|
||||
65
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
26
|
100
tests/qbasic_testcases/pete/booger/data/12.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/12.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
1
|
||||
1
|
||||
10
|
||||
0
|
||||
0
|
||||
0
|
||||
7
|
||||
8
|
||||
8
|
||||
1
|
||||
1
|
||||
65
|
||||
65
|
||||
4
|
||||
4
|
||||
0
|
||||
7
|
||||
22
|
||||
8
|
||||
1
|
||||
10
|
||||
65
|
||||
65
|
||||
4
|
||||
4
|
||||
9
|
||||
7
|
||||
7
|
||||
28
|
||||
0
|
||||
0
|
||||
65
|
||||
4
|
||||
4
|
||||
9
|
||||
9
|
||||
20
|
||||
20
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
65
|
||||
4
|
||||
20
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
65
|
||||
0
|
||||
20
|
||||
20
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
28
|
||||
21
|
||||
22
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
28
|
||||
22
|
||||
22
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
28
|
||||
28
|
||||
28
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/13.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/13.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
15
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
15
|
||||
15
|
||||
4
|
||||
10
|
||||
4
|
||||
4
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
10
|
||||
10
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
10
|
||||
10
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
15
|
||||
0
|
||||
4
|
||||
10
|
||||
4
|
||||
4
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
15
|
||||
15
|
||||
4
|
||||
4
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/14.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/14.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
15
|
||||
15
|
||||
4
|
||||
4
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
15
|
||||
0
|
||||
4
|
||||
10
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
10
|
||||
10
|
||||
4
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
10
|
||||
10
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
15
|
||||
15
|
||||
4
|
||||
10
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
15
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/15.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/15.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
40
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
25
|
||||
25
|
||||
4
|
||||
40
|
||||
40
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
30
|
||||
30
|
||||
40
|
||||
40
|
||||
40
|
||||
0
|
||||
4
|
||||
4
|
||||
40
|
||||
40
|
||||
30
|
||||
30
|
||||
40
|
||||
40
|
||||
40
|
||||
0
|
||||
40
|
||||
40
|
||||
40
|
||||
40
|
||||
30
|
||||
30
|
||||
40
|
||||
40
|
||||
40
|
||||
0
|
||||
0
|
||||
0
|
||||
40
|
||||
40
|
||||
30
|
||||
30
|
||||
40
|
||||
40
|
||||
40
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
30
|
||||
30
|
||||
40
|
||||
40
|
||||
40
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
40
|
||||
40
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
40
|
100
tests/qbasic_testcases/pete/booger/data/16.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/16.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
9
|
||||
9
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
19
|
||||
15
|
||||
9
|
||||
0
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
9
|
||||
0
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
19
|
||||
15
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/17.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/17.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
9
|
||||
9
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
19
|
||||
15
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
9
|
||||
0
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
19
|
||||
15
|
||||
9
|
||||
0
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/18.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/18.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
13
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
14
|
||||
0
|
||||
0
|
||||
0
|
||||
13
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
5
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
5
|
||||
0
|
||||
20
|
||||
15
|
||||
0
|
||||
13
|
||||
5
|
||||
5
|
||||
9
|
||||
0
|
||||
0
|
||||
5
|
||||
15
|
||||
15
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
9
|
||||
0
|
||||
5
|
||||
15
|
||||
15
|
||||
0
|
||||
13
|
||||
5
|
||||
5
|
||||
9
|
||||
0
|
||||
0
|
||||
5
|
||||
15
|
||||
20
|
||||
0
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
0
|
||||
5
|
||||
0
|
||||
0
|
||||
0
|
||||
13
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
14
|
||||
0
|
||||
0
|
||||
0
|
||||
13
|
||||
13
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/19.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/19.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
14
|
||||
13
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
5
|
||||
0
|
||||
0
|
||||
13
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
5
|
||||
15
|
||||
20
|
||||
0
|
||||
13
|
||||
0
|
||||
0
|
||||
9
|
||||
0
|
||||
0
|
||||
5
|
||||
15
|
||||
15
|
||||
0
|
||||
13
|
||||
5
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
9
|
||||
0
|
||||
0
|
||||
5
|
||||
15
|
||||
15
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
9
|
||||
0
|
||||
5
|
||||
0
|
||||
20
|
||||
15
|
||||
0
|
||||
13
|
||||
5
|
||||
9
|
||||
0
|
||||
0
|
||||
5
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
13
|
||||
0
|
||||
0
|
||||
9
|
||||
0
|
||||
0
|
||||
14
|
||||
0
|
||||
0
|
||||
13
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
13
|
||||
13
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/2.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/2.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
7
|
||||
8
|
||||
8
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
20
|
||||
7
|
||||
8
|
||||
8
|
||||
1
|
||||
1
|
||||
10
|
||||
4
|
||||
4
|
||||
20
|
||||
20
|
||||
7
|
||||
7
|
||||
7
|
||||
1
|
||||
10
|
||||
10
|
||||
4
|
||||
4
|
||||
9
|
||||
20
|
||||
20
|
||||
20
|
||||
0
|
||||
1
|
||||
65
|
||||
65
|
||||
0
|
||||
4
|
||||
9
|
||||
9
|
||||
9
|
||||
20
|
||||
0
|
||||
0
|
||||
65
|
||||
0
|
||||
4
|
||||
0
|
||||
0
|
||||
20
|
||||
9
|
||||
20
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
65
|
||||
0
|
||||
0
|
||||
0
|
||||
20
|
||||
20
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
21
|
||||
20
|
||||
20
|
||||
7
|
||||
8
|
||||
8
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
20
|
||||
20
|
||||
8
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
7
|
||||
7
|
||||
7
|
100
tests/qbasic_testcases/pete/booger/data/20.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/20.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
16
|
||||
16
|
||||
14
|
||||
16
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
14
|
||||
14
|
||||
14
|
||||
16
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
9
|
||||
22
|
||||
14
|
||||
22
|
||||
23
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
15
|
||||
1
|
||||
23
|
||||
24
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
1
|
||||
1
|
||||
23
|
||||
24
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
1
|
||||
1
|
||||
23
|
||||
24
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
15
|
||||
1
|
||||
23
|
||||
24
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
9
|
||||
22
|
||||
23
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
22
|
||||
23
|
||||
23
|
||||
16
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
0
|
||||
22
|
||||
16
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/21.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/21.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
0
|
||||
22
|
||||
16
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
22
|
||||
23
|
||||
23
|
||||
16
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
9
|
||||
22
|
||||
23
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
0
|
||||
9
|
||||
15
|
||||
1
|
||||
23
|
||||
24
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
1
|
||||
1
|
||||
23
|
||||
24
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
1
|
||||
1
|
||||
23
|
||||
24
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
15
|
||||
1
|
||||
23
|
||||
24
|
||||
23
|
||||
23
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
9
|
||||
22
|
||||
14
|
||||
22
|
||||
23
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
9
|
||||
14
|
||||
14
|
||||
14
|
||||
16
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
16
|
||||
16
|
||||
16
|
||||
14
|
||||
16
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/22.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/22.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
65
|
||||
65
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
65
|
||||
65
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
15
|
||||
1
|
||||
10
|
||||
10
|
||||
10
|
||||
4
|
||||
4
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
1
|
||||
65
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
65
|
||||
0
|
||||
4
|
||||
4
|
||||
4
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
10
|
||||
10
|
||||
10
|
||||
4
|
||||
4
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
15
|
||||
65
|
||||
12
|
||||
4
|
||||
4
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
65
|
||||
65
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/23.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/23.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
33
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
0
|
||||
33
|
||||
0
|
||||
43
|
||||
43
|
||||
0
|
||||
15
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
43
|
||||
43
|
||||
14
|
||||
14
|
||||
43
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
43
|
||||
43
|
||||
14
|
||||
16
|
||||
14
|
||||
14
|
||||
0
|
||||
0
|
||||
0
|
||||
43
|
||||
14
|
||||
14
|
||||
14
|
||||
16
|
||||
16
|
||||
14
|
||||
0
|
||||
0
|
||||
0
|
||||
14
|
||||
14
|
||||
14
|
||||
14
|
||||
16
|
||||
16
|
||||
14
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
14
|
||||
14
|
||||
14
|
||||
16
|
||||
14
|
||||
14
|
||||
15
|
||||
15
|
||||
0
|
||||
15
|
||||
0
|
||||
14
|
||||
14
|
||||
14
|
||||
14
|
||||
14
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
0
|
||||
33
|
||||
0
|
||||
14
|
||||
14
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
33
|
||||
0
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/24.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/24.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
33
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
0
|
||||
33
|
||||
0
|
||||
43
|
||||
43
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
15
|
||||
0
|
||||
43
|
||||
43
|
||||
14
|
||||
14
|
||||
43
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
43
|
||||
14
|
||||
14
|
||||
16
|
||||
14
|
||||
14
|
||||
0
|
||||
0
|
||||
0
|
||||
43
|
||||
14
|
||||
14
|
||||
14
|
||||
16
|
||||
16
|
||||
14
|
||||
0
|
||||
0
|
||||
0
|
||||
14
|
||||
14
|
||||
14
|
||||
14
|
||||
16
|
||||
16
|
||||
14
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
14
|
||||
14
|
||||
14
|
||||
16
|
||||
14
|
||||
14
|
||||
15
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
14
|
||||
14
|
||||
14
|
||||
14
|
||||
14
|
||||
0
|
||||
15
|
||||
15
|
||||
0
|
||||
0
|
||||
33
|
||||
0
|
||||
14
|
||||
14
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
33
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/25.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/25.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
2
|
||||
0
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
2
|
||||
10
|
||||
2
|
||||
2
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
2
|
||||
10
|
||||
10
|
||||
2
|
||||
10
|
||||
10
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
2
|
||||
10
|
||||
2
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
2
|
||||
6
|
||||
2
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
2
|
||||
2
|
||||
6
|
||||
6
|
||||
2
|
||||
10
|
||||
10
|
||||
2
|
||||
10
|
||||
10
|
||||
10
|
||||
42
|
||||
42
|
||||
42
|
||||
2
|
||||
10
|
||||
10
|
||||
10
|
||||
2
|
||||
10
|
||||
10
|
||||
2
|
||||
2
|
||||
42
|
||||
2
|
||||
10
|
||||
2
|
||||
10
|
||||
10
|
||||
10
|
||||
2
|
||||
2
|
||||
0
|
||||
42
|
||||
2
|
||||
10
|
||||
10
|
||||
2
|
||||
2
|
||||
10
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
0
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
0
|
100
tests/qbasic_testcases/pete/booger/data/26.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/26.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
15
|
||||
15
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
8
|
||||
1
|
||||
15
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
8
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
8
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
8
|
||||
1
|
||||
15
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
8
|
||||
1
|
||||
15
|
||||
15
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
100
tests/qbasic_testcases/pete/booger/data/27.spr
Normal file
100
tests/qbasic_testcases/pete/booger/data/27.spr
Normal file
|
@ -0,0 +1,100 @@
|
|||
0
|
||||
0
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
8
|
||||
1
|
||||
15
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
8
|
||||
1
|
||||
15
|
||||
15
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
8
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
8
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
8
|
||||
8
|
||||
8
|
||||
1
|
||||
15
|
||||
15
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
15
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue