'=========================================================================== ' Subject: WHACK A MOLE Date: 05-04-96 (12:00) ' Author: Michael Stein Code: QB, QBasic, PDS ' Origin: www.nerc.com/~dstein/bas/ Packet: GAMES.ABC '=========================================================================== CLS arrowup$ = CHR$(0) + "H" arrowdown$ = CHR$(0) + "P" arrowleft$ = CHR$(0) + "K" arrowright$ = CHR$(0) + "M" ham = 1 mole = 5 RANDOMIZE TIMER mole = INT(RND * 5) + 1 SCREEN 12 zz = 0 speed = 1000 x = 0 hits = 0 miss = 0 a: PAINT (1, 1), 2, 5 CIRCLE (150, 100), 50 CIRCLE (300, 100), 50 CIRCLE (450, 100), 50 CIRCLE (225, 300), 50 CIRCLE (375, 300), 50 FOR a = 150 TO 450 STEP 150 PAINT (a, 100), 12, 15 NEXT a FOR a = 225 TO 375 STEP 150 PAINT (a, 300), 12, 15 NEXT a 'mole a = 150 b = 100 IF mole = 2 THEN LET a = a + 150 IF mole = 3 THEN LET a = a + 300 IF mole = 4 THEN LET b = b + 200 LET a = a + 75 ELSEIF mole = 5 THEN LET b = b + 200 LET a = a + 225 END IF SCREEN 12 CIRCLE (a, (b - 5)), 30, 13 PAINT (a, (b - 5)), 13, 13 CIRCLE ((a - 10), (b - 10)), 5, 0 CIRCLE ((a + 10), (b - 10)), 5, 0 PAINT ((a - 10), (b - 10)), 0, 0 PAINT ((a + 10), (b - 10)), 0, 0 CIRCLE (a, b), 3, 0 LINE (a, (b + 10))-((a - 20), (b - 5)), 0 LINE (a, (b + 10))-((a + 20), (b - 5)), 0 'endmole LET a = 0 LET b = 0 IF ham = 2 THEN LET a = a + 150 IF ham = 3 THEN LET a = a + 300 IF ham = 4 OR ham = 5 THEN LET a = a + 75 LET b = b + 200 END IF IF ham = 5 THEN LET a = a + 150 CIRCLE ((a + 150), (b + 100)), 25, 6 PAINT ((a + 150), (b + 100)), 6, 6 LINE ((a + 145), (b + 100))-((a + 150), (b + 175)), 6, B PAINT ((a + 149), (b + 174)), 6, 6 LOCATE 1, 1 PRINT "Hits:"; num PRINT ; "Misses:"; pp DO LET a$ = UCASE$(INKEY$) PAINT ((a + 147), (b + 134)), 6, 6 LET zz = zz + 1 IF zz = speed THEN GOTO uhoh LOOP WHILE a$ = "" LET pee = ham IF a$ = arrowup$ THEN IF ham = 4 THEN LET ham = 1 IF ham = 5 THEN LET ham = 2 ELSEIF a$ = arrowdown$ THEN IF ham = 3 THEN LET ham = 5 IF ham = 2 THEN LET ham = 4 IF ham = 1 THEN LET ham = 4 ELSEIF a$ = arrowleft$ THEN IF ham = 5 THEN ham = 40 IF ham = 4 THEN ham = 1 IF ham = 3 THEN ham = 20 IF ham = 2 THEN ham = 1 IF ham = 20 THEN ham = 2 IF ham = 40 THEN ham = 4 ELSEIF a$ = arrowright$ THEN IF ham = 5 THEN ham = 3 IF ham = 4 THEN ham = 5 IF ham = 2 THEN ham = 3 IF ham = 1 THEN ham = 2 END IF IF a$ = " " THEN IF ham <> mole THEN GOTO rty zz = 0 num = num + 1 speed = speed - 5 RANDOMIZE TIMER mole = INT(RND * 5) + 1 SOUND 500, 5 rty: END IF LET a = 0 LET b = 0 IF pee = 2 THEN LET a = a + 150 IF pee = 3 THEN LET a = a + 300 IF pee = 4 OR pee = 5 THEN LET a = a + 75 LET b = b + 200 END IF IF a$ = CHR$(27) THEN SYSTEM IF pee = 5 THEN LET a = a + 150 CIRCLE ((a + 150), (b + 100)), 25, 0 PAINT ((a + 150), (b + 100)), 0, 0 LINE ((a + 145), (b + 100))-((a + 150), (b + 175)), 0, B PAINT ((a + 149), (b + 174)), 0, 0 PAINT ((a + 149), (b + 174)), 2, 15 GOTO a uhoh: RANDOMIZE TIMER mole = INT(RND * 5) + 1 LET pp = pp + 1 zz = 0 IF pp = 10 THEN GOTO byebye GOTO a byebye: CLS PRINT "Game Over!" PRINT "You whacked"; num; "moles!!" INPUT kj$ SYSTEM