1
1
Fork 0
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:
Matthew Kilgore 2022-04-28 19:30:07 -04:00
parent b89e388c2f
commit 9ee89d6ff4
682 changed files with 201009 additions and 0 deletions

View file

@ -0,0 +1 @@
NOTE: These files are simply test cases, they do not include all the files necessary for them to run.

View 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

View 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

View 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

View 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

View 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

View 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

View 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>

View 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

File diff suppressed because it is too large Load diff

View 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

View 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

View 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

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Binary file not shown.

View 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

View 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 ," 囹ユヘムヘヘ模ネ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ハf囑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ハrfXク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 ," pLハナ囹L囹fppCppハpハハpfffハハpfCpハハ煖魔CC囹僅嚥幕Cfハミ気ハハC貿唸XヘヘヘヘfヘマLXハ貿ネ澆ハハXヘ面澂ヘナヘナrLaミ吠NヘfLヘミNLノゥヘャ澑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ハミハ啾ハノ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ミ寤ラPxノ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ハ許ヘ玉ミfCエ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ャu蛍嗽XPsノZPuナsトCZuル~n奴LネNネ}<7D>~N毯PLPゥLミzYミf遼ミソ。蝪枚riムノノマ懸ハfミ<66>NネネsャPηP。ネノ痊Nヘ「LLL狗ハ曲XネPfネpハ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囑記塹塋pCp玉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ネネPクミムノ啾ミ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ミ気pLL營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朴ハCCCpCpfpハ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ミハノ<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ハ。ワハpハノヘ模許Li豊面瀁末朴Cハハハpワ袁fXXXヘノX給C鞠LLa圍ハハfワョワpLp。ネLL綿ミfLPLネa緬ミノaLワf漫ヘ蛻N<E89BBB>P塰均門貿ノ曚ハ綿枹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ミヘトミ、ヒ玉ネヘLLLネ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ヘハ蚪ハワ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ハfrXp鞠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ハ蚪WfXrハ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嫦PuusNuu€PXミミ孰ネノ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囂給ハハpハハf瀁ハfpハppfハfCpXハハpワネNszLノヘヘfハ却僅猝pハfXfヘヘfヘXffユ咾蝟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ヘャヘ塹ヘ瀁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ヘマヘマfマヘ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ミrネ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ヘヘノYXヘ記欷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衽mffi模マ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凡pX・朦skャ"
DATA 4143935 ," 給pハ<70>ハハfハ玉ハヘハハハハハハハf瑯ハハC術f脚ハハpハハCC啾XP瀁面f衿XXXfヘヘヘ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曲笛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末pハ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ワネネヘハノ末f€L孟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句僅ハpハpャppr給ハfハpCハ玉fワハCCワハXハpハ。毀f幕許鞠pCハハ袰fYヘmヘマユYLヘfLヘヘハハ鞠ワワハワf喃ワ蕕Cf嚥fョハハ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睦pf也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記ミ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ヘpfハネノ袁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ハCミ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ミPワ裄}ハハハなネノノP猜rネノ<EFBE88>囲ワ。ハf<EFBE8A>"
DATA 863001 ,"f。ff壘fiaノpfョハ魔XXネハpワpfノfハ瀾貿<E780BE>紡ネ綿ヘ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裄珥ハハ砲Xfハ珥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ヘエミエ猩淤ノヘ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籾XLョ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ワ殱ハヘ猩N€X猩ノ|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猝澆ハハハハハハpハハハハハCハハCCハハハ術ハpハハハハpヘXヘヘYp術ハハワハ燒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ハ尚瀁Xmfママ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 ,"ミpLワ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 ," 猝ぬハ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ハfffハ面ハハ猩猝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ハ喃Y€mムハワヘハ澆ハハハハハハハハハハハハハ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ハXワfョハハハハハワ魔ワハC礁ぬハハ。ノ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ハハ模ハXハハハ玳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ヘfヘエユミヘネ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末ハ繭ヘfXrL模ヘXヘノLナLノyNpXハネXハ<58>N猩ヘ塰ネヘマネノrミネLノfヘfヘワマトエ巵瀁fハワワ猝ヘノfョ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術ハヘ囂緒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 ," CXハ{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ハハハハハpCヘヘハpハハハfハ瀘XXヘ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ハ猝C珥塹籾塋LLノャノ章燠末ハ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猝ハ珥ハワffヘ猝XハハハfハXワハCハ玳fワfワハハハC術ハハワ緒ハwハハハXェfXムェハハ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珥ff珥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 ," ハヘノヘ喃ハヘヘハ玳Xノ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面XヘヲハぬXXハハ猝ハハCハハハハヲdハXハfXXXrノハハナ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ワワハハハC袰ワ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 ," fハハワハノ咾ヘ瀁XハハハrハXハハfLmヘハハハハ賞。ハワワノ礁ハ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 ," 燠猝ハ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ヘネャヘヘネYCワワハ帽ワネfNNXL塰ャLネLfノ"
DATA 1048608 ," ヘ囹ワ猩ヘfpfナナXヘfハハハハハfハXXXfXXワCハハハハハ礁ハpハハハp礁Xf^XfaノハXノ礁XハハYX<58>豊fネ。<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嘯frもヘヘ瀁fX<66>ハfワwfX玳ワワハハハハCpワワハfハfワfハハXX^ヘXハハハハCRノワ緬L哭珀ヘモXLミャヘヘ址ノネネヘff面ハヘナネヘミ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ハ猩f猩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濆燠ハヲハハ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珥f珥X喃Xfハ圜ハハXワXワハpヘハワハ猝術ハハハハハ礁ハハCハXワfXヘmi叔修<E58F94>LノヘヘLLヘノネXノ籾faa喃ネネ猝塰LfpCハL猜XヘLNfNLネヘヘ塰f塋ヘ面ヘハX瀁ヘ猖ナL哢rNLヘワワdハハハハ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ハfヘヘ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猝珥ハハCCpハハハハハハヲハf蚰ハワCハハワCハハCCハョハXp猝XハfXXfヘヘX。珥ノヘハ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ヘハヘCワ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淤L€XLはfff緬ネaネネLLノミノ哭aノノネミfネネaLネヘ塹ヘヘノノa帽"
DATA 0 ," 瀁ハハハハハヘfXハハ玳ハハハョ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ハLヘ<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 ," 瀁ハハ濆ハ瀁ワXXCハハワハ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 ," 猝ハ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ノL€a~猖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緬ヘ綿Xヘ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ヘノ耗マLf渭ネネトハヘヘワ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 ," ハハハ猝ハハ珥猝ハハハハハハワfワョpハハCハハワハCヲCワハワハ賞ワハハハ醜fXfX㌶ハヲ^ハヘハハヘf喨モffノヘヘ塹ネfノヘfヘ豊fミネヘfLハfネXヘLf末LNLfヘf囹f猩ハ瀁ハXノヘ塰aL塋澑LLミYヘネネLエハiネffXネLCネネノLaミXヘミヘ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ヘヘ死㊦ヲハXfハ猩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ノ塰豊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ワハワCfp籾面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蠧YネLノネsネf猜ヘC姚ネネネ帽<EFBE88>Pノ淤a末LモマネノfpCネヘfpf淙ノヂ籾fネLf貿ワPfヘヘ猩ノL模ヘヘネpfハfワハハヘヘ壟ヘ猩aヘL味ヘfヘfヘ魔貿塹猖"

View 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)

View 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

View 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)

View 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

File diff suppressed because it is too large Load diff

View 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

View 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

View 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

File diff suppressed because one or more lines are too long

View 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

View 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

View 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

View 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

View 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

View 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

File diff suppressed because it is too large Load diff

View 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

View 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

Binary file not shown.

View 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

View file

@ -0,0 +1 @@
P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="

View 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

View 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

View 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

View 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

View 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

View 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>

View 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

View 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>

View 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

View 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

View 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

File diff suppressed because it is too large Load diff

View 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

View 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

Binary file not shown.

View 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

View 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

View 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

View 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

Binary file not shown.

View 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

View 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

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

File diff suppressed because it is too large Load diff

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View 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

View 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$ <> ""

View 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$ <> ""

View 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

View 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

View 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"

View 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

View 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

View 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>

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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