'=========================================================================== ' Subject: SIMPLE PONG Date: 04-30-96 (06:28) ' Author: Cam Spowart Code: QB, QBasic, PDS ' Origin: slyboots@supernet.ab.ca Packet: GAMES.ABC '=========================================================================== DECLARE SUB paddledraw (yvar, clr) pclr = INT(RND * 62) pclrinc = 2 CLS SCREEN 12 COLOR 4 FOR countme = 1 TO 100 gothere = INT(RND * 2) IF gothere = 0 THEN pclrinc = pclrinc IF gothere = 1 THEN pclrinc = pclrinc * -1 pclr = pclr + pclrinc IF pclr > 20 THEN pclr = 20 IF pclr < 0 THEN pclr = 0 LOCATE 1, 1: PRINT LOCATE 2, 1: PRINT LOCATE 3, 1: PRINT LOCATE 4, 1: PRINT LOCATE 5, 1: PRINT LOCATE 6, 1: PRINT LOCATE 7, 1: PRINT LOCATE 8, 1: PRINT LOCATE 9, 1: PRINT LOCATE 10, 1: PRINT LOCATE 11, 1: PRINT LOCATE 12, 1: PRINT LOCATE 13, 1: PRINT LOCATE 14, 1: PRINT LOCATE 15, 1: PRINT LOCATE 16, 1: PRINT LOCATE 17, 1: PRINT LOCATE 18, 1: PRINT LOCATE 19, 1: PRINT LOCATE 20, 1: PRINT LOCATE 21, 1: PRINT LOCATE 22, 1: PRINT LOCATE 23, 1: PRINT PALETTE 4, pclr LOCATE 1, 1: PRINT "ÚÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄ¿" LOCATE 2, 1: PRINT "³ ÚÄÄÄÄ¿ ³ ÀÄ¿ ÚÄÙ ³ ÚÄ¿ ÚÄ¿ ³ À¿ ÚÄÄÄ¿ ³ À¿ ÚÙ À¿ ÚÄÄÄ¿ ³" LOCATE 3, 1: PRINT "³ ³ ÀÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÙ" LOCATE 4, 1: PRINT "³ ÀÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÙ ³ ³ ³ ³ ÀÄÄ¿" LOCATE 5, 1: PRINT "ÀÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÚÄÄÄÄÄÄÙ ³ ³ ³ ÚÄÄÙ" LOCATE 6, 1: PRINT "ÚÄ¿ ³ ³ ³ ³ ³ ³ ÀÄÄÙ ³ ³ ³ ³ ³ ³ ÚÄ¿ ³ ³ ÚÄ¿" LOCATE 7, 1: PRINT "³ ÀÄÄÄÄÙ ³ ÚÄÙ ÀÄ¿ ÚÙ À¿ ÚÙ À¿ ÚÙ À¿ ÚÙ ÀÄÄÄÙ ³ ÚÙ ÀÄÄÄÙ ³" LOCATE 8, 1: PRINT "ÀÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÙ ÀÄÄÄÄÙ ÀÄÄÄÄÙ ÀÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÙ" LOCATE 9, 1: PRINT " ßÛßßÜ ÜßßßÜ ßÛÜ ßÜ ÜßßßÜ" LOCATE 10, 1: PRINT " Û Û Û Û Û Û Û Û" LOCATE 11, 1: PRINT " ßÛßßß Û Û Û Û Û Û ÜÜß" LOCATE 12, 1: PRINT " Û Û Û Û Û Û Û ß Û" LOCATE 13, 1: PRINT " ß ßÜÜÜÜß Üß ßÜß ßÜÜÜÜß" LOCATE 14, 1: PRINT "" LOCATE 15, 1: PRINT " Slyboots (1996)" LOCATE 16, 1: PRINT "" FOR timervar = 1 TO 250: NEXT timervar NEXT countme PALETTE 4, 60 startup: COLOR 15 SCREEN 12 CLS LOCATE 1, 30: PRINT "Input ball speed:" LINE (310, 135)-(330, 345), 4, B yline = 240 ballspeed = 100 LINE (310, yline)-(330, yline), 4 LOCATE 23, 40: PRINT "0 - You blow harsh!" LOCATE 8, 39: PRINT "200 - You rock!" LOCATE 12, 45: PRINT ballspeed LOCATE 12, 55: PRINT "%" LOCATE 3, 15: PRINT "Use up and down, then hit space bar to confirm" DO refresh: keyme$ = INKEY$ SELECT CASE keyme$ CASE CHR$(0) + "H" 'up arrow GOTO upthere CASE CHR$(0) + "P" 'down arrow GOTO downthere CASE " " GOTO enditnow END SELECT LOOP upthere: LINE (310, yline)-(330, yline), 0 yline = yline - 10 ballspeed = ballspeed + 10 IF ballspeed > 200 THEN ballspeed = 200 IF yline < 140 THEN yline = 140 LINE (310, yline)-(330, yline), 4 LINE (310, 135)-(330, 345), 4, B LOCATE 12, 45: PRINT " " LOCATE 12, 45: PRINT ballspeed GOTO refresh downthere: LINE (310, yline)-(330, yline), 0 yline = yline + 10 ballspeed = ballspeed - 10 IF ballspeed < 10 THEN ballspeed = 10 IF yline > 340 THEN yline = 340 LINE (310, yline)-(330, yline), 4 LINE (310, 135)-(330, 345), 4, B LOCATE 12, 45: PRINT " " LOCATE 12, 45: PRINT ballspeed GOTO refresh enditnow: CLS xinc = ballspeed / 100 yinc = ballspeed / 100 xpos = 575 ypos = 240 CLS yvar = 240 CALL paddledraw(240, 4) countvar = 0 DO LOCATE 1, 1: PRINT countvar getbackin: CIRCLE (xpos, ypos), 20, 0 xpos = xpos + xinc ypos = ypos + yinc CIRCLE (xpos, ypos), 20, 2 IF xpos + 20 > 640 OR xpos + 20 < 0 THEN xinc = xinc * -1 IF xpos - 20 < 0 OR xpos + 20 < 0 THEN xinc = xinc * -1 IF ypos - 20 > 480 OR ypos + 20 > 480 THEN yinc = yinc * -1 IF ypos - 20 < 0 OR ypos + 20 < 0 THEN yinc = yinc * -1 IF xpos + 20 >= 614 GOTO losecheck kbd$ = INKEY$ SELECT CASE kbd$ CASE CHR$(0) + "H" 'up arrow GOTO upcursor CASE CHR$(0) + "P" 'down arrow GOTO downcursor CASE " " 'spacebar GOTO theend CASE "p" GOTO pauseit END SELECT beforeloop: LOOP theend: GOTO plead upcursor: CALL paddledraw(yvar, 0) yvar = yvar - 15 IF yvar < 0 THEN yvar = 0 CALL paddledraw(yvar, 4) GOTO getbackin downcursor: CALL paddledraw(yvar, 0) yvar = yvar + 15 IF yvar > 480 THEN yvar = 480 CALL paddledraw(yvar, 4) GOTO getbackin losecheck: SELECT CASE ypos CASE yvar - 55 TO yvar + 55 xinc = xinc * -1 countvar = countvar + 1 GOTO beforeloop CASE 0 TO yvar - 44 GOTO youlose CASE yvar + 55 TO 480 GOTO youlose CASE ELSE xinc = xinc * -1 countvar = countvar + 1 GOTO beforeloop END SELECT youlose: WHILE INKEY$ <> "": WEND CLS SCREEN 0 LOCATE 1, 1: PRINT "You lost with "; countvar; " bounces," LOCATE 2, 1: PRINT "at "; ballspeed; "% speed." DO WHILE INKEY$ = "": LOOP reinput: CLS PRINT "Do you want to play again?" INPUT "", goagain$ goagain$ = LCASE$(goagain$) SELECT CASE goagain$ CASE "y" GOTO startup CASE "n" GOTO plead CASE "yes" GOTO startup CASE "no" GOTO plead CASE ELSE GOTO reinput END SELECT END pauseit: DO UNTIL INKEY$ = " ": LOOP GOTO beforeloop plead: SCREEN 0 CLS COLOR 7 PRINT "" PRINT "" PRINT " S I M P L E P O N G" PRINT " by Cam Spowart" PRINT " This program is a simple game to play when bored or downloading...." PRINT " (probably both). I have not crippled it or done anything lame to piss" PRINT " you off. I will not charge squat for it, however, I'm begging for" PRINT " donations. I want to go to university someday, and so I have to do" PRINT " stuff like this (and work at gas stations). Just scour your couch" PRINT " cushions for spare change so I can get by BSc in Engineering. Please" PRINT " please please!!! - Slyboots, April 1, 1996" COLOR 4, 0 a$ = "* * * * * * * * * * * * * * * * * " WHILE INKEY$ <> "": WEND 'Clear keyboard buffer WHILE INKEY$ = "" FOR a = 1 TO 5 LOCATE 1, 1 'print horizontal sparkles PRINT MID$(a$, a, 80); LOCATE 22, 1 PRINT MID$(a$, 6 - a, 80); FOR B = 2 TO 21 'Print Vertical sparkles c = (a + B) MOD 5 IF c = 1 THEN LOCATE B, 80 PRINT "*"; LOCATE 23 - B, 1 PRINT "*"; ELSE LOCATE B, 80 PRINT " "; LOCATE 23 - B, 1 PRINT " "; END IF NEXT B NEXT a WEND CLS COLOR 15 PRINT "Send your contributions to:" PRINT " Cam Spowart" PRINT " 145 Rutherford Drive" PRINT " Red Deer, Ab, Canada" PRINT " T4P 3G2" PRINT PRINT "Or just talk to me over e-mail on net if yer cheap....." PRINT " slyboots@acecomm.com" SUB paddledraw (yvar, clr) LINE (615, yvar + 50)-(630, yvar - 50), clr, B END SUB