Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Microsoft CSharp Programming For The Absolute Beginner (2002) [eng].pdf
Скачиваний:
39
Добавлен:
16.08.2013
Размер:
15.71 Mб
Скачать

You might guess the solution—simply precede the quote symbol with a backslash to indicate that you want to display a quotation mark.

Console.WriteLine("This line has \"quotes\" in it");

Launching the Mini Adventure

You now know enough to write the adventure story mentioned at the beginning of this chapter. The program itself is reasonably simple. However, there is a process to building the program.

Planning the Story

To write this program, I started by writing the silly story on paper and circling the words I thought would be fun to replace with the user’s responses. I then created a variable for each of those words.

Trick Because the code for this program is a little longer than the earlier programs, I have divided it into parts so that I can describe each part of the program individually. You can see the entire program on the CD−ROM that accompanies this book. In fact, I encourage you to load this project (and all the others in this book) from the CD so that you can see them in the editor and modify them for your own use.

Creating the Variables

The first part of the game involves all the standard procedures: creating a namespace, a class, the Main() method, and variables. Here’s the code that performs these tasks:

using System;

namespace adventure

{

///<summary>

///Silly Adventure game

///User responds to some questions, and these

///responses are used to write a goofy story

///Andy Harris, 11/02/01

///</summary>

class Adventure

{

static void Main(string[] args)

{

string person; string occupation; string seaCreature; string animal; string friend; string tool; string problem;

Notice that I added some comments at the beginning to help myself remember what the program is supposed to do. I named the namespace and the class and created all the variables I thought I would need.

Hint Unlike some languages, C# does not require you to declare all your variables at the beginning of the Main() method, but it’s still a good practice. Describing all the

28

variables in one place where you can see them together is very handy.

Getting Values from the User

After creating the variables, you get values from the user for those variables. Each variable is loaded up in much the same way, by asking the user a question with a Console.Write() method and getting a value with the Console.ReadLine() method. Here’s the code that asks all the questions and stores the responses in variables:

Console.WriteLine("Simple Adventure Game"); Console.Write("What is your name? "); person = Console.ReadLine();

Console.Write("What is your occupation? "); occupation = Console.ReadLine();

Console.Write("Please tell me your favorite animal: "); animal = Console.ReadLine();

Console.Write("What is the name of one of your friends?); friend = Console.ReadLine();

Console.Write("Name a problem you might face: "); problem = Console.ReadLine();

Console.Write("Name a tool: "); tool = Console.ReadLine();

Console.Write("Please give me the name of a sea creature: "); seaCreature = Console.ReadLine();

You might be surprised that I chose to use Console.Write() instead of Console.WriteLine() to ask the questions. I tried them both and preferred the behavior of Console.Write() in this case. If I had used WriteLine(), there would have been a carriage return at the end of the line, and the user’s response would have been typed on the next line. (If you don’t know what I’m talking about, change one of the Write statements to a WriteLine, and you will see the effect.) I think that it looks more like a dialog if the response is on the same line as the question, so I decided to use Write() instead of WriteLine().

For each of the variables in the story, I used a Console.ReadLine() call to get the current line of response from the user, and I stored that response in the appropriate string variable.

Writing the Output

The last element is to write the story to the screen. It probably won’t surprise you to learn that I used several calls to the Console.WriteLine() method to achieve this effect:

//create some blank lines Console.WriteLine(); Console.WriteLine();

//Write the story

Console.WriteLine("One day there was a person named {0}. Now, {0} was Ä usually ", person);

Console.WriteLine("very content to work as a {0}, but sometimes the Ä job ", occupation);

Console.WriteLine("was extremely difficult.");

29

Console.WriteLine("One day, {0} discovered that the heartbreak of {1} Ä had ", person, problem);

Console.WriteLine("occurred just one time too often. \"I can't stand Ä being a ");

Console.WriteLine("{0} anymore!\" yelled {1}, as he hurled away his ", Ä occupation, person);

Console.WriteLine("{0} in anger. No {1} will keep me from fulfilling", Ä tool, problem);

Console.WriteLine("my dreams! What I really want, said {0}, is to be Ä just like", person);

Console.WriteLine("{0}. Now THAT's somebody to admire. So {1} put Ä away the ", friend, person);

Console.WriteLine("{0} forever, and followed {1} into the pastoral" , Ä tool, friend);

Console.WriteLine("world of {0}−ranching. Eventually, {1} was able Ä to ", animal, person);

Console.WriteLine("retire, as happy as a {0}", seaCreature);

To get the story game started, I first typed the story on the screen as Console.WriteLine() statements. For example, my first draft at the first line was this:

Console.WriteLine("One day, there was a person named {person}. Now, {person} was");

Of course, this version helped me see how to set up the code, but it wouldn’t compile correctly. To make that happen, I had to modify the code so that the variables to interpolate follow the main string, like this:

Console.WriteLine("One day there was a person named {0}. Now, {0} was Ä

Usually ", person);

Note in this particular circumstance that I used the variable person twice, so there was no need to repeat it.

Take a careful look at this line:

Console.WriteLine("occurred just one time too often. \"I can't stand being a ");

Note that I used the backslash and quote combination (\") to get quotation marks in my story. I wanted to print a quotation mark on the screen, but if I used a regular quote symbol, the compiler could become confused because it might think that this is the end of the string. The \" sequence informs the compiler that you want to send a quotation mark to the screen, rather than use it as a programming construct.

Finishing the Program

All that remains is some cleanup. To keep the program on the screen, I’ll ask the user to press the Enter key as usual. Notice the use of WriteLine() statements without any parameters. These are used to send blank lines to the console. They can dramatically improve the clarity of your output.

Here’s the remaining code in the adventure program:

//create some blank lines Console.WriteLine(); Console.WriteLine();

30

Соседние файлы в предмете Программирование на C++