'===========================================================================
' 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 <Slyboots> 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
