Home | SCI Documentation | SCI Tutorials | SCI Tools | SCI Wiki | Community

Chapter 2 - Oh, yeah? Well, "%s" this!

In order to make your game fun and enjoyable, you'll want it to be more intelligent to the player. By default, if the player enters a word not in the vocabulary, or a sentence that doesn't make sense, it will just display a message like "I don't understand "that word"." or "That sentence doesn't make sense.". This can be easily changed.

In Sierra's games, you'll notice that it displays different responses when you enter invalid phrases. If you enter a word not in the game's vocabulary, it will display "Oh, yeah? Well, "the word" this!" or "You don't need to type the word "the word" to complete this game!", or "Don't you ever say the word "the word" again!".

Implementing an intelligent response system is very easy. There are three types of phrase catchers: wordFail, syntaxFail and pragmaFail.

Adding Response Handlers

The toolbar gives quick access to opening, closing and running games, the resource editors, and the help file. To add the response handlers, you simply need to add the methods by name to your game's instance.

Main Script First, open up your game's "main.sc" script.
New Game Dialog

Scroll down to the game's instance.

Scroll to the end of it and add the methods to handle the responses. You can add any or all in any order.

You'll naturally want multiple responses, and want them randomly said. To do this, we'll use a combination of a switch statement and Rand() kernel call.

We'll start with the wordFail method. Here's an example:

Code:
(method (wordFail theString)
  (
switch(Random(0 4))
    (
case 0
      FormatPrint("Oh, yeah? Well, \"%s\" this!" theString)
    )
    (
case 1
      FormatPrint("You may know the word \"%s\" but it's beyond 's vocabulary!" theString)
    )
    (
case 2
      FormatPrint("Oh, yeah? Well, I've got your \"%s\" right here!" theString)
    )
    (
case 3
      FormatPrint("You don't need to type the word \"%s\" to complete this game!" theString)
    )
    (
default
      FormatPrint("Don't you ever say the word \"%s\" again!" theString)
    )
  )
)

This generates a random number from 0 to 4 (five possible numbers), and displays a response depending on which is generated.

The syntaxFail and pragmaFail operate identical to wordFail, but I'll give examples of them as well:

Code:

(method (syntaxFail theString)
  (
switch(Random(0 2))
    (
case 0
      Print("That doesn't appear to be a proper sentence.")
    )
    (
case 1
      Print("What in the heck are you talking about?")
    )
    (
default
      Print("That's probably something you could do, but this game won't!")
    )
  )
)

 

Code:
(method (pragmaFail theString)
  (
switch(Random(0 2))
    (
case 0
      Print("The heck you say?")
    )
    (
case 1
      Print("You're too smart for this game!")
    )
    (
default
      Print("Congratulations! You have dumbfounded this game!")
    )
  )
)

The methods all take the string as a parameter. Whether you choose to use it or not is up to you.

You can have as many or as few responses as you like. Just change the random amount and cases.

That sums up global response handlers! Now your game can have attitude!

< Previous: Chapter 1 - Global Said Statements Next: Chapter 3 - Making Actors Move Along Paths >
 

by helping to defray some of the costs of hosting this site. If it has been of help to you, please consider contributing to help keep it online.
Thank you.
pixe
Top

© 2013 to present The Sierra Help Pages. All rights reserved. All Sierra games, artwork and music © Sierra.