1. Trang chủ
  2. » Công Nghệ Thông Tin

Microsoft WSH and VBScript Programming for the Absolute Beginner Part 36 potx

10 206 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 127,14 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

However, you need to modify and rerun this script if you decide to change the location of the folder in which you plan to store your Hangman word files.. Updating the Hangman Game In thi

Trang 1

Creating the Setup Script

In stage 1, you’ll create a VBScript called HangmanSetup.vbs This script will create and store

a Registry key called Hangman in the HKEY_CURRENT_USER root key (referred to in the script as HKCU) Within this key, a value called ListLocationwill be created and assigned a string iden-tifying the location where you plan to store your Hangman word files The HangmanSetup.vbs script will be developed in three steps

1 Create a new script, adding your VBScript template and defining the variables and objects used by this VBScript.

2 Set up the controlling logic in the Main Processing Section, first prompting for con-firmation before continuing, and then finally calling the procedure that creates the Registry key and value.

3 Set up the Procedure Section by adding the SetHangmanKeyAndValue() function, which performs the actual modification of the Registry.

Defining Variables and Objects

By now, this step should be very familiar to you Begin by copying over your VBScript tem-plate and filling in information about the new script.

‘*************************************************************************

‘Script Name: HangmanSetup.vbs

‘Author: Jerry Ford

‘Created: 12/14/02

‘Description: This script configures Registry entries for the Hangman.vbs

‘game

‘*************************************************************************

‘Initialization Section

Option Explicit

Next, define the variables and objects required by the script As you can see here, this is a very simple script, with only a few items that need to be defined:

Dim objWshShl, intResponse

Set objWshShl = WScript.CreateObject(“WScript.Shell”)

The first variable represents the WshShell object, and the second variable stores the user’s response when asked whether he or she wants to make the Registry change.

Trang 2

Get Confirmation First

The Main Processing Section prompts the user for confirmation and then tests the results returned by the InputBox() function before proceeding If the value returned is equal to 6, then the user elected to continue Otherwise, the WScript object’s Quit() method terminates script execution.

‘Main Processing Section

‘Ask for confirmation before proceeding

intResponse = MsgBox(“This VBScript establishes registry settings “ & _

“for the Hangman game Do you wish to continue?”, 4)

If intResponse = 6 Then

SetHangmanKeyAndValue()

End If

WScript.Quit()

Modify the Registry

The final step in creating this script is to define a function that creates the new Registry key and value As you saw earlier in this chapter, this operation is accomplished using the WshShellobject’s RegWrite()method.

When deciding what Registry key and value to create in situations like this, it’s critical that you take steps to ensure that you don’t accidentally overwrite an already existing key or value of the same name Otherwise, you might acciden-tally disable another application or even a Windows component In the case of this script, it’s virtually certain that the key and value I defined will not be in use However, if there is any doubt, you can add logic to your VBScripts that first check to determine whether the key and value already exist before proceeding.

‘Procedure Section

Function SetHangmanKeyAndValue()

objWshShl.RegWrite “HKCU\VBGames\Hangman\ListLocation”, “c:\Hangman”

End Function

T R A P

Trang 3

Assembling the Entire Setup Script

Now let’s put the three sections of this script together; then run the script and click on Yes when prompted for confirmation If you want to, you can use the Regedit utility to go behind your script and make sure that it created the new Registry key and value as expected.

‘*************************************************************************

‘Script Name: HangmanSetup.vbs

‘Author: Jerry Ford

‘Created: 12/14/02

‘Description: This script configures Registry entries for the Hangman.vbs

‘game

‘*************************************************************************

‘Initialization Section

Option Explicit

Dim objWshShl, intResponse

Set objWshShl = WScript.CreateObject(“WScript.Shell”)

‘Main Processing Section

‘Ask for confirmation before proceeding

intResponse = MsgBox(“This VBScript establishes registry settings “ & _

“for the Hangman game Do you wish to continue?”, 4)

If intResponse = 6 Then

SetHangmanKeyAndValue()

End If

WScript.Quit()

‘Procedure Section

Function SetHangmanKeyAndValue()

Trang 4

objWshShl.RegWrite “HKCU\VBGames\Hangman\ListLocation”, “c:\Hangman”

End Function

You only need to run this script one time to set up a computer to play the Hangman game However, you need to modify and rerun this script if you decide to change the location of the folder in which you plan to store your Hangman word files.

Updating the Hangman Game

In this second part of the project’s development, you will modify the original Hangman script so that it retrieves from the Registry the location of the folder that stores the Hang-man word files You’ll also add logic that enables the script to open and read the contents

of the word files To accomplish this goal, the original Hangman script needs to be modified

in five steps.

1 Open the Hangman script and modify its Initialization Section to include additional variables and object references required to support the script’s new functionality.

2 Delete the FillArray() function, which was responsible for retrieving a randomly selected word from an internal array, from the script.

3 Modify the RetrieveWord()function to call two new functions, GetWordFileLocation() and SelectAWordCategory() Add logic that processes the word file specified by the player to randomly select a game word.

4 Create the GetWordFileLocation() function, which retrieves the location of the folder where the word files are stored from the Windows Registry.

5 Create the SelectAWordCategory()function, which presents the player with a list of word categories based on the word files that it finds in the folder.

You should make a copy of your current Hangman script and modify the copy instead of the original script This way, if something goes wrong, you’ll still have your original working version of the game to play.

Updating the Initialization Section

You need to make several changes to the Hangman script’s Initialization Section These include defining new variables used by new portions of the script These variables appear in boldface in the following:

‘Initialization Section

T R I C K

Trang 5

Option Explicit

Const cTitlebarMsg = “VBScript HANGMAN”

Dim strChoice, strGameWord, intNoMisses, intNoRight, strSplashimage

Dim intPlayOrNot, strMsgText, intPlayAgain, strWrongGuesses

Dim strRightGuesses, blnWordGuessed, intLetterCounter

Dim strTempStringOne, strTempStringTwo, strWordLetter, strDisplayString

Dim strFlipCounter, intRandomNo, strProcessGuess, blnGameStatus

Dim strCheckAnswer, objWshShl, strGameFolder, objFsoObject, objGameFiles

Dim strSelection, strFileString, strCharactersToRemove

Dim blnValidResponse, strSelectCategory, strInputFile, strWordFile

Dim intNoWordsInFile, intLinesInFile, strWordList

In addition, you need to delete the following statement because the array that held the game words used in the original version of the script is no longer supported:

Dim astrWordList(9) ‘Define an array that can hold 10 game words

Finally, you need to instantiate both the FileSystemObject and the WshShell object like this:

‘Set up an instance of the FileSystemObject

Set objFsoObject = CreateObject(“Scripting.FileSystemObject”)

‘Set up an instance of the WshShell object

Set objWshShl = WScript.CreateObject(“WScript.Shell”)

Methods and properties belonging to the FileSystemObjectobject are required to read and process the words stored in the game’s word files In addition, the WshShell object’s RegRead()method is needed to retrieve the location of the folder where the game’s word files are stored.

Removing Obsolete Statements

The next thing to do is delete the FillArray() function, shown next, from the VBScript Before doing so, copy and paste each of the words defined by this array into a blank Notepad file, each on its own separate line Save the file in a folder called Hangman on your com-puter’s C: drive and name the file General.txt (that is, save it as C:\Hangman\General.txt) This text file will be used to retrieve game words for the new and improved version of the game.

Trang 6

Function FillArray()

‘Add the words to the array

astrWordList(0) = “AUTOMOBILE”

astrWordList(1) = “NETWORKING”

astrWordList(2) = “PRACTICAL”

astrWordList(3) = “CONGRESS”

astrWordList(4) = “COMMANDER”

astrWordList(5) = “STAPLER”

astrWordList(6) = “ENTERPRISE”

astrWordList(7) = “ESCALATION”

astrWordList(8) = “HAPPINESS”

astrWordList(9) = “WEDNESDAY”

End Function

While you’re at it, you might want to create one or two other word files, give them names that describe their contents, and then save them in the Hangman folder This way, the player will have more than one category of words to choose from when playing the game.

Modifying the RetrieveWord() Function

You should begin modifying the RetrieveWord()function by first deleting all its statements and then adding the statements shown next As you can see, I have added a number of com-ments to this code to explain its construction in detail.

‘This function retrieves a randomly selected word from a word file

Function RetrieveWord()

‘Locate the folder where collections of game words are stored

strGameFolder = GetstrWordFileLocation()

‘Get the player to select a word category

strSelectCategory = SelectAWordCategory(strGameFolder)

‘Create the complete path and file name for the selected word file

strInputFile = strGameFolder & “\” & strSelectCategory

‘Open the file for reading

Trang 7

Set strWordFile = objFsoObject.OpenTextFile(strInputFile, 1)

‘Set this variable to zero It represents the No of words in the file

intNoWordsInFile = 0

‘Count the number of words in the file

Do while False = strWordFile.AtEndOfStream

‘Read a line

strWordFile.ReadLine()

‘Keep count of the number of words (or lines) read

intNoWordsInFile = intNoWordsInFile + 1

‘If the loop iterates more than 50 times something is wrong

If intNoWordsInFile > 50 Then

Exit Do

End If

Loop

‘Close the file when done counting the number of words (or lines)

strWordFile.Close

‘Pick a random number between 1 and the number of words in the file

Randomize

intRandomNo = FormatNumber(Int((intNoWordsInFile + 1) * Rnd),0)

‘Open the file for reading

Set strWordFile = objFsoObject.OpenTextFile(strInputFile, 1)

‘Skip the reading of all words prior to the randomly selected word

For intLinesInFile = 1 to intRandomNo - 1

‘Read the randomly selected word

strWordFile.SkipLine()

Next

‘Return the randomly selected word to the calling statement

RetrieveWord = strWordFile.ReadLine()

‘Close the file when done

strWordFile.Close

End Function

Trang 8

Create the GetWordFileLocation() Function

The RetrieveWord() function calls upon the GetWordFileLocation() function, shown here, to retrieve the location of the folder where the Hangman game’s word files are stored (that is, the function retrieves the information stored in the Windows Registry by the HangmanSetup.vbs script).

‘This function retrieves the location of folder where word files are stored

Function GetstrWordFileLocation()

‘Get the folder name and path from its assigned Registry value

GetstrWordFileLocation = _

objWshShl.RegRead(“HKCU\VBGames\Hangman\ListLocation”)

End Function

Create the SelectAWordCategory() Function

The RetrieveWord() function also calls upon the SelectAWordCategory() function, shown next, to prompt the player to select a word category from which the game’s mystery word should be randomly selected This function takes one argument, TargetFolder, which is the location of the folder where the word files are stored The function then displays a list of word categories based on the word files stored in the folder and prompts the player to select one If the player fails to make a selection, the function automatically specifies the General category as the default Again, I’ve added plenty of comments to the function to document its construction.

‘This function returns a word category

Function SelectAWordCategory(TargetFolder)

‘Specify the location of the folder that stores the word files

Set strGameFolder = objFsoObject.GetFolder(TargetFolder)

‘Get a list of files stored in the folder

Set objGameFiles = strGameFolder.Files

strSelection = “”

‘Loop through the list of word files

For Each strWordList In objGameFiles

Trang 9

‘Build a master string containing a list of all the word files

strFileString = strFileString & strWordList.Name

‘Remove the txt portion of each file’s file name

strCharactersToRemove = Len(strWordList.Name) - 4

‘Build a display string showing the category names of each word file

strSelection = strSelection & _

Left(strWordList.Name, strCharactersToRemove) & vbCrLf

Next

blnValidResponse = “False”

‘Loop until a valid category strSelection has been made

Do Until blnValidResponse = “True”

‘Prompt the player to select a word category

strChoice = InputBox(“Please specify the name of a word category “ & _

“from which game words will be selected.” & vbCrLf & vbCrLf & _

“Available Categories:” & vbCrLf & vbCrLf & _

strSelection, “Pick a Category” , “General”)

‘If input is not in master string the player must try again

If InStr(UCase(strFileString), UCase(strChoice)) = 0 Then

MsgBox “Sorry but this is not a valid category Please try again.” Else

blnValidResponse = “True”

End If

Loop

‘If the player typed nothing then specify a default word category

If Len(strChoice) = 0 Then

strChoice = “General”

End If

‘Add the txt portion of the file name back

SelectAWordCategory = strChoice & “.txt”

End Function

Trang 10

Viewing the Completed Hangman Script

That’s it! Your new and improved version of the Hangman script, shown next, should be ready for testing Don’t forget to test it thoroughly and to have someone else test it as well.

‘*************************************************************************

‘Script Name: Hangman-2.vbs

‘Author: Jerry Ford

‘Created: 12/14/02

‘Description: This is a Registry-enabled version of Hangman.vbs

‘*************************************************************************

‘Initialization Section

Option Explicit

Const cTitlebarMsg = “VBScript HANGMAN”

Dim strChoice, strGameWord, intNoMisses, intNoRight, strSplashimage

Dim intPlayOrNot, strMsgText, intPlayAgain, strWrongGuesses

Dim strRightGuesses, blnWordGuessed, intLetterCounter

Dim strTempStringOne, strTempStringTwo, strWordLetter, strDisplayString

Dim strFlipCounter, intRandomNo, strProcessGuess, blnGameStatus

Dim strCheckAnswer, objWshShl, strGameFolder, objFsoObject, objGameFiles

Dim strSelection, strFileString, strCharactersToRemove

Dim blnValidResponse, strSelectCategory, strInputFile, strWordFile

Dim intNoWordsInFile, intLinesInFile, strWordList

‘Set up an instance of the FileSystemObject

Set objFsoObject = CreateObject(“Scripting.FileSystemObject”)

‘Set up an instance of the WshShell object

Set objWshShl = WScript.CreateObject(“WScript.Shell”)

‘Main Processing Section

intPlayOrNot = DoYouWantToPlay()

If intPlayOrNot = 6 Then ‘User elected to play the game

PlayTheGame()

Ngày đăng: 03/07/2014, 18:20

TỪ KHÓA LIÊN QUAN