'=========================================================================== ' Subject: WHEEL OF WEALTH PB Date: 01-17-96 (10:42) ' Author: The ABC Programmer Code: PB ' Origin: Check GAMES.ABC For QB Version Packet: PB.ABC '=========================================================================== '====================================================== ' WHEEL OF WEALTH PB Programmed by William Yu ' PB 3.x version Converted: 01-17-96 ' ' NOTES: ' Since PB doesn't support PCOPY, I had to ' BSAVE/BLOAD the images. This will affect the game ' and slow it down considerably. Call me lazy, but ' I didn't want to use GET and PUT and create extra ' SUBs. Do what you wish to fix it. It might even ' patch up the graphics (which may become ' disoriented because of BSAVE/BLOAD). ' Also of note, I don't know much about PB, so the ' variables are (for lack of better words) mangled. ' Even though the variables are SHARED, they don't ' quite generate the same value. ' ' After playing the game, to save disk space ' goto DOS and type: DEL Image*.* ' ' * Puzzles are stored in DATA statements ' * Up to 3 players ' * Like TV Game Show WHEEL OF FORTUNE (Without Vanna) ' ' USE WITHIN COMMERCIAL PRODUCTS OR SALE OF THIS PIECE ' OF CODE IS STRICTLY PROHIBITED. PUBLIC DOMAIN CODE. ' ' WHEEL OF FORTUNE is copyrighted by their respective ' distributors. Any similarities to the Video Game ' is strictly coincidental. '====================================================== DEFINT A-Z ' Define all numerical variables as INTEGER for more speed 'DECLARE SUB BigChar (Word$, XCor%, YCor%, Colr%, Opt) DECLARE SUB Bonusland () DECLARE SUB Drawgrid () DECLARE SUB Filterpuzzle (Puzzles$(), P%) DECLARE SUB Mainprogram (Puzzles$(), P%) DECLARE SUB Letterinpuzzle (Letter$, Letter) DECLARE SUB Spinwheel () DECLARE SUB Colorcode (Col%) DECLARE SUB Drawplayers () DECLARE SUB Showplayers () DECLARE SUB Whoseturn () DECLARE SUB Showleader () DIM Puzzles$(50), NoRepeat(50), Puzz$(8) SHARED Puzzles$() ' Max # of Puzzles SHARED NoRepeat() ' Dimension same as Max # of puzzles SHARED InCase$, InCaseVowel$ SHARED Puzz$() SHARED Money, InPuzzle, Turn, Rn, Finish, Bonus, Maximum SHARED PlayerMoney! SHARED P1Money!, P2Money!, P3Money! SHARED M1P!, M2P!, M3P! SHARED Players ' 1-3 Players (1 Player no score tallied) SHARED Rounds ' Number of Rounds per game ' CAN NOT be more than the Maximum # of puzzles ' minus "BLANK" categories because it can not be ' used in the BONUS Round SHARED False SHARED True Players = 3 Rounds = 6 False = 0 True = NOT False Rn = 1 ' Round Number WT = 1 ' Turn = 1 Turn = WT ' Create another variable for swapping later Finish = False ' Finished Puzzle? Nope. Bonus = False ' Regular round not bonus round SCREEN 7, 0, 0, 0 ' EGA 320x200 (16 Colors) Active Page 0 READ Maximum ' Read maximum puzzles FOR I = 1 TO Maximum READ Puzzles$(I) ' Read each puzzle and store in array Puzzles$() NEXT I DO DrawPlayers ' CALL DrawPlayers Subroutine DrawGrid ' CALL DrawGrid Subroutine DO RANDOMIZE TIMER ' Randomly select a puzzle P = INT(RND * Maximum) + 1 FOR R = 1 TO Maximum ' But make sure it's not the same puzzle! IF NoRepeat(R) = P THEN Repeat = True: EXIT FOR NEXT R IF NoRepeat(R) <> P THEN Repeat = False LOOP UNTIL Repeat = False NoRepeat(Rn) = P FilterPuzzle Puzzles$(), P ' Parse puzzle to readable format DO MainProgram Puzzles$(), P ' CALL MainProgram (Brunt of the game) IF Finish THEN EXIT DO ' Current round finished IF Players > 1 THEN ShowPlayers LOOP Rn = Rn + 1 ' Next Round WT = WT + 1 ' Whose Turn IF WT = 4 THEN WT = 1 ' Rotate back to the first person Turn = WT ' Whose turn? Finish = False ' New round, not finished yet ShowLeader ' Show end of round leader LOOP UNTIL Rn > Rounds ' Continue play until all rounds are finished IF M1P > M2P THEN Winner = 2 ELSE Winner = 1 IF Winner = 2 AND M2P > M3P THEN Winner = 2 IF Winner = 2 AND M2P < M3P THEN Winner = 3 IF Winner = 1 AND M1P > M3P THEN Winner = 1 IF Winner = 1 AND M1P < M3P THEN Winner = 3 BonusLand ' Winner plays Bonus Round ' DATA Format works like so: ' ' First number is the maximum number of puzzles inputted by user, ' increase number if you add more puzzles into the DATA statements ' ' How Puzzles should be inputted (NOT Case sensitive). ' ' 7 lines, each line seperated by "/" ' and empty line should be inputted with "EMPTY" ' Maximum of 14 characters per line ' 1st line: Category (ie. PHRASE/THING/PERSON...etc) ' 2nd line: Line one of Puzzle ' 3rd line: " two " " ' 4th line: " three " " ' 5th line: " four " " ' 6th line: " five " " ' 7th line: " six " " '*8th line: CLUE for "BLANK" ' '* Only place 8th line with category "BLANK" ' Look at the DATA for reference DATA 10 DATA "PHRASE/EMPTY/ What Goes Up/EMPTY/EMPTY/Must Come Down/EMPTY" DATA "QUOTE/EMPTY/ Go Ahead/EMPTY/ Make My Day/EMPTY/EMPTY" DATA "PLACE/EMPTY/ Edmonton/ Alberta/ Canada/EMPTY/EMPTY" DATA "PERSON/EMPTY/World Figure-/ Skating/ Champions/EMPTY/EMPTY" DATA "STAR & ROLE/EMPTY/ Jim Carrey/EMPTY/As Ace Ventura/EMPTY/EMPTY" DATA "BLANK/EMPTY/ ? Alarm/ ? Fighters/ ? Truck/EMPTY/EMPTY/FIRE" DATA "PHRASE/EMPTY/ What Goes/ Around/ Comes Around/EMPTY/EMPTY" DATA "BEFORE & AFTER/EMPTY/ Tooth Fairy/EMPTY/ Godmother/EMPTY/EMPTY" DATA "BLANK/EMPTY/ ? Hornet/ ? Olives/ ? Grass/ ? Beans/EMPTY/GREEN" DATA "PHRASE/EMPTY/Save The Best/EMPTY/ For Last/EMPTY/EMPTY SUB Bigchar (Word$, XCor, YCor, Colr, Opt) ' Subroutine BIGCHAR ' Purpose: Prints the extended (BIG) character on the puzzle grid PALETTE 8, 0 ' Hide the letter to be read in COLOR 8 ' Color is hidden FOR L = 1 TO LEN(Word$) LOCATE 1, 1: PRINT MID$(Word$, L, 1) FOR N = 0 TO 7 FOR M = 0 TO 7 Colour = POINT(N, M) ' Grabs the colour of the letter IF Colour > 0 THEN ' if not null, then we plot the coordinates IF Opt = 0 THEN PSET (XCor + N + (L * 8), YCor + M + M), Colr PSET (XCor + N + (L * 8), 1 + YCor + M + M), Colr ELSEIF Opt = 1 THEN PSET (XCor + N + (L * 9), YCor + M + M + Z), Colr PSET (XCor + N + (L * 9), 1 + YCor + M + M + Z), Colr ELSEIF Opt = 2 THEN PSET (XCor + N + (L * 9), YCor + M + M - Z), Colr PSET (XCor + N + (L * 9), 1 + YCor + M + M - Z), Colr END IF END IF NEXT M NEXT N XCor = XCor + 1 Z = Z - 2 NEXT L LOCATE 1, 1: PRINT " " ' Clear letter PALETTE 8, 8 ' Restore the color to its normal value END SUB SUB Bonusland Bonus = True ' Yes we are in Bonus round ' We need this variable for SUB LetterInPuzzle DrawGrid BigChar "BONUS LAND", 100, 2, 12, 0 LINE (0, 199)-(320, 150), 0, BF Done = False DO DO RANDOMIZE TIMER ' Randomly select a puzzle P = INT(RND * Maximum) + 1 FOR R = 1 TO Maximum ' But make sure it's not the same puzzle! IF NoRepeat(R) = P THEN Repeat = True: EXIT FOR NEXT R IF NoRepeat(R) <> P THEN Repeat = False LOOP UNTIL Repeat = False FilterPuzzle Puzzles$(), P ' Parse the puzzle IF Puzz$(1) <> "BLANK" THEN Done = True ' Bonus round <> "BLANK" LOOP UNTIL Done ' Like the TV Game Show: ' ' R S T L N E ' ' Letters automatically selected by computer ' ' You will be prompted to enter 3 other consonants and 1 vowel InCase$ = "BCDFGHJKMPQVWXYZ" InCaseVowel$ = "AIOU" COLOR 12: LOCATE 20, 3: PRINT "R S T L N "; : COLOR 14: PRINT "E" Letters$ = "RSTLNE" FOR A = 1 TO LEN(Letters$) A$ = MID$(Letters$, A, 1) LetterInPuzzle A$, 0 NEXT A COLOR 10: LOCATE 22, 1: PRINT "Select 3 Consonants: "; COLOR 12 C = 0 Letters$ = "" DO DO A$ = UCASE$(INPUT$(1)) LOOP UNTIL INSTR(InCase$, A$) PRINT A$; " "; C = C + 1 Letters$ = Letters$ + A$ LOOP UNTIL C = 3 COLOR 10: LOCATE 23, 1: PRINT " Select 1 Vowel: "; DO A$ = UCASE$(INPUT$(1)) LOOP UNTIL INSTR(InCaseVowel$, A$) COLOR 14: PRINT A$ Letters$ = Letters$ + A$ FOR A = 1 TO LEN(Letters$) A$ = MID$(Letters$, A, 1) LetterInPuzzle A$, 0 NEXT A SLEEP 1 LINE (0, 199)-(320, 150), 0, BF COLOR 15 LOCATE 20, 1: PRINT "SOLVE:" Solve$ = "" Last = False FOR Q = 2 TO 7 IF Puzz$(Q) <> "EMPTY" THEN IF RIGHT$(Puzz$(Q), 1) = "-" THEN Last = True IF Last = False THEN Solve$ = Solve$ + LTRIM$(Puzz$(Q)) + " " ELSE Solve$ = Solve$ + LTRIM$(Puzz$(Q)) Last = False END IF END IF NEXT Q Solve$ = RTRIM$(Solve$) LOCATE 22, 1 FOR Q = 1 TO LEN(Solve$) COLOR 14 A = ASC(MID$(Solve$, Q, 1)) SELECT CASE A CASE 45 COLOR 10 PRINT "-"; CASE 32 PRINT " "; CASE ELSE PRINT "ù"; END SELECT NEXT Q LOCATE 22, 1: COLOR 15: LINE INPUT Answer$ LINE (0, 0)-(320, 15), 0, BF IF UCASE$(Answer$) = UCASE$(Solve$) THEN BigChar "CONGRATULATIONS", 80, 2, 12, 0 ELSE BigChar "BETTER LUCK NEXT TIME", 60, 2, 12, 0 END IF AllCase$ = InCase$ + InCaseVowel$ FOR Q = 1 TO LEN(AllCase$) A$ = MID$(AllCase$, Q, 1) IF INSTR(UCASE$(Solve$), A$) THEN LetterInPuzzle A$, 0 NEXT Q END SUB SUB Colorcode (Col) ' The color code of the WHEEL ' Yellow = Lose Turn ' Black = Bankrupt ' Grey = $5000 SELECT CASE Col CASE 1 Money = 250 CASE 2 Money = 150 CASE 3 Money = 500 CASE 4 Money = 300 CASE 5 Money = 750 CASE 6 Money = 650 CASE 7 Money = 5000 CASE 8 Money = -1 CASE 9 Money = 1000 CASE 10 Money = 200 CASE 11 Money = 2500 CASE 12 Money = 900 CASE 13 Money = 350 CASE 14 Money = 0 END SELECT LOCATE 25, 18 IF Money > 0 THEN PRINT "$" + LTRIM$(STR$(Money)) + " "; ELSE IF Money = -1 THEN PRINT "BANKRUPT "; IF Money = 0 THEN PRINT "LOSE TURN "; END IF END SUB SUB Drawgrid CLS FOR Y = 1 TO 6 ' Draw 6x14 Puzzle grid FOR X = 1 TO 14 LINE (X * 20, Y * 20)-(X * 20 + 20, Y * 20 + 20), 10, B LINE (X * 20 + 1, Y * 20 + 1)-(X * 20 + 19, Y * 20 + 19), 2, BF NEXT X NEXT Y COLOR 11: LOCATE 20, 5: PRINT "B C D F G H J K L M N P A E I" LOCATE 22, 5: PRINT "Q R S T V W X Y Z QUIT! O U"; InCase$ = "BCDFGHJKLMNPQRSTVWXYZ" InCaseVowel$ = "AEIOU" END SUB SUB Drawplayers CLS CIRCLE (160, 180), 180, 15, 6, 3, 1 / 4 CIRCLE (160, 160), 180, 15, 6, 3, 1 / 4 CIRCLE (160, 140), 180, 15, 6, 3, 1 / 4 LINE (113, 116)-(81, 100), 15 LINE (207, 116)-(239, 100), 15 LINE (113, 116)-(113, 135), 15 LINE (207, 116)-(207, 135), 15 PAINT (60, 140), 4, 15: PAINT (60, 120), 12, 15 PAINT (160, 130), 1, 15: PAINT (160, 110), 9, 15 PAINT (300, 140), 2, 15: PAINT (300, 120), 10, 15 CIRCLE (40, 75), 65, 15, .3, 3, 1.1 CIRCLE (280, 75), 65, 15, .3, 2.8, 1.1 CIRCLE (160, 62), 65, 15, .15, 3 PAINT (160, 75), 5, 15 CIRCLE (160, 45), 16, 14 PAINT (160, 45), 14 LINE (155, 58)-(130, 62), 1 LINE (165, 58)-(190, 62), 1 LINE (130, 62)-(125, 95), 1 LINE (190, 62)-(195, 95), 1 LINE (125, 95)-(130, 95), 1 LINE (130, 94)-(190, 94), 1 LINE (190, 95)-(195, 95), 1 LINE (155, 59)-(165, 59), 1 PAINT (160, 80), 1 IF Players > 1 THEN CIRCLE (35, 45), 16, 14 PAINT (35, 45), 14 LINE (30, 58)-(5, 67), 4 LINE (40, 58)-(65, 62), 4 LINE (5, 67)-(5, 115), 4 LINE (65, 62)-(70, 100), 4 LINE (70, 99)-(5, 115), 4 LINE (30, 59)-(40, 59), 4 PAINT (30, 80), 4 END IF IF Players = 3 THEN CIRCLE (285, 45), 16, 14 PAINT (285, 45), 14 LINE (290, 58)-(315, 67), 2 LINE (280, 58)-(265, 62), 2 LINE (315, 67)-(315, 116), 2 LINE (265, 62)-(260, 101), 2 LINE (260, 101)-(315, 115), 2 LINE (290, 59)-(280, 59), 2 PAINT (300, 80), 2 END IF CIRCLE (160, 140), 180, 15, 6, 3, 1 / 4 LOCATE 24, 15: COLOR 14: PRINT "Round"; Rn; "of"; Rounds; IF Players = 1 THEN Turn = 2 BigChar "$0", 140, 119, 11, 0 BigChar "$0", 30, 130, 11, 1 BigChar "$0", 250, 126, 11, 2 SavePicture 1 WhoseTurn END SUB SUB Filterpuzzle (Puzzles$(), P) Text$ = Puzzles$(P) A = INSTR(Text$, "/") ' Parse each line Y = 25 N = 0 DO WHILE A ' Repeat until no more WORDS to filter N = N + 1 T$ = UCASE$(LEFT$(Text$, A - 1)) ' Takes the /WORD/ inside backslashes Puzz$(N) = T$ ' First word represents the category IF T$ <> "EMPTY" AND N > 1 THEN ' Therefore we skip first word X = 22 FOR I = 1 TO LEN(T$) IF MID$(T$, I, 1) <> " " THEN PAINT (X, Y), 15, 10 B = ASC(MID$(T$, I, 1)) SELECT CASE B CASE 38 ' & sign PAINT (X, Y), 14, 10 BigChar CHR$(B), X - 3, Y - 1, 0, 0 CASE 39 ' Apostrophe PAINT (X, Y), 14, 10 BigChar CHR$(B), X - 3, Y - 1, 0, 0 CASE 45 ' - sign PAINT (X, Y), 14, 10 BigChar CHR$(B), X - 3, Y - 1, 0, 0 CASE 63 ' ? sign PAINT (X, Y), 14, 10 BigChar CHR$(B), X - 3, Y - 1, 0, 0 END SELECT X = X + 20 NEXT I END IF Text$ = MID$(Text$, A + 1, LEN(Text$)) A = INSTR(Text$, "/") IF N > 1 THEN Y = Y + 20 LOOP N = N + 1 Puzz$(N) = Text$ ' Last word to be stored IF Text$ <> "EMPTY" AND N <> 8 THEN X = 22 FOR I = 1 TO LEN(Text$) IF MID$(Text$, I, 1) <> " " THEN PAINT (X, Y), 15, 10 X = X + 20 NEXT I END IF L = LEN(Puzz$(1)) ' Centers the category on the bottom line L = 20 - (L / 2) ' Calculates X position LOCATE 25, L: COLOR 14: PRINT Puzz$(1); END SUB SUB Letterinpuzzle (Letter$, Letter) IF Letter = 1 THEN PlayerMoney! = PlayerMoney! - 250 ' Vowel selected COLOR 15 N = 1 InPuzzle = False DO N = N + 1 IF Puzz$(N) <> "EMPTY" THEN FOR I = 1 TO LEN(Puzz$(N)) IF MID$(Puzz$(N), I, 1) = Letter$ THEN ' Letter is in puzzle PAINT ((I * 20) + 2, 3 + (N * 20) - 20), 14, 10 BigChar Letter$, (I * 20) - 1, 3 + (N * 20) - 20, 0, 0 IF Letter = 0 THEN PlayerMoney! = PlayerMoney! + Money InPuzzle = True END IF NEXT I END IF LOOP UNTIL N = 7 IF InPuzzle = False AND Bonus = False THEN ' Letter NOT in puzzle SOUND 1000, .5: SOUND 500, .5 ' Output annoying sound END IF END SUB SUB Mainprogram (Puzzles$(), P) Start: DO LOCATE 1, 2: COLOR 10: PRINT "$"; PRINT USING "###,###"; PlayerMoney! LOCATE 2, 4: COLOR 7: PRINT "SPIN WHEEL BUY VOWEL SOLVE" LOCATE 2, 2: COLOR 12: PRINT CHR$(16); " "; COLOR 15: PRINT "SPIN WHEEL" Current = 1 DO DO A$ = INKEY$ LOOP UNTIL A$ <> "" IF LEN(A$) = 2 THEN Char = -ASC(RIGHT$(A$, 1)) ELSE Char = ASC(A$) SELECT CASE Char CASE 13 ' ENTER Pressed EXIT DO CASE -77 ' Right Arrow key pressed Current = Current + 1 CASE -75 ' Left Arrow key pressed Current = Current - 1 CASE 27 ' Escape key pressed END END SELECT LOCATE 2, 2: COLOR 7: PRINT " SPIN WHEEL BUY VOWEL SOLVE" IF Current = 4 THEN Current = 1 IF Current = 0 THEN Current = 3 SELECT CASE Current CASE 1 LOCATE 2, 2: COLOR 12: PRINT CHR$(16); " "; COLOR 15: PRINT "SPIN WHEEL" CASE 2 LOCATE 2, 17: COLOR 12: PRINT CHR$(16); " "; COLOR 15: PRINT "BUY VOWEL" CASE 3 LOCATE 2, 31: COLOR 12: PRINT CHR$(16); " "; COLOR 15: PRINT "SOLVE" END SELECT LOOP IF Current = 1 THEN SpinWheel IF Current = 2 THEN GOTO PickVowel IF Current = 3 THEN GOTO SolvePuzzle IF Money = 0 OR Money = -1 THEN IF Players = 1 THEN GOTO Start ELSE EXIT SUB END IF LOCATE 2, 1: PRINT SPACE$(40) LOCATE 2, 18: PRINT "$" + LTRIM$(STR$(Money)) X = 28: Y = 149 LINE (X, Y)-(X + 14, Y + 12), 10, B DO DO A$ = INKEY$ LOOP UNTIL A$ <> "" IF LEN(A$) = 2 THEN Char = -ASC(RIGHT$(A$, 1)) ELSE Char = ASC(A$) IF Y = 165 AND X > 156 THEN LINE (172, Y)-(218, Y + 12), 0, B ELSE LINE (X, Y)-(X + 14, Y + 12), 0, B END IF SELECT CASE Char CASE 13 ' Consonant Selected GOSUB SelLetter IF Letter$ <> "" THEN GOTO Start CASE 27 ' Escape Key END CASE -80 ' Down Arrow Key IF Y = 165 THEN Y = 149 ELSE Y = Y + 16 CASE -77 ' Right Arrow Key IF X <> 204 THEN X = X + 16 ELSE X = 28 CASE -75 ' Left Arrow Key IF X <> 28 THEN X = X - 16 ELSE X = 204 CASE -72 ' Up Arrow Key IF Y = 149 THEN Y = 165 ELSE Y = Y - 16 END SELECT IF Y = 165 AND X > 156 THEN LINE (172, Y)-(218, Y + 12), 10, B X = 172 ELSE LINE (X, Y)-(X + 14, Y + 12), 10, B END IF LOOP LOOP PickVowel: IF PlayerMoney! < 250 THEN ' NOT enough money to buy vowel LOCATE 2, 1: PRINT SPACE$(40) LOCATE 2, 11: COLOR 12: PRINT "VOWEL'S COST $250" T! = TIMER DO LOOP UNTIL TIMER - T! > 3 OR INKEY$ <> "" GOTO Start END IF X = 244: Y = 149 LINE (X, Y)-(X + 14, Y + 12), 10, B DO DO A$ = INKEY$ LOOP UNTIL A$ <> "" IF LEN(A$) = 2 THEN Char = -ASC(RIGHT$(A$, 1)) ELSE Char = ASC(A$) LINE (X, Y)-(X + 14, Y + 12), 0, B SELECT CASE Char CASE 13 ' Vowel Selected GOSUB SelVowel IF Letter$ <> "" THEN GOTO Start CASE 27 ' Escape Key END CASE -80 ' Down Arrow Key IF Y = 165 THEN Y = 149 ELSE Y = Y + 16 CASE -77 ' Right Arrow Key IF X <> 276 THEN X = X + 16 ELSE X = 244 IF Y = 165 AND X = 276 THEN X = 244 CASE -75 ' Left Arrow Key IF X <> 244 THEN X = X - 16 ELSE X = 260 CASE -72 ' Up Arrow Key IF Y = 149 THEN Y = 165 ELSE Y = Y - 16 END SELECT LINE (X, Y)-(X + 14, Y + 12), 10, B LOOP SelVowel: IF Y = 149 THEN SELECT CASE X CASE 244 Letter$ = "A" CASE 260 Letter$ = "E" CASE 276 Letter$ = "I" END SELECT COLOR 3 LOCATE 20, (X - 244) / 16 + 32 + (X - 244) / 16: PRINT Letter$ ELSE SELECT CASE X CASE 244 Letter$ = "O" CASE 260 Letter$ = "U" END SELECT COLOR 3 LOCATE 22, (X - 244) / 16 + 32 + (X - 244) / 16: PRINT Letter$ END IF A = INSTR(InCaseVowel$, Letter$) IF A THEN A$ = MID$(InCaseVowel$, A + 1, LEN(InCaseVowel$)) InCaseVowel$ = LEFT$(InCaseVowel$, A - 1) + A$ ELSE Letter$ = "" END IF IF Letter$ <> "" THEN LetterInPuzzle Letter$, 1 IF Players > 1 AND InPuzzle = False THEN GOTO EndSel END IF GOTO Start SelLetter: IF Y = 149 THEN SELECT CASE X CASE 28 Letter$ = "B" CASE 44 Letter$ = "C" CASE 60 Letter$ = "D" CASE 76 Letter$ = "F" CASE 92 Letter$ = "G" CASE 108 Letter$ = "H" CASE 124 Letter$ = "J" CASE 140 Letter$ = "K" CASE 156 Letter$ = "L" CASE 172 Letter$ = "M" CASE 188 Letter$ = "N" CASE 204 Letter$ = "P" END SELECT COLOR 3 LOCATE 20, (X - 28) / 16 + 5 + (X - 28) / 16: PRINT Letter$ ELSE SELECT CASE X CASE 28 Letter$ = "Q" CASE 44 Letter$ = "R" CASE 60 Letter$ = "S" CASE 76 Letter$ = "T" CASE 92 Letter$ = "V" CASE 108 Letter$ = "W" CASE 124 Letter$ = "X" CASE 140 Letter$ = "Y" CASE 156 Letter$ = "Z" CASE 172 Letter$ = "QUIT" END END SELECT COLOR 3 LOCATE 22, (X - 28) / 16 + 5 + ((X - 28) / 16): PRINT Letter$ END IF A = INSTR(InCase$, Letter$) IF A THEN IF A <> LEN(InCase$) THEN InCase$ = LEFT$(InCase$, A - 1) + MID$(InCase$, A + 1, LEN(InCase$)) ELSE InCase$ = LEFT$(InCase$, A - 1) END IF ELSE Letter$ = "" END IF IF Letter$ <> "" THEN LetterInPuzzle Letter$, 0 IF Players > 1 AND InPuzzle = False THEN GOTO EndSel END IF RETURN SolvePuzzle: SavePicture 2 LINE (0, 199)-(320, 150), 0, BF LOCATE 20, 1: PRINT "SOLVE:" Solve$ = "" Last = False FOR Q = 2 TO 7 IF Puzz$(Q) <> "EMPTY" THEN IF RIGHT$(Puzz$(Q), 1) = "-" THEN Last = True IF Last = False THEN Solve$ = Solve$ + LTRIM$(Puzz$(Q)) + " " ELSE Solve$ = Solve$ + LTRIM$(Puzz$(Q)) Last = False END IF END IF NEXT Q Solve$ = RTRIM$(Solve$) A = INSTR(Solve$, "?") DO WHILE A IF A = 1 THEN Solve$ = MID$(Solve$, A + 2, LEN(Solve$)) ELSE Solve$ = LEFT$(Solve$, A - 1) + MID$(Solve$, A + 2, LEN(Solve$)) END IF A = INSTR(Solve$, "?") LOOP Solve$ = LTRIM$(RTRIM$(Solve$)) LOCATE 22, 1 FOR Q = 1 TO LEN(Solve$) COLOR 14 A = ASC(MID$(Solve$, Q, 1)) SELECT CASE A CASE 45 COLOR 10 PRINT "-"; CASE 32 PRINT " "; CASE ELSE PRINT "ù"; END SELECT NEXT Q LOCATE 22, 1: COLOR 15: LINE INPUT Answer$ IF UCASE$(Answer$) = UCASE$(Solve$) THEN Finish = True SELECT CASE Turn CASE 1 IF P1Money! = 0 THEN P1Money! = 200 M1P! = M1P! + P1Money! + PlayerMoney! P1Money! = 0 CASE 2 IF P2Money! = 0 THEN P2Money! = 200 M2P! = M2P! + P2Money! + PlayerMoney! P2Money! = 0 CASE 3 IF P3Money! = 0 THEN P3Money! = 200 M3P! = M3P! + P3Money! + PlayerMoney! P3Money! = 0 END SELECT PlayerMoney! = 0 AllCase$ = InCase$ + InCaseVowel$ FOR Q = 1 TO LEN(AllCase$) A$ = MID$(AllCase$, Q, 1) IF INSTR(UCASE$(Solve$), A$) THEN LetterInPuzzle A$, 0 NEXT Q IF Puzz$(1) = "BLANK" THEN LINE (0, 199)-(320, 150), 0, BF LOCATE 20, 1: COLOR 10: PRINT "CLUE:" LOCATE 22, 1: COLOR 15: LINE INPUT Clue$ IF UCASE$(Clue$) = Puzz$(8) THEN LOCATE 20, 1: PRINT "EXCELLENT!!!" SELECT CASE Turn CASE 1 M1P! = M1P! + 500 CASE 2 M2P! = M2P! + 500 CASE 3 M3P! = M3P! + 500 END SELECT ELSE LOCATE 20, 1: COLOR 10: PRINT "TOO BAD, THE CLUE WAS "; COLOR 12: PRINT Puzz$(8) END IF END IF SLEEP 1 ELSE SOUND 1000, .5: SOUND 500, .5 LoadPicture 2 END IF EndSel: END SUB SUB Showleader LoadPicture 1 Word$ = "$" + LTRIM$(STR$(M1P!)) XCor = 30 - ((LEN(Word$) - 2) * 4) PAINT (10, 140), 4, 15 BigChar Word$, XCor, 130 + LEN(Word$) - 2, 11, 1 IF Players > 1 THEN Word$ = "$" + LTRIM$(STR$(M2P!)) XCor = 140 - ((LEN(Word$) - 2) * 4) PAINT (150, 130), 1, 15 BigChar Word$, XCor, 119, 11, 0 END IF IF Players = 3 THEN Word$ = "$" + LTRIM$(STR$(M3P!)) XCor = 250 - ((LEN(Word$) - 2) * 2) PAINT (250, 140), 2, 15 BigChar Word$, XCor, 126, 11, 2 END IF LOCATE 24, 13: COLOR 15: PRINT "After"; Rn - 1; "Rounds... "; T! = TIMER DO LOOP UNTIL TIMER - T! > 3 OR INKEY$ <> "" END SUB SUB Showplayers SavePicture 2 LoadPicture 1 SELECT CASE Turn CASE 1 P1Money! = P1Money! + PlayerMoney! Word$ = "$" + LTRIM$(STR$(P1Money!)) XCor = 30 - ((LEN(Word$) - 2) * 4) PAINT (10, 140), 4, 15 BigChar Word$, XCor, 130 + LEN(Word$) - 2, 11, 1 CASE 2 P2Money! = P2Money! + PlayerMoney! Word$ = "$" + LTRIM$(STR$(P2Money!)) XCor = 140 - ((LEN(Word$) - 2) * 4) PAINT (150, 130), 1, 15 BigChar Word$, XCor, 119, 11, 0 CASE 3 IF Players = 3 THEN P3Money! = P3Money! + PlayerMoney! Word$ = "$" + LTRIM$(STR$(P3Money!)) XCor = 250 - ((LEN(Word$) - 2) * 2) PAINT (250, 140), 2, 15 BigChar Word$, XCor, 126, 11, 2 END IF END SELECT Turn = Turn + 1 IF Players = 2 AND Turn = 3 THEN Turn = 1 IF Players = 3 AND Turn = 4 THEN Turn = 1 LOCATE 24, 15: COLOR 14: PRINT "Round"; Rn; "of"; Rounds; SavePicture 1 WhoseTurn LoadPicture 2 END SUB SUB Spinwheel SavePicture 2 CLS CIRCLE (160, 100), 150, 15, , , 1 / 2 LINE (160, 100)-(309, 105), 15 LINE (160, 100)-(302, 75), 15 LINE (160, 100)-(277, 52), 15 LINE (160, 100)-(240, 37), 15 LINE (160, 100)-(195, 27), 15 LINE (160, 100)-(140, 25), 15 LINE (160, 100)-(94, 34), 15 LINE (160, 100)-(50, 50), 15 LINE (160, 100)-(20, 75), 15 LINE (160, 100)-(12, 110), 15 LINE (160, 100)-(38, 145), 15 LINE (160, 100)-(76, 163), 15 LINE (160, 100)-(130, 173), 15 LINE (160, 100)-(185, 173), 15 LINE (160, 100)-(235, 165), 15 LINE (160, 100)-(284, 143), 15 CIRCLE (160, 100), 15, 8, , , 1 / 2 PAINT (160, 100), 0, 8 CIRCLE (160, 100), 15, 15, , , 1 / 2 C = 0 LOCATE 12, 1: COLOR 12: PRINT CHR$(16) SpinPower = 10 ' SpinPower (Can be defined RANDOMLY if desired) DO RANDOMIZE TIMER PAINT (180, 60), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (160, 50), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (140, 70), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (100, 60), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (100, 80), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (80, 100), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (80, 120), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (80, 140), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (100, 160), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (160, 160), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (190, 150), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (220, 140), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (250, 130), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (250, 100), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (240, 80), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 PAINT (230, 60), C, 15 C = C + 1 IF C = 15 THEN C = INT(RND * 14) + 1 Col = POINT(50, 100) ' Where the WHEEL stops, calculate the color ColorCode Col P = P + 1 LOOP UNTIL P = SpinPower IF Money = 0 OR Money = -1 THEN SOUND 1000, .5: SOUND 500, .5 T! = TIMER DO LOOP UNTIL TIMER - T! > 4 OR INKEY$ <> "" LoadPicture 2 IF Money = -1 THEN PlayerMoney! = 0 SELECT CASE Turn CASE 1 P1Money! = 0 CASE 2 P2Money! = 0 CASE 3 P3Money! = 0 END SELECT END SUB SUB Whoseturn SELECT CASE Turn CASE 1 DO FOR X = 1 TO 15 PALETTE 12, X NEXT X LOOP UNTIL INKEY$ <> "" PALETTE 12, 12 PlayerMoney! = P1Money! CASE 2 DO FOR X = 1 TO 15 PALETTE 9, X NEXT X LOOP UNTIL INKEY$ <> "" PALETTE 9, 9 PlayerMoney! = P2Money! CASE 3 DO FOR X = 1 TO 15 PALETTE 10, X NEXT X LOOP UNTIL INKEY$ <> "" PALETTE 10, 10 PlayerMoney! = P3Money! END SELECT DO LOOP UNTIL INKEY$ = "" END SUB SUB SavePicture (Image) BytesToSave = 8000 DEF SEG = &HA000 OUT &H3CE, 4 OUT &H3CF, 0: BSAVE "Image0."+ltrim$(Str$(Image)), 0, BytesToSave OUT &H3CF, 1: BSAVE "Image1."+ltrim$(Str$(Image)), 0, BytesToSave OUT &H3CF, 2: BSAVE "Image2."+ltrim$(Str$(Image)), 0, BytesToSave OUT &H3CF, 3: BSAVE "Image3."+ltrim$(Str$(Image)), 0, BytesToSave END SUB SUB LoadPicture (Image) DEF SEG = &HA000 OUT &H3C4, 2 OUT &H3C5, 1: BLOAD "Image0."+ltrim$(Str$(Image)) OUT &H3C5, 2: BLOAD "Image1."+ltrim$(Str$(Image)) OUT &H3C5, 4: BLOAD "Image2."+ltrim$(Str$(Image)) OUT &H3C5, 8: BLOAD "Image3."+ltrim$(Str$(Image)) OUT &H3C5, 15 Kill "Image0."+ltrim$(Str$(Image)) Kill "Image1."+ltrim$(Str$(Image)) Kill "Image2."+ltrim$(Str$(Image)) Kill "Image3."+ltrim$(Str$(Image)) END SUB