' Tic-Tac-Toe
' version 1.97 by Robo|\|erd
' E-Mail:  Robo212@aol.com
' Almost every programmer has at one point in time made
' a simple Tic-Tac-Toe program.  Well, I did too.  But
' there is a "little" difference though.  Just press
' Alt+R then Enter to find out.
'
' Now for some information...
' First created:  1996 (Version 0.5 then 1.0 shortly after.)
' Taught to recognize winning patterns on: 09/10/97 (Version 1.97)
' Contributed to public domain as possible inspiration
' for young individuals on: 09/11/97
' Written In Qbasic ver 1.1
' All Code by Robert (Robo|\|erd) Hollingshead.
' "I am an artist, the computer, my canvas."

DECLARE SUB XHasWonMute ()
DECLARE SUB XHasWonSnd ()
DECLARE SUB OHasWonSnd ()
DECLARE SUB OHasWonMute ()
DECLARE SUB CatGotGameSnd ()
DECLARE SUB CatGotGameMute ()
DECLARE SUB PlayerO ()
DECLARE SUB PlayerX ()
CLEAR , , 15000

' The string below tells the Program who goes first.
PlayersTurn$ = "X"  ' Change this to O and O will start first.
' To mute sound when you first run the game.  Change this value to 0.
SoundOn% = 1
	   
		SCREEN 7
		CLS
		GOSUB TemplateScreen
		KEY(O) ON
				ON KEY(1) GOSUB BailOut
				ON KEY(2) GOSUB NewGame
				ON KEY(3) GOSUB ToggleSound
				ON KEY(21) GOSUB PositionOne
				ON KEY(22) GOSUB PositionTwo
				ON KEY(23) GOSUB PositionThree
				ON KEY(18) GOSUB PositionFour
				ON KEY(19) GOSUB PositionFive
				ON KEY(20) GOSUB PositionSix
				ON KEY(15) GOSUB PositionSeven
				ON KEY(16) GOSUB PositionEight
				ON KEY(17) GOSUB PositionNine
GOSUB DefineOtherKeys
1 IF PlayersTurn$ = "X" THEN
		COLOR 1, 7
		LOCATE 16, 16, 1
		PRINT "X's"
END IF
IF PlayersTurn$ = "O" THEN
		COLOR 1, 7
		LOCATE 16, 16, 1
		PRINT "O's"
END IF
IF Trigger% = 1 THEN
		Trigger% = 0
		GOSUB PositionCall
END IF
IF CheckX% = 1 THEN
		CheckX% = 0
	IF XPosition1% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition2% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition3% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
					IF XTotal% = 3 THEN
						XTotal% = 0
						XScore% = XScore% + 1
							IF SoundOn% = 1 THEN
								CALL XHasWonSnd
							ELSE
								CALL XHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 2
					ELSE
						XTotal% = 0
					END IF
	IF XPosition4% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition5% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition6% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
					IF XTotal% = 3 THEN
						XTotal% = 0
						XScore% = XScore% + 1
							IF SoundOn% = 1 THEN
								CALL XHasWonSnd
							ELSE
								CALL XHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 2
					ELSE
						XTotal% = 0
					END IF
	IF XPosition7% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition8% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition9% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
					IF XTotal% = 3 THEN
						XTotal% = 0
						XScore% = XScore% + 1
							IF SoundOn% = 1 THEN
								CALL XHasWonSnd
							ELSE
								CALL XHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 2
					ELSE
						XTotal% = 0
					END IF
	IF XPosition1% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition4% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition7% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
					IF XTotal% = 3 THEN
						XTotal% = 0
						XScore% = XScore% + 1
							IF SoundOn% = 1 THEN
								CALL XHasWonSnd
							ELSE
								CALL XHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 2
					ELSE
						XTotal% = 0
					END IF
	IF XPosition2% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition5% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition8% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
					IF XTotal% = 3 THEN
						XTotal% = 0
						XScore% = XScore% + 1
							IF SoundOn% = 1 THEN
								CALL XHasWonSnd
							ELSE
								CALL XHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 2
					ELSE
						XTotal% = 0
					END IF
	IF XPosition3% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition6% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition9% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
					IF XTotal% = 3 THEN
						XTotal% = 0
						XScore% = XScore% + 1
							IF SoundOn% = 1 THEN
								CALL XHasWonSnd
							ELSE
								CALL XHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 2
					ELSE
						XTotal% = 0
					END IF
	IF XPosition1% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition5% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition9% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
					IF XTotal% = 3 THEN
						XTotal% = 0
						XScore% = XScore% + 1
							IF SoundOn% = 1 THEN
								CALL XHasWonSnd
							ELSE
								CALL XHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 2
					ELSE
						XTotal% = 0
					END IF
	IF XPosition3% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition5% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
	IF XPosition7% = 1 THEN
		XTotal% = XTotal% + 1
	END IF
					IF XTotal% = 3 THEN
						XTotal% = 0
						XScore% = XScore% + 1
							IF SoundOn% = 1 THEN
								CALL XHasWonSnd
							ELSE
								CALL XHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 2
					ELSE
						XTotal% = 0
					END IF
2 END IF
IF CheckO% = 1 THEN
		CheckO% = 0
	IF OPosition1% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition2% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition3% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
					IF OTotal% = 3 THEN
						OTotal% = 0
						OScore% = OScore% + 1
							IF SoundOn% = 1 THEN
								CALL OHasWonSnd
							ELSE
								CALL OHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 3
					ELSE
						OTotal% = 0
					END IF
	IF OPosition4% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition5% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition6% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
					IF OTotal% = 3 THEN
						OTotal% = 0
						OScore% = OScore% + 1
							IF SoundOn% = 1 THEN
								CALL OHasWonSnd
							ELSE
								CALL OHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 3
					ELSE
						OTotal% = 0
					END IF
	IF OPosition7% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition8% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition9% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
					IF OTotal% = 3 THEN
						OTotal% = 0
						OScore% = OScore% + 1
							IF SoundOn% = 1 THEN
								CALL OHasWonSnd
							ELSE
								CALL OHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 3
					ELSE
						OTotal% = 0
					END IF
	IF OPosition1% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition4% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition7% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
					IF OTotal% = 3 THEN
						OTotal% = 0
						OScore% = OScore% + 1
							IF SoundOn% = 1 THEN
								CALL OHasWonSnd
							ELSE
								CALL OHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 3
					ELSE
						OTotal% = 0
					END IF
	IF OPosition2% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition5% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition8% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
					IF OTotal% = 3 THEN
						OTotal% = 0
						OScore% = OScore% + 1
							IF SoundOn% = 1 THEN
								CALL OHasWonSnd
							ELSE
								CALL OHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 3
					ELSE
						OTotal% = 0
					END IF
	IF OPosition3% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition6% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition9% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
					IF OTotal% = 3 THEN
						OTotal% = 0
						OScore% = OScore% + 1
							IF SoundOn% = 1 THEN
								CALL OHasWonSnd
							ELSE
								CALL OHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 3
					ELSE
						OTotal% = 0
					END IF
	IF OPosition1% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition5% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition9% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
					IF OTotal% = 3 THEN
						OTotal% = 0
						OScore% = OScore% + 1
							IF SoundOn% = 1 THEN
								CALL OHasWonSnd
							ELSE
								CALL OHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 3
					ELSE
						OTotal% = 0
					END IF
	IF OPosition3% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition5% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
	IF OPosition7% = 1 THEN
		OTotal% = OTotal% + 1
	END IF
					IF OTotal% = 3 THEN
						OTotal% = 0
						OScore% = OScore% + 1
							IF SoundOn% = 1 THEN
								CALL OHasWonSnd
							ELSE
								CALL OHasWonMute
							END IF
						GOSUB TemplateScreen
						GOTO 3
					ELSE
						OTotal% = 0
					END IF
3 END IF
IF CheckForCat% = 1 THEN
	CheckForCat% = 0
	IF Position1% = 1 THEN
		IF Position2% = 1 THEN
			IF Position3% = 1 THEN
				IF Position4% = 1 THEN
					IF Position5% = 1 THEN
						IF Position6% = 1 THEN
							IF Position7% = 1 THEN
								IF Position8% = 1 THEN
									IF Position9% = 1 THEN
									Cat% = 1
									END IF
								END IF
							END IF
						END IF
					END IF
				END IF
			END IF
		END IF
	END IF
END IF
IF Cat% = 1 THEN
	Cat% = 0
		IF SoundOn% = 1 THEN
			CALL CatGotGameSnd
		ELSE
			CALL CatGotGameMute
		END IF
	CatScore% = CatScore% + 1
	GOSUB TemplateScreen
END IF
GOTO 1

TemplateScreen:
		Position1% = 0
		Position2% = 0
		Position3% = 0
		Position4% = 0
		Position5% = 0
		Position6% = 0
		Position7% = 0
		Position8% = 0
		Position9% = 0
			XPosition1% = 0
			XPosition2% = 0
			XPosition3% = 0
			XPosition4% = 0
			XPosition5% = 0
			XPosition6% = 0
			XPosition7% = 0
			XPosition8% = 0
			XPosition9% = 0
				OPosition1% = 0
				OPosition2% = 0
				OPosition3% = 0
				OPosition4% = 0
				OPosition5% = 0
				OPosition6% = 0
				OPosition7% = 0
				OPosition8% = 0
				OPosition9% = 0
		CLS
		COLOR 4, 7
PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
PRINT "³                QBasic                ³"
PRINT "³   ÚÄÂÄÂÄ¿                            ³"
PRINT "³  G³ ³ ³ ³B                           ³"
PRINT "³  AÃÄÅÄÅÄ´O                           ³"
PRINT "³  M³ ³ ³ ³A                           ³"
PRINT "³  EÃÄÅÄÅÄ´R                           ³"
PRINT "³   ³ ³ ³ ³D                           ³"
PRINT "³   ÀÄÁÄÁÄÙ                            ³"
PRINT "³   ÚÄÂÄÂÄ¿                            ³"
PRINT "³   ³1³2³3³B                           ³"
PRINT "³  KÃÄÅÄÅÄ´O                           ³"
PRINT "³  E³4³5³6³A                           ³"
PRINT "³  YÃÄÅÄÅÄ´R                           ³"
PRINT "³   ³7³8³9³D                           ³"
PRINT "³   ÀÄÁÄÁÄÙ        turn!               ³"
PRINT "³                                      ³"
PRINT "ÃÄÄÄ Press ÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄ Score ÄÄÄÄÄÄ´"
PRINT "³F1 to exit to DOS     ³   X  CAT  O   ³"
PRINT "³F2 to start new game  ³               ³"
PRINT "³F3 to toggle sound    ³   X  CAT  O   ³"
PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
		COLOR 1, 7
				LOCATE 20, 27, 1: PRINT XScore%
				LOCATE 20, 35, 1: PRINT OScore%
				LOCATE 20, 31, 1: PRINT CatScore%
	DRAW "C1BU80BL20R40L20D40BR20U20BU10U1BD31BR10U20R10L10D20R10BR5"
	DRAW "BU40R40L20D40BR20U20R20U5D30U5L20BR30U20R10L10D20R10BD10BL80"
	DRAW "L40R20D40BR20U20R20D20L20BR30U20R20D10L20D10R20"
RETURN

DefineOtherKeys:
		ScanCode% = 2
		FOR DefineKeys = 15 TO 23
				KEY DefineKeys, CHR$(0) + CHR$(ScanCode%)
				ScanCode% = ScanCode% + 1
		NEXT DefineKeys
		RETURN

' Position Subroutines

PositionOne:
		IF Position1% = 1 THEN
			RETURN
		END IF
	Position% = 1
	Trigger% = 1
	X% = 6
	Y% = 8
	Position1% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition1% = 1
		ELSE
			OPosition1% = 1
		END IF
RETURN

PositionTwo:
		IF Position2% = 1 THEN
			RETURN
		END IF
	Position% = 2
	Trigger% = 1
	X% = 8
	Y% = 8
	Position2% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition2% = 1
		ELSE
			OPosition2% = 1
		END IF
RETURN

PositionThree:
		IF Position3% = 1 THEN
			RETURN
		END IF
	Position% = 3
	Trigger% = 1
	X% = 10
	Y% = 8
	Position3% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition3% = 1
		ELSE
			OPosition3% = 1
		END IF
RETURN

PositionFour:
		IF Position4% = 1 THEN
			RETURN
		END IF
	Position% = 4
	Trigger% = 1
	X% = 6
	Y% = 6
	Position4% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition4% = 1
		ELSE
			OPosition4% = 1
		END IF
RETURN

PositionFive:
		IF Position5% = 1 THEN
			RETURN
		END IF
	Position% = 5
	Trigger% = 1
	X% = 8
	Y% = 6
	Position5% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition5% = 1
		ELSE
			OPosition5% = 1
		END IF
RETURN

PositionSix:
		IF Position6% = 1 THEN
			RETURN
		END IF
	Position% = 6
	Trigger% = 1
	X% = 10
	Y% = 6
	Position6% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition6% = 1
		ELSE
			OPosition6% = 1
		END IF
RETURN

PositionSeven:
		IF Position7% = 1 THEN
			RETURN
		END IF
	Position% = 7
	Trigger% = 1
	X% = 6
	Y% = 4
	Position7% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition7% = 1
		ELSE
			OPosition7% = 1
		END IF
RETURN

PositionEight:
		IF Position8% = 1 THEN
			RETURN
		END IF
	Position% = 8
	Trigger% = 1
	X% = 8
	Y% = 4
	Position8% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition8% = 1
		ELSE
			OPosition8% = 1
		END IF
RETURN

PositionNine:
		IF Position9% = 1 THEN
			RETURN
		END IF
	Position% = 9
	Trigger% = 1
	X% = 10
	Y% = 4
	Position9% = 1
		IF PlayersTurn$ = "X" THEN
			XPosition9% = 1
		ELSE
			OPosition9% = 1
		END IF
RETURN

BailOut:
		SYSTEM

PositionCall:
		CheckForCat% = 1
		COLOR 1, 7
		Trigger% = 0
		IF PlayersTurn$ = "X" THEN
				BypassNext% = 1
				PlayersTurn$ = "O"
				LOCATE Y%, X%, 1
				PRINT "X"
				CheckX% = 1
					IF SoundOn% = 1 THEN
						CALL PlayerX
					END IF
		END IF
		IF PlayersTurn$ = "O" THEN
				IF BypassNext% = 1 THEN
					BypassNext% = 0
				ELSE
					PlayersTurn$ = "X"
					LOCATE Y%, X%, 1
					PRINT "O"
					CheckO% = 1
					IF SoundOn% = 1 THEN
						CALL PlayerO
					END IF
				END IF
		END IF
RETURN

NewGame:
	BEEP
	XScore% = 0
	OScore% = 0
	CatScore% = 0
	GOSUB TemplateScreen
RETURN

ToggleSound:
	IF SoundOn% = 1 THEN
		SoundOn% = 0
	ELSE
		SoundOn% = 1
	END IF
RETURN



SUB CatGotGameMute
DO
	LOCATE 10, 3, 0: PRINT "É Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
	LOCATE 11, 3, 0: PRINT "  You need to put the cat outside. º"
	LOCATE 12, 3, 0: PRINT "º Press a key to start next round.  "
	LOCATE 13, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í ¼"
		FOR Delay = 1 TO 500
		NEXT Delay
	LOCATE 10, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í »"
	LOCATE 11, 3, 0: PRINT "º You need to put the cat outside.  "
	LOCATE 12, 3, 0: PRINT "  Press a key to start next round. º"
	LOCATE 13, 3, 0: PRINT "È Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
		FOR Delay = 1 TO 500
		NEXT Delay
LOOP WHILE INKEY$ = ""
END SUB

SUB CatGotGameSnd
FreqA% = 50
9 SOUND FreqA%, .5
	FreqA% = FreqA% * 1.5
		IF FreqA% = 32670 THEN
			GOTO 10
		ELSE
			GOTO 9
		END IF
10
11 SOUND FreqA%, .5
	FreqA% = FreqA% / 1.5
		IF FreqA% = 50 THEN
			GOTO 12
		ELSE
			GOTO 11
		END IF
12 DO
	LOCATE 10, 3, 0: PRINT "É Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
	LOCATE 11, 3, 0: PRINT "  You need to put the cat outside. º"
	LOCATE 12, 3, 0: PRINT "º Press a key to start next round.  "
	LOCATE 13, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í ¼"
		FOR Delay = 1 TO 500
		NEXT Delay
	LOCATE 10, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í »"
	LOCATE 11, 3, 0: PRINT "º You need to put the cat outside.  "
	LOCATE 12, 3, 0: PRINT "  Press a key to start next round. º"
	LOCATE 13, 3, 0: PRINT "È Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
		FOR Delay = 1 TO 500
		NEXT Delay
LOOP WHILE INKEY$ = ""
END SUB

SUB OHasWonMute
DO
	LOCATE 10, 3, 0: PRINT "É Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
	LOCATE 11, 3, 0: PRINT "  Player O won the game!           º"
	LOCATE 12, 3, 0: PRINT "º Press a key to start next round.  "
	LOCATE 13, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í ¼"
		FOR Delay = 1 TO 500
		NEXT Delay
	LOCATE 10, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í »"
	LOCATE 11, 3, 0: PRINT "º Player O won the game!            "
	LOCATE 12, 3, 0: PRINT "  Press a key to start next round. º"
	LOCATE 13, 3, 0: PRINT "È Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
		FOR Delay = 1 TO 500
		NEXT Delay
LOOP WHILE INKEY$ = ""
END SUB

SUB OHasWonSnd
FreqA% = 37
FOR I = 1 TO 2
17 SOUND FreqA%, .5
FreqA% = FreqA% * 2
	IF FreqA% = 18944 THEN
		GOTO 18
	ELSE
		GOTO 17
	END IF
18 SOUND FreqA%, .5
FreqA% = FreqA% / 2
	IF FreqA% = 37 THEN
		GOTO 19
	ELSE
		GOTO 18
	END IF
19 NEXT I
DO
	LOCATE 10, 3, 0: PRINT "É Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
	LOCATE 11, 3, 0: PRINT "  Player O won the game!           º"
	LOCATE 12, 3, 0: PRINT "º Press a key to start next round.  "
	LOCATE 13, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í ¼"
		FOR Delay = 1 TO 500
		NEXT Delay
	LOCATE 10, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í »"
	LOCATE 11, 3, 0: PRINT "º Player O won the game!            "
	LOCATE 12, 3, 0: PRINT "  Press a key to start next round. º"
	LOCATE 13, 3, 0: PRINT "È Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
		FOR Delay = 1 TO 500
		NEXT Delay
LOOP WHILE INKEY$ = ""
END SUB

SUB PlayerO
FreqA% = 50
6 SOUND FreqA%, .5
	FreqA% = FreqA% + 50
		IF FreqA% = 500 THEN
			GOTO 7
		ELSE
			GOTO 6
		END IF
7 SOUND FreqA%, .5
	FreqA% = FreqA% - 50
		IF FreqA% = 50 THEN
			GOTO 8
		ELSE
			GOTO 7
		END IF
8 END SUB

SUB PlayerX
	FreqA% = 50
	FreqB% = 500
4 SOUND FreqA%, .5
  SOUND FreqB%, .5
	FreqA% = FreqA% + 50
	FreqB% = FreqB% - 50
		IF FreqA% = 500 THEN
			GOTO 5
		ELSE
			GOTO 4
		END IF
5 END SUB

SUB XHasWonMute
DO
	LOCATE 10, 3, 0: PRINT "É Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
	LOCATE 11, 3, 0: PRINT "  Player X won the game!           º"
	LOCATE 12, 3, 0: PRINT "º Press a key to start next round.  "
	LOCATE 13, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í ¼"
		FOR Delay = 1 TO 500
		NEXT Delay
	LOCATE 10, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í »"
	LOCATE 11, 3, 0: PRINT "º Player X won the game!            "
	LOCATE 12, 3, 0: PRINT "  Press a key to start next round. º"
	LOCATE 13, 3, 0: PRINT "È Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
		FOR Delay = 1 TO 500
		NEXT Delay
LOOP WHILE INKEY$ = ""
END SUB

SUB XHasWonSnd
	FreqA% = 37
	FreqB% = 18944
13 SOUND FreqA%, .5
	SOUND FreqB%, .5
	FreqA% = FreqA% * 2
	FreqB% = FreqB% / 2
		IF FreqA% = 18944 THEN
			GOTO 14
		END IF
			GOTO 13
14 FreqA% = 37
	FreqB% = 18944
15 SOUND FreqA%, .5
	SOUND FreqB%, .5
	FreqA% = FreqA% * 2
	FreqB% = FreqB% / 2
		IF FreqA% = 18944 THEN
			GOTO 16
		END IF
	GOTO 15
16 DO
	LOCATE 10, 3, 0: PRINT "É Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
	LOCATE 11, 3, 0: PRINT "  Player X won the game!           º"
	LOCATE 12, 3, 0: PRINT "º Press a key to start next round.  "
	LOCATE 13, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í ¼"
		FOR Delay = 1 TO 500
		NEXT Delay
	LOCATE 10, 3, 0: PRINT " Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í »"
	LOCATE 11, 3, 0: PRINT "º Player X won the game!            "
	LOCATE 12, 3, 0: PRINT "  Press a key to start next round. º"
	LOCATE 13, 3, 0: PRINT "È Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í "
		FOR Delay = 1 TO 500
		NEXT Delay
LOOP WHILE INKEY$ = ""
END SUB

