Author Topic: Tanks Remake  (Read 3417 times)

0 Members and 1 Guest are viewing this topic.

Offline Craz1000

  • Forum Regular
  • Posts: 111
  • I'm OK
    • View Profile
    • Craz1000.net
Tanks Remake
« on: March 03, 2019, 02:19:12 am »
This is a QB64 Remake of a Tank game I made back in 1997 that was based on QB-Gorrilas. I decided to port over and update, finished it 3 years ago but never got around to uploading it.

The MMO that is talked about in the end credits is pretty much 85% done when it was abandoned two years ago, just never got around to building the world on the server and a handful of mechanics were never put in.

https://archive.org/download/Tanks6/Tanks6.zip
« Last Edit: March 03, 2019, 02:26:29 am by Craz1000 »

Offline qb4ever

  • Newbie
  • Posts: 40
  • LOCATE 15,15: COLOR 14: PRINT "Hello World!"
    • View Profile
Re: Tanks Remake
« Reply #1 on: March 07, 2019, 10:20:09 am »
Hi Craz1000

My security system block download.

Can you post the code here ?

Offline Craz1000

  • Forum Regular
  • Posts: 111
  • I'm OK
    • View Profile
    • Craz1000.net
Re: Tanks Remake
« Reply #2 on: March 07, 2019, 06:52:45 pm »
i can however it requires some WAV and MP3 files and artwork. i can post the artwork but the audio files are too large

Code: QB64: [Select]
  1. '====================================================================
  2. '========================= TANKS6 HEADER ============================
  3. '====================================================================
  4. '= TANKS6 (2016)
  5. '=
  6. '= ENGINE v7.0.1
  7. '=
  8. '= AUDIO INFO:
  9. '= SOUND-ENGINE v2.0
  10. '= JUKEBOX v2.0
  11. '=
  12. '= CREATED WITH QB64 AND COMPILED
  13. '=
  14. '====================================================================
  15. '====================================================================
  16. TYPE PLAYER
  17.     SHIELD AS LONG
  18.     NAME AS STRING * 10
  19.     CASH AS DOUBLE
  20.     COLORR AS INTEGER
  21.     COLORB AS INTEGER
  22.     COLORG AS INTEGER
  23.     WINS AS INTEGER
  24.     POSX AS INTEGER
  25.     POSY AS INTEGER
  26.     HEALTH AS INTEGER
  27.     OLDY AS INTEGER
  28.  
  29. TYPE TERRAIN
  30.     SOILR AS INTEGER
  31.     SOILG AS INTEGER
  32.     SOILB AS INTEGER
  33.     TOPR AS INTEGER
  34.     TOPG AS INTEGER
  35.     TOPB AS INTEGER
  36.  
  37.     POSX AS DOUBLE
  38.     POSY AS DOUBLE
  39.     ACTIVE AS INTEGER
  40.     ANGLE AS INTEGER
  41.     VELOCITY AS INTEGER
  42.     WEAPON AS INTEGER
  43.     YMOD AS DOUBLE
  44.     XMOD AS DOUBLE
  45.     OLDCOL AS LONG
  46.  
  47. DIM SHARED AIARRAY(7)
  48. DIM SHARED DELAYTIME
  49. DIM SHARED ROUNDS
  50. DIM SHARED ROUND
  51. DIM SHARED VERSION$
  52. DIM SHARED PLAYER1 AS PLAYER
  53. DIM SHARED PLAYER2 AS PLAYER
  54. DIM SHARED GRAVITY
  55. DIM SHARED INTEREST
  56. DIM SHARED REZX
  57. DIM SHARED REZY
  58. DIM SHARED LAND AS TERRAIN
  59. DIM SHARED BACKGROUND&
  60. DIM SHARED FOREGROUND&
  61. DIM SHARED BUFFERSCREEN&
  62. DIM SHARED TERRAININFO&
  63. DIM SHARED DISPLAY&
  64. DIM SHARED VFX&
  65. DIM SHARED WIND
  66. DIM SHARED PROJECTILE(4) AS SHELL
  67. DIM SHARED EXPLOSIONR
  68. DIM SHARED PROJECTILES
  69. DIM SHARED PLAYERTURN
  70. DIM SHARED GAMEOVER
  71. DIM SHARED HIGHPOINT
  72. DIM SHARED PLAYER1WEAP(9) AS INTEGER
  73. DIM SHARED PLAYER2WEAP(9) AS INTEGER
  74. DIM SHARED BGM&
  75. DIM SHARED SFX&
  76. DIM SHARED MIRVACTIVE
  77. DIM SHARED VERBOSE
  78.  
  79. _TITLE "Tanks6"
  80.     CLEAR
  81.     CALL ENGINESTART
  82.     VERBOSE = 0
  83.     PLAYER1.COLORR = 255
  84.     PLAYER2.COLORR = 150
  85.     PLAYER2.COLORB = 200
  86.  
  87.     CALL STARTMENU
  88.     _SNDSTOP BGM&
  89.     _SNDCLOSE BGM&
  90.  
  91.     CALL INITENGINE
  92.     CALL MAINENGINE
  93.     LOCATE 1, 1
  94.     PRINT PLAYER1.NAME; " SCORE:"; PLAYER1.WINS
  95.     PRINT PLAYER2.NAME; " SCORE:"; PLAYER2.WINS
  96.     PRINT
  97.     IF PLAYER1.WINS > PLAYER2.WINS THEN
  98.         PRINT PLAYER1.NAME; " WINS!!!"
  99.     ELSEIF PLAYER2.WINS > PLAYER1.WINS THEN
  100.         PRINT PLAYER2.NAME; " WINS!!!"
  101.     ELSE
  102.         PRINT "DRAW!!!"
  103.     END IF
  104.     IF PLAYER1.WINS = 0 OR PLAYER2.WINS = 0 THEN CALL SOUNDBOARD("HUMILIATION", 0)
  105.     SLEEP 5
  106.  
  107. SUB MAINENGINE
  108.     CALL AI("INIT")
  109.     GAMEOVER = 0
  110.     PROJECTILES = 1
  111.     PLAYERTURN = 1
  112.     ROUND = 1
  113.     PLAYER1.WINS = 0
  114.     PLAYER2.WINS = 0
  115.     DO
  116.         DO
  117.             CALL BUILDLEVEL
  118.             _DEST DISPLAY&
  119.             LOCATE 1, 1
  120.             PRINT "USE THIS STAGE (Y/N)?"
  121.             DO
  122.                 I$ = UCASE$(INKEY$)
  123.             LOOP UNTIL I$ = "Y" OR I$ = "N"
  124.         LOOP UNTIL I$ = "Y"
  125.         CALL ASSEMBLEDISPLAY
  126.         CALL RANDOMIZETANKPOS
  127.         CALL DRAWTANKS
  128.         CALL JUKEBOX("FIGHT")
  129.         PLAYER1.HEALTH = 10
  130.         PLAYER2.HEALTH = 10
  131.         DO
  132.             IF _SNDPLAYING(BGM&) = 0 THEN CALL JUKEBOX("FIGHT")
  133.             CALL SETWIND
  134.             CALL GETFIRESPECS
  135.             CALL FIRE
  136.             IF PROJECTILE(1).WEAPON <> 6 THEN CALL DROPSOIL
  137.             CALL UPDATETANKPOS
  138.             IF VERBOSE = 1 THEN SLEEP
  139.             CALL CHECKSHIELD
  140.             CALL ASSEMBLEDISPLAY
  141.             CALL DRAWTANKS
  142.  
  143.             IF PLAYERTURN = 1 THEN
  144.                 PLAYERTURN = 2
  145.             ELSEIF PLAYERTURN = 2 THEN
  146.                 PLAYERTURN = 1
  147.             END IF
  148.             CALL ADDCASH("ROUND")
  149.         LOOP UNTIL PLAYERTURN > 2
  150.  
  151.         IF PLAYERTURN = 3 THEN
  152.             PROJECTILE(1).WEAPON = 99
  153.             CALL EXPLOSION(PLAYER2.POSX, PLAYER2.POSY)
  154.             PLAYER1.WINS = PLAYER1.WINS + 1
  155.         ELSEIF PLAYERTURN = 4 THEN
  156.             PROJECTILE(1).WEAPON = 99
  157.             CALL EXPLOSION(PLAYER1.POSX, PLAYER1.POSY)
  158.             PLAYER2.WINS = PLAYER2.WINS + 1
  159.         END IF
  160.  
  161.         ROUND = ROUND + 1
  162.         IF ROUND = ROUNDS + 1 THEN
  163.             GAMEOVER = 1
  164.             _SNDSTOP (BGM&)
  165.             _SNDCLOSE (BGM&)
  166.         END IF
  167.         CALL ASSEMBLEDISPLAY
  168.         SLEEP 3
  169.         IF GAMEOVER = 0 THEN
  170.             CALL ADDCASH("BONUS")
  171.             PLAYERTURN = 1
  172.             PLAYER1.OLDY = 0
  173.             PLAYER2.OLDY = 0
  174.             _SNDSTOP BGM&
  175.             _SNDCLOSE BGM&
  176.             CALL JUKEBOX("BUY")
  177.             CALL BUYSCREEN(1)
  178.             IF LEFT$(UCASE$(PLAYER2.NAME), 8) <> "COMPUTER" AND GAMEOVER = 0 THEN CALL BUYSCREEN(2)
  179.             SCREEN DISPLAY&
  180.             _SNDSTOP BGM&
  181.             _SNDCLOSE BGM&
  182.             PLAYER1.SHIELD = 0
  183.             PLAYER2.SHIELD = 0
  184.             CLS
  185.         END IF
  186.     LOOP UNTIL GAMEOVER = 1
  187.  
  188.  
  189. SUB ADDCASH (STAGE$)
  190.     IF STAGE$ = "ROUND" THEN
  191.         PLAYER1.CASH = PLAYER1.CASH + 100
  192.         PLAYER2.CASH = PLAYER2.CASH + 100
  193.     ELSEIF STAGE$ = "BONUS" THEN
  194.         IF PLAYERTURN = 3 THEN PLAYER1.CASH = INT(PLAYER1.CASH * INTEREST)
  195.         IF PLAYERTURN = 4 THEN PLAYER2.CASH = INT(PLAYER2.CASH * INTEREST)
  196.     END IF
  197.  
  198.  
  199. SUB MELTDIRT (TURN)
  200.     IF TURN = 1 THEN
  201.         _DEST TERRAININFO&
  202.         LINE (PLAYER1.POSX, PLAYER1.POSY)-(PLAYER1.POSX + 100, PLAYER1.POSY - 100), _RGB(0, 0, 0), BF
  203.         _CLEARCOLOR _RGB(0, 0, 0)
  204.         _DEST FOREGROUND&
  205.         LINE (PLAYER1.POSX, PLAYER1.POSY)-(PLAYER1.POSX + 100, PLAYER1.POSY - 100), _RGB(0, 0, 0), BF
  206.         _CLEARCOLOR _RGB(0, 0, 0)
  207.     ELSEIF TURN = 2 THEN
  208.         _DEST TERRAININFO&
  209.         LINE (PLAYER2.POSX, PLAYER2.POSY)-(PLAYER2.POSX - 100, PLAYER2.POSY - 100), _RGB(0, 0, 0), BF
  210.         _CLEARCOLOR _RGB(0, 0, 0)
  211.         _DEST FOREGROUND&
  212.         LINE (PLAYER2.POSX, PLAYER2.POSY)-(PLAYER2.POSX - 100, PLAYER2.POSY - 100), _RGB(0, 0, 0), BF
  213.         _CLEARCOLOR _RGB(0, 0, 0)
  214.     END IF
  215.     _DEST DISPLAY&
  216.     CALL SOUNDBOARD("SP", 0)
  217.  
  218. SUB SETWIND
  219.     WIND = INT(RND * 4) + 1
  220.     WIND = WIND - 1
  221.     WIND = WIND * 10
  222.     WDIRECTION = INT(RND * 2) + 1
  223.     IF WDIRECTION = 2 THEN WIND = WIND - (WIND * 2)
  224.     LOCATE 55, 116: PRINT "WIND "; ABS(WIND);
  225.     IF WIND > 0 THEN PRINT CHR$(26)
  226.     IF WIND < 0 THEN PRINT CHR$(27)
  227.     IF WIND = 0 THEN PRINT CHR$(29)
  228.  
  229. SUB CHECKSHIELD
  230.     IF PLAYER1.SHIELD > 0 OR PLAYER2.SHIELD > 0 THEN
  231.         _DEST VFX&
  232.         CLS
  233.  
  234.         IF PLAYER1.SHIELD > 0 THEN
  235.             FOR R = 1 TO INT((PLAYER1.SHIELD / 10) + 2)
  236.                 CIRCLE (PLAYER1.POSX + 5, PLAYER1.POSY + 2), R + 30, _RGB(255, 255, 255)
  237.             NEXT R
  238.         ELSEIF PLAYER1.SHIELD <= 0 THEN
  239.             FOR R = 1 TO 45
  240.                 CIRCLE (PLAYER1.POSX + 5, PLAYER1.POSY + 2), R, _RGB(0, 0, 0)
  241.             NEXT R
  242.         END IF
  243.  
  244.         IF PLAYER2.SHIELD > 0 THEN
  245.             FOR R = 1 TO INT(PLAYER2.SHIELD / 10)
  246.                 CIRCLE (PLAYER2.POSX + 5, PLAYER2.POSY + 2), R + 30, _RGB(254, 254, 255)
  247.             NEXT R
  248.         ELSEIF PLAYER2.SHIELD <= 0 THEN
  249.             FOR R = 1 TO 45
  250.                 CIRCLE (PLAYER2.POSX + 5, PLAYER2.POSY + 2), R, _RGB(0, 0, 0)
  251.             NEXT R
  252.         END IF
  253.  
  254.         IF PLAYERTURN > 3 THEN CLS
  255.         _CLEARCOLOR _RGB(0, 0, 0)
  256.         _DEST DISPLAY&
  257.     END IF
  258.  
  259. SUB BUYSCREEN (SCREENSELECT)
  260.     CLS
  261.     DO
  262.         IF SCREENSELECT = 1 THEN
  263.             CLS
  264.             PRINT "X - END GAME"
  265.             PRINT
  266.             PRINT "0 - DONE"
  267.             PRINT
  268.             PRINT "MATCHES LEFT:"; ROUNDS - ROUND + 1
  269.             PRINT
  270.             PRINT "1 - HEAVY SHELL       5 FOR $300,  YOU HAVE -"; PLAYER1WEAP(1)
  271.             PRINT "2 - BUNKER BUSTER     5 FOR $600,  YOU HAVE -"; PLAYER1WEAP(2)
  272.             PRINT "3 - CARPET BOMB       5 FOR $800,  YOU HAVE -"; PLAYER1WEAP(3)
  273.             PRINT "4 - HEAVY CARPET BOMB 5 FOR $1000, YOU HAVE -"; PLAYER1WEAP(4)
  274.             PRINT "5 - NUKE              5 FOR $1500, YOU HAVE -"; PLAYER1WEAP(5)
  275.             PRINT "6 - DIRT PILE         5 FOR $800,  YOU HAVE -"; PLAYER1WEAP(6)
  276.             PRINT "7 - MIRV              5 FOR $1500, YOU HAVE -"; PLAYER1WEAP(7)
  277.             PRINT "8 - DIRT MELTER       5 FOR $300,  YOU HAVE -"; PLAYER1WEAP(8)
  278.             PRINT "9 - SHIELD            1 FOR $1000, YOU HAVE -"; PLAYER1WEAP(9)
  279.             PRINT
  280.             PRINT "YOU HAVE:"; PLAYER1.CASH
  281.         ELSEIF SCREENSELECT = 2 THEN
  282.             CLS
  283.             PRINT "X - END GAME"
  284.             PRINT
  285.             PRINT "0 - DONE"
  286.             PRINT
  287.             PRINT "MATCHES LEFT:"; ROUNDS - ROUND + 1
  288.             PRINT
  289.             PRINT "1 - HEAVY SHELL       5 FOR $300,  YOU HAVE -"; PLAYER2WEAP(1)
  290.             PRINT "2 - BUNKER BUSTER     5 FOR $600,  YOU HAVE -"; PLAYER2WEAP(2)
  291.             PRINT "3 - CARPET BOMB       5 FOR $800,  YOU HAVE -"; PLAYER2WEAP(3)
  292.             PRINT "4 - HEAVY CARPET BOMB 5 FOR $1000, YOU HAVE -"; PLAYER2WEAP(4)
  293.             PRINT "5 - NUKE              5 FOR $1500, YOU HAVE -"; PLAYER2WEAP(5)
  294.             PRINT "6 - DIRT PILE         5 FOR $800,  YOU HAVE -"; PLAYER2WEAP(6)
  295.             PRINT "7 - MIRV              5 FOR $1500, YOU HAVE -"; PLAYER2WEAP(7)
  296.             PRINT "8 - DIRT MELTER       5 FOR $300,  YOU HAVE -"; PLAYER2WEAP(8)
  297.             PRINT "9 - SHIELD            1 FOR $1000, YOU HAVE -"; PLAYER2WEAP(9)
  298.             PRINT
  299.             PRINT "YOU HAVE:"; PLAYER2.CASH
  300.         END IF
  301.  
  302.         DO
  303.             I$ = UCASE$(INKEY$)
  304.         LOOP UNTIL I$ <> ""
  305.  
  306.         IF I$ = "0" THEN
  307.             CALL SOUNDBOARD("EXITBUY", 0)
  308.         ELSEIF SCREENSELECT = 1 THEN
  309.             IF I$ = "1" AND PLAYER1.CASH >= 300 THEN PLAYER1.CASH = PLAYER1.CASH - 300: PLAYER1WEAP(1) = PLAYER1WEAP(1) + 5: CALL SOUNDBOARD("BUY", 0)
  310.             IF I$ = "2" AND PLAYER1.CASH >= 600 THEN PLAYER1.CASH = PLAYER1.CASH - 600: PLAYER1WEAP(2) = PLAYER1WEAP(2) + 5: CALL SOUNDBOARD("BUY", 0)
  311.             IF I$ = "3" AND PLAYER1.CASH >= 800 THEN PLAYER1.CASH = PLAYER1.CASH - 800: PLAYER1WEAP(3) = PLAYER1WEAP(3) + 5: CALL SOUNDBOARD("BUY", 0)
  312.             IF I$ = "4" AND PLAYER1.CASH >= 1000 THEN PLAYER1.CASH = PLAYER1.CASH - 1000: PLAYER1WEAP(4) = PLAYER1WEAP(4) + 5: CALL SOUNDBOARD("BUY", 0)
  313.             IF I$ = "5" AND PLAYER1.CASH >= 1500 THEN PLAYER1.CASH = PLAYER1.CASH - 1500: PLAYER1WEAP(5) = PLAYER1WEAP(5) + 5: CALL SOUNDBOARD("BUY", 0)
  314.             IF I$ = "6" AND PLAYER1.CASH >= 800 THEN PLAYER1.CASH = PLAYER1.CASH - 800: PLAYER1WEAP(6) = PLAYER1WEAP(6) + 5: CALL SOUNDBOARD("BUY", 0)
  315.             IF I$ = "7" AND PLAYER1.CASH >= 500 THEN PLAYER1.CASH = PLAYER1.CASH - 1500: PLAYER1WEAP(7) = PLAYER1WEAP(7) + 5: CALL SOUNDBOARD("BUY", 0)
  316.             IF I$ = "8" AND PLAYER1.CASH >= 300 THEN PLAYER1.CASH = PLAYER1.CASH - 300: PLAYER1WEAP(8) = PLAYER1WEAP(8) + 5: CALL SOUNDBOARD("BUY", 0)
  317.             IF I$ = "9" AND PLAYER1.CASH >= 1000 THEN PLAYER1.CASH = PLAYER1.CASH - 1000: PLAYER1WEAP(9) = PLAYER1WEAP(9) + 1: CALL SOUNDBOARD("BUY", 0)
  318.             IF I$ = "X" THEN GAMEOVER = 1: I$ = "0"
  319.         ELSEIF SCREENSELECT = 2 THEN
  320.             IF I$ = "1" AND PLAYER2.CASH >= 300 THEN PLAYER2.CASH = PLAYER2.CASH - 300: PLAYER2WEAP(1) = PLAYER2WEAP(1) + 5: CALL SOUNDBOARD("BUY", 0)
  321.             IF I$ = "2" AND PLAYER2.CASH >= 600 THEN PLAYER2.CASH = PLAYER2.CASH - 600: PLAYER2WEAP(2) = PLAYER2WEAP(2) + 5: CALL SOUNDBOARD("BUY", 0)
  322.             IF I$ = "3" AND PLAYER2.CASH >= 800 THEN PLAYER2.CASH = PLAYER2.CASH - 800: PLAYER2WEAP(3) = PLAYER2WEAP(3) + 5: CALL SOUNDBOARD("BUY", 0)
  323.             IF I$ = "4" AND PLAYER2.CASH >= 1000 THEN PLAYER2.CASH = PLAYER2.CASH - 1000: PLAYER2WEAP(4) = PLAYER2WEAP(4) + 5: CALL SOUNDBOARD("BUY", 0)
  324.             IF I$ = "5" AND PLAYER2.CASH >= 1500 THEN PLAYER2.CASH = PLAYER2.CASH - 1500: PLAYER2WEAP(5) = PLAYER2WEAP(5) + 5: CALL SOUNDBOARD("BUY", 0)
  325.             IF I$ = "6" AND PLAYER2.CASH >= 800 THEN PLAYER2.CASH = PLAYER2.CASH - 800: PLAYER2WEAP(6) = PLAYER2WEAP(6) + 5: CALL SOUNDBOARD("BUY", 0)
  326.             IF I$ = "7" AND PLAYER2.CASH >= 500 THEN PLAYER2.CASH = PLAYER2.CASH - 1500: PLAYER2WEAP(7) = PLAYER2WEAP(7) + 5: CALL SOUNDBOARD("BUY", 0)
  327.             IF I$ = "8" AND PLAYER2.CASH >= 300 THEN PLAYER2.CASH = PLAYER2.CASH - 300: PLAYER2WEAP(8) = PLAYER2WEAP(8) + 5: CALL SOUNDBOARD("BUY", 0)
  328.             IF I$ = "9" AND PLAYER2.CASH >= 1000 THEN PLAYER2.CASH = PLAYER2.CASH - 1000: PLAYER2WEAP(9) = PLAYER2WEAP(9) + 1: CALL SOUNDBOARD("BUY", 0)
  329.             IF I$ = "X" THEN GAMEOVER = 1: I$ = "0"
  330.         END IF
  331.     LOOP UNTIL I$ = "0"
  332.     CLS
  333.  
  334.  
  335. SUB GETFIRESPECS
  336.     IF PLAYERTURN = 2 AND LEFT$(UCASE$(PLAYER2.NAME), 8) = "COMPUTER" THEN
  337.         CALL AI("FIRE")
  338.     ELSE
  339.         WEPDIS = 0
  340.         LOOPCONTROL$ = "LOOP"
  341.         LOCATE 1, 1
  342.         PRINT "PLAYER"; PLAYERTURN; "ENTER ANGLE:";: INPUT "", PROJECTILE(1).ANGLE
  343.         LOCATE 1, 1
  344.        4 PRINT "                                           "
  345.         LOCATE 1, 1
  346.         PRINT "PLAYER"; PLAYERTURN; "ENTER VELOCITY:";: INPUT "", PROJECTILE(1).VELOCITY
  347.         LOCATE 1, 1
  348.         PRINT "                                           "
  349.         LOCATE 1, 1
  350.         PRINT "WEAPON (1 - 9): NORMAL SHELL - UL"
  351.         IF PROJECTILE(1).ANGLE > 90 THEN PROJECTILE(1).ANGLE = 90
  352.  
  353.         DO
  354.             I$ = INKEY$
  355.             IF I$ >= CHR$(48) AND I$ <= CHR$(57) THEN
  356.                 WEPDIS = VAL(I$)
  357.  
  358.                 IF WEPDIS = 0 THEN
  359.                     WEPDIS$ = "NORMAL SHELL"
  360.                 ELSEIF WEPDIS = 1 THEN
  361.                     WEPDIS$ = "HEAVY SHELL"
  362.                 ELSEIF WEPDIS = 2 THEN
  363.                     WEPDIS$ = "BUNKER BUSTER"
  364.                 ELSEIF WEPDIS = 3 THEN
  365.                     WEPDIS$ = "CARPET BOMB"
  366.                 ELSEIF WEPDIS = 4 THEN
  367.                     WEPDIS$ = "HEAVY CARPET BOMB"
  368.                 ELSEIF WEPDIS = 5 THEN
  369.                     WEPDIS$ = "NUKE"
  370.                 ELSEIF WEPDIS = 6 THEN
  371.                     WEPDIS$ = "DIRT PILE"
  372.                 ELSEIF WEPDIS = 7 THEN
  373.                     WEPDIS$ = "MIRV"
  374.                 ELSEIF WEPDIS = 8 THEN
  375.                     WEPDIS$ = "DIRT MELTER"
  376.                 ELSEIF WEPDIS = 9 THEN
  377.                     WEPDIS$ = "SHIELD"
  378.                 END IF
  379.  
  380.                 LOCATE 1, 1
  381.                 PRINT "                                           "
  382.                 LOCATE 1, 1
  383.                 IF PLAYERTURN = 1 AND WEPDIS > 0 THEN
  384.                     PRINT " WEAPON (= / -): "; WEPDIS$; " -"; PLAYER1WEAP(WEPDIS)
  385.                 ELSEIF PLAYERTURN = 2 AND WEPDIS > 0 THEN
  386.                     PRINT " WEAPON (= / -): "; WEPDIS$; " -"; PLAYER2WEAP(WEPDIS)
  387.                 ELSEIF WEPDIS = 0 THEN
  388.                     PRINT " WEAPON (= / -): "; WEPDIS$; " - UL"
  389.                 END IF
  390.             END IF
  391.  
  392.             IF I$ = CHR$(32) THEN
  393.  
  394.                 IF PLAYERTURN = 1 AND PLAYER1WEAP(WEPDIS) > 0 THEN
  395.                     PLAYER1WEAP(WEPDIS) = PLAYER1WEAP(WEPDIS) - 1
  396.                     LOOPCONTROL$ = "EXIT"
  397.                     PROJECTILE(1).WEAPON = WEPDIS
  398.                 ELSEIF PLAYERTURN = 2 AND PLAYER2WEAP(WEPDIS) > 0 THEN
  399.                     PLAYER2WEAP(WEPDIS) = PLAYER2WEAP(WEPDIS) - 1
  400.                     LOOPCONTROL$ = "EXIT"
  401.                     PROJECTILE(1).WEAPON = WEPDIS
  402.                 ELSEIF WEPDIS = 0 THEN
  403.                     PROJECTILE(1).WEAPON = WEPDIS
  404.                     LOOPCONTROL$ = "EXIT"
  405.                 END IF
  406.             END IF
  407.         LOOP UNTIL LOOPCONTROL$ = "EXIT"
  408.         CALL ASSEMBLEDISPLAY
  409.     END IF
  410.     CALL DRAWTANKS
  411.  
  412.     IF PLAYERTURN = 1 THEN
  413.         PROJECTILE(1).POSX = PLAYER1.POSX
  414.         PROJECTILE(1).POSY = PLAYER1.POSY
  415.     END IF
  416.  
  417.     IF PLAYERTURN = 2 THEN
  418.         PROJECTILE(1).POSX = PLAYER2.POSX
  419.         PROJECTILE(1).POSY = PLAYER2.POSY
  420.     END IF
  421.  
  422.     PROJECTILE(1).ACTIVE = 1
  423.     PROJECTILES = 1
  424.  
  425.  
  426. SUB RANDOMIZETANKPOS
  427.     PLAYER1.POSX = INT(RND * (REZX * .4)) + 1
  428.     PLAYER2.POSX = INT(RND * (REZX * .4)) + (REZX * .5)
  429.     CALL UPDATETANKPOS
  430.  
  431. SUB UPDATETANKPOS
  432.     PLAYER1.POSY = FINDLAND(PLAYER1.POSX + 5, PLAYER1.OLDY)
  433.     PLAYER2.POSY = FINDLAND(PLAYER2.POSX + 5, PLAYER2.OLDY)
  434.     IF PLAYER1.OLDY = 0 THEN
  435.         PLAYER1.OLDY = PLAYER1.POSY
  436.     ELSEIF PLAYER1.POSY - PLAYER1.OLDY > PLAYER1.HEALTH THEN
  437.         PLAYERTURN = 4
  438.     END IF
  439.     IF PLAYER2.OLDY = 0 THEN
  440.         PLAYER2.OLDY = PLAYER2.POSY
  441.     ELSEIF PLAYER2.POSY - PLAYER2.OLDY > PLAYER2.HEALTH THEN
  442.         PLAYERTURN = 3
  443.     END IF
  444.  
  445.  
  446. SUB DROPSOIL
  447.     DIM DROPMEM&(1080)
  448.     _DEST TERRAININFO&
  449.  
  450.     FOR DROPS = 1 TO PROJECTILES
  451.         SOILX = INT(PROJECTILE(DROPS).POSX)
  452.         SOILY = INT(PROJECTILE(DROPS).POSY)
  453.         RANGE = EXPLOSIONR
  454.         IF PROJECTILE(1).WEAPON = 3 OR PROJECTILE(1).WEAPON = 4 THEN
  455.             SOILX = SOILX + (EXPLOSIONR * 1.5)
  456.             RANGE = RANGE * 2.5
  457.         END IF
  458.  
  459.         IF VERBOSE = 1 THEN
  460.             _DEST DISPLAY&
  461.             LINE (SOILX - 1, SOILY)-(SOILX + 1, SOILY + 1), _RGB(255, 0, 0), B
  462.             LINE (SOILX - RANGE - 1, SOILY)-(SOILX - RANGE - 1, 0), _RGB(0, 0, 255)
  463.             LINE (SOILX + RANGE + 1, SOILY)-(SOILX + RANGE + 1, 0), _RGB(0, 0, 255)
  464.             LINE (0, HIGHPOINT)-(REZX, HIGHPOINT), _RGB(0, 255, 0)
  465.             LINE (0, SOILY + EXPLOSIONR + 2)-(REZX, SOILY + EXPLOSIONR + 2), _RGB(0, 255, 0)
  466.             _DEST TERRAININFO&
  467.         END IF
  468.  
  469.         FOR DROPX = SOILX - RANGE - 1 TO SOILX + RANGE + 1
  470.             DROPSWITCH = 0
  471.             FOR DROPY = SOILY + EXPLOSIONR + 2 TO HIGHPOINT STEP -1
  472.  
  473.                 _SOURCE TERRAININFO&
  474.                 IF POINT(DROPX, DROPY) <> _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB) AND DROPSWITCH = 0 THEN
  475.                     LET DROPSWITCH = 1
  476.                     STARTY = DROPY
  477.                 END IF
  478.  
  479.                 IF POINT(DROPX, DROPY) = _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB) AND DROPSWITCH = 1 THEN DROPSWITCH = 2
  480.  
  481.                 IF POINT(DROPX, DROPY) = _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB) AND DROPSWITCH = 2 THEN
  482.                     PIXELS = PIXELS + 1
  483.                     _SOURCE FOREGROUND&
  484.                     DROPMEM&(PIXELS) = POINT(DROPX, DROPY)
  485.                     _SOURCE TERRAININFO&
  486.                 END IF
  487.  
  488.                 IF POINT(DROPX, DROPY) <> _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB) AND DROPSWITCH = 2 THEN
  489.                     DROPSWITCH = 3
  490.                     ENDY = DROPY
  491.                 END IF
  492.  
  493.                 IF DROPSWITCH = 3 THEN
  494.                     DROPSWITCH = 0
  495.                     FOR DRAWY = STARTY TO ENDY STEP -1
  496.                         IF PIXELS > DRAWN THEN
  497.                             DRAWN = DRAWN + 1
  498.                             _DEST TERRAININFO&
  499.                             LINE (DROPX, DRAWY)-(DROPX, DRAWY), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  500.                             _DEST FOREGROUND&
  501.                             LINE (DROPX, DRAWY)-(DROPX, DRAWY), _RGB(_RED32(DROPMEM&(DRAWN)), _GREEN32(DROPMEM&(DRAWN)), _BLUE32(DROPMEM&(DRAWN)))
  502.                         ELSE
  503.                             _DEST TERRAININFO&
  504.                             LINE (DROPX, DRAWY)-(DROPX, DRAWY), _RGB(0, 0, 0)
  505.                             _DEST FOREGROUND&
  506.                             LINE (DROPX, DRAWY)-(DROPX, DRAWY), _RGB(0, 0, 0)
  507.                         END IF
  508.                     NEXT DRAWY
  509.                     PIXELS = 0
  510.                     DRAWN = 0
  511.                 END IF
  512.             NEXT DROPY
  513.         NEXT DROPX
  514.     NEXT DROPS
  515.     ERASE DROPMEM&
  516.     _CLEARCOLOR _RGB(0, 0, 0)
  517.     _DEST DISPLAY&
  518.  
  519.  
  520.  
  521. SUB FIRE
  522.     IF PROJECTILE(1).WEAPON = 9 THEN
  523.         IF PLAYERTURN = 1 THEN
  524.             PLAYER1.SHIELD = 100
  525.             CALL SOUNDBOARD("SHIELD", 0)
  526.         ELSEIF PLAYERTURN = 2 THEN
  527.             PLAYER2.SHIELD = 100
  528.             CALL SOUNDBOARD("SHIELD", 0)
  529.         END IF
  530.         EXIT SUB
  531.     END IF
  532.  
  533.     IF PROJECTILE(1).WEAPON = 8 THEN
  534.         CALL MELTDIRT(PLAYERTURN)
  535.         EXIT SUB
  536.     END IF
  537.  
  538.     PROJECTILE(1).XMOD = ((90 - PROJECTILE(1).ANGLE) * PROJECTILE(1).VELOCITY) / (500)
  539.     PROJECTILE(1).YMOD = ((PROJECTILE(1).ANGLE * PROJECTILE(1).VELOCITY) * -1) / (500)
  540.     IF PLAYERTURN = 2 THEN
  541.         PROJECTILE(1).XMOD = PROJECTILE(1).XMOD * -1
  542.     END IF
  543.  
  544.     CALL SOUNDBOARD("SHOOT", 0)
  545.     DO
  546.         CALL ANIMATESHELL(1)
  547.         IF MIRVACTIVE = 1 THEN
  548.             CALL ANIMATESHELL(2)
  549.             CALL ANIMATESHELL(3)
  550.             CALL ANIMATESHELL(4)
  551.  
  552.             IF PROJECTILE(2).ACTIVE = 2 THEN CALL EXPLOSION(PROJECTILE(2).POSX, PROJECTILE(2).POSY): PROJECTILE(2).ACTIVE = 0
  553.             IF PROJECTILE(3).ACTIVE = 2 THEN CALL EXPLOSION(PROJECTILE(3).POSX, PROJECTILE(3).POSY): PROJECTILE(3).ACTIVE = 0
  554.             IF PROJECTILE(4).ACTIVE = 2 THEN CALL EXPLOSION(PROJECTILE(4).POSX, PROJECTILE(4).POSY): PROJECTILE(4).ACTIVE = 0
  555.             IF PROJECTILE(2).ACTIVE = 0 AND PROJECTILE(3).ACTIVE = 0 AND PROJECTILE(4).ACTIVE = 0 THEN MIRVACTIVE = 0
  556.         END IF
  557.     LOOP UNTIL PROJECTILE(1).ACTIVE <> 1 AND MIRVACTIVE = 0
  558.  
  559.     IF PROJECTILE(1).ACTIVE = 2 THEN
  560.         CALL EXPLOSION(PROJECTILE(1).POSX, PROJECTILE(1).POSY)
  561.         IF PROJECTILE(1).WEAPON = 3 OR PROJECTILE(1).WEAPON = 4 THEN
  562.             EXPLCOUNT = 0
  563.             TEMPPOSX = PROJECTILE(1).POSX
  564.             DO
  565.                 EXPLCOUNT = EXPLCOUNT + 1
  566.                 IF PLAYERTURN = 1 THEN PROJECTILE(1).POSX = PROJECTILE(1).POSX + EXPLOSIONR
  567.                 IF PLAYERTURN = 2 THEN PROJECTILE(1).POSX = PROJECTILE(1).POSX - EXPLOSIONR
  568.                 CALL EXPLOSION(PROJECTILE(1).POSX, PROJECTILE(1).POSY)
  569.             LOOP UNTIL EXPLCOUNT = 3
  570.             PROJECTILE(1).POSX = TEMPPOSX
  571.         END IF
  572.     END IF
  573.  
  574.  
  575.  
  576. SUB ANIMATESHELL (PN)
  577.     IF PROJECTILE(PN).ACTIVE = 1 THEN
  578.         IF MIRVACTIVE = 1 THEN
  579.             FOR DELAY = 1 TO DELAYTIME / 12: NEXT DELAY
  580.         ELSE
  581.             FOR DELAY = 1 TO DELAYTIME / 4: NEXT DELAY
  582.         END IF
  583.  
  584.         OLDX = PROJECTILE(PN).POSX
  585.         OLDY = PROJECTILE(PN).POSY
  586.         PROJECTILE(PN).XMOD = PROJECTILE(PN).XMOD + (WIND / 5000)
  587.         PROJECTILE(PN).POSX = PROJECTILE(PN).POSX + PROJECTILE(PN).XMOD
  588.         PROJECTILE(PN).YMOD = PROJECTILE(PN).YMOD + GRAVITY
  589.         PROJECTILE(PN).POSY = PROJECTILE(PN).POSY + PROJECTILE(PN).YMOD
  590.  
  591.         IF PROJECTILE(1).WEAPON = 7 AND OLDY < PROJECTILE(1).POSY AND MIRVACTIVE = 0 THEN
  592.             MIRVACTIVE = 1
  593.             PROJECTILES = 4
  594.             CALL SOUNDBOARD("MIRV", 0)
  595.             FOR TMP = 2 TO 4
  596.                 PROJECTILE(TMP).POSX = PROJECTILE(1).POSX
  597.                 PROJECTILE(TMP).POSY = PROJECTILE(1).POSY
  598.                 PROJECTILE(TMP).VELOCITY = PROJECTILE(1).VELOCITY
  599.                 PROJECTILE(TMP).ANGLE = PROJECTILE(1).ANGLE
  600.                 PROJECTILE(TMP).OLDCOL = PROJECTILE(1).OLDCOL
  601.                 PROJECTILE(TMP).WEAPON = 1
  602.                 PROJECTILE(TMP).ACTIVE = 1
  603.                 PROJECTILE(TMP).XMOD = PROJECTILE(1).XMOD + (TMP * .5)
  604.                 PROJECTILE(TMP).YMOD = PROJECTILE(1).YMOD
  605.             NEXT TMP
  606.             PROJECTILE(1).WEAPON = 1
  607.             IF VERBOSE = 1 THEN CIRCLE (PROJECTILE(1).POSX, PROJECTILE(1).POSY), 25, _RGB(0, 0, 255)
  608.             LINE (POSX, POSY)-(POSX + 1, POSY + 1), PROJECTILE(PN).OLDCOL, BF
  609.             EXIT SUB
  610.         END IF
  611.  
  612.         _SOURCE TERRAININFO&
  613.  
  614.         IF POINT(PROJECTILE(PN).POSX, PROJECTILE(PN).POSY) = _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB) THEN
  615.             PROJECTILE(PN).ACTIVE = 2
  616.             IF UCASE$(LEFT$(PLAYER2.NAME, 8)) = "COMPUTER" AND PLAYERTURN = 2 THEN CALL AI("UPDATE")
  617.         END IF
  618.         _SOURCE DISPLAY&
  619.         _DEST DISPLAY&
  620.  
  621.         IF PROJECTILE(PN).POSX > PLAYER2.POSX - 5 AND PROJECTILE(PN).POSX < PLAYER2.POSX + 5 AND PROJECTILE(PN).POSY > PLAYER2.POSY - 30 AND PROJECTILE(PN).POSY < PLAYER2.POSY AND PLAYERTURN = 1 THEN CALL SOUNDBOARD("WHIZZ", 0)
  622.         IF PROJECTILE(PN).POSX > PLAYER1.POSX - 5 AND PROJECTILE(PN).POSX < PLAYER1.POSX + 5 AND PROJECTILE(PN).POSY > PLAYER1.POSY - 30 AND PROJECTILE(PN).POSY < PLAYER1.POSY AND PLAYERTURN = 2 THEN CALL SOUNDBOARD("WHIZZ", 0)
  623.  
  624.         IF POINT(PROJECTILE(PN).POSX, PROJECTILE(PN).POSY) = _RGB(255, 255, 255) AND PLAYERTURN = 2 THEN PLAYERTURN = 5: PROJECTILE(PN).ACTIVE = 2
  625.         IF POINT(PROJECTILE(PN).POSX, PROJECTILE(PN).POSY) = _RGB(254, 254, 255) AND PLAYERTURN = 1 THEN PLAYERTURN = 6: PROJECTILE(PN).ACTIVE = 2
  626.         LINE (OLDX, OLDY)-(OLDX + 1, OLDY + 1), PROJECTILE(PN).OLDCOL, BF
  627.         PROJECTILE(PN).OLDCOL = POINT(PROJECTILE(PN).POSX, PROJECTILE(PN).POSY)
  628.         LINE (PROJECTILE(PN).POSX, PROJECTILE(PN).POSY)-(PROJECTILE(PN).POSX + 1, PROJECTILE(PN).POSY + 1), _RGB(255, 155, 55), BF
  629.  
  630.         IF PROJECTILE(PN).POSX > (REZX + 2) THEN PROJECTILE(PN).ACTIVE = 0
  631.         IF PROJECTILE(PN).POSX < -2 THEN
  632.             PROJECTILE(PN).ACTIVE = 0
  633.             IF UCASE$(LEFT$(PLAYER2.NAME, 8)) = "COMPUTER" AND PLAYERTURN = 2 THEN CALL AI("OFFSCREEN")
  634.         END IF
  635.     END IF
  636.  
  637.  
  638. SUB INITENGINE
  639.     GRAVITY = .0002 * (10 ^ 2)
  640.     INTEREST = 1.06
  641.     REZX = 1920
  642.     REZY = 1080
  643.     LAND.TOPG = 80
  644.  
  645.     BACKGROUND& = _NEWIMAGE(REZX, REZY, 32)
  646.     FOREGROUND& = _NEWIMAGE(REZX, REZY, 32)
  647.     BUFFERSCREEN& = _NEWIMAGE(REZX, REZY, 32)
  648.     TERRAININFO& = _NEWIMAGE(REZX, REZY, 32)
  649.     DISPLAY& = _NEWIMAGE(REZX, REZY, 32)
  650.     VFX& = _NEWIMAGE(REZX, REZY, 32)
  651.     SCREEN DISPLAY&
  652.     CLS
  653.  
  654.  
  655. SUB ASSEMBLEDISPLAY
  656.     _PUTIMAGE , BACKGROUND&, BUFFERSCREEN&
  657.     _PUTIMAGE , VFX&, BUFFERSCREEN&
  658.     _PUTIMAGE , FOREGROUND&, BUFFERSCREEN&
  659.     _PUTIMAGE , BUFFERSCREEN&, DISPLAY&
  660.  
  661. SUB EXPLOSION (EXPLX, EXPLY)
  662.     IF PROJECTILE(1).WEAPON = 0 OR PROJECTILE(1).WEAPON = 3 THEN EXPLOSIONR = 25
  663.     IF PROJECTILE(1).WEAPON = 1 OR PROJECTILE(1).WEAPON = 4 OR PROJECTILE(1).WEAPON = 7 THEN EXPLOSIONR = 35
  664.     IF PROJECTILE(1).WEAPON = 2 THEN EXPLOSIONR = 50
  665.     IF PROJECTILE(1).WEAPON = 5 OR PROJECTILE(1).WEAPON = 99 THEN EXPLOSIONR = 100
  666.  
  667.     IF PLAYERTURN = 5 THEN
  668.         PLAYER1.SHIELD = PLAYER1.SHIELD - EXPLOSIONR
  669.         CALL SOUNDBOARD("EXPL", 0)
  670.         PLAYERTURN = 2
  671.         EXIT SUB
  672.     ELSEIF PLAYERTURN = 6 THEN
  673.         PLAYER2.SHIELD = PLAYER2.SHIELD - EXPLOSIONR
  674.         CALL SOUNDBOARD("EXPL", 0)
  675.         PLAYERTURN = 1
  676.         EXIT SUB
  677.     END IF
  678.  
  679.     IF PROJECTILE(1).WEAPON = 6 THEN
  680.         _DEST BUFFERSCREEN&
  681.         CLS
  682.         EXPLOSIONR = 0
  683.  
  684.         CIRCLE (EXPLX, EXPLY), 75, _RGB(255, 0, 0)
  685.         PAINT (EXPLX, EXPLY), _RGB(255, 255, 255), _RGB(255, 0, 0)
  686.         PAINT (EXPLX, EXPLY), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB), _RGB(255, 0, 0)
  687.         CIRCLE (EXPLX, EXPLY), 75, _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  688.         _PUTIMAGE , FOREGROUND&, BUFFERSCREEN&
  689.         _CLEARCOLOR _RGB(0, 0, 0)
  690.         _PUTIMAGE , BUFFERSCREEN&, FOREGROUND&
  691.  
  692.  
  693.         _DEST TERRAININFO&
  694.         CIRCLE (EXPLX, EXPLY), 75, _RGB(255, 0, 0)
  695.         PAINT (EXPLX, EXPLY), _RGB(255, 255, 255), _RGB(255, 0, 0)
  696.         PAINT (EXPLX, EXPLY), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB), _RGB(255, 0, 0)
  697.         CIRCLE (EXPLX, EXPLY), 75, _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  698.  
  699.         _DEST DISPLAY&
  700.         SCREEN TERRAININFO&
  701.         SLEEP
  702.         SCREEN DISPLAY&
  703.         EXIT SUB
  704.     END IF
  705.  
  706.     _DEST TERRAININFO&
  707.     CIRCLE (EXPLX, EXPLY), EXPLOSIONR, _RGB(255, 255, 255)
  708.     PAINT (EXPLX, EXPLY), _RGB(0, 0, 0), _RGB(255, 255, 255)
  709.     CIRCLE (EXPLX, EXPLY), EXPLOSIONR, _RGB(0, 0, 0)
  710.  
  711.     _DEST FOREGROUND&
  712.     CIRCLE (EXPLX, EXPLY), EXPLOSIONR, _RGB(255, 255, 255)
  713.     PAINT (EXPLX, EXPLY), _RGB(0, 0, 0), _RGB(255, 255, 255)
  714.     CIRCLE (EXPLX, EXPLY), EXPLOSIONR, _RGB(0, 0, 0)
  715.  
  716.     _CLEARCOLOR _RGB(0, 0, 0)
  717.     CALL ASSEMBLEDISPLAY
  718.     _DEST DISPLAY&
  719.  
  720.     FOR RAD = 3 TO EXPLOSIONR
  721.         CIRCLE (EXPLX, EXPLY), RAD, _RGB(255, 255, 255)
  722.         CIRCLE (EXPLX, EXPLY), RAD - 1, _RGB(255, 255, 255)
  723.         CIRCLE (EXPLX, EXPLY), RAD - 2, _RGB(255, 255, 255)
  724.         CIRCLE (EXPLX, EXPLY), RAD - 3, _RGB(150, 0, 0)
  725.         FOR DELAY = 1 TO DELAYTIME / 20: NEXT DELAY
  726.     NEXT RAD
  727.  
  728.     IF PROJECTILE(1).WEAPON = 5 THEN
  729.         FOR TIMES = 1 TO 5
  730.             FOR RAD = 1 TO EXPLOSIONR
  731.                 CIRCLE (EXPLX, EXPLY), RAD, _RGB(255, 255, 0)
  732.                 FOR DELAY = 1 TO DELAYTIME / 25: NEXT DELAY
  733.             NEXT RAD
  734.             FOR RAD = 1 TO EXPLOSIONR
  735.                 CIRCLE (EXPLX, EXPLY), RAD, _RGB(255, 0, 0)
  736.                 FOR DELAY = 1 TO DELAYTIME / 25: NEXT DELAY
  737.  
  738.             NEXT RAD
  739.         NEXT TIMES
  740.     END IF
  741.     CALL SOUNDBOARD("EXPL", 0)
  742.  
  743.  
  744. SUB BUILDLEVEL
  745.     _DEST TERRAININFO&
  746.     CLS
  747.  
  748.     _DEST VFX&
  749.     CLS
  750.     _CLEARCOLOR _RGB(0, 0, 0)
  751.  
  752.     _DEST BACKGROUND&
  753.     CLS
  754.     BACKDROP = _LOADIMAGE("Data\sky2.jpg")
  755.     _PUTIMAGE (0, 0)-(REZX, REZY), BACKDROP
  756.     _PUTIMAGE , 0, BACKDROP, (0, 0)-(REZX, REZY)
  757.  
  758.     _DEST FOREGROUND&
  759.     CLS
  760.     EARTH = _LOADIMAGE("Data\Dirt.jpg")
  761.     _PUTIMAGE (0, 0)-(REZX, REZY), EARTH
  762.     _PUTIMAGE , 0, EARTH, (0, 0)-(REZX, REZY)
  763.  
  764.     H = INT(RND * REZY * .75) + 100
  765.     HIGHPOINT = H
  766.     FOR I = 0 TO REZX
  767.         V = V + ((RND * .5) - .25)
  768.         IF V > RND * 10 THEN V = V - .25
  769.         IF V < (RND * 10) * -1 THEN V = V + .25
  770.         H = H + V
  771.         IF H < REZY * .15 THEN V = V + .25
  772.         IF H > REZY * .65 THEN V = V - .25
  773.         IF HIGHPOINT > H THEN HIGHPOINT = H
  774.  
  775.         _DEST TERRAININFO&
  776.         LINE (I, H)-(I, H + V), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  777.  
  778.         _DEST FOREGROUND&
  779.         LINE (I, H)-(I, H + V), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  780.         LINE (I, H + 30)-(I, H + V + 30), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  781.  
  782.     NEXT I
  783.  
  784.     HIGHPOINT = HIGHPOINT - 1
  785.     _DEST TERRAININFO&
  786.     PAINT (REZX - 1, REZY - 1), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  787.     PAINT (I - 2, H + 2), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  788.     PAINT (1, 1), _RGB(0, 0, 0), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  789.  
  790.     _DEST FOREGROUND&
  791.     PAINT (I - 2, H + 5), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  792.     PAINT (1, 1), _RGB(0, 0, 0), _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB)
  793.     _CLEARCOLOR _RGB(0, 0, 0)
  794.     CALL ASSEMBLEDISPLAY
  795.  
  796. FUNCTION FINDLAND (XPOS, OLDY)
  797.     FOR Y = OLDY TO REZY
  798.         IF POINT(XPOS, Y) = _RGB(LAND.TOPR, LAND.TOPG, LAND.TOPB) THEN EXIT FOR
  799.     NEXT Y
  800.  
  801.     FINDLAND = Y - 7
  802.  
  803. SUB ENGINESTART
  804.     SCREEN 12
  805.     CLS
  806.     COLOR 15, 4
  807.     PRINT "                            TANKS6 ENGINE INIT...                               "
  808.     COLOR 7, 0
  809.     OPEN "Data\Engine.ini" FOR INPUT AS #1
  810.     INPUT #1, RUNMODE$
  811.     INPUT #1, VERSION$
  812.     CLOSE #1
  813.     PRINT VERSION$
  814.     PRINT
  815.  
  816.     IF RUNMODE$ = "SOUNDBOARD" THEN
  817.         DO
  818.             CLS
  819.             PRINT "TANKS 6 SOUNDBOARD"
  820.             INPUT "ENTER SOUNDBOARD COMMAND: ", SNDCON$
  821.             CALL SOUNDBOARD(SNDCON$, 0)
  822.         LOOP UNTIL UCASE$(SNDCON$) = "END" OR UCASE$(SNDCON$) = "QUIT"
  823.         IF UCASE$(SNDCON$) = "END" THEN SYSTEM
  824.         RUNMODE$ = "NORMAL"
  825.     END IF
  826.  
  827.     IF RUNMODE$ = "INSTALL" THEN
  828.         PRINT "SETTING UP FOR FIRST TIME USE, PLEASE WAIT..."
  829.         TIM$ = TIME$
  830.         DO
  831.         LOOP UNTIL TIM$ <> TIME$
  832.         TIM$ = TIME$
  833.  
  834.         DO
  835.             DELAYTIME = DELAYTIME + 1
  836.         LOOP UNTIL TIM$ <> TIME$
  837.         PRINT DELAYTIME
  838.  
  839.         OPEN "Data\Settings.inf" FOR OUTPUT AS #1
  840.         PRINT #1, "15"
  841.         PRINT #1, DELAYTIME
  842.         PRINT #1, "Player 1"
  843.         PRINT #1, "COMPUTER"
  844.         PRINT #1, "2000"
  845.         PRINT #1, "2000"
  846.         PRINT #1, "10"
  847.         CLOSE #1
  848.  
  849.         OPEN "Data\Engine.ini" FOR OUTPUT AS #1
  850.         PRINT #1, "NORMAL"
  851.         PRINT #1, VERSION$
  852.         CLOSE #1
  853.         RUNMODE$ = "NORMAL"
  854.     END IF
  855.  
  856.     IF RUNMODE$ = "NORMAL" THEN
  857.         OPEN "Data\Settings.inf" FOR INPUT AS #1
  858.         INPUT #1, ROUNDS
  859.         INPUT #1, DELAYTIME
  860.         INPUT #1, PLAYER1.NAME
  861.         INPUT #1, PLAYER2.NAME
  862.         INPUT #1, PLAYER1.CASH
  863.         INPUT #1, PLAYER2.CASH
  864.         CLOSE #1
  865.     END IF
  866.  
  867. SUB STARTMENU
  868.     CALL JUKEBOX("INTRO")
  869.     SHOOTDIR = 0
  870.     PLAYER1.POSX = 10
  871.     PLAYER1.POSY = 400
  872.     PLAYER2.POSX = 600
  873.     PLAYER2.POSY = 400
  874.  
  875.     STARTUP:
  876.     CLS
  877.     XA = 1
  878.     X1 = 4: X2 = 7
  879.  
  880.     STARTUP1:
  881.     GOSUB TOPMENU
  882.     COLOR X1
  883.     LOCATE 5, 1
  884.     PRINT "START"
  885.     COLOR X2
  886.     PRINT "OPTIONS"
  887.     CALL DRAWTANKS
  888.     TIMER$ = TIME$
  889.     DO
  890.         I$ = INKEY$
  891.         I$ = UCASE$(I$)
  892.         IF I$ = CHR$(0) + "H" THEN GOSUB DWN
  893.         IF I$ = CHR$(0) + "P" THEN GOSUB UP
  894.         IF I$ = "Q" THEN GOSUB ENDER
  895.         IF I$ = " " THEN GOSUB CHECK1
  896.  
  897.         IF SHOOTDIR = 0 AND TIMER$ <> TIME$ THEN
  898.             SHELLX = PLAYER1.POSX
  899.             DO UNTIL POSX = PLAYER2.POSX - 10
  900.                 FOR WAT = 1 TO DELAYTIME / 50: NEXT WAT
  901.                 LINE (POSX + PLAYER1.POSX, PLAYER1.POSY)-(POSX + PLAYER1.POSX, PLAYER1.POSY), 0
  902.                 POSX = POSX + 1
  903.                 LINE (POSX + PLAYER1.POSX, PLAYER1.POSY)-(POSX + PLAYER1.POSX, PLAYER1.POSY), 15
  904.             LOOP
  905.             SHOOTDIR = 1
  906.             TIMER$ = TIME$
  907.         END IF
  908.  
  909.         IF SHOOTDIR = 1 AND TIMER$ <> TIME$ THEN
  910.             POSX = PLAYER2.POSX
  911.             DO UNTIL POSX = PLAYER1.POSX
  912.                 FOR WAT = 1 TO DELAYTIME / 50: NEXT WAT
  913.                 LINE (POSX + PLAYER1.POSX, PLAYER1.POSY)-(POSX + PLAYER1.POSX, PLAYER1.POSY), 0
  914.                 POSX = POSX - 1
  915.                 LINE (POSX + PLAYER1.POSX, PLAYER1.POSY)-(POSX + PLAYER1.POSX, PLAYER1.POSY), 15
  916.             LOOP
  917.             TIMER$ = TIME$
  918.             SHOOTDIR = 0
  919.         END IF
  920.     LOOP
  921.  
  922.  
  923.     ENDER:
  924.     CALL ENDGAME
  925.  
  926.     UP:
  927.     CALL SOUNDBOARD("MENU", 0)
  928.     XA = XA + 1
  929.     IF XA = 3 THEN XA = 1
  930.     IF XA = 2 THEN X1 = 7: X2 = 4: CK = 2
  931.     IF XA = 1 THEN X2 = 7: X1 = 4: CK = 1
  932.     GOTO STARTUP1
  933.  
  934.     DWN:
  935.     CALL SOUNDBOARD("MENU", 0)
  936.     XA = XA - 1
  937.     IF XA = 0 THEN XA = 2
  938.     IF XA = 2 THEN X1 = 7: X2 = 4: CK = 2
  939.     IF XA = 1 THEN X2 = 7: X1 = 4: CK = 1
  940.     GOTO STARTUP1
  941.  
  942.     CHECK1:
  943.     CALL SOUNDBOARD("SELECT", 0)
  944.     IF XA = 1 THEN LOCATE 1, 1: GOTO STARTGAM
  945.     IF XA = 2 THEN COLORTITLE = 0: GOTO OPTIONS
  946.  
  947.     OPTIONS:
  948.     KEY(1) OFF
  949.     CLS
  950.     XA = 1
  951.     X1 = 4: X2 = 7: X3 = 7: X4 = 7: X5 = 7: X6 = 7: X7 = 7: X8 = 7
  952.  
  953.     OPTIONS1:
  954.     GOSUB TOPMENU
  955.     COLOR 5
  956.     LOCATE 2, 1
  957.     PRINT , "                         OPTIONS"
  958.     LOCATE 2, 67: COLOR 8: PRINT VERSION$
  959.     COLOR X1
  960.     LOCATE 5, 1
  961.     PRINT "ROUNDS (";: COLOR 2: PRINT ROUNDS;: COLOR X1: PRINT ")"
  962.     LOCATE 6, 1
  963.     COLOR X2
  964.     PRINT "PLAYER1 NAME (";: COLOR 2: PRINT PLAYER1.NAME;: COLOR X2: PRINT ")"
  965.     LOCATE 7, 1
  966.     COLOR X3
  967.     PRINT "PLAYER2 NAME (";: COLOR 2: PRINT PLAYER2.NAME;: COLOR X3: PRINT ")"
  968.  
  969.     COLOR 15: LOCATE 15, 1: PRINT "NOTE: TO PLAY SINGLE PLAYER NAME PLAYER 2 COMPUTER"
  970.     CALL DRAWTANKS
  971.     DO
  972.         I$ = INKEY$
  973.         I$ = UCASE$(I$)
  974.         IF I$ = CHR$(0) + "H" THEN GOTO ODWN
  975.         IF I$ = CHR$(0) + "P" THEN GOTO OUP
  976.         IF I$ = "Q" THEN GOTO STARTUP
  977.         IF I$ = " " THEN GOTO OCHECK1
  978.  
  979.         IF SHOOTDIR = 0 AND TIMER$ <> TIME$ THEN
  980.             SHELLX = PLAYER1.POSX
  981.             DO UNTIL POSX = PLAYER2.POSX - 10
  982.                 FOR WAT = 1 TO DELAYTIME / 50: NEXT WAT
  983.                 LINE (POSX + PLAYER1.POSX, PLAYER1.POSY)-(POSX + PLAYER1.POSX, PLAYER1.POSY), 0
  984.                 POSX = POSX + 1
  985.                 LINE (POSX + PLAYER1.POSX, PLAYER1.POSY)-(POSX + PLAYER1.POSX, PLAYER1.POSY), 15
  986.             LOOP
  987.             SHOOTDIR = 1
  988.             TIMER$ = TIME$
  989.         END IF
  990.  
  991.         IF SHOOTDIR = 1 AND TIMER$ <> TIME$ THEN
  992.             POSX = PLAYER2.POSX
  993.             DO UNTIL POSX = PLAYER1.POSX
  994.                 FOR WAT = 1 TO DELAYTIME / 50: NEXT WAT
  995.                 LINE (POSX + PLAYER1.POSX, PLAYER1.POSY)-(POSX + PLAYER1.POSX, PLAYER1.POSY), 0
  996.                 POSX = POSX - 1
  997.                 LINE (POSX + PLAYER1.POSX, PLAYER1.POSY)-(POSX + PLAYER1.POSX, PLAYER1.POSY), 15
  998.             LOOP
  999.             TIMER$ = TIME$
  1000.             SHOOTDIR = 0
  1001.         END IF
  1002.     LOOP
  1003.  
  1004.     OUP:
  1005.     CALL SOUNDBOARD("MENU", 0)
  1006.     XA = XA + 1
  1007.     IF XA = 4 THEN XA = 1
  1008.     IF XA = 2 THEN X1 = 7: X2 = 4: CK = 2
  1009.     IF XA = 3 THEN X2 = 7: X3 = 4: CK = 3
  1010.     IF XA = 1 THEN X3 = 7: X1 = 4: CK = 1
  1011.     GOTO OPTIONS1
  1012.  
  1013.     ODWN:
  1014.     CALL SOUNDBOARD("MENU", 0)
  1015.     XA = XA - 1
  1016.     IF XA = 0 THEN XA = 3
  1017.     IF XA = 3 THEN X1 = 7: X3 = 4: CK = 3
  1018.     IF XA = 2 THEN X3 = 7: X2 = 4: CK = 2
  1019.     IF XA = 1 THEN X2 = 7: X1 = 4: CK = 1
  1020.     GOTO OPTIONS1
  1021.  
  1022.     OCHECK1:
  1023.     CALL SOUNDBOARD("SELECT", 0)
  1024.  
  1025.     IF XA = 1 THEN
  1026.         LOCATE 13, 1
  1027.         INPUT "ENTER ROUNDS TO PLAY ", ROUNDS
  1028.         LOCATE 13, 1
  1029.         PRINT "                                                            "
  1030.     END IF
  1031.  
  1032.     IF XA = 2 THEN
  1033.         LOCATE 13, 1
  1034.         INPUT "PLAYER 1 ENTER YOUR NAME ", PLAYER1.NAME
  1035.         LOCATE 13, 1
  1036.         PRINT "                                                            "
  1037.     END IF
  1038.  
  1039.     IF XA = 3 THEN
  1040.         LOCATE 13, 1
  1041.         INPUT "PLAYER 2 ENTER YOUR NAME ", PLAYER2.NAME
  1042.         LOCATE 13, 1
  1043.         PRINT "                                                            "
  1044.     END IF
  1045.  
  1046.     GOTO OPTIONS
  1047.  
  1048.     TOPMENU:
  1049.     LOCATE 1, 1
  1050.     COLOR 15, 4
  1051.     PRINT , "                         TANKS 6"
  1052.     LOCATE 2, 67: COLOR 8, 0: PRINT VERSION$
  1053.     POINTX = 0
  1054.     COLOR 7
  1055.     POINTY = 0
  1056.     LINE (0, 15)-(800, 15), 15
  1057.     PAINT (1, 1), 4, 15
  1058.     LINE (0, 15)-(800, 15), 4
  1059.     LOCATE 27, 1
  1060.     COLOR 15
  1061.     PRINT "Q - BACK"
  1062.     PRINT "SPACEBAR - SELECT"
  1063.     RETURN
  1064.  
  1065.     STARTGAM:
  1066.     OPEN "Data\Settings.inf" FOR OUTPUT AS #1
  1067.     PRINT #1, ROUNDS
  1068.     PRINT #1, DELAYTIME
  1069.     PRINT #1, PLAYER1.NAME
  1070.     PRINT #1, PLAYER2.NAME
  1071.     PRINT #1, PLAYER1.CASH
  1072.     PRINT #1, PLAYER2.CASH
  1073.     CLOSE #1
  1074.  
  1075.  
  1076. SUB AI (JOB$)
  1077.     AISPOT = (WIND / 10) + 4
  1078.     IF JOB$ = "INIT" THEN
  1079.         FOR AISPOT = 1 TO 7
  1080.             AIARRAY(AISPOT) = 30
  1081.         NEXT AISPOT
  1082.     ELSEIF JOB$ = "FIRE" THEN
  1083.         PROJECTILE(1).ANGLE = 55
  1084.         PROJECTILE(1).VELOCITY = AIARRAY(AISPOT)
  1085.         PROJECTILE(1).WEAPON = 1
  1086.     ELSEIF JOB$ = "OFFSCREEN" THEN
  1087.         AIARRAY(AISPOT) = AIARRAY(AISPOT) - 5
  1088.     ELSE
  1089.         IF PROJECTILE(1).POSX > PLAYER1.POSX THEN AIARRAY(AISPOT) = AIARRAY(AISPOT) + 2
  1090.         IF PROJECTILE(1).POSX < PLAYER1.POSX THEN AIARRAY(AISPOT) = AIARRAY(AISPOT) - 2
  1091.     END IF
  1092.  
  1093. SUB SOUNDBOARD (SELECTOR$, SUBSOUD)
  1094.  
  1095.     IF SELECTOR$ = "BAUGHT" THEN SFX$ = "Sounds\Bo.sfx"
  1096.     IF SELECTOR$ = "BUY" THEN SFX$ = "Sounds\Buy.sfx"
  1097.     IF SELECTOR$ = "SHIELD" THEN SFX$ = "Sounds\Dsc.sfx"
  1098.     IF SELECTOR$ = "EXITBUY" THEN SFX$ = "Sounds\Exitbuy.sfx"
  1099.     IF SELECTOR$ = "EXPL" THEN SFX$ = "Sounds\Expl.mp3"
  1100.     IF SELECTOR$ = "EDR" THEN SFX$ = "sounds\EDR.sfx" 'NOT USED
  1101.     IF SELECTOR$ = "MENU" THEN SFX$ = "Sounds\Menu.sfx"
  1102.     IF SELECTOR$ = "MIRV" THEN SFX$ = "Sounds\Mirv.mp3"
  1103.     IF SELECTOR$ = "SECRET" THEN SFX$ = "sounds\SECRET.sfx" 'NOT USED
  1104.     IF SELECTOR$ = "SELECT" THEN SFX$ = "Sounds\Select.sfx"
  1105.     IF SELECTOR$ = "SHOOT" THEN SFX$ = "Sounds\Shoot.mp3"
  1106.     IF SELECTOR$ = "SP" THEN SFX$ = "Sounds\SP.sfx"
  1107.     IF SELECTOR$ = "SWICHM" THEN SFX$ = "Sounds\SWICHM.sfx"
  1108.     IF SELECTOR$ = "HUMILIATION" THEN SFX$ = "Sounds\Humiliation.sfx"
  1109.     IF SELECTOR$ = "EXIT" THEN SFX$ = "Sounds\Gamexit.sfx"
  1110.     IF SELECTOR$ = "WHIZZ" THEN SFX$ = "Sounds\whizz.sfx"
  1111.  
  1112.  
  1113.     SFX& = _SNDOPEN(SFX$, "VOL,SYNC")
  1114.  
  1115.     IF SFX& = 0 THEN
  1116.         BEEP
  1117.         PRINT "ERROR WITH FILE:"; SFX$
  1118.     ELSE
  1119.         _SNDPLAY SFX&
  1120.     END IF
  1121.     _SNDCLOSE SFX&
  1122.  
  1123.  
  1124. SUB ENDGAME
  1125.     CALL SOUNDBOARD("EXIT", 0)
  1126.     CLS
  1127.     SCREEN 0
  1128.     SCREEN 12
  1129.     COLOR 14, 4
  1130.     PRINT "                    DEVELOPED BY ";
  1131.     COLOR 14, 1
  1132.     PRINT "PEDRO HERRERA";
  1133.     COLOR 14, 4
  1134.     PRINT " (c) 2016                         "
  1135.     COLOR 15, 4
  1136.     PRINT "                                                                                "
  1137.     PRINT "THIS IS A REMAKE OF A GAME I MADE BACK IN 1997.                                 "
  1138.     PRINT "USING SOME OpenGL CODE AND OpenAL FOR AUDIO.                                    "
  1139.     PRINT "PROGRAMMED AND COMPILED IN QBasic 64-Bit                                        "
  1140.     PRINT "NEXT PROJECT WILL BE A HACKNET MMO                                              "
  1141.     PRINT "                                                                                "
  1142.     PRINT "EMAIL: Craz1000@yahoo.com                                                       "
  1143.     PRINT "WEB: http://Craz1000.net                                                        "
  1144.     PRINT "                                                                                "
  1145.     COLOR 15, 0
  1146.     PRINT "                                                                                "
  1147.  
  1148.     END
  1149.  
  1150. SUB DRAWTANKS
  1151.     _DEST DISPLAY&
  1152.     'PLAYER 1
  1153.     LINE (PLAYER1.POSX, PLAYER1.POSY)-(PLAYER1.POSX + 10, PLAYER1.POSY + 10), 0, BF
  1154.     LINE (PLAYER1.POSX, PLAYER1.POSY + 5)-(PLAYER1.POSX + 10, PLAYER1.POSY + 7), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB), B
  1155.     LINE (PLAYER1.POSX + 1, PLAYER1.POSY + 5)-(PLAYER1.POSX + 3, PLAYER1.POSY + 3), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB)
  1156.     LINE (PLAYER1.POSX + 3, PLAYER1.POSY + 3)-(PLAYER1.POSX + 7, PLAYER1.POSY + 3), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB)
  1157.     LINE (PLAYER1.POSX + 7, PLAYER1.POSY + 3)-(PLAYER1.POSX + 8, PLAYER1.POSY + 5), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB)
  1158.     LINE (PLAYER1.POSX + 10, PLAYER1.POSY + 2)-(PLAYER1.POSX + 7, PLAYER1.POSY + 3), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB)
  1159.     PAINT (PLAYER1.POSX + 5, PLAYER1.POSY + 6), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB)
  1160.     PAINT (PLAYER1.POSX + 5, PLAYER1.POSY + 4), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB), _RGB(PLAYER1.COLORR, PLAYER1.COLORG, PLAYER1.COLORB)
  1161.  
  1162.     'PLAYER2
  1163.     LINE (PLAYER2.POSX, PLAYER2.POSY)-(PLAYER2.POSX + 10, PLAYER2.POSY + 10), 0, BF
  1164.     LINE (PLAYER2.POSX, PLAYER2.POSY + 5)-(PLAYER2.POSX + 10, PLAYER2.POSY + 7), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB), B
  1165.     LINE (PLAYER2.POSX + 1, PLAYER2.POSY + 5)-(PLAYER2.POSX + 3, PLAYER2.POSY + 3), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB)
  1166.     LINE (PLAYER2.POSX + 3, PLAYER2.POSY + 3)-(PLAYER2.POSX + 7, PLAYER2.POSY + 3), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB)
  1167.     LINE (PLAYER2.POSX + 7, PLAYER2.POSY + 3)-(PLAYER2.POSX + 8, PLAYER2.POSY + 5), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB)
  1168.     LINE (PLAYER2.POSX, PLAYER2.POSY + 2)-(PLAYER2.POSX + 3, PLAYER2.POSY + 3), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB)
  1169.     PAINT (PLAYER2.POSX + 5, PLAYER2.POSY + 6), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB)
  1170.     PAINT (PLAYER2.POSX + 5, PLAYER2.POSY + 4), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB), _RGB(PLAYER2.COLORR, PLAYER2.COLORG, PLAYER2.COLORB)
  1171.  
  1172. SUB JUKEBOX (SONG$)
  1173.     IF SONG$ = "INTRO" THEN BGM$ = "Music\Intro.mp3"
  1174.  
  1175.     IF SONG$ = "BUY" THEN BGM$ = "Music\Buy.mp3"
  1176.  
  1177.     IF SONG$ = "FIGHT" THEN
  1178.         TRACK = INT(RND * 7) + 1
  1179.         IF TRACK = 1 THEN BGM$ = "Music\Track-1.mp3"
  1180.         IF TRACK = 2 THEN BGM$ = "Music\Track-2.mp3"
  1181.         IF TRACK = 3 THEN BGM$ = "Music\Track-3.mp3"
  1182.         IF TRACK = 4 THEN BGM$ = "Music\Track-4.mp3"
  1183.         IF TRACK = 5 THEN BGM$ = "Music\Track-5.mp3"
  1184.         IF TRACK = 6 THEN BGM$ = "Music\Track-6.mp3"
  1185.         IF TRACK = 7 THEN BGM$ = "Music\Track-7.mp3"
  1186.     END IF
  1187.  
  1188.     BGM& = _SNDOPEN(BGM$, "VOL,SYNC")
  1189.  
  1190.     IF BGM& = 0 THEN
  1191.         BEEP
  1192.         _DEST DISPLAY&
  1193.         LOCATE 10, 10
  1194.         PRINT "ERROR WITH FILE:"; BGM$
  1195.     ELSE
  1196.         _SNDVOL BGM&, 0.25
  1197.         IF SONG$ = "BUY" OR SONG$ = "INTRO" THEN
  1198.             _SNDLOOP BGM&
  1199.         ELSE
  1200.             _SNDPLAY BGM&
  1201.         END IF
  1202.     END IF
  1203.  
Dirt.jpg
* Dirt.jpg (Filesize: 316.99 KB, Dimensions: 1600x1067, Views: 166)
sky2.jpg
* sky2.jpg (Filesize: 964.45 KB, Dimensions: 1920x1200, Views: 164)
* Engine.ini (Filesize: 0.01 KB, Downloads: 126)
* Settings.inf (Filesize: 0.05 KB, Downloads: 138)
« Last Edit: March 07, 2019, 07:05:04 pm by Craz1000 »

Offline qb4ever

  • Newbie
  • Posts: 40
  • LOCATE 15,15: COLOR 14: PRINT "Hello World!"
    • View Profile
Re: Tanks Remake
« Reply #3 on: March 08, 2019, 05:39:08 am »
Thanks,

have a nice day