'===========================================================================
' Subject: PAPER-SCISSORS-ROCK GAME           Date: Unknown Date           
'  Author: Unknown Author(s)                  Code: PB                     
'  Origin: PB Revision                      Packet: GAMES.ABC
'===========================================================================
$IF 0
  ROCKPAP.BAS for PowerBASIC, adopted from PAPEROCK.BAS.
$ENDIF
$LIB ALL OFF
DEFINT A-Z

black = 0: blue = 1: green = 2: cyan = 3: red = 4: magenta = 5
yellow = 6: white = 7: bright = 8
Charge$ = "T240MFCfa>c.<a>l2C"

begin:
 WIDTH 80
 RANDOMIZE TIMER

'SCREEN 9
 COLOR white + bright, cyan         ' COLOR foreground, background
 CLS
 LOCATE 5, 8, 1                     ' show cursor this screen!
 PRINT "Would You Like To Play The Paper-Scissors-Rock Game...?";
 DO
  WHILE NOT INSTAT: WEND
  Ans$ = UCASE$(INKEY$)
 LOOP UNTIL TALLY (Ans$, ANY "YN" + CHR$(27))
 PRINT Ans$
 LOCATE , , 0                       ' hide cursor
 IF Ans$ <> "Y" THEN
   GOTO ending
 END IF

One:
PLAY Charge$                        ' and set the tempo for future PLAY's
LOCATE 11, 1
PRINT "       ... Press a Key to Play"
SLEEP
Junk$ = INKEY$                      ' empty the buffer

GAME:
CLS
LOCATE 2, 19
PRINT "Welcome To The Paper, Scissors, Rock Game!"
LOCATE 5, 17
PRINT "You pick either (P)aper, (S)cissors, or (R)ock"
LOCATE 7, 10
PRINT "and the computer will randomly select one of the other two."
LOCATE 9, 18
PRINT "Please press the Q key to (Q)uit at any time."
LOCATE 11, 25
PRINT "Now, What Do You Want... "
LOCATE 13, 30
PRINT "(P/S/R) "

DO
 WHILE NOT INSTAT: WEND
 guess$ = UCASE$(INKEY$)
LOOP UNTIL TALLY (Guess$, ANY "RPSQ")

IF guess$ = "P" THEN GOSUB paper
IF guess$ = "S" THEN GOSUB scissors
IF guess$ = "R" THEN GOSUB rock
IF guess$ = "Q" THEN GOSUB ending

WHILE INSTAT: Junk$ = INKEY$: WEND'empty the buffer

GOTO GAME

paper:
x% = INT(RND * 9) + 1
IF x% > 5 THEN GOSUB winp
IF x% < 5 THEN GOSUB loses
IF x% = 5 THEN
 Item$ = "Paper"
 GOSUB TieBallGame
END IF
RETURN

scissors:
x% = INT(RND * 9) + 1
IF x% > 5 THEN GOSUB wins
IF x% < 5 THEN GOSUB loser
IF x% = 5 THEN
 Item$ = "Scissors"
 GOSUB TieBallGame
END IF
RETURN

rock:
x% = INT(RND * 9) + 1
IF x% > 5 THEN GOSUB winr
IF x% < 5 THEN GOSUB losep
IF x% = 5 THEN
  Item$ = "Rock"
  GOSUB TieBallGame
END IF
RETURN

winp:
CLS
LOCATE 8, 3
PRINT "You chose Paper..."
LOCATE 10, 4
PRINT "The computer chose Rock..."
LOCATE 12, 5
PRINT "Paper wraps rock... You WON!!! ";
PRINT CHR$(1)
PLAY "MF O3 L6 C C C L4 < G L6 > E E E C"
SLEEP 1
RETURN

wins:
CLS
LOCATE 8, 3
PRINT "You chose Scissors..."
LOCATE 10, 4
PRINT "The computer chose Paper..."
LOCATE 12, 5
PRINT "Scissors cut Paper... You WON!!! ";
PRINT CHR$(1)
PLAY "MF O3 L6 C C C L4 < G L6 > E E E C"
SLEEP 1
RETURN

winr:
CLS
LOCATE 8, 3
PRINT "You chose Rock..."
LOCATE 10, 4
PRINT "The computer chose Scissors..."
LOCATE 12, 5
PRINT "Rock breaks Scissors... You WON!!! ";
PRINT CHR$(1)
PLAY "MF O3 L6 C C C L4 < G L6 > E E E C"
SLEEP 1
RETURN

losep:
CLS
LOCATE 8, 3
PRINT "You chose Rock..."
LOCATE 10, 4
PRINT "The computer chose Paper..."
LOCATE 12, 5
PRINT "Paper wraps Rock... please try again..."
PLAY "MF O1 L4 G G L8 G L4 G L4 B- L8 A L4 A L6 G L4 G L6 F+ L4 G"
SLEEP 2
RETURN

loser:
CLS
LOCATE 8, 3
PRINT "You chose Scissors..."
LOCATE 10, 4
PRINT "The computer chose Rock..."
LOCATE 12, 5
PRINT "Rock breaks Scissors... please try again..."
PLAY "MF O1 L4 G G L8 G L4 G L4 B- L8 A L4 A L6 G L4 G L6 F+ L4 G"
SLEEP 2
RETURN

loses:
CLS
LOCATE 8, 3
PRINT "You chose Paper..."
LOCATE 10, 4
PRINT "The computer chose Scissors..."
LOCATE 12, 5
PRINT "Scissors cut Paper... please try again..."
PLAY "MF O1 L4 G G L8 G L4 G L4 B- L8 A L4 A L6 G L4 G L6 F+ L4 G"
SLEEP 2
RETURN

errortrap:
LOCATE 19, 19
PRINT "Please type (P)aper, (S)cissors, or (R)ock  "
LOCATE 21, 22
PRINT "Press the Q key if you wish to (Q)uit"
PLAY "MF L6 O1 C A B C A"
SLEEP 2
RETURN

ending:
CLS
LOCATE 10, 5
PRINT "Thanks For Playing... Good Bye!"
END

TieBallGame:
CLS
LOCATE 8, 3
PRINT "You chose "; Item$; "..."
LOCATE 10, 4
PRINT "The computer chose "; Item$; "..."
LOCATE 12, 5
PRINT "No Winner!!! ";
PRINT CHR$(1)
PLAY Charge$
SLEEP 1
RETURN


