1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-09-16 02:43:59 +00:00
qb64/programs/samples/pete/beatdown/bdt.bas
SMcNeill 6e01fc8dce Altered string compare routines (<,<=,>,>=) so they don't give false results with CHR$(0).
Added new _STRCMP and _STRICMP commands for quick string comparisons.
Cleaned up QB64 to finish removing the QUI (quick user insert) code and folders.
Altered UCASE and LCASE routines to be faster in some situations for us.
2014-09-22 08:19:03 -04:00

523 lines
15 KiB
QBasic

' +--+ +---- + --+-- +--+ +-+ | | | |
' | + | | | | | + + + | | || |
' | + + + + | | | | | | | | | |
' +--+ +--- +---+ | | | | | | | | | | |
' | + | | | | | | | | | | | | ||
' | + | | | | | + + + | | | | ||
' +--+ +---- | | | +--+ +-+ +-+-+ | |
' 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