(figure)

THE GAME

In Westward Ho! you are the head of a family of five setting out from Independence, Missouri, in the spring of 1847 on the Oregon Trail. Your objective is to arrive safely in Oregon City, Oregon.

Having saved about $420 you must purchase a wagon for $70, and with the remaining money you must also buy enough equipment, supplies, and livestock to sustain you on your strenuous 2000-mile journey. As you travel, you encounter the same hazards and conditions that American pioneers faced during the Great Migration: wagon fires, polluted water, wild animals, bad weather, illness, and topographical obstacles. The following hints will help you on the Trail:

If you make the correct decisions along the way, you and your family will join the hundreds of thousands of pioneers who settled and developed the land west of the Rockies. If you prepare poorly or if you make foolish decisions, your bones will serve as a warning to those who come after you on the Oregon Trail. Good luck!

sample output

THE STORY

No one can say when it began. A thousand little rivulets of water trickling downhill go unnoticed until they merge into a thundering river. So it was at the beginning of the greatest mass migration of people that this country, or any other, has ever known. There was only one way to go: west. West to farmlands in Ohio, west along the Erie Canal to the Great Lakes, west to the tributaries of the Mississippi and Ohio rivers, and west to the rolling hills of Kentucky.

By 1825, steamboats were plying the Mississippi and Ohio rivers, and the states of Michigan, Illinois, and Indiana were considered settled. Settlers pushed west into Iowa and Missouri until, by 1830, Independence, Missouri, then the westernmost post office in the United States, defined the boundary of the frontier.

Independence was on the very threshold of the frontier, and for more than a decade it remained the focal point for the western march of the pioneers. Independence was ideally situated for such a role. It was three miles south of the big bend in the Missouri River, where, after flowing southeast for 2000 miles from its headwaters in the Rocky Mountains, the great river changed direction and flowed due east to join the Mississippi a few miles north of St. Louis. A few miles to the west began the vast undulating prairies and high plains that stretched unbroken to the distant Rockies.

With the lands east of the Mississippi settled, adventurers, either by choice or compulsion, gravitated to an even newer frontier—the lands west of the Mississippi. Like their fathers, they were traders, trappers, hunters, and explorers—almost certainly not farmers or settlers.

An early lure of the west was the lower Rio Grande, where inexpensive Spanish and Mexican linens and fabrics could be bought from Spanish traders. New England textile merchants smacked their lips at the thought of profits from capturing that trade. Trade with various Indian tribes was also of interest, and by 1825 a regular route across the Kansas prairie, along the Arkansas and Purgatoire Rivers, and across the Sangre de Cristo Mountains, had been established from Independence to Santa Fe, New Mexico. This, the first of the major trails west, was known as the Santa Fe Trail.

By 1830, adventurers had started looking westward to destinations other than New Mexico. In 1831, Joseph Smith, Jr., set out from Independence and, upon reaching what is now Salt Lake City, declared, "This is the place." Tens of thousands of Mormons followed in his footsteps over the next three decades to escape religious persecution in Ohio and Missouri.

Meanwhile, Stephen Watts Kearney, a determined U.S. Army general, had pushed west over a southern route from Santa Fe through Arizona to San Diego, and other people had extended the northern trails west across the mountains to San Francisco (the Overland Trail) and to Willamette Valley (the Oregon Trail). In addition, steamboats of the American Fur Company had been able to navigate up the Missouri as far as Fort Pierre, South Dakota, while smaller vessels had gotten to Fort Benton, Montana. To cement its foothold, this privately owned company was busy establishing outposts and forts throughout the northern states.

The Oregon Trail ran 2,000 miles across the Northwest

Independence, absorbed with the Santa Fe trade to the south and the fur trade to the north, had paid little attention to the trickle of emigrants who, for several years, had been setting out for California and Oregon. However, as glowing reports began to come back from the early pioneers, the trickle swelled to a flood—900 emigrants left Independence in 1843, 3000 in 1845, and more than 5000 in 1847. These new pioneers bore little resemblance to the traders plying the Santa Fe Trail or to the trappers in the North. They were men of the land, traveling with their wives and children. They were movers, but they had a destination, a promised land called Oregon—about which they knew as little as they knew about the road that would take them there.

Historically, the Conestoga wagon, which originated in eastern Pennsylvania, has always been associated with the great migration to Oregon and is depicted in scores of paintings. The truth, however, is much less colorful. The Conestoga wagon was in fact far too heavy for the long haul across the prairies and mountains, and a flatbed farm wagon, sometimes fitted with high wheels and a tent of waterproof sheeting, was generally the transport of choice. Such a wagon, sometimes called a Murphy wagon, required a team of six to ten mules or oxen to pull it when heavily laden. Most families also had a cow or two, a saddle horse, and a plow lashed to the rear of the wagon.

A bare-bones Murphy wagon cost about $50 to $70; high wheels, a waterproof covering, yokes, harnesses, and spare parts could bring the total cost up to $100. A team of two oxen cost about $25; most travelers bought six to ten animals. Although horse teams could travel faster than oxen, ox teams were sturdy, dependable, and less likely to be stolen by Indians. And if worst came to worst and food ran out, the oxen could be eaten.

A guidebook of the time recommended the following food supplies for one adult for the five- to six-month journey: 150 lbs. of flour, 25 lbs. of bacon or pork, 15 lbs. of coffee, 25 lbs. of sugar, and smaller quantities of rice, beans, dried fruit, molasses, vinegar, salt, pepper, tea, spices, and baking soda. Also on the recommended list were tobacco, soap, whiskey, medicines, and matches.

It was essential that the wagon carry spare parts and tools such as oxen yokes, harnesses, lead bars, open chain links, horseshoes, nails, ropes, hammers, axes, mallets, saws, and spades. Tar buckets were also necessary, some filled with resin and grease to use on the axles, and others filled with tar to seal and waterproof the wagon before fording or floating it across a river.

When they arrived in Independence, most families already had some supplies and clothing. However, tales of harsh weather in the mountains inspired all but the most foolhardy travelers to procure additional warm clothing.

For protection as well as hunting, travelers carried breech loading rifles, Colt revolvers, and a plentiful supply of ammunition. Most also took along mirrors, ribbons, cloth, tobacco, and assorted trinkets for trading with the Indians.

Most families joined others in Independence and made up wagon trains of from four to as many as 100 wagons. Each season, the first of these trains set out as soon as the winter snows melted and was followed by a steady stream of departures throughout the spring and into early summer.

The wagon trains usually went only a short distance the first day, making a sort of trial run. While they were still close to Independence, the men could ride back if necessary to buy supplies that had been forgotten.

The first weeks of travel in the spring were generally very difficult. The men frequently were not experienced at handling teams, wagons, or weapons. The snows had just melted, so the trails were like mud bogs. Most families had no idea how to pack and wound up with dangerously top-heavy or unbalanced loads. Oxen became entangled in their ropes at night and sometimes, breaking free, wandered off.

The first stop for most travelers, usually reached in two or three days, was the Shawnee Methodist Mission only 15 miles from Independence. Once this was left behind, travelers would not see any signs of civilization for many long miles. After leaving the Mission, the wagon trains lumbered over the rolling prairie south of the Kansas River, following the deep ruts of the Santa Fe Trail as far as the present-day town of Gardner, Kansas. There a sign bore the simple legend "Road to Oregon."

From there on, the wagons kept to the high prairies as much as possible, although there were many streams and rivers to be crossed. The Wakarusa, Kansas, Red Vermillion, Black Vermillion, and Big Blue rivers were especially difficult for the travelers; smaller streams could be forded, but it was a daylong ordeal to cross a river. First, the wagons had to be unloaded and the joints and seams packed with tar. After that, they were let down the bank with ropes and floated across. Supplies were floated by makeshift raft or carried by horse. Frequently tools and heavier provisions slid into the river. After the oxen had crossed, they were taken to the top of the bank, harnessed by long ropes to the wagon, and, with them pulling and all the family members pushing, the wagon inched to the top of the bank.

Indians, particularly the Pawnee in the area of the Red Vermillion river, did not welcome the constant stream of white men crossing their hunting grounds. In 1849, for example, after a cholera epidemic for which the Indians blamed the whites, the Pawnee, Oglala, and Sioux began attacking wagon trains with great frequency. Wagons were particularly vulnerable when crossing rivers, so the Indians often chose fords for their attacks.

In a sense, the Indians were correct about the source of cholera. It had been carried from Asia to the U.S. by sailors and passengers on ships. It reached the frontier by way of New Orleans and the Mississippi and traveled west with the wagon trains. No amount of planning or preparation could save the settlers from this hazard. Afflicted with severe pain, vomiting, and cramps, a person might display the first symptoms in the morning and be dead by noon.

In 1852, Ezra Meeker kept a log and estimated that more than 5000 people had died of cholera on the trail that year.

Living in fear of disease, the emigrants were prone to dose themselves with large quantities of medicine at the first sign of any illness, on the theory that the larger the dose the quicker the recovery that might be expected. In fact, many patients were killed rather than cured by the injudicious use of medicine.

River crossings slowed the journey through Kansas and Nebraska, and most wagon trains took about three weeks to travel the 175 miles to the ford across the Big Blue River in southern Nebraska known as Independence Crossing. About six miles northwest of this crossing, trails from St. Joseph and Fort Leavenworth converged, thence following the Platte River to Fort Kearney. Having reached the Platte, the pioneers could follow its valley west, past Chimney Rock, Scott's Bluff, and to the last outposts of civilization, Fort Laramie and Fort Fetterman.

The Platte River marked the beginning of buffalo country, and few men missed the chance to enjoy some good hunting and to add to their food supply. Unfortunately, most of them had no idea how to preserve the meat. The animals were generally shot in midafternoon and left in the hot sun until sunset, when they were gutted. Perhaps one was roasted that night, but the rest were left unskinned and undivided to rot and provide a meal for the scavengers of the plain.

Along the North Platte River Valley, the wagons could generally make a speed of about two miles per hour, thus covering, in a good day, about 15 to 18 miles. If it had been possible to maintain this speed for the entire journey, the 2040 miles from Independence to Oregon City could have been covered in about 4 1/2 months. However, everything seemed to conspire to slow the trip: river crossings, Indian and bandit attacks, hunting, burying the dead, wagon breakdowns, muddy trails, oxen wandering off, and losing the trail.

Some wagon trains even rested on Sunday, observing it as a day of worship and, more often than not, repair.

Fort Laramie stood at the fork of the Laramie and North Platte rivers in eastern Wyoming. There the traveler had his first opportunity in many weeks to send letters home, buy provisions, and get information about the trail ahead. There, too, was a place to relax a bit from the constant caution so necessary on the march.

After Fort Laramie, the next objective was the Sweetwater River Valley in central Wyoming, the entrance to which was marked by Independence Rock, on which thousands of emigrants carved their names. "The Great Register of the Desert," Father Pierre Jean de Smet, a Jesuit missionary, called it. If things were going well, most travelers had reached the rock by July 4.

Looking west from Independence Rock, the emigrants could see, six miles in the distance, a V-shaped split in a rocky ridge known as Devil's Gate. The preferred route skirted Devil's Gate Canyon, but there was no question that it marked the beginning of a new and more difficult phase of the journey. Although there were many alternative routes to the Sweetwater Valley, all trails converged there for the long ascent to South Pass across the Continental Divide. Even in mid-July, the steep mountain walls often blocked the sun, and snow and ice frequently covered the ground. The ascent from the Sweetwater Valley was long and gradual, and the South Pass many miles in width. Hence the only real hindrances to good progress were the occasional snow and damage to wagon wheels from the rocky trail. The travelers, having left the boredom of the plains and knowing that they had reached the halfway point of the trip, were usually in good spirits as they entered South Pass.

Beyond the South Pass, the trail began a gradual but rocky descent of about 60 miles, across the Green River near the Wyoming-Idaho border. This crossing was an extremely dangerous one; the river was wide, deep, powerful, and ice cold. Those who successfully made this crossing were much relieved to follow the Bear River Valley for a way to Soda Springs, whence they headed northwest for 50 miles to Fort Hall, Idaho, on the Snake River. There they were forced to decide whether to continue on to Oregon or turn south to California.

Fort Hall was a welcome stop for the wagon trains. Originally built by Captain Nathaniel J. Wyeth of Boston in 1834, the fort offered needed supplies and protection from the hostile Blackfoot Indians. After leaving the fort, the trail crossed the Portneuf River and Bannock Creek and then passed the American Falls on the Snake River. This treacherous crossing led, a few miles on, to two enormous rocks known as Massacre Rocks because hostile Indians often used them as a place from which to ambush wagon trains.

The trail then followed the Snake River for some 300 miles as it traced its circuitous course across the barren, lava-covered Snake River Plains; it finally broke out of the canyon at the mouth of the Little Boise River near the Oregon border. As they crossed the Snake at Fort Boise, the travelers took their first steps in Oregon.

But one more barrier loomed between the settlers and the Promised Land: the terrible Blue Mountains. Several times during the crossing of these mountains, wagons had to be lowered with ropes from one part of the trail to another, and canyon walls too narrow for the wagons frequently had to be chipped away. Wagons were often abandoned, their occupants continuing the journey on foot. Others, searching for a better route, became hopelessly lost and eventually died of hunger and thirst.

John Kerns, in his diary, recorded this about the Blue Mountains: "…it was the roughest road we have encountered on the journey, being up and down sidling mountains, into the brush and across a creek every 200 or 300 yards, and over stony places enough to hide all despairing sinners."

Those pioneers who traversed the final obstacle, Deadman's Pass, saw the trail emerge from the mountains and wind down the bald face of Emigrant Hill from which they were treated to one of the most spectacular views in the world. Mt. Hood and Mt. Adams could be seen in the distance, while in the foreground lay the rolling hills and fertile valleys of the Columbia River Basin.

From Walla Walla, Washington, on, still 250 miles across Oregon to the coastal settlements, most travelers kept going, driven by sheer exhilaration and determination. By all accounts, it was one of the most difficult parts of the journey. As Medorem Crawford, an emigrant traveler, recorded, "From Walla Walla to Willamette Falls (Oregon City) occupied about 20 days, and, all things considered, was the hardest part of the entire journey—what with drifting sands, rocky cliffs, and rapid streams along the Columbia, and the gorges, torrents, and thickets of the Cascade Mountains, it seems incredible how, with our worn out and emaciated animals, we ever reached our destination." But many did, and they were well rewarded for their perseverance.

J.M. Shively, writer of one of the guidebooks about the trail, closed with the thought, "Be of good cheer—you will find a country in Oregon that will fill your desires, and repay you for all your toil."

BIBLIOGRAPHY

Coons, Frederica B. The Trail to Oregon. Portland, OR: Binfords & Mort, 1954.

Ghent, William J. The Road to Oregon. New York: Longmans, Green & Co., 1929.

Meeker, Ezra. Ox Team Days on the Oregon Trail. New York: E. Meeker, 1907.

Morgan, Dale L. Overland in 1846. Georgetown, CA: Talisman Press, 1963.

Parkman, Francis. The Oregon Trail. Boston, MA: Little, Brown & Co., 1925.

Rawitsch, Dan. MECC Oregon User Manual. Lauderdale, MN: Minnesota Educational Computer Consortium, 1977.

THE PROGRAM

Westward Ho! is a substantial revision of the Oregon Trail program written by Dan Rawitsch and Bill Heinemann in 1972–73 on the Hewlett Packard 2000 timesharing system of the Minnesota Educational Computer Consortium. The original Oregon Trail program was subsequently converted to Microsoft BASIC and appeared in Creative Computing magazine in 1977. Play of the game is similar in this new version, but the program has been structured (to some extent), simplified, and shortened by more than 300 lines.

The program consists of a main section, initialization and closing sections with five related subroutines, eight major subroutines, and six minor subroutines.

The initialization section dimensions variables, puts data in them, displays the initial scenario, and asks you for your initial purchases. At the outset, you have $420, the average amount of money that a family setting out on the Oregon Trail had in 1847. A wagon costs $70, and you can spend the rest of your money on oxen, food, ammunition, clothing, and miscellaneous supplies such as medicine, bandages, and repair parts. You can spend all of your money at the outset, or you can save some to spend at forts along the way to replenish supplies when they run low. This is a tradeoff: Supplies cost 50% more at the forts. However, if you lose supplies while fording a river or in a bandit attack, you may not have enough to continue.

Food is important to maintain the strength and health of your family. A guidebook of the time recommends for each adult 150 lbs. of flour, 25 lbs. of sugar, 25 lbs. of bacon, 15 lbs. of coffee, and smaller quantities of other staples. The average family of five (your family in the simulation) eats about as much as four adults. The above commodities in 1850 cost about 10 cents a pound in Missouri; thus an adequate food stock for your family would cost about $60 to $100. Of course, along the way you will hunt for fresh meat and, hopefully, find some edible plants and berries.

Although you are wearing some clothes, most travelers had to purchase additional clothing for the cold weather they would encounter in the mountains. In 1850, $15 would buy several warm outfits; thus an appropriate budget for clothes would be at least $50 or so for your family of five.

You will want to have plenty of ammunition for your rifle to hunt, ward off attacks by wild animals, and defend yourself against bandits and hostile Indians. A belt of bullets costs $1, and in general you can expect to use one or two belts per week on the trail.

A brief explanation of these purchases is displayed in the subroutine in Lines 490–670, and the amounts are accepted as input in the subroutine at Lines 690–900. Note the conditional (IF) statements in this subroutine that do not allow you to buy less than the minimum you need, or to spend more than you have.

The main program (Lines 250–470) iterates through the journey in two-week segments. If you have been on the trail for more than 20 weeks, the program branches to an end-game routine. Under normal circumstances, at the beginning of a two-week trip segment, the date will be printed, injuries and illnesses treated (assuming you have enough money to pay a doctor), the mileage updated, and your inventory of supplies printed.

The expected mileage over the next two weeks is then calculated in Line 390. In general, you will travel 200 miles plus some additional distance which depends upon the quality of your team of oxen. This mileage figure is an ideal, assuming nothing goes wrong. If you run into problems, mileage is subtracted from this ideal figure; the revised total is printed at the start of the next trip segment.

You are then asked whether you wish to hunt, continue on, or, if it is an even-numbered trip segment, stop at a fort. In 1847, forts and missions were spaced about 300 to 400 miles apart along the Oregon Trail. On average you will cover about 75 miles a week and thus you can expect to hit a fort about every four weeks (or every other trip segment). Note the function in Line 1010 that determines whether or not you are on an even-numbered trip segment; if the integer value of J/2 equals J/2, J is even; if not, J is odd.

If you stop at a fort (Lines 1100–1180), you have an opportunity to purchase supplies, but they cost 50% more than at the start. The running total of most items in your inventory is kept in dollars. Your supply of ammunition, however, is expressed as a number of bullets. This makes it easier to calculate ammunition consumption when you use your gun to hunt, fight, or scare off animals.

If you decide to hunt, the subroutine at Lines 1200–1290 is called. If you have fewer than 40 bullets, you do not have enough to hunt and you are given the option of stopping at a fort (if there is one on this trip segment) or continuing on. Hunting costs several days of travel (45 miles) and, of course, some ammunition.

Since there is no good way to determine how skilled a marksman you are, the program asks you to rank yourself at the start of the trip (Lines 920–980). From then on, each time you are confronted with a situation in which you must use your rifle, you will be asked to type in a word that sounds like a gunshot (pow, blam, or bang).

The faster you type the word and hit Return, the better luck you will have in hitting your target.

The shooting subroutine is found at Lines 3870–3930. When this subroutine is entered, a random shooting word is selected in Line 3880. Then a timer is started. The timer uses the real-time clock of the computer to get a starting time in seconds; this equals 60 times the current clock minutes plus the current clock seconds. You then type in the shooting word, which is compared to the requested word. If your typing was in error, you are asked to type the word again. This continues until the word is typed correctly, at which time the time in seconds is again calculated. The starting time is subtracted from the ending time, and the resulting elapsed time in seconds less your ranking as a marksman is put into variable BR. A good typist should be able to type a four-letter word in two seconds or less, while a less skilled, hunt-and-peck typist might take four or five seconds.

Control is then returned to the hunting subroutine, and ammunition consumption calculated as a function of the value of BR. The slower you shoot (the higher the value of BR), the greater the probability that you are unsuccessful in your hunting (see function in Line 1240).

The eating subroutine is called next (Lines 1310–1370). In it you are asked how well you want to eat, and your food consumption is calculated in Line 1350. If you do not have enough food to eat as well as you would like, you must choose to eat at a diminished level.

Next, a subroutine is called to determine whether or not you are attacked by bandits or Indians (Lines 1390–1780). The probability of attack is determined by the function in Line 1400. Toward the beginning of your journey, especially around 400 to 500 miles from Independence in what is now western Nebraska and Wyoming, you have the highest probability of encountering bandits and Indians. As you get into the mountains, these probabilities decrease drastically (see graph on page 36). The function within the IF … THEN statement increases the probability from 20% at 0 miles to a maximum of 50% at 500 miles and then gradually decreases the rest of the way.

If riders approach, you may choose one of four strategies: run, attack, ignore them, or circle wagons. Each strategy has a different cost in miles and supplies and also depends upon whether the riders were hostile or friendly. If you choose to attack, the program again goes to the shooting subroutine. If you are slow on the draw, you may pick up a flesh wound, which sets the injury flag and requires treatment by a doctor the next time you stop.

The longest subroutine (Lines 1800–2620) deals with hazards and special events. A random number selected in Line 1810 determines which event occurs; the program then branches to the appropriate routine to handle that event. The probability of each event is determined by the difference between successive numbers in the event array (Line 3720). For example, if a random number between 0 and 6 is selected, event 1 occurs; between 6 and 11, event 2; between 11 and 13, event 3; and so on. Thus we see that there is the highest probability that event 19 (value between 69 and 95) will occur; this event has to do with illness from not eating well.

chart

Most events are handled in a very straightforward manner: A message is printed, mileage subtracted, and supplies used. On the other hand, four of the events are more complicated: cold weather, bandit attack, wild-animal attack, and illness.

The cold-weather routine (Lines 2130–2160) checks to see if you have adequate clothing to keep warm. If not, the illness subroutine (Lines 2880–2970) is called. This routine is also called if you are not eating well enough (Lines 2560–2590).

In the illness routine, depending upon how well you have been eating, you may contract a mild, bad, or very serious illness. Mild and bad illness can be treated with your own medicine—if you have any left—whereas serious illness requires the services of a doctor (the illness flag, KS, is set) at the start of the next trip segment.

The bandits attack routine (Lines 2180–2270) is very similar to the attack by Indians routine in the previous section, except that bandits are always bad and you have no choice but to fight them.

The last major subroutine called by the main program deals with travel through the mountains (Lines 2640–2860). In the mountains, you are vulnerable to cave-ins along the trail, losing your way, and just plain slow going. In addition, you must traverse the South Pass and the Blue Mountains. The probability is set to 80% that you will get stuck in the South Pass when you first reach it, but a flag (KP) prevents you from being stuck there for the entire journey. Likewise, you have a 70% chance of getting stuck in the Blue Mountains, but you will eventually get through. Blizzards, on the other hand, can occur on every trip segment while you are in the mountains, and there is a good chance that this will happen.

If you do not have adequate food, clothing, ammunition, or medical supplies when you encounter the various hazards of the journey, chances are very high that you will die on the trail (Lines 2990–3170). If you die, a short message is displayed telling you what happened, how far you traveled, and your remaining inventory of supplies. You are then given a chance to play again (Lines 3300–3330).

It is not known today what percentage of the travelers who set out on the Oregon Trail actually reached their destination. Certainly it was fewer than 50%, and perhaps fewer than 20%. If you are among the lucky few, the program will give you a congratulatory message (Lines 3190–3280), tell you how long it took, and display your remaining supplies, if any.

It is not easy to reach Oregon. Your decisions must be well reasoned, and Lady Luck must be traveling with you. But if you don't make it, you, unlike actual families in 1847, at least, will get a chance to try again.

PROGRAM VARIABLES

A	Money spent on animals
AS	Money to question (Y or N), user input
B	Money spent on ammo, also number of bullets
BR	Response time for typing shooting word
C	Money spent for clothing
C1	Flag for insufficient clothes
D	Total days traveled
DD	Days of last month
DM	Total months traveled
DA$(n)	Date, n = 1 - 20
DR	Shooting expertise level
E	Eating quality
EP(n)	Event probability, n = 1 - 20
EV	Event counter
F	Money spent on food
GH	Riders description (0 hostile, 1 friendly)
GT	Choice of tactics when riders approach
I	Temporary iteration variable
J	Trip segment counter
KB	Flag for blizzard
KF	Flag for stop at fort
KH	Flag for injury
KM	Flag for Blue Mountains
KP	Flag for South Pass
KQ	Flag for not enough ammo to hunt
KS	Flag for illness
M	Total trip mileage
MA	Mileage through previous turn
MP	Mileage flag for South Pass
P	Amount spent at fort
R	Money for medicine and repair parts
RN	Random number for choosing events
S$(n)	Shooting words, n = 1 - 4
S1, S2	Response time temporary variables
T	Cash
X	Choice of action, temporary
X$	Temporary string variable

PROGRAM LISTINGS

Download WESTHO.BAS (tokenized BASIC format)

100 CLS : KEY OFF
110 LOCATE 10, 31 : PRINT "Westward Ho! 1847" : PRINT : PRINT
120 PRINT TAB(28) "(c) David H. Ahl, 1986" : LOCATE 23, 21
130 '
140 'Initialization
150 DIM DA$(20), EP(20), MP(15), PL$(15)
160 GOSUB 3430 : GOSUB 3530 : GOSUB 3700 : 'Put data in variables
170 PRINT "Press any key when you're ready to go" : RN = -32768!
180 WHILE LEN(INKEY$) = 0 : RN = RN + 1 : WEND
190 WHILE RN > 32767 : RN = RN - 65535! : WEND : RANDOMIZE RN : CLS
200 GOSUB 490 : 'Display the scenario
210 GOSUB 690 : 'Make initial purchases
220 GOSUB 920 : 'How good a shot are you?
230 PRINT : PRINT " Your trip is about to begin…" : PRINT : GOSUB 3830
240 '
250 'Main program
260 IF M > 2039 THEN 3190 : 'Reached the final segment?
270 J = J + 1 : 'Iterate through 2-week trip segments
280 IF J > 20 THEN 3080 : 'On the trail too long?
290 PRINT : PRINT "Monday, " DA$(J) ", 1847. You are ";
300 FOR I = 1 TO 15 : IF M > MP(I) THEN NEXT I ELSE PRINT PL$(I)
310 IF F < 6 THEN PRINT "You're low on food. Better buy some or go hunting soon."
320 IF KS< >1 AND KH< >1 THEN 370 : 'Any sickness or injuries?
330 T = T - 10 : IF T < 0 THEN 3010 ELSE PRINT "Doctor charged $10 for his services";
340 PRINT "to treat your "; : IF KS = 1 THEN PRINT "illness." ELSE PRINT "injuries."
350 KS = 0 : KH = 0 : 'Set illness and injury flags to normal
360 M = INT(M) : MA = M : 'Update cumulative mileage
370 IF MP = 1 THEN PRINT "Total mileage to date is 950." : MP = 0 : GOTO 400
380 PRINT "Total mileage to date is" INT(M + .5)
390 M = M + 200 + (A - 110) / 2.5 + 10 * RND(1) : 'Calculate how far we travel in 2 weeks
400 PRINT "Here's what you now have (no. of bullets, $ worth of other items) :"
410 GOSUB 3350 : 'Print inventory
420 GOSUB 1000 : 'Stop at fort, hunt, or push on routine
430 GOSUB 1310 : 'Eating routine
440 GOSUB 1390 : PRINT : 'Riders - attack routine
450 GOSUB 1800 : PRINT : 'Hazards - and - events routine
460 GOSUB 2640 : 'Mountains routine
470 GOTO 260 : 'End of the 2-week trip segment
480 '
490 'Subroutine to print initial scenario
500 PRINT TAB(23) "Westward Ho! 1847" : PRINT
510 PRINT " Your journey over the Oregon Trail takes place in 1847. Start."
520 PRINT "ing in Independence, Missouri, you plan to take your family of"
530 PRINT "five over 2040 tough miles to Oregon City."
540 PRINT " Having saved $420 for the trip, you bought a wagon for $70 and"

550 PRINT "now have to purchase the following items :" : PRINT
560 PRINT " * Oxen (spending more will buy you a larger and better team which"
570 PRINT " will be faster so you'll be on the trail for less time)"
580 PRINT " * Food (you'll need ample food to keep up your strength and health)"
590 PRINT " * Ammunition ($1 buys a belt of 50 bullets. You'll need ammo for"
600 PRINT " hunting and for fighting off attacks by bandits and animals)"
610 PRINT " * Clothing (you'll need warm clothes, especially when you hit the"
620 PRINT " snow and freezing weather in the mountains)"
630 PRINT " * Other supplies (includes medicine, first-aid supplies, tools, and"
640 PRINT " wagon parts for unexpected emergencies)" : PRINT
650 PRINT " You can spend all your money at the start or save some to spend"
660 PRINT "at forts along the way. However, items cost more at the forts. You"
670 PRINT "can also hunt for food if you run low." : PRINT : RETURN
680 '
690 'Subroutine to get initial purchases of player
700 PRINT : INPUT "How much do you want to pay for a team of oxen";A : A = INT(A)
710 IF A < 100 THEN PRINT "No one in town has a team that cheap." : GOTO 700
720 IF A < 151 THEN 760
730 PRINT "You choose an honest dealer who tells you that $" A "is too much for"
740 PRINT "a team of oxen. He charges you $150 and gives you $" A.150 "change."
750 A = 150
760 INPUT "How much do you want to spend on food";F : F = INT(F)
770 IF F > 13 THEN 790 ELSE PRINT "That won't even get you to the Kansas River";
780 PRINT " — better spend a bit more." : GOTO 760
790 IF A + F > 300 THEN PRINT "You won't have any for ammo and clothes." : GOTO 760
800 INPUT "How much do you want to spend on ammunition";B : B = INT(B)
810 IF B < 2 THEN PRINT "Better take a bit just for protection." : GOTO 800
820 IF A + F + B > 320 THEN PRINT "That won't leave any money for clothes." : GOTO 800
830 INPUT "How much do you want to spend on clothes";C : C = INT(C)
840 IF C > 24 THEN 860 ELSE PRINT "Your family is going to be mighty cold in";
850 PRINT " the mountains." : PRINT "Better spend a bit more." : GOTO 830
860 IF A + F + B + C > 345 THEN PRINT "That leaves nothing for medicine." : GOTO 830
870 INPUT "How much for medicine, bandages, repair parts, etc.";R
880 R = INT(R) : IF R < 5 THEN PRINT "That's not at all wise." : GOTO 870
890 IF A + F + B + C + R > 350 THEN PRINT "You don't have that much money." : GOTO 870
900 T = 350 - A - F - B - C - R : PRINT : PRINT "You now have $" T "left." : B = 50 * B : RETURN
910 '
920 'Subroutine to initialize shooting routine
930 PRINT : PRINT "Please rank your shooting (typing) ability as follows :"
940 PRINT " (1) Ace marksman (2) Good shot (3) Fair to middlin'"
950 PRINT " (4) Need more practice (5) Shaky knees"
960 INPUT "How do you rank yourself";DR
970 IF DR > 1 AND DR < 6 THEN RETURN
980 PRINT "Please enter 1, 2, 3, 4, or 5." : GOTO 960
990 '
1000 'Subroutine to stop at fort, hunt, or push on
1010 IF INT(J / 2)< >J / 2 THEN 1060 : 'Are we on an even trip segment?
1020 INPUT "Want to (1) stop at next fort, (2) hunt, or (3) push on";X
1030 IF X < 1 OR X > 3 THEN PRINT "Enter a 1, 2, or 3 please." : GOTO 1020
1040 IF X = 3 THEN RETURN ELSE ON X GOSUB 1100, 1200
1050 IF KQ = 1 THEN 1020 ELSE RETURN : 'Not enough ammo to hunt?
1060 INPUT "Would you like to (1) hunt or (2) continue on";X
1070 IF X < 1 OR X > 2 THEN PRINT "Enter a 1 or 2 please." : GOTO 1060
1080 IF X = 2 THEN RETURN ELSE GOSUB 1200 : RETURN
1090 '
1100 'Subroutine to stop at a fort
1110 IF T > 0 THEN 1130 ELSE PRINT "You sing with the folks there and get a good"
1120 PRINT "night's sleep, but you have no money to buy anything." : RETURN
1130 PRINT "What would you like to spend on each of the following;"
1140 INPUT "Food";P1 : INPUT "Ammunition";P2 : INPUT "Clothing";P3
1150 INPUT "Medicine and supplies";P4 : P = P1 + P2 + P3 + P4 : P1 = .67 * P1 : P2 = 33 * P2
1160 PRINT "The storekeeper tallies up your bill. It comes to $" P
1170 IF T >= P THEN T = T - P : F = F + P1 : B = B + P2 : C = C + .67 * P3 : R = R + .67 * P4 : RETURN
1180 PRINT "Uh, oh. That's more than you have. Better start over." GOTO 1130
1190 '
1200 'Subroutine to hunt
1210 KQ = 0 : IF B > 39 THEN 1230 : 'Enough ammo to hunt?
1220 PRINT "Tough luck. You don't have enough ammo to hunt." : KQ = 1 : RETURN
1230 M = M - 45 : GOSUB 3870 : IF BR <= 1 THEN 1270
1240 IF 100 * RND(1) < 13 * BR THEN 1290
1250 PRINT "Nice shot…right on target…good eatin' tonight!"
1260 F = F + 24 - 2 * BR : B = B - 10 - 3 * BR : RETURN
1270 PRINT "Right between the eyes…you got a big one!" : F = F + 26 + 3 * RND(1)
1280 PRINT "Full bellies tonight!" : B = B - 10 - 4 * RND(1) : RETURN
1290 PRINT "You missed completely…and your dinner got away." : RETURN
1300 '
1310 'Subroutine to eat
1320 IF F < 5 THEN 3000 : 'Not enough food?
1330 INPUT "Do you want to eat (1) poorly (2) moderately or (3) well";E
1340 IF E < 1 OR E > 3 THEN PRINT "Enter a 1, 2, or 3, please." : GOTO 1330
1350 F = F - 4 - 2.5 * E : IF F > 0 THEN RETURN : 'Eating more food than you have?
1360 IF E = 1 THEN RETURN
1370 F = F + 4 + 2.5 * E : PRINT "You don't have enough to eat that well." : GOTO 1330
1380 '
1390 'Subroutine for riders attack
1400 IF RND(1) * 10 > ((M / 100 - 4) ^ 2 + 72) / ((M / 100 - 4) ^ 2 + 12) - 1 THEN RETURN
1410 X$ = "" : GH = 0 : IF RND(1) > .2 THEN X$ = "don't " : GH = 1
1420 PRINT : PRINT "Riders ahead! They " X$ "look hostile."
1430 PRINT "You can (1) run, (2) attack, (3) ignore them, or (4) circle wagons."
1440 INPUT "What do you want to do";GT
1450 IF GT < 1 OR GT > 4 THEN PRINT "Please enter 1, 2, 3, or 4." : GOTO 1440
1460 IF RND(1) < .2 THEN GH = 1 - GH : 'Maybe they're hostile after all
1470 IF GH = 1 THEN 1680 : 'Are they friendly?
1480 ON GT GOTO 1510, 1540, 1610, 1650
1490 '
1500 'Try to run away
1510 M = M + 20 : R = R - 7 : B = B - 150 : A = A - 20 : GOTO 1730 : 'Lose stuff when you run
1520 '
1530 'Attack the riders
1540 GOSUB 3870 : B = B - BR * 40 - 80 : 'Firefight uses ammo
1550 IF BR <= 1 THEN PRINT "Nice shooting — you drove them off." : GOTO 1730
1560 IF BR <= 4 THEN PRINT "Kind of slow with your Colt .45." : GOTO 1730
1570 PRINT "Pretty slow on the draw, partner. You got a nasty flesh wound."
1580 KH = 1 : PRINT "You'll have to see the doc soon as you can." : GOTO 1730
1590 '
1600 'Ignore the riders
1610 IF RND(1) > .8 THEN PRINT "They did not attack. Whew!" : RETURN
1620 B = B - 150 : R = R - 7 : GOTO 1730
1630 '
1640 'Circle wagons
1650 GOSUB 3870 : B = B - BR * 30 - 80 : M = M - 25 : GOTO 1550
1660 '
1670 'Cost of each tactic if riders were friendly
1680 IF GT = 1 THEN M = M + 15 : A = A - 5 : GOTO 1730
1690 IF GT = 2 THEN M = M - 5 : B = B - 100 : GOTO 1730
1700 IF GT = 3 THEN 1730 ELSE M = M - 20
1710 '
1720 'Final messages about riders
1730 IF GH = 0 THEN 1750 : 'Were riders hostile?
1740 PRINT "Riders were friendly, but check for possible losses." : RETURN
1750 PRINT "Riders were hostile. Better check for losses!"
1760 IF B >= 0 THEN RETURN ELSE PRINT : GOSUB 3740 : PRINT "Oh, my gosh!";
1770 PRINT "They're coming back and you're out of ammo! Your dreams turn to"
1780 PRINT "dust as you and your family are massacred on the prairie." : GOTO 3110
1790 '
1800 'Subroutine to deal with hazards and special events
1810 RN = 100 * RND(1) : 'RN determines which event happens
1820 FOR I = 1 TO 15 : 'Iterate through possible events
1830 IF RN > EP(I) THEN NEXT I : I = 16 : 'If event happened, exit loop
1840 IF I > 8 THEN 1860
1850 ON I GOTO 1880, 1910, 1940, 1980, 2010, 2040, 2080, 2180
1860 ON I - 8 GOTO 2290, 2320, 2350, 2410, 2440, 2530, 2560, 2610
1870 '
1880 PRINT "Your wagon breaks down. It costs you time and supplies to fix it."
1890 M = M - 15 - 5 * RND(1) : R = R - 4 : RETURN
1900 '
1910 PRINT "An ox gores your leg. That slows you down for the rest of the trip."
1920 M = M - 25 : A = A - 10 : RETURN
1930 '
1940 PRINT "Bad luck…your daughter breaks her arm. You must stop and"
1950 PRINT "make a splint and sling with some of your medical supplies."
1960 M = M - 5 - 4 * RND(1) : R = R - 1 - 2 * RND(1) : RETURN
1970 '
1980 PRINT "An ox wanders off and you have to spend time looking for it."
1990 M = M - 17 : RETURN
2000 '
2010 PRINT "Your son gets lost and you spend half a day searching for him."
2020 M = M - 10 : RETURN
2030 '
2040 PRINT "Nothing but contaminated and stagnant water near the trail."
2050 PRINT "You lose time looking for a clean spring or creek."
2060 M = M - 2 - 10 * RND(1) : RETURN
2070 '
2080 IF M > 950 THEN 2130 : 'If in mountains, go to snow; otherwise rain
2090 PRINT "Heavy rains. Traveling is slow in the mud and you break your spare"
2100 PRINT "ox yoke using it to pry your wagon out of the mud. Worse yet, some"
2110 PRINT "of your ammo is damaged by the water."
2120 M = M - 5 - 10 * RND(1) : R = R - 7 : B = B - 400 : F = F - 5 : RETURN
2130 PRINT "Cold weather…Brrrrrrr!…You ";
2140 IF C < 11 + 2 * RND(1) THEN PRINT "don't "; : C1 = 1
2150 PRINT "have enough clothing to keep warm."
2160 IF C1 = 0 THEN RETURN ELSE GOSUB 2880 : RETURN
2170 '
2180 PRINT "Bandits attacking!" : GOSUB 3870
2190 B = B - 20 * BR : IF B > 0 THEN 2220 ELSE T = T / 3
2200 PRINT "You try to drive them off but you run out of bullets."
2210 PRINT "They grab as much cash as they can find." : GOTO 2230
2220 IF BR <= 1 THEN 2260 : 'Good response time?
2230 PRINT "You get shot in the leg — "; : GOSUB 3740 : KH = 1
2240 PRINT "and they grab one of your oxen." : A = A - 10 : R = R - 2
2250 PRINT "Better have a doc look at your leg…and soon!" : RETURN
2260 PRINT "That was the quickest draw outside of Dodge City."
2270 PRINT "You got at least one and drove 'em off." : RETURN
2280 '
2290 PRINT "You have a fire in your wagon. Food and supplies are damaged."
2300 M = M - 15 : F = F - 20 : B = B - 400 : R = R - 2 * 6 * RND(1) : RETURN
2310 '
2320 PRINT "You lose your way in heavy fog. Time lost regaining the trail."
2330 M = M - 10 - 5 * RND(1) : RETURN
2340 '
2350 PRINT "You come upon a rattlesnake and before you are able to get your gun"
2360 PRINT "out, it bites you." : B = B - 10 : R = R - 2 : IF R < 0 THEN 2390
2370 PRINT "Fortunately, you acted quickly, sucked out the poison, and"
2380 PRINT "treated the wound. It is painful, but you'll survive." : RETURN
2390 PRINT "You have no medical supplies left, and you die of poison." : GOTO 3060
2400 '
2410 PRINT "Your wagon gets swamped fording a river; you lose food and clothes."
2420 M = M - 20 - 20 * RND(1) : F = F - 15 : C = C - 10 : RETURN
2430 '
2440 PRINT "You're sound asleep and you hear a noise…get up to investigate."
2450 GOSUB 3740 : PRINT "It's wild animals! They attack you!" : GOSUB 3870
2460 IF B > 39 THEN 2480 ELSE PRINT "You're almost out of ammo; can't reach more."
2470 PRINT "The wolves come at you biting and clawing." : KH = 1 : GOTO 3030
2480 IF BR > 2 THEN 2500
2490 PRINT "Nice shooting, pardner…They didn't get much." : RETURN
2500 PRINT "Kind of slow on the draw. The wolves got at your food and clothes."
2510 B = B - 20 * BR : C = C - 2 * BR : F = F - 4 * BR : RETURN
2520 '
2530 PRINT "You're caught in a fierce hailstorm; ammo and supplies are damaged."
2540 M = M - 5 - 10 * RND(1) : B = B - 150 : R = R - 2 - 2 * RND(1) : RETURN
2550 '
2560 'Problems from not eating well enough?
2570 IF E = 1 THEN GOSUB 2880 : RETURN : 'If eating poorly, go to sickness routine
2580 IF E = 2 AND RND(1) > .25 THEN GOSUB 2880 : RETURN
2590 IF E = 3 AND RND(1) > .5 THEN GOSUB 2880 : RETURN
2600 '
2610 PRINT "Helpful Indians show you where to find more food."
2620 F = F + 7 : RETURN
2630 '
2640 'Subroutine to travel through mountains
2650 IF M <= 975 THEN RETURN : 'Not in mountains yet?
2660 IF 10 * RND(1) > 9 - ((M / 100 - 15) ^ 2 + 72) / ((M / 100 - 15) ^ 2 + 12) THEN 2750
2670 PRINT "You're in rugged mountain country." : IF RND(1) > .1 THEN 2700
2680 PRINT "You get lost and lose valuable time trying to find the trail."
2690 M = M - 60 : GOTO 2750
2700 IF RND(1) > .11 THEN 2730
2710 PRINT "Trail cave in damages your wagon. You lose time and supplies."
2720 M = M - 20 - 30 * RND(1) : B = B - 200 : R = R - 3 : GOTO 2750
2730 PRINT "The going is really slow; oxen are very tired." : M = M - 45 - 50 * RND(1)
2740 '
2750 'South Pass routine
2760 IF KP = 1 THEN 2790 : 'Is the South Pass clear?
2770 KP = 1 : IF RND(1) < .8 THEN 2840 : '80% chance of blizzard
2780 PRINT "You made it safely through the South Pass....no snow!"
2790 IF M < 1700 THEN 2810
2800 IF KM = 1 THEN 2810 : 'Through Blue Mts yet?
2810 KM = 1 : IF RND(1) < .7 THEN 2840 ELSE RETURN : 'Get through without mishap?
2820 MP = 1 : RETURN : 'Set South Pass flag
2830 '
2840 PRINT "Blizzard in the mountain pass. Going is slow; supplies are lost."
2850 KB = 1 : M = M - 30 - 40 * RND(1) : F = F - 12 : B = B - 200 : R = R - 5
2860 IF C < 18 + 2 * RND(1) THEN GOTO 2880 ELSE RETURN : 'Enough clothes?
2870 '
2880 'Subroutine to deal with illness
2890 IF 100 * RND(1) < 10 + 35 * (E - 1) THEN 2930
2900 IF 100 * RND(1) < 100 - (40 / 4 ^ (E - 1)) THEN 2950
2910 PRINT "Serious illness in the family. You'll have to stop and see a doctor"
2920 PRINT "soon. For now, your medicine will work." : R = R - 5 : KS = 1 : GOTO 2970
2930 PRINT "Mild illness. Your own medicine will cure it."
2940 M = M - 5 : R = R - 1 : GOTO 2970
2950 PRINT "The whole family is sick. Your medicine will probably work okay."
2960 M = M . 5 : R = R . 2.5
2970 IF R > 0 THEN RETURN ELSE PRINT " …if only you had enough." : GOTO 3020
2980 '
2990 'Many ways to die on the trail
3000 PRINT "You run out of food and starve to death." : GOTO 3110
3010 T = 0 : PRINT "You need a doctor badly, but can't afford one." : GOTO 3030
3020 PRINT "You have run out of all medical supplies."
3030 PRINT : PRINT "The wilderness is unforgiving and you die of ";
3040 IF KH = 1 THEN PRINT "your injuries." : GOTO 3060
3050 PRINT "pneumonia."
3060 PRINT "Your family tries to push on, but finds the going too rough";
3070 PRINT " without you." : GOTO 3110
3080 PRINT "Your oxen are worn out and can't go another step. You try pushing"
3090 PRINT "ahead on foot, but it is snowing heavily and everyone is exhausted."
3100 PRINT : GOSUB 3740 : PRINT "You stumble and can't get up...."
3110 PRINT : GOSUB 3740 : PRINT "Some travelers find the bodies of you and your"
3120 PRINT "family the following spring. They give you a decent"
3130 PRINT "burial and notify your next of kin." : PRINT
3140 D = INT(14 * (J + ML)) : DM = INT(D / 30.5) : DD = INT(D - 30.5 * DM)
3150 PRINT "At the time of your unfortunate demise, you had been on the trail"
3160 PRINT "for" DM "months and" DD "days and had covered" INT(M + 70) " miles."
3170 PRINT " You had a few supplies left :" : GOSUB 3350 : PRINT : GOTO 3310
3180 '
3190 'Made it!
3200 ML = (2040 - MA) / (M - MA) : F = F + (1 - ML) * (8 + 5 * E) : GOSUB 3830
3210 PRINT "You finally arrived at Oregon City after 2040 long miles."
3220 PRINT "You're exhausted and haggard, but you made it! A real pioneer!"
3230 D = INT(14 * (J + ML)) : DM = INT(D / 30.5) : DD = INT(D - 30.5 * DM)
3240 PRINT "You've been on the trail for" DM "months and" DD "days."
3250 PRINT "You have few supplies remaining :" : GOSUB 3350
3260 PRINT : PRINT "President James A. Polk sends you his heartiest"
3270 PRINT "congratulations and wishes you a prosperous life in your new home."
3280 GOTO 3310
3290 '
3300 'Play - again query
3310 PRINT : INPUT "Would you like to play again";A$ : GOSUB 3770
3320 IF A = 0 THEN PRINT "Okay, good luck!" : GOSUB 3740 : RUN
3330 PRINT "Okay. So long for now." : GOSUB 3740 : KEY ON : CLS : END
3340 '
3350 'Subroutine to print inventory
3360 PRINT "Cash", "Food", "Ammo", "Clothes", "Medicine, parts, etc."
3370 IF F < 0 THEN F = 0 ELSE F = INT(F)
3380 IF B < 0 THEN B = 0 ELSE B = INT(B)
3390 IF C < 0 THEN C = 0 ELSE C = INT(C)
3400 IF R < 0 THEN R = 0 ELSE R = INT(R)
3410 PRINT T, F, B, C, R : PRINT : RETURN
3420 '
3430 'Subroutine to read shooting words and dates
3440 FOR I = 1 TO 8 : READ S$(I) : NEXT I
3450 DATA "POW", "BANG", "BLAM", "WHOP", "pow", "bang", "blam", "whop"
3460 FOR I = 1 TO 20 : READ DA$(I) : NEXT I : RETURN
3470 DATA "March 29", "April 12", "April 26", "May 10", "May 24", "June 7", "June 21"
3480 DATA "July 5", "July 19", "August 2", "August 16", "August 31", "September 13"
3490 DATA "September 27", "October 11", "October 25", "November 8", "November 22"
3500 DATA "December 6", "December 20"
3510 '
3520 'Subroutine to read distances and place names
3530 FOR I = 1 TO 15 : READ MP(I), PL$(I) : NEXT I : RETURN
3540 DATA 5, "on the high prairie."
3550 DATA 200, "near Independence Crossing on the Big Blue River."
3560 DATA 350, "following the Platte River."
3570 DATA 450, "near Fort Kearney."
3580 DATA 600, "following the North Platte River."
3590 DATA 750, "within sight of Chimney Rock."
3600 DATA 850, "near Fort Laramie."
3610 DATA 1000, "close upon Independence Rock."
3620 DATA 1050, "in the Big Horn Mountains."
3630 DATA 1150, "following the Green River."
3640 DATA 1250, "not too far from Fort Hall."
3650 DATA 1400, "following the Snake River."
3660 DATA 1550, "not far from Fort Boise."
3670 DATA 1850, "in the Blue Mountains."
3680 DATA 2040, "following the Columbia River."
3690 '
3700 'Read probabilities of events
3710 FOR I = 1 TO 15 : READ EP(I) : NEXT : RETURN
3720 DATA 6, 11, 13, 15, 17, 22, 32, 35, 37, 42, 44, 54, 64, 69, 95
3730 '
3740 'Subroutine to create a short pause
3750 FOR I = 1 TO 1000 : NEXT I : RETURN
3760 '
3770 'Subroutine to read a yes/no answer
3780 X$ = LEFT$(A$, 1) : IF X$ = "Y" OR X$ = "y" THEN A = 0 : RETURN
3790 IF X$ = "N" OR X$ = "n" THEN A = 1 : RETURN
3800 PRINT "Don't understand your answer of " A$ "."
3810 INPUT "Please enter Y for 'yes' or N for 'no.' Which is it";A$ : GOTO 3780
3820 '
3830 'Subroutine to play a fanfare
3840 FQ = 220 : SOUND FQ, 3 : SOUND FQ * 1.333, 3 : SOUND FQ * 1.584, 3
3850 SOUND FQ * 1.885, 5 : SOUND FQ * 1.584, 2 : SOUND FQ * 1.885, 10 : RETURN
3860 '
3870 'Subroutine to shoot gun
3880 RN = 1 + INT(4 * RND(1)) : 'Pick a random shooting word
3890 S1 = 60 * VAL(MID$(TIME$, 4, 2)) + VAL(RIGHT$(TIME$, 2)) : 'Start timer
3900 PRINT "Type " S$(RN); : INPUT X$
3910 IF S$(RN)< >X$ AND S$(RN + 4)< >X$ THEN PRINT "Nope. Try again. "; : GOTO 3900
3920 S2 = 60 * VAL(MID$(TIME$, 4, 2)) + VAL(RIGHT$(TIME$, 2)) : 'End timer
3930 BR = S2 - S1 - DR - 1 : RETURN

Return to Table of Contents | Previous Section | Next Section