Once I have answered a question in Small Basic Forum by Jeffrey SWHS about Text Adventure Game.  At that time, I made a sample text adventure program.  That program (FCD758-0) is not completed.  But I will explain about the program this time.  And until the next time I'd like to refine and upgrade this text adventure.

Opening

This is the game opening.  To game control, many Goto statements are used.  And for choosing an alternative, subroutine Choose is called.  This makes the code simple.

 1.stage_0: 
 2.TextWindow.Writeline("You're at a fork in the road.") 
 3.TextWindow.Writeline("Which way do you go? ") 
 4.choices="LEFT,RIGHT,STAY" 
 5.Choose() 
 6.If id = 1 Then 
 7.  Goto stage_1_1 
 8.ElseIf id = 2 Then 
 9.  Goto stage_1_2 
10.ElseIf id = 3 Then 
11.  Goto stage_1_3 
12.Else 
13.  TextWindow.WriteLine("Invalid choise.") 
14.  Goto stage_0 
15.EndIf 

First Stage

The first stage branches three by the selection.  There are no code for second and third selection, so these two goes to the end.

17.stage_1_1: 
18.TextWindow.Writeline("Good choice, you find some money. :)") 
19.TextWindow.Writeline("Have a nice day.") 
20.Goto end 
21.stage_1_2: 
22.  
23.stage_1_3: 

End of Game

This is the end of game, only writing a new line at this time.

25.end: 
26.TextWindow.Writeline("") 
27.' end of program 

Subroutine to Choose Alternative

This subroutine returns a number (id) selected from given choices that is described as comma separated value.

29.Sub Choose 
30.  ' param choices - e.g. "A,B,C" 
31.  ' return id - e.g. 1 for A 
32.  ' work a,c,choice,i,len,n,p,u - will be broken 
33.  
34.  ' Make array of choice  
35.  len = Text.GetLength(choices) 
36.  p = 1 
37.  i = 0 
38.  While p <= len 
39.    c = Text.GetIndexOf(Text.GetSubTextToEnd(choices,p), ",") 
40.    If c = 0 Then 
41.      c = len + 1 
42.    Else 
43.      c = c + p - 1 
44.    EndIf 
45.    i = i + 1 
46.    choice[i] = Text.GetSubText(choices, p, c - p) 
47.    p = c + 1 
48.  EndWhile 
49.  ' Dispaly choices  
50.  n = i 
51.  For i = 1 To n 
52.    TextWindow.Write(choice[i]) 
53.    If i < n - 1 Then 
54.      TextWindow.Write(" ") 
55.    ElseIf i = n - 1 Then 
56.      TextWindow.Write(" or ") 
57.    EndIf 
58.  EndFor 
59.  TextWindow.WriteLine("") 
60.  ' Input 
61.  a = TextWindow.Read() 
62.  ' Convert to upper case 
63.  u = Text.ConvertToUpperCase(a) 
64.  ' Search id of choces 
65.  id = n 
66.  While choice[id] <> u And 0 < id 
67.    id = id - 1 
68.  EndWhile 
69.EndSub 

Most significant point of this sample is using a subroutine Choice.  So main routine becomes simple.  But, there are many Goto statements.  And if we complete this game with this manner, there will be many TextWindow.WriteLine() operations and Goto statements in the code.  So, the next week I will show simpler sample.