'=========================================================================== ' Subject: QBASIC BOMBERMAN (2 PLAYERS) Date: 01-15-99 (23:00) ' Author: Matt Hackett Code: QB, QBasic, PDS ' Origin: pages.prodigy.com/qbasic/ Packet: GAMES.ABC '=========================================================================== '**************************************************************************** ' ' Q B O M B E R M A N ' ' version 1.8 ' ' Matt Hackett 1996 ' '**************************************************************************** ' ADDED MUCH LATER: (once I REALLY knew how to program. ' This is a very simple program I made a long time ago for something to do ' at school. It's FUN 2-player (but only when you're at school.) *heh* ' A sequel with SB sound coming soon to Jikg's web page soon. :) ' Questions, comment, et cetera: mail me or Jikg. ' -Richter Bon Winkle DECLARE SUB GetPower (p%) DECLARE SUB Win (Winner%) DECLARE SUB DoExplode (pe%) DECLARE SUB Lay (Which%) DECLARE SUB DoBomb (Which%) DECLARE SUB Init () DECLARE SUB LoadMap () DECLARE SUB RestoreGraphics () DECLARE SUB Main () DECLARE SUB DrawTile (tx%, ty%, cx%, cy%, dt%) DECLARE SUB DrawScreen (s%) DECLARE SUB DrawIMG () DECLARE SUB SetLocks () DECLARE SUB SetAtts () DECLARE SUB getch () DECLARE SUB center (ctext$, cline%, cclr%) DECLARE SUB delay (deler%) DECLARE SUB Crazy (p%) DECLARE SUB ExitGame () '!///////////////// 'Started May 12th-13th 'Ended May 19th '!///////////////// '#/////////////////// 'Program definitions '#/////////////////// DEFINT A-Z SCREEN 13 RANDOMIZE TIMER '#//////////////// 'Type definitions '#//////////////// TYPE playertype x AS INTEGER y AS INTEGER wins AS INTEGER END TYPE TYPE bombtype x AS INTEGER y AS INTEGER laid AS INTEGER time AS INTEGER clock AS INTEGER power AS INTEGER END TYPE TYPE tiletype x AS INTEGER y AS INTEGER style AS INTEGER END TYPE '#///////// 'Constants '#///////// CONST ACROSS = 19 CONST DOWN = 11 CONST TRUE = 1 CONST FALSE = 0 CONST EXPLODE = 5000 CONST LV = 2 '#/////////////////////// 'Arrays / Type variables '#/////////////////////// DIM SHARED blank(129), player1(129), player2(129), TNT(129) DIM SHARED powerup(129), shroom(129) DIM SHARED wall(129), psycho(129), chest(129), tree(129) DIM SHARED crumble(129), door(129), block(129), forest(129) DIM SHARED b(1 TO 2) AS playertype DIM SHARED bomb(1 TO 2) AS bombtype DIM SHARED tile(ACROSS, DOWN) AS tiletype DIM SHARED yea, total AS INTEGER Init DO LoadMap Main LOOP '#/////////////// 'Data structures '#/////////////// player1data: DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0 DATA 0, 0, 0, 15, 15,999,999,999,999,999,999, 15, 15, 0, 0, 0 DATA 0, 0, 0, 15, 15,999,999,999,999,999,999, 15, 15, 0, 0, 0 DATA 0, 0, 0, 15, 15,999,999,999,999,999,999, 15, 15, 0, 0, 0 DATA 0, 0, 0, 15, 15, 15,999,999,999,999, 15, 15, 15, 0, 0, 0 DATA 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0 DATA 0, 0, 0,999,999,999,999,999,999,999,999,999,999, 0, 0, 0 DATA 0, 0, 15, 15,999, 15,999,999,999,999, 15,999, 15, 15, 0, 0 DATA 0, 0, 15, 15,999, 15, 15, 15, 15, 15, 15,999, 15, 15, 0, 0 DATA 0, 0, 15, 15,999, 15, 15, 15, 15, 15, 15,999, 15, 15, 0, 0 DATA 0, 0,999,999,999,999,999,999,999,999,999,999,999,999, 0, 0 DATA 0, 0, 0,999,999, 15, 15, 15, 15, 15, 15,999,999, 0, 0, 0 DATA 0, 0, 0, 0, 0,999,999, 15, 15,999,999, 0, 0, 0, 0, 0 DATA 0, 0, 0,999,999,999,999, 0, 0,999,999,999,999, 0, 0, 0 player2data: DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0 DATA 0, 0, 0, 15, 15,999,999,999,999,999,999, 15, 15, 0, 0, 0 DATA 0, 0, 0, 15, 15,999,999,999,999,999,999, 15, 15, 0, 0, 0 DATA 0, 0, 0, 15, 15,999,999,999,999,999,999, 15, 15, 0, 0, 0 DATA 0, 0, 0, 15, 15, 15,999,999,999,999, 15, 15, 15, 0, 0, 0 DATA 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0 DATA 0, 0, 0,999,999,999,999,999,999,999,999,999,999, 0, 0, 0 DATA 0, 0, 15, 15,999, 15,999,999,999,999, 15,999, 15, 15, 0, 0 DATA 0, 0, 15, 15,999, 15, 15, 15, 15, 15, 15,999, 15, 15, 0, 0 DATA 0, 0, 15, 15,999, 15, 15, 15, 15, 15, 15,999, 15, 15, 0, 0 DATA 0, 0,999,999,999,999,999,999,999,999,999,999,999,999, 0, 0 DATA 0, 0, 0,999,999, 15, 15, 15, 15, 15, 15,999,999, 0, 0, 0 DATA 0, 0, 0, 0, 0,999,999, 15, 15,999,999, 0, 0, 0, 0, 0 DATA 0, 0, 0,999,999,999,999, 0, 0,999,999,999,999, 0, 0, 0 walldata: DATA 18, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 18 DATA 26, 18, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 18, 18 DATA 26, 26, 18, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 18, 18, 18 DATA 26, 26, 26, 18, 26, 26, 26, 26, 26, 26, 26, 26, 18, 18, 18, 18 DATA 26, 26, 26, 26, 18, 26, 26, 26, 26, 26, 26, 18, 18, 18, 18, 18 DATA 26, 26, 26, 26, 26, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18 DATA 26, 26, 26, 26, 26, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18 DATA 26, 26, 26, 26, 26, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18 DATA 26, 26, 26, 26, 26, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18 DATA 26, 26, 26, 26, 26, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18 DATA 26, 26, 26, 26, 26, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18 DATA 26, 26, 26, 26, 18, 18, 18, 18, 18, 18, 18, 20, 18, 18, 18, 18 DATA 26, 26, 26, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 18, 18, 18 DATA 26, 26, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 18, 18 DATA 26, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 18 DATA 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20 psychodata: DATA 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0 DATA 4, 12, 0, 12, 0, 12, 0, 12, 0, 12, 0, 12, 0, 12, 0, 4 DATA 4, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4 DATA 4, 12, 4, 0, 12, 0, 12, 0, 12, 0, 12, 0, 12, 4, 0, 4 DATA 4, 12, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 12, 4, 0, 4 DATA 4, 12, 4, 0, 4, 12, 0, 12, 0, 12, 0, 4, 12, 4, 0, 4 DATA 4, 12, 4, 0, 4, 12, 4, 4, 4, 4, 0, 4, 12, 4, 0, 4 DATA 4, 12, 4, 0, 4, 12, 4, 0, 4, 4, 12, 4, 0, 4, 12, 4 DATA 4, 0, 4, 12, 4, 0, 4, 12, 0, 12, 0, 4, 12, 4, 0, 4 DATA 4, 12, 4, 0, 4, 12, 4, 4, 4, 4, 4, 4, 0, 4, 12, 4 DATA 4, 0, 4, 12, 4, 0, 12, 0, 12, 0, 12, 0, 12, 4, 0, 4 DATA 4, 12, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 4 DATA 4, 0, 4, 12, 0, 12, 0, 12, 0, 12, 0, 12, 0, 12, 0, 4 DATA 4, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 DATA 4, 0, 12, 0, 12, 0, 12, 0, 12, 0, 12, 0, 12, 0, 12, 0 DATA 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0 crumbledata: DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 15, 6, 6 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 15, 6, 6, 6 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 15, 6, 6, 6 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 15, 0, 6, 6 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 15, 15, 15, 15 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 15, 6, 6, 6, 6 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 15, 6, 6, 6, 6 DATA 15, 6, 6, 6, 6, 6, 6, 6, 6, 0, 15, 6, 6, 6, 6, 6 DATA 0, 0, 6, 6, 6, 6, 6, 6, 6, 0, 15, 6, 6, 6, 6, 6 DATA 15, 15, 0, 0, 0, 6, 6, 6, 0, 15, 6, 6, 6, 6, 6, 6 DATA 15, 6, 15, 15, 15, 0, 6, 6, 0, 15, 6, 6, 6, 6, 6, 6 DATA 15, 6, 6, 6, 6, 15, 0, 0, 15, 6, 6, 6, 6, 6, 6, 0 DATA 15, 6, 6, 6, 6, 6, 15, 0, 15, 6, 6, 6, 6, 6, 0, 6 DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 TNTdata: DATA 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, 15, 15, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 15, 0, 0, 15, 0 DATA 0, 0, 0, 0, 0, 0, 1, 15, 15, 0, 0, 0, 15, 15, 0, 0 DATA 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0 DATA 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 DATA 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 15, 1, 0, 0, 0, 0 DATA 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 DATA 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 0, 0, 0 DATA 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 0, 0, 0 DATA 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 DATA 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 DATA 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 DATA 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 PowerUpdata: DATA 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, 15, 15, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 15, 0, 0, 15, 0 DATA 0, 0, 0, 0, 0, 0, 4, 15, 15, 0, 0, 0, 15, 15, 0, 0 DATA 0, 0, 0, 0, 4, 4, 0, 4, 4, 0, 4, 0, 0, 0, 0, 0 DATA 0, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 0, 0 DATA 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 15, 4, 0, 0, 0, 0 DATA 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0 DATA 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 15, 4, 0, 0, 0 DATA 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 15, 4, 0, 0, 0 DATA 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0 DATA 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0 DATA 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0 DATA 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 Chestdata: DATA 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 DATA 16, 14, 16, 4, 14, 4, 16, 14, 14, 16, 4, 14, 4, 16, 14, 16 DATA 16, 14, 16, 6, 6, 6, 16, 14, 14, 16, 6, 6, 6, 16, 14, 16 DATA 16, 14, 16, 4, 4, 4, 16, 14, 14, 16, 4, 4, 4, 16, 14, 16 DATA 16, 14, 16, 4, 6, 4, 16, 14, 14, 16, 4, 6, 4, 16, 14, 16 DATA 16, 14, 16, 6, 14, 6, 16, 14, 14, 16, 6, 14, 6, 16, 14, 16 DATA 16, 14, 16, 4, 4, 4, 16, 14, 14, 16, 4, 4, 4, 16, 14, 16 DATA 16, 14, 16, 4, 4, 4, 16, 14, 14, 16, 4, 4, 4, 16, 14, 16 DATA 16, 14, 16, 16, 16, 16, 16, 14, 14, 16, 16, 16, 16, 16, 14, 16 DATA 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16 DATA 16, 16, 16, 16, 16, 16, 6, 4, 4, 6, 16, 16, 16, 16, 16, 16 DATA 16, 14, 16, 4, 4, 16, 14, 16, 16, 14, 16, 4, 4, 16, 14, 16 DATA 16, 14, 16, 4, 4, 16, 14, 14, 14, 14, 16, 4, 4, 16, 14, 16 DATA 16, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 16 DATA 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16 DATA 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 Doordata: DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 DATA 16, 6, 6,185, 23, 16,185, 6, 6,185, 23, 16,185, 6, 6, 23 DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 DATA 19, 23, 19, 19, 30, 19, 19, 23, 19, 19, 30, 19, 19, 23, 19, 30 DATA 16, 16, 16, 16, 19, 16, 16, 16, 16, 16, 19, 16, 16, 16, 16, 19 DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 DATA 16, 6, 6,185, 23, 16,185, 6, 6,185, 23, 16,185, 6, 6, 23 DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 DATA 19, 23, 19, 19, 30, 19, 19, 23, 19, 19, 30, 19, 19, 23, 19, 30 DATA 16, 16, 16, 16, 19, 16, 16, 16, 16, 16, 19, 16, 16, 16, 16, 19 DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 DATA 16, 6, 6,185, 23, 16,185, 6, 6,185, 23, 16,185, 6, 6, 23 DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 DATA 16, 6, 6,185, 19, 16,185, 6, 6,185, 19, 16,185, 6, 6, 19 Shroomdata: DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 6, 6, 0, 0, 0, 0 DATA 0, 0, 0, 14, 6, 6, 6, 14, 14, 14, 6, 6, 6, 0, 0, 0 DATA 0, 0, 14, 6, 6, 6, 6, 14, 14, 14, 14, 6, 6, 0, 0, 0 DATA 0, 0, 14, 6, 6, 6, 6, 14, 14, 14, 14, 14, 14, 14, 0, 0 DATA 0, 14, 14, 6, 6, 6, 6, 14, 14, 14, 14, 6, 6, 14, 14, 0 DATA 14, 14, 14, 14, 6, 6, 14, 14, 14, 14, 14, 6, 6, 14, 14, 14 DATA 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 DATA 0, 6, 6, 6, 6, 15, 15, 15, 15, 15, 15, 6, 6, 6, 6, 0 DATA 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0 DATA 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0 DATA 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 6, 15, 15, 0, 0, 0 DATA 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 6, 15, 15, 0, 0, 0 DATA 0, 0, 0, 0, 15, 15, 15, 15, 15, 6, 15, 6, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 Blockdata: DATA 6, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16 DATA 15, 6, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 0 DATA 15, 14, 6, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 0, 0 DATA 15, 14, 14, 6, 14, 14, 14, 14, 14, 14, 14, 14, 16, 0, 0, 0 DATA 15, 14, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0 DATA 15, 14, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0 DATA 15, 14, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0 DATA 15, 14, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0 DATA 15, 14, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0 DATA 15, 14, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0 DATA 15, 14, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0 DATA 15, 14, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0 DATA 15, 14, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0 DATA 15, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0 DATA 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0 DATA 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 Treedata: DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0,192,192,192,192,192,192,192,120, 0, 0, 0, 0 DATA 0, 0,192,192,192,192,192,192,192,192,192,192,120,120, 0, 0 DATA 0,192,192,192,192,192,192,192,192,192,192,192,192,120,120, 0 DATA 0,192,192,192,192,192,192,192,192,192,192,192,192,192,120, 0 DATA 0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, 0 DATA 0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, 0 DATA 0, 0,192,192,192,192,192,192,192,192,192,192,192,192, 0, 0 DATA 0, 0, 0,192,192,192,192,192,192,192,192,192,192, 0, 0, 0 DATA 0, 0, 0, 0,192,192,192,192,192,192,192,192, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0,114,114,185,185, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0,114,114,114,185, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0,114,114,114,185, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0,114,114,114,114, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0,114,114,114,114, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0,114,114,114,114,114,114, 0, 0, 0, 0, 0 Forestdata: DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0,192,120, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0 DATA 0, 0,192,192,192,120, 0, 0, 0, 0,192,192,120, 0, 0, 0 DATA 0, 0,192,192,192,120,192, 0, 0,192,192,192,120, 0, 0, 0 DATA 0,192,192,192,192,192,120, 0, 0,192,192,192,192,120, 0, 0 DATA 0,192,192,192,192,120,120, 0, 0,192,192,192,192,120, 0, 0 DATA 0,192,192,192,192,192,120, 0, 0,192,192,192,192,192, 0, 0 DATA 0,192,192,192,192,192,192, 0, 0,192,192,192,192,120, 0, 0 DATA 0,192,192,192,192,192,120, 0, 0,192,192,192,192,192, 0, 0 DATA 0,192,192,192,192,192,192, 0, 0,192,192,192,192,192, 0, 0 DATA 0,192,192,192,192,192,192, 0, 0,192,192,192,192,192, 0, 0 DATA 0, 0,192,192,185,192, 0, 0, 0,192,192,192,192,192, 0, 0 DATA 0, 0, 0,114,185,185, 0, 0, 0, 0,192,185,192, 0, 0, 0 DATA 0, 0, 0,114,114,185, 0, 0, 0, 0,114,114,185, 0, 0, 0 DATA 0, 0, 0,114,114,185, 0, 0, 0, 0,114,114,185, 0, 0, 0 DATA 0, 0, 0,114,114,114, 0, 0, 0, 0,114,114,114, 0, 0, 0 Level1: DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10, 1, 0, 0, 0,10, 0, 0, 0, 0, 0, 0,20, 0, 0, 0, 0,20,10 DATA 10, 0, 0, 0,20,20, 0, 0, 0, 0, 0,20, 0,20, 0, 0,20, 0,10 DATA 10, 0, 0, 0,20, 0,20, 0, 0, 0,20, 0, 0,20, 0,20, 0, 0,10 DATA 10, 0, 0,20, 0, 0, 0,20, 0,20, 0, 0, 0, 0,20, 0, 0, 0,10 DATA 10, 0, 0,20, 0, 0, 0,20, 0,20, 0, 0, 0, 0, 0,20, 0, 0,10 DATA 10, 0, 0, 0, 0, 0, 0, 0,20, 0, 0,20, 0, 0, 0, 0,20, 0,10 DATA 10, 0, 0, 0,20, 0, 0, 0,20, 0,20, 0,20, 0, 0,20, 0, 0,10 DATA 10, 0,20,20, 0, 0, 0,20, 0,20,20, 0, 0,20, 0, 0, 0,20,10 DATA 10, 0,20, 0, 0, 0,20, 0, 0, 0, 0, 0, 0, 0,20, 0, 0, 2,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 Level2: DATA 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 DATA 11, 1, 0,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,11 DATA 11, 0,11,20,11,20,11,20,11,20,11,20,11,20,11,20,11,20,11 DATA 11,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,11 DATA 11,20,11,20,11,20,11,20,11,20,11,20,11,20,11,20,11,20,11 DATA 11,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,11 DATA 11,20,11,20,11,20,11,20,11,20,11,20,11,20,11,20,11,20,11 DATA 11,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,11 DATA 11,20,11,20,11,20,11,20,11,20,11,20,11,20,11,20,11, 0,11 DATA 11,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, 0, 2,11 DATA 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 Level3: DATA 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12 DATA 12, 1, 0, 0, 0,21,21, 0, 0, 0, 0, 0,21,21, 0, 0, 0, 0,12 DATA 12, 0,21,21, 0,21,21, 0,21,21, 0, 0,12,21, 0, 0, 0, 0,12 DATA 12, 0,21,21, 0,21,21, 0, 0, 0, 0,12, 0,21, 0, 0, 0, 0,12 DATA 12, 0, 0, 0, 0,21,21, 0, 0, 0,12, 0, 0,12, 0, 0, 0, 0,12 DATA 12, 0,21,21, 0,21,21, 0, 0, 0,12, 0,12,21,21,21,12,21,12 DATA 12, 0,21,21, 0,21,21, 0, 0, 0,12, 0,12,21,21,21,12, 0,12 DATA 12, 0, 0, 0, 0,21,21, 0, 0, 0,12, 0,12,21,21,21,12, 0,12 DATA 12,12,12,12,12,12,12,12,12,12, 0, 0, 0,12,12,12,12, 0,12 DATA 12, 0, 0, 0,21,21,21,21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,12 DATA 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12 Level4: DATA 10,11,12,10,11,12,10,11,12,10,11,12,10,11,12,10,11,12,10 DATA 11, 0, 0, 0,20,20,20,20,21,21,21,22,22,22,22,22,22,22,11 DATA 12, 0, 1, 0,20,20,20,20,21,21,21,22,22,22,22,22,22,22,12 DATA 10, 0, 0, 0,20,20,20,20,21,21,21,22,22,22,22,22,22,22,10 DATA 11,20,20,20,20,20,20,20,21,21,21,22,22,22,22,22,22,22,11 DATA 12,20,20,20,20,20,20,20,21,21,21,22,22,22,22,22,22,22,12 DATA 10,20,20,20,20,20,20,20,21,21,21,22,22,22,22,22,22,22,10 DATA 11,20,20,20,20,20,20,21,21,21,21,21,22,22,22, 0, 0, 0,11 DATA 12,20,20,20,20,20,21,21,21,21,21,21,21,22,22, 0, 2, 0,12 DATA 10,20,20,20,20,21,21,21,21,21,21,21,21,21,22, 0, 0, 0,10 DATA 11,12,10,11,12,10,11,12,10,11,12,10,11,12,10,11,12,10,11 Level5: DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,10 DATA 10, 0,22, 0,22, 0,22, 0,22, 2,22, 0,22, 0,22, 0,22, 0,10 DATA 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10 DATA 10, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,10 DATA 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10 DATA 10, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,10 DATA 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10 DATA 10, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,10 DATA 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 Level6: DATA 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 DATA 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11 DATA 11, 0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 0,11 DATA 11, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11 DATA 11, 0,10, 0,12,12,12,12,12,12,12,12,12,12,12, 0,10, 0,11 DATA 11, 0,10, 0,12,20,21,22,20,21,22,20,21,22,12, 0,10, 0,11 DATA 11, 0,10, 0,12, 0,12,12,12,12,12,12,12,12,12, 0,10, 0,11 DATA 11, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0,11 DATA 11, 0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 0,11 DATA 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,11 DATA 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 Level7: DATA 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13 DATA 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13 DATA 13, 0,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, 0,13 DATA 13, 0,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, 0,13 DATA 13, 0,23,23,23,23,23,23, 0, 0, 0,23,23,23,23,23,23, 0,13 DATA 13, 0,23,23,23,23,23,23, 1, 0, 2,23,23,23,23,23,23, 0,13 DATA 13, 0,23,23,23,23,23,23, 0, 0, 0,23,23,23,23,23,23, 0,13 DATA 13, 0,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, 0,13 DATA 13, 0,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, 0,13 DATA 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13 DATA 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13 Level8: DATA 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13 DATA 13, 0, 0, 0, 0, 0, 0, 0, 1,23, 2, 0, 0, 0, 0, 0, 0, 0,13 DATA 13, 0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, 0,13 DATA 13, 0,23, 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0,23, 0,13 DATA 13, 0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, 0,13 DATA 13, 0,23, 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0,23, 0,13 DATA 13, 0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, 0,13 DATA 13, 0,23, 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0,23, 0,13 DATA 13, 0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, 0,13 DATA 13, 0, 0, 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0, 0,13 DATA 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13 Level9: DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10, 1, 0,10, 0, 0, 0,10, 0,23, 0,10, 0, 0, 0,10, 0, 2,10 DATA 10, 0, 0, 0, 0, 0, 0,10, 0,10, 0,10, 0, 0, 0, 0, 0, 0,10 DATA 10,10, 0,23, 0, 0, 0,10, 0,10, 0,10, 0, 0, 0,23, 0,10,10 DATA 10, 0, 0,23, 0, 0, 0,10, 0,10, 0,10, 0, 0, 0,23, 0, 0,10 DATA 10, 0, 0,23, 0, 0, 0,10, 0,10, 0,10, 0, 0, 0,23, 0, 0,10 DATA 10, 0, 0,23, 0, 0, 0,10, 0,10, 0,10, 0, 0, 0,23, 0, 0,10 DATA 10,10, 0,23, 0, 0, 0,10, 0,10, 0,10, 0, 0, 0,23, 0,10,10 DATA 10, 0, 0, 0, 0, 0, 0,10, 0,10, 0,10, 0, 0, 0, 0, 0, 0,10 DATA 10, 0, 0,10, 0, 0, 0,23, 0,10, 0,23, 0, 0, 0,10, 0, 0,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 Level10: DATA 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12 DATA 12, 0, 0, 0,12, 0, 0, 0,12, 1, 0, 0,12, 0, 0, 0,12, 0,12 DATA 12, 0,12, 0,12, 0,12, 0,22, 0,22, 0,12, 0,12, 0,12, 0,12 DATA 12, 0,12, 0,12, 0,22, 0,22, 0,22, 0,22, 0,12, 0,12, 0,12 DATA 12, 0,12, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,12, 0,12 DATA 12, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,12 DATA 12, 0,12, 0,22, 0,22, 0,22, 0,22, 0,22, 0,22, 0,12, 0,12 DATA 12, 0,12, 0,12, 0,22, 0,22, 0,22, 0,22, 0,12, 0,12, 0,12 DATA 12, 0,12, 0,12, 0,12, 0,22, 0,22, 0,12, 0,12, 0,12, 0,12 DATA 12, 0,12, 0, 0, 0,12, 0, 0, 2,12, 0, 0, 0,12, 0, 0, 0,12 DATA 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12 Level11: DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10, 0, 0, 0, 0, 0,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10, 0, 1, 0, 2, 0,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10, 0, 0, 0, 0, 0,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 Level12: DATA 12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12 DATA 11,23,23,23,23, 1,23,23,23,23,23,23,23, 2,23,23,23,23,11 DATA 11,23,23,23,23, 0,23,23,23,23,23,23,23, 0,23,23,23,23,11 DATA 11,23,23,23,23, 0,23,23,23,23,23,23,23, 0,23,23,23,23,11 DATA 11,23,23,23,23, 0,23,23,23,23,23,23,23, 0,23,23,23,23,11 DATA 11,23,23,23,23, 0,23,23,23,23,23,23,23, 0,23,23,23,23,11 DATA 11,23,23,23,23, 0,23,23,23,23,23,23,23, 0,23,23,23,23,11 DATA 11,23,23,23,23, 0,23,23,23,23,23,23,23, 0,23,23,23,23,11 DATA 11,23,23,23,23, 0,23,23,23,23,23,23,23, 0,23,23,23,23,11 DATA 11,23,23,23,23, 0,23,23,23,23,23,23,23, 0,23,23,23,23,11 DATA 12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 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 DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 SUB center (ctext$, cline, cclr) COLOR cclr: LOCATE cline, 20 - (LEN(ctext$) / 2): PRINT ctext$ END SUB SUB Crazy (p) FOR it = 50 TO 3000 STEP 10 SOUND INT(RND * it) + 50, .025 SOUND INT(RND * 9000) + 8000, .025 NEXT it cent = INT(RND * 50) + 1 IF cent = 1 THEN PLAY "l50" FOR i = 1 TO 63 IF i = 5 THEN PLAY "o2e-9n0e-d-d-n0e-n0e-n0e-d-d-d-n0e-9n0e-d-d-n0e-" IF i = 10 THEN PLAY "o2g-9n0g-een0g-n0g-n0g-eeen0g-9n0g-een0g-" IF i = 15 THEN PLAY "o2b9n0baan0g-n0g-n0g-eeen0o1b9n0baan0b" IF i = 20 THEN PLAY "T160O0EFGEFDC" IF i = 25 THEN PLAY "T160O0EFGEFDC" PALETTE i, i NEXT i END IF IF cent = 2 THEN it = INT(RND * 3) + 1 FOR a = 1 TO 320 FOR d = 1 TO 200 PSET (a, d), POINT(a, d) - it NEXT d NEXT a END IF mush: Craze = INT(RND * 6) + 1 w = INT(RND * 2) + 1 CIRCLE ((b(w).x * 16) + 8, (b(w).y * 16) + 7), 16, 14 SELECT CASE Craze CASE 1: PLAY "l50n50n51n52n53n55n52n51" bomb(w).clock = bomb(w).clock / 2 CASE 2: PLAY "l64n10n20n25n24n23n24n25n26n25n24n23n21n23n22n24n22n24n25n24n23" bomb(w).clock = bomb(w).clock * 2 CASE 3: SOUND 100, 3 IF bomb(w).laid = TRUE THEN bomb(w).time = 2 ELSE Lay (w) END IF CASE 4: bomb(w).power = 1 CASE 5: bomb(w).power = 18 CASE 6: BEEP: BEEP: GOTO mush END SELECT END SUB SUB cursor (curx, cury, curclr) COLOR curclr: LOCATE cury, curx: PRINT "" END SUB SUB delay (deler) FOR delayee& = 1 TO deler * 10: NEXT delayee& END SUB SUB DoBomb (Which) bomb(Which).time = bomb(Which).time - 1 IF bomb(Which).time < 1 THEN bomb(Which).laid = FALSE FOR i = 1 TO 8 CIRCLE ((bomb(Which).x * 16) + 8, (bomb(Which).y * 16) + 7), i, 4 SOUND i * 10 + 50, .025 SOUND INT(RND * 100) + 200, .025 SOUND INT(RND * bomb(Which).power) + 50, .025 tile(bomb(Which).x, bomb(Which).y).style = 0 NEXT i DoExplode (Which) END IF END SUB SUB DoExplode (pe) IF bomb(pe).x = b(1).x AND bomb(pe).y = b(1).y THEN yea = 2: EXIT SUB IF bomb(pe).x = b(2).x AND bomb(pe).y = b(2).y THEN yea = 1: EXIT SUB FOR they = 1 TO bomb(pe).power FOR i = 1 TO 8 CIRCLE ((bomb(pe).x - they) * 16 + 8, bomb(pe).y * 16 + 7), i, 4 SOUND INT(RND * 200) + 50, .025 NEXT i IF bomb(pe).x - they = b(1).x AND bomb(pe).y = b(1).y THEN yea = 2: EXIT SUB IF bomb(pe).x - they = b(2).x AND bomb(pe).y = b(2).y THEN yea = 1: EXIT SUB SELECT CASE tile(bomb(pe).x - they, bomb(pe).y).style CASE 10, 11, 12, 13: EXIT FOR CASE 20, 21, 22, 23: tile(bomb(pe).x - they, bomb(pe).y).style = 0 hm = INT(RND * 8) + 1 IF hm = 6 THEN tile(bomb(pe).x - they, bomb(pe).y).style = 88 IF hm = 7 THEN tile(bomb(pe).x - they, bomb(pe).y).style = 69 EXIT FOR CASE 69, 88: tile(bomb(pe).x - they, bomb(pe).y).style = 0 EXIT FOR CASE 99: FOR i = 1 TO 2: bomb(i).time = 1: NEXT i END SELECT NEXT they FOR they = 1 TO bomb(pe).power FOR i = 1 TO 8 CIRCLE ((bomb(pe).x + they) * 16 + 8, bomb(pe).y * 16 + 7), i, 4 SOUND INT(RND * 200) + 50, .025 NEXT i IF bomb(pe).x + they = b(1).x AND bomb(pe).y = b(1).y THEN yea = 2: EXIT SUB IF bomb(pe).x + they = b(2).x AND bomb(pe).y = b(2).y THEN yea = 1: EXIT SUB SELECT CASE tile(bomb(pe).x + they, bomb(pe).y).style CASE 10, 11, 12, 13: EXIT FOR CASE 20, 21, 22, 23: tile(bomb(pe).x + they, bomb(pe).y).style = 0 hm = INT(RND * 8) + 1 IF hm = 6 THEN tile(bomb(pe).x + they, bomb(pe).y).style = 88 IF hm = 7 THEN tile(bomb(pe).x + they, bomb(pe).y).style = 69 EXIT FOR CASE 69, 88: tile(bomb(pe).x + they, bomb(pe).y).style = 0 EXIT FOR CASE 99: FOR i = 1 TO 2: bomb(i).time = 1: NEXT i END SELECT NEXT they FOR they = 1 TO bomb(pe).power FOR i = 1 TO 8 CIRCLE ((bomb(pe).x) * 16 + 8, (bomb(pe).y - they) * 16 + 7), i, 4 SOUND INT(RND * 200) + 50, .025 NEXT i IF bomb(pe).x = b(1).x AND bomb(pe).y - they = b(1).y THEN yea = 2: EXIT SUB IF bomb(pe).x = b(2).x AND bomb(pe).y - they = b(2).y THEN yea = 1: EXIT SUB SELECT CASE tile(bomb(pe).x, bomb(pe).y - they).style CASE 10, 11, 12, 13: EXIT FOR CASE 20, 21, 22, 23: tile(bomb(pe).x, bomb(pe).y - they).style = 0 hm = INT(RND * 8) + 1 IF hm = 6 THEN tile(bomb(pe).x, bomb(pe).y - they).style = 88 IF hm = 7 THEN tile(bomb(pe).x, bomb(pe).y - they).style = 69 EXIT FOR CASE 69, 88: tile(bomb(pe).x, bomb(pe).y - they).style = 0 EXIT FOR CASE 99: FOR i = 1 TO 2: bomb(i).time = 1: NEXT i END SELECT NEXT they FOR they = 1 TO bomb(pe).power FOR i = 1 TO 8 CIRCLE ((bomb(pe).x) * 16 + 8, (bomb(pe).y + they) * 16 + 7), i, 4 SOUND INT(RND * 200) + 50, .025 NEXT i IF bomb(pe).x = b(1).x AND bomb(pe).y + they = b(1).y THEN yea = 2: EXIT SUB IF bomb(pe).x = b(2).x AND bomb(pe).y + they = b(2).y THEN yea = 1: EXIT SUB SELECT CASE tile(bomb(pe).x, bomb(pe).y + they).style CASE 10, 11, 12, 13: EXIT FOR CASE 20, 21, 22, 23: tile(bomb(pe).x, bomb(pe).y + they).style = 0 hm = INT(RND * 8) + 1 IF hm = 6 THEN tile(bomb(pe).x, bomb(pe).y + they).style = 88 IF hm = 7 THEN tile(bomb(pe).x, bomb(pe).y + they).style = 69 EXIT FOR CASE 69, 88: tile(bomb(pe).x, bomb(pe).y + they).style = 0 EXIT FOR CASE 99: FOR i = 1 TO 2: bomb(i).time = 1: NEXT i END SELECT NEXT they END SUB SUB DrawIMG ass = INT(RND * 256) FOR dp = 1 TO 16 FOR ap = 1 TO 16 READ att IF att = 999 THEN att = ass PSET (ap + 10, dp + 10), att NEXT NEXT END SUB SUB DrawScreen (s%) FOR rela = 1 TO ACROSS FOR reld = 1 TO DOWN CALL DrawTile(rela, reld, rela, reld, s) NEXT reld NEXT rela END SUB SUB DrawTile (tx, ty, cx, cy, dt) IF dt = 1 THEN SELECT CASE tile(tx, ty).style CASE 0: PUT (tile(cx, cy).x, tile(cx, cy).y), blank, PSET CASE 1: PUT (tile(cx, cy).x, tile(cx, cy).y), player1, PSET CASE 2: PUT (tile(cx, cy).x, tile(cx, cy).y), player2, PSET CASE 10: PUT (tile(cx, cy).x, tile(cx, cy).y), wall, PSET CASE 11: PUT (tile(cx, cy).x, tile(cx, cy).y), psycho, PSET CASE 12: PUT (tile(cx, cy).x, tile(cx, cy).y), chest, PSET CASE 13: PUT (tile(cx, cy).x, tile(cx, cy).y), tree, PSET CASE 20: PUT (tile(cx, cy).x, tile(cx, cy).y), crumble, PSET CASE 21: PUT (tile(cx, cy).x, tile(cx, cy).y), door, PSET CASE 22: PUT (tile(cx, cy).x, tile(cx, cy).y), block, PSET CASE 23: PUT (tile(cx, cy).x, tile(cx, cy).y), forest, PSET END SELECT END IF IF dt = 2 THEN SELECT CASE tile(tx, ty).style CASE 0: PUT (tile(cx, cy).x, tile(cx, cy).y), blank, PSET CASE 1: PUT (tile(cx, cy).x, tile(cx, cy).y), player1, PSET CASE 2: PUT (tile(cx, cy).x, tile(cx, cy).y), player2, PSET CASE 69: PUT (tile(cx, cy).x, tile(cx, cy).y), shroom, PSET CASE 88: PUT (tile(cx, cy).x, tile(cx, cy).y), powerup, PSET CASE 99: PUT (tile(cx, cy).x, tile(cx, cy).y), TNT, PSET END SELECT END IF END SUB SUB ExitGame CLS CALL center("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿", 9, 9) CALL center("³QBOMBERMAN v1.3 ³", 10, 9) CALL center("³ May 1996 by Matt Hackett -Richter³", 11, 9) CALL center("³ ³", 12, 9) CALL center("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ", 13, 9): getch ERASE blank, player1, player2, TNT, powerup, shroom, wall, psycho ERASE chest, crumble, door END END SUB SUB getch 'Pauses and waits for a key press - the name came from C++ DO: LOOP WHILE INKEY$ = "" END SUB SUB GetPower (p) FOR it = 50 TO 300 STEP 10 SOUND it, .025 SOUND INT(RND * it) + 50, .025 SOUND INT(RND * 1000) + 3000, .025 NEXT: bomb(p).power = bomb(p).power + 1 END SUB SUB Init 'Loads all data, gives values, and basically just initiates everything RestoreGraphics FOR i = 1 TO 2 bomb(i).power = 1 bomb(i).clock = EXPLODE NEXT: CLS CALL center("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿", 9, 9) CALL center("³QBOMBERMAN v1.3 ³", 10, 9) CALL center("³ May 1996 by Matt Hackett -Richter³", 11, 9) CALL center("³ ³", 12, 9) CALL center("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ", 13, 9): getch END SUB SUB Lay (Which) SOUND 110, 1 SOUND 300, 1 bomb(Which).laid = TRUE tile(b(Which).x, b(Which).y).style = 99 bomb(Which).x = b(Which).x bomb(Which).y = b(Which).y bomb(Which).time = bomb(Which).clock PUT (b(Which).x * 16, b(Which).y * 16), TNT, PSET END SUB SUB LoadMap 'Reads the appropriate map type and calls the Main program ERASE player1 ERASE player2 RESTORE player1data DrawIMG GET (11, 11)-(26, 26), player1 PUT (11, 11), player1, XOR RESTORE player2data DrawIMG GET (11, 11)-(26, 26), player2 PUT (11, 11), player2, XOR WhichMap = INT(RND * 12) + 1 SELECT CASE WhichMap CASE 1: RESTORE Level1 CASE 2: RESTORE Level2 CASE 3: RESTORE Level3 CASE 4: RESTORE Level4 CASE 5: RESTORE Level5 CASE 6: RESTORE Level6 CASE 7: RESTORE Level7 CASE 8: RESTORE Level8 CASE 9: RESTORE Level9 CASE 10: RESTORE Level10 CASE 11: RESTORE Level11 CASE 12: RESTORE Level12 END SELECT CLS CALL center("Loading...", 11, 7) FOR i = 1 TO 2 bomb(i).clock = EXPLODE bomb(i).time = 0 bomb(i).laid = FALSE bomb(i).x = 0 bomb(i).y = 0 bomb(i).power = 1 NEXT i yea = 0 END SUB SUB Main '//////////////////////////////////////////////////////////////////////////// '//////////////////////////// The Main program! ///////////////////////////// '//////////////////////////////////////////////////////////////////////////// SetLocks SetAtts 'Read for the player's positions from Level Map FOR p = 1 TO 2 FOR a = 1 TO 19 FOR d = 1 TO 11 IF tile(a, d).style = p THEN b(p).x = a b(p).y = d END IF NEXT d NEXT a NEXT p DrawScreen (1) DO IF bomb(1).laid = TRUE THEN DoBomb (1) IF bomb(2).laid = TRUE THEN DoBomb (2) IF yea > 0 THEN Win (yea): GOTO ExitMain kbhit$ = INKEY$ IF kbhit$ <> "" THEN kbhit$ = RIGHT$(kbhit$, 1) SELECT CASE kbhit$ 'Escape key CASE CHR$(27): ExitGame 'Space bar CASE CHR$(32): IF bomb(1).laid = FALSE THEN Lay (1) 'Up arrow CASE CHR$(72): SELECT CASE tile(b(1).x, b(1).y - 1).style CASE 0, 69, 88: IF tile(b(1).x, b(1).y - 1).style = 88 THEN GetPower (1) IF tile(b(1).x, b(1).y - 1).style = 69 THEN Crazy (1) IF tile(b(1).x, b(1).y).style = 1 THEN tile(b(1).x, b(1).y).style = 0 ELSE tile(b(1).x, b(1).y).style = 99 END IF b(1).y = b(1).y - 1 tile(b(1).x, b(1).y).style = 1 DrawScreen (2) END SELECT 'Down arrow CASE CHR$(80): SELECT CASE tile(b(1).x, b(1).y + 1).style CASE 0, 69, 88: IF tile(b(1).x, b(1).y + 1).style = 88 THEN GetPower (1) IF tile(b(1).x, b(1).y + 1).style = 69 THEN Crazy (1) IF tile(b(1).x, b(1).y).style = 1 THEN tile(b(1).x, b(1).y).style = 0 ELSE tile(b(1).x, b(1).y).style = 99 END IF b(1).y = b(1).y + 1 tile(b(1).x, b(1).y).style = 1 DrawScreen (2) END SELECT 'Left arrow CASE CHR$(75): SELECT CASE tile(b(1).x - 1, b(1).y).style CASE 0, 69, 88: IF tile(b(1).x - 1, b(1).y).style = 88 THEN GetPower (1) IF tile(b(1).x - 1, b(1).y).style = 69 THEN Crazy (1) IF tile(b(1).x, b(1).y).style = 1 THEN tile(b(1).x, b(1).y).style = 0 ELSE tile(b(1).x, b(1).y).style = 99 END IF b(1).x = b(1).x - 1 tile(b(1).x, b(1).y).style = 1 DrawScreen (2) END SELECT 'Right arrow CASE CHR$(77): SELECT CASE tile(b(1).x + 1, b(1).y).style CASE 0, 69, 88: IF tile(b(1).x + 1, b(1).y).style = 88 THEN GetPower (1) IF tile(b(1).x + 1, b(1).y).style = 69 THEN Crazy (1) IF tile(b(1).x, b(1).y).style = 1 THEN tile(b(1).x, b(1).y).style = 0 ELSE tile(b(1).x, b(1).y).style = 99 END IF b(1).x = b(1).x + 1 tile(b(1).x, b(1).y).style = 1 DrawScreen (2) END SELECT CASE "5": IF bomb(2).laid = FALSE THEN Lay (2) CASE "8": SELECT CASE tile(b(2).x, b(2).y - 1).style CASE 0, 69, 88: IF tile(b(2).x, b(2).y - 1).style = 88 THEN GetPower (2) IF tile(b(2).x, b(2).y - 1).style = 69 THEN Crazy (2) IF tile(b(2).x, b(2).y).style = 2 THEN tile(b(2).x, b(2).y).style = 0 ELSE tile(b(2).x, b(2).y).style = 99 END IF b(2).y = b(2).y - 1 tile(b(2).x, b(2).y).style = 2 DrawScreen (2) END SELECT CASE "2": SELECT CASE tile(b(2).x, b(2).y + 1).style CASE 0, 69, 88: IF tile(b(2).x, b(2).y + 1).style = 88 THEN GetPower (2) IF tile(b(2).x, b(2).y + 1).style = 69 THEN Crazy (2) IF tile(b(2).x, b(2).y).style = 2 THEN tile(b(2).x, b(2).y).style = 0 ELSE tile(b(2).x, b(2).y).style = 99 END IF b(2).y = b(2).y + 1 tile(b(2).x, b(2).y).style = 2 DrawScreen (2) END SELECT CASE "4": SELECT CASE tile(b(2).x - 1, b(2).y).style CASE 0, 69, 88: IF tile(b(2).x - 1, b(2).y).style = 88 THEN GetPower (2) IF tile(b(2).x - 1, b(2).y).style = 69 THEN Crazy (2) IF tile(b(2).x, b(2).y).style = 2 THEN tile(b(2).x, b(2).y).style = 0 ELSE tile(b(2).x, b(2).y).style = 99 END IF b(2).x = b(2).x - 1 tile(b(2).x, b(2).y).style = 2 DrawScreen (2) END SELECT CASE "6": SELECT CASE tile(b(2).x + 1, b(2).y).style CASE 0, 69, 88: IF tile(b(2).x + 1, b(2).y).style = 88 THEN GetPower (2) IF tile(b(2).x + 1, b(2).y).style = 69 THEN Crazy (2) IF tile(b(2).x, b(2).y).style = 2 THEN tile(b(2).x, b(2).y).style = 0 ELSE tile(b(2).x, b(2).y).style = 99 END IF b(2).x = b(2).x + 1 tile(b(2).x, b(2).y).style = 2 DrawScreen (2) END SELECT END SELECT END IF LOOP ExitMain: END SUB SUB RestoreGraphics 'Reads from data, calls drawIMG, and stores it in an array CALL center("Loading graphics...", 11, 7) GET (11, 11)-(26, 26), blank RESTORE player1data DrawIMG GET (11, 11)-(26, 26), player1 PUT (11, 11), player1, XOR RESTORE player2data DrawIMG GET (11, 11)-(26, 26), player2 PUT (11, 11), player2, XOR RESTORE walldata DrawIMG GET (11, 11)-(26, 26), wall PUT (11, 11), wall, XOR RESTORE psychodata DrawIMG GET (11, 11)-(26, 26), psycho PUT (11, 11), psycho, XOR RESTORE crumbledata DrawIMG GET (11, 11)-(26, 26), crumble PUT (11, 11), crumble, XOR RESTORE TNTdata DrawIMG GET (11, 11)-(26, 26), TNT PUT (11, 11), TNT, XOR RESTORE PowerUpdata DrawIMG GET (11, 11)-(26, 26), powerup PUT (11, 11), powerup, XOR RESTORE Chestdata DrawIMG GET (11, 11)-(26, 26), chest PUT (11, 11), chest, XOR RESTORE Doordata DrawIMG GET (11, 11)-(26, 26), door PUT (11, 11), door, XOR RESTORE Shroomdata DrawIMG GET (11, 11)-(26, 26), shroom PUT (11, 11), shroom, XOR RESTORE Blockdata DrawIMG GET (11, 11)-(26, 26), block PUT (11, 11), block, XOR RESTORE Treedata DrawIMG GET (11, 11)-(26, 26), tree PUT (11, 11), tree, XOR RESTORE Forestdata DrawIMG GET (11, 11)-(26, 26), forest PUT (11, 11), forest, XOR END SUB SUB SetAtts 'Reads a tile's attributes FOR d = 1 TO DOWN FOR a = 1 TO ACROSS READ tile(a, d).style NEXT a NEXT d END SUB SUB SetLocks 'Locks onto a tile's position on screen FOR a = 1 TO ACROSS FOR d = 1 TO DOWN tile(a, d).x = 16 * a tile(a, d).y = 16 * d NEXT d NEXT a END SUB SUB Win (Winner) total = total + 1 k = 60 kl = 1 DO IF kl = 1 THEN k = k + 1 IF kl = 2 THEN k = k - 1 IF k < 60 THEN kl = 1 IF k > 300 THEN kl = 2 SOUND k, .025 LOOP WHILE INKEY$ = "" FOR kl = k TO 1000 SOUND kl, .025 NEXT kl i = 1 DO i = i + 1 IF i > 255 THEN i = 1 LOCATE 4, 3 COLOR i PRINT "PLAYER"; Winner; "WON!" LOOP WHILE INKEY$ = "" b(Winner).wins = b(Winner).wins + 1 DO i = i + 1 IF i > 255 THEN i = 1 LOCATE 6, 3 COLOR i PRINT "PLAYER"; Winner; "HAS WON"; b(Winner).wins; "/"; total; "TIMES!" LOOP WHILE INKEY$ = "" DO i = i + 1 IF i > 255 THEN i = 1 LOCATE 8, 3 COLOR i PRINT "PLAY AGAIN?" a$ = INKEY$ IF a$ <> "" THEN IF a$ = "n" THEN ExitGame IF a$ = "N" THEN ExitGame EXIT DO END IF LOOP IF Winner = 1 THEN bomb(2).power = 1 ELSE bomb(1).power = 1 END IF END SUB