Skip Navigation LinksDavidAhlsBasicComputerAdventuresChapter1MarcoPolo

 

THE GAME

In Marco Polo you are the leader of a group of merchants leaving on a business trip from Venice, Italy to Shang-tu, China. After sailing to Armenia at the east end of the Mediterranean Sea, you set out by camel on a 6000-mile trek across Asia to the court of the Great Kublai Khan in Shang-tu near the Pacific Ocean. To get your party safely to Shang-tu, you must know the rules of the Silk Road; the more important ones are noted here:

·         At the beginning of the game, you are asked to rank your shooting ability. Since the program cannot really test your prowess with a crossbow, shooting ability is measured by how fast you can type a random shooting sound. A rating of I describes a reasonably good typist, while 4 should be reserved for those who use no more than two fingers. The game will be more fun if you rank yourself 1 or 2.

·         Approximately every two months during your trip, you come upon a village that has a market where you may replenish your provisions. As prices vary widely from place to place, it is best to maintain a modest stock of goods so you are not forced to buy at high prices.

·         Deciding how well to eat during each two-month period involves some tradeoffs. Eating better allows you to walk longer and cover more ground; you are also less susceptible to disease. However, food costs money (jewels), and your camels have a limited carrying capacity. If you run out of food on the trip, you can always eat a camel (assuming you have one left).

·         Balm and unguents are used for treating wounds. If you run out, you face a much higher risk of getting a fatal infection.

·         As a merchant, you are not a skilled hunter. However, occasionally you may be offered an opportunity to hunt. Count it a blessing if you get food in this way, but remember that your crossbow is the only weapon you have with which to drive off bandits. Hence, you should always keep a small supply of arrows in reserve.

Many hazards and surprises await you along the road to Shang-tu, so stay alert and keep your wits about you. The Polos completed the land journey in approximately 36 months. In the game, this means arriving at Shang-tu in March 1274. If you make only the best decisions and encounter no delays, it is possible to complete the computer journey in 24 months, but a more realistic goal is to complete the trip in the same 36 months it took the Polos. Can you do it?

  

THE STORY

Today, a traveler flying into Venice, Italy lands at Marco Polo Airport. At the Doge's Palace in Piazza San Marco, one can view magnificent tapestries, porcelain, and jade carvings from China—the rewards of being at the western terminus of the "Silk Road" to the Far East, a route first traveled by Marco Polo in 1271.

Yet upon his return from his now famous journey to the Far East, Marco Polo's tales of strange people and far off places met with disbelief. For hundreds of years, to call something a "Marco Polo" was to label it a tall tale or even an outright falsehood. Even after they were published, his stories were thought to be largely fictional accounts. Indeed, there is little to indicate that a single one of Marco Polo's contemporaries believed much of his story. And, on his deathbed his friends pleaded with him, for the peace of his soul, to retract some of the incredible statements made in his book. Instead, he refused and is said to have replied, "I have not told half of what I saw."

As his accounts were set down many years before the development of printing, the volumes were copied by hand, and variations in wording and numerous embellishments crept into the work.

In all, more than 100 different manuscripts were produced—some in Italian, some in Latin, and some in French. The earliest printed edition is dated 1559, and an English translation did not appear until 1818.

Not until the late 1800's did scholars attempt to piece together a truly original edition, as reports from later travelers and explorers began to indicate that the majority of Marco Polo's accounts were accurate and unexaggerated. Unfortunately, not one edition treating the entire work as a travel narrative has ever appeared, nor has the story ever been translated into contemporary English. Thus, to this day, for most Americans, the myths and the realities remain intertwined.

Marco Polo was born in Venice in 1254, son of Niccolò, one of the great merchants and noblemen of the city. An uncle, Maffeo, worked directly with his father, and together the team of brothers traveled to many distant lands.

Niccolò Polo and his brother Maffeo made their first great journey east in 1260. They visited their third brother in Constantinople and from there set out on a trading trip along the Tigris River to the great city of Bokhara in the Persian Empire (today, the city of Bukhara is in south central Russia). There they met an ambassador of the Great Khan (Supreme Lord), Kublai, son of the conquering Gengis Khan, who lived at the eastern extremity of the continent in Shang-tu (today, the inconsequential town of Shangdu about 200 miles northwest of Beijing, China).

Kublai Khan had never seen a native of Italy and requested an audience with the two brothers. Convinced that they had no choice in the matter, the brothers made an incredible year-long journey across Tibet and Mongolia to the eastern-most part of the Empire of the Great Khan (Cathay, or China).

As the first Europeans to set foot in the court of the Great Khan, they were entertained with feasts and plied with extravagant gifts. Kublai Khan questioned the brothers at length and became convinced that his Empire could benefit greatly from European learning (although, it should be mentioned, the Khanates were in many respects better governed and more civilized than much of Europe at that time). Consequently, Kublai Khan asked the brothers to relay to the Pope a request for 100 men of learning who could be stationed throughout his extensive empire to disseminate the best of Western culture.

 

Although furnished with escorts, provisions, and everything necessary for their return journey, the Polos remained subject to the hazards of travel—extreme cold, snow, floods, deserts, and diseases—and it was three years before they reached the seaport of Laissus in Armenia and set sail for Venice.

Back in Italy, they found that Pope Clement IV had just died.

Two years passed before they could relay the Khan's request to the new Pope, Gregory X, who, instead of furnishing 100 men of learning, dispatched two friars of the Order of Preachers to accompany the Polos on their return trip. Having heard accounts of warring tribes along the route, the friars feared for their lives and, after just a few days' journey, turned back. This was not the only time this happened; as H.G. Wells in The Outline of History reports, "This abortive mission was only one of a number of attempts to communicate, and always they were feeble and feeble-spirited attempts, with nothing of the conquering fire of the earlier Christian missions."

Manuel Komroff in The Travels of Marco Polo goes further. "A hundred cultured men living in China at this time and returning home at various periods would have changed the course of human events. Europe was just awakening from a long, barbaric sleep, while China was already cultured in many fields. Marco Polo came to exchange merchandise, while 100 cultured men would have returned to exchange ideas. It is the traffic of ideas that is of greater profit to humanity."

On the second journey, the two Polo brothers decided to bring Niccolò's 16-year-old son, Marco, along. Marco was, first and foremost, a merchant, and much of his journals discuss trade, finance, risk, and profit. He also had an eye for nature and described many varieties of birds, trees, and other plants and animals. But beyond the realms of commerce and nature he was largely without vision and simply reported what he saw in a matter-of-fact style with little analysis of the underlying whys and wherefores.

The second journey of the Polos resembled the first—the main difference being the eyewitness account provided by young Marco's notes. As mentioned, these notes are not in the form of a travel narrative, but rather a description of things and places. Moreover, in setting down his account, Marco rearranged his notes to tell of a country (or city) and its immediate neighbors, thus making it difficult to define the actual route taken.

However, by comparing Marco's accounts with other historical information, excavations, and legends, historians have accurately reconstructed the route of this second legendary journey. Rather than starting in Constantinople, the second journey started in the port of Laissus in Lower Armenia (today, near Adana in south central Turkey). From there the travelers headed northeast along the Euphrates River and then turned southward along the Tigris River to Babylon (Baghdad) and continued on south to the Persian Gulf.

From there they continued south to Hormuz, where the caravan turned almost due north to cross the Dasht-e Lut and Dasht-e Kavir desert regions of Persia to Herat (then in the Khanate of Persia, today in Afghanistan). Next they followed a difficult trek across the mountains of Afghanistan, skirting north of Kashmir to Kashgir, the capital city of the Khanate of Chaghadai (today, Kashi, China).

Continuing in the mountains, the Polos then descended and crossed the narrowest part of the desert of Lop, which took a month. As Marco described, "During these days the journey is invariably over either sandy plains or barren mountains. In this tract, neither beasts or birds are met with, because there is no kind of food for them." He also described "excessive troubles and dangers that must unavoidably be encountered" such as mirages, malevolent spirits, eerie noises, and the danger of losing the path. This is one of the only places in which Marco Polo discussed the dangers of the route, so it must be supposed that they made a great impression on him. To this day this bone-strewn and barren waste has been crossed by very few travelers, and it remains one of the most desolate regions of the world.

The caravan then continued into the province of Tanguth in the Khanate of the Great Khan along what is today the border of Tibet (Xizang) and Sinkiang (Xinjiang). They continued generally eastward, veering off to the north before reaching Xian, the legendary eastern terminus of the Silk Road. The northern route followed the Yellow River for 550 miles, but unfortunately it also obliged the Polos to cross a portion of the Gobi Desert to reach Shang-tu. Marco did not dwell as long on the Gobi Desert as he did on the Lop, although he did mention that one must "lay in provisions for at least 40 days because that space of time is employed in traversing the desert, where there is not any appearance of a dwelling, nor are there any inhabitants."

Finally, after traveling for three and a half years, the Polos arrived in the court of the Great Khan and bowed low before the emperor. In place of 100 learned men, they had with them a few letters from the new Pope, a little sacred oil from the Holy Land, and a few items to trade. By this time Marco was 21, the year, 1275.

Kublai Khan took a liking to Marco Polo, who at once applied himself to learning the written and spoken languages of the country. The Emperor, seeing that the young man was both clever and tactful, began to send him on public missions to other parts of the empire.

Marco Polo had observed that the Khan was often bored by the dry reports of his administrators but enjoyed hearing about the manners and oddities of people in other regions. Thus Marco started to keep small notebooks of strange facts that were likely to amuse and interest Kublai Khan. It was from these notebooks that Marco eventually transcribed the account of his travels back in Italy.

The Polos prospered in the court of Kublai Khan, and the Khan became very attached to them. Although they wanted to return to Italy, the Khan apparently felt that in a small way they were serving in place of the 100 men he had requested and declined to let them go.

However, 20 years later the Khan of Persia lost his favorite wife and asked Kublai Khan to send him another from the same Mongol tribe from which she had come. The Polos, who were expert navigators, proposed to the Khan that they be allowed to pilot the ships that would carry the party to Persia. Reluctantly, the Khan consented.

The Polos exchanged all their acquired possessions for jewels and set sail on a long and dangerous two-year voyage through the South China Sea and the Indian Ocean to Persia.

A year later, after having left the spectacular court of Kublai Khan, Niccolò, Maffeo, and Marco Polo arrived in their old home, Venice. Their clothes were tattered and foreign, their faces reflected the ravages of travel, and they had practically forgotten their native tongue. They had long been thought dead, and the distant relatives occupying their house refused to admit them after their absence of 26 years.

They finally succeeded in convincing their kindred that they were not imposters, and a great feast was arranged. All their old friends and relatives were invited. The Polos dressed in new velvet and damask garments for the meal, but when the table had been cleared and all the servants asked to leave, Marco Polo produced the coarse, shabby costumes they had worn on their arrival. Then, taking sharp knives, they ripped the seams and let fall to the table quantities of rubies, sapphires, diamonds, pearls, and other jewels. The guests were amazed and dumbfounded, the story spread, and the Polos became the most illustrious merchants of Venice.

Because the Polos were merchants, they immediately set themselves up in business and again began to trade. At the time, there were fierce rivalries among the great Italian merchant cities of Venice, Pisa, and Genoa. These rivalries had reached the point of open warfare, and most merchant families maintained one or more war galleys to protect their harbors and trading ships from both pirates and truculent rivals.

In a major battle, the Venetian and Genoese fleets met on September 7, 1298, just three years after the Polos' return from the Far East. In the battle, the Genoese captured the entire Venetian fleet and took 7000 Venetians, including Marco Polo, prisoner. Most were released in exchange for ransom, but the Genoese refused to release Marco Polo.

Thus, in a Genoese jail, Marco Polo dictated the notes of his travels to a fellow prisoner, Rusticien, a scribe from Pisa, and they were set down on parchment. Within a year, the merchant war between Venice and Genoa was over, Marco Polo was released, and the world got its first, disbelieving glimpse of the strange and fascinating land of Asia.

BIBLIOGRAPHY

Fairbank, J. K., Reischauer, E. O., and Craig, A. M. East Asia: Tradition and Transformation.Boston: Houghton Mifflin, 1973.

Komroff, Manuel. The Travels of Marco Polo.New York: The Modern Library, 1953.

Wells, H. G. The Outline of History: A Plain History of Life and Mankind.Boston: Doubleday, 1971.

 

 

THE PROGRAM IN MICROSOFT SMALL BASIC

The Marco Polo program consists of a very short main program that simply calls a series of ten major subroutines. Ten shorter subroutines perform frequently used operations such as checking for a yes/no answer or centering a printed line. The program uses the same framework as the Westward Ho! program which includes extensive program notes; hence these notes describe only those sections that are unique. Both the subroutine to deal with the purchase of initial supplies (Sub720) and the one to deal with bartering for supplies along the way (Sub1190) require the player to specify quantities of six items. These quantities must be in a range, the lower limit of which is usually zero and the upper limit of which is defined by the number of jewels the player has. Hence, before each ReadNumber statement, the upper limit is set:

A2 = Math.Floor(JL / RN)

 

in which A2 is the upper limit, JL is the number of jewels, and RN is the cost of the item. The cost is a random function which varies over a small range. After setting the limit, a ReadNumber statement gets the answer, following which a subroutine (Sub3790), which checks to see if the answer is within the acceptable range, is called. If not, a message saying, "That is too few" or "That is too many," is printed and the input request is stated again.

Consider the expression in LN1580:

FR = Math.Floor(.5 + 10 * (F - FE)) / 10

 

The purpose of this expression is to calculate a fractional value (to 1/10) of the food reserve (FR), which is food (F) less food eaten (FE). This function is necessary because the computer may not calculate fractional values absolutely correctly (2/5 may come out 0.40000001, for example) and we do not want to print these extraneous digits or, worse yet, compound the error as the program proceeds. Because the integer (Math.Floor) function actually truncates the decimal places, it is necessary to add 0.5 to ten times the number to retain the correct decimal value. Try calculating the value of FR with and without the 0.5 for values of F–FE equal to 3.299999 and 3.300001.

Another expression frequently used in the program is found at Line 2160:

IF FC = 1 THEN

XD = ""

ELSE

XD = "S"

ENDIF

 

This is used when printing the reference to an item, in this case sacks of food that could have a value of zero, one, or more. When printing, we want the singular or plural form of the item to correspond to the numeric value, i.e., "I sack" and "2 sacks." Thus, the WriteLine statement uses the string XD as follows:

TextWindow.WriteLine("You'll have to sell " +FC+ " sack"+ XD +" of food or skin"+ XD+ " of oil.")

 

Notice the spacing. A string (XD) has no automatic spaces and because we want a space following the word "sack" or "sacks," we leave a space inside the quotes following XD.

Look at the method of reading the probabilities of events occurring in this program (Sub3560).  The cumulative value of the events is stored into the array EPArray. EPArray [1] = 6, EPArray [2] = 10, EPArray[3] = 14, and so on.  The final value is EPT.

The function in Sub1940 determines which event occurs:

RN = Math.Floor(EPT * Math.GetRandomNumber(999)/1000)

 

This function selects a value between 1 and EPT. If RN is between 1 and 6, event 1 occurs; between 6 and 10, event 2; between 10 and 14, event 3; and so on.

The shooting subroutines in Marco Polo (Sub3620) and Westward Ho! are very similar. First, a random shooting word (SPLAT, TWACK, etc.) is selected which you are directed to type. Then, the current time (in seconds) is read from the real-time clock of the computer; this is the starting time S1. A Read statement in LN3650 accepts your typed word which is then compared with the requested word. If the two words match, the ending time is read from the real-time clock, the starting time subtracted from it, and the resulting elapsed time is used to calculate your ranking as a marksman.

If the word you entered did not match the requested word (the comparison is done in uppercase), the routine then checks to see whether you might have typed the word in lowercase letters. The code after the Read statement converts the letters of the requested word. If there is still no match, you are told, "That's not it. Try again."

At the beginning of the program when you were asked to rank your shooting ability (Sub600), the number that you input (HX) effectively becomes the number of seconds you have to type the requested shooting word in order to be ranked as an excellent marksman. Hence, if you claimed to be able to "hit a charging boar at 300 paces," in order to hit a bandit or animal dead center, you will have to type the correct word in one second or less. Actually, because of the way the real-time clock works, the allowable time may be as much as 1.99 seconds. Of course, you can "cheat" and rank yourself as a poor marksman (which will give you more time to type the correct word), but doing so makes the game less challenging and fun.

Many of the shorter subroutines are explained in the program notes in the next three chapters. Be sure to read them if you are having trouble understanding how anything works in this program.

PROGRAM VARIABLES

A              Answer to input query, numeric

AD             Answer to input query, string

A1, A2         Upper and lower limit to input answer

B              Beasts (camels)

BA             Beast quality

BL             Beast load capacity

BSK            Beast sickness indicator

C              Clothes (changes)

CZ             No clothes indicator

D              Distance (miles per trip segment)

DT             Distance, total

DZ             Desert indicator

EPArray[n]     Event probabilities (n = 1, 14)

F              Food (sacks)

FArray[n]      Food, names of animals for hunting

FC             Food carrying capacity of beast

FE             Food eaten on current trip segment

FP             Food eaten on previous trip segment

FQ             Food quality on current and previous trip segment

FR             Food reserve

HX             Hunting expertise level

I              Iteration variable

J              Trip segments (2-month periods)

K              Iteration variable

JL             Jewels

L              Oil (skins)

M              Medicines (bottles of balm)

MO             Month

MOD[n]         Month name (n = -1, 6)

PFD            Person food indicator

PSK            Person sickness indicator

PSKT           Person sickness total

PWD            Person wound indicator

PWDT           Person wounds total

R              Rate of speed

RN             Random number variable

SArray[n]      Shooting words (n = 1, 4)

S1, S2         Shooting timer start and stop

SR             Shooting response

W              Weapons (crossbow arrows)

XD             Temporary string variable

XAD            Temporary string variable

YR             Year

 

PROGRAM LISTINGS

' The Journey of Marco Polo, 1271

' Adapted with permission from David Ahls BASIC Computer Adventures, published by Microsoft Press, 1986.

' Microsoft Small Basic Version ©PHILIP CONROD,  2010

' Find more Small Basic Games at http://www.computerscienceforkids.com 

'

TextWindow.CursorTop = 10

XD = "The Journey of Marco Polo, 1271"

Sub3760()

TextWindow.CursorTop = 13

XD = "(c) by David H. Ahl, 1986"

Sub3760()

TextWindow.CursorTop = 23

Sub3720()

TextWindow.Clear()

JL = 300

C = 2

W = 30

M = 5

FP = 5

BSK = 99

DT = 0

'Initial quantities of stuff

Sub360()

Sub3560()

'Display the scenario

 

TextWindow.WriteLine("")

Sub720()

'Purchase initial supplies

Sub600()

'Input hunting skill level

XD = "Press Enter to begin your trek!"

Sub3760()

JJJ = TextWindow.Read()

TextWindow.WriteLine("")

'

'Main program

LN220:

J = J + 1

Sub3510()

'Next two-month segment

DT = DT + D

If DT > 6000 Then

  Goto LN3360 'Reached end of trip?

EndIf

D = 40 + BA * 20 + Math.Floor(100 * Math.GetRandomNumber(999)/1000)

TextWindow.WriteLine("You have traveled "+ DT+ " miles.")

TextWindow.WriteLine("Here is what you now have: ")

Sub3200()

Sub910()

'Check for no jewels or clothes

Sub1020()

'Check for sickness

If BSK = J Then

BSK = 99

BL = B

BA = BA + 1 'Camel recover yet?

EndIf

If J > 1 AND JL > 1 Then

  Sub1190() 'Barter for supplies

EndIf

If C = 0 Then

  Sub1400() 'No clothes?

EndIf

Sub1500()

'Eating routine

If DZ = 0 AND Math.GetRandomNumber(999)/1000 < .18 Then

Sub3020() '18% chance to hunt for food

EndIf

TextWindow.WriteLine("")

Sub1780()

'Desert sections

If DZ = 0 Then

  Sub1940() 'Event happens

EndIf

Sub3110()

Goto LN220

'

Sub Sub360

'Subroutine to TextWindow.WriteLine( initial scenario

XD = "The Journey of Marco Polo-1271"

Sub3760()

TextWindow.WriteLine("")

TextWindow.WriteLine(" Starting from Venice in 1271 you travel by sailing ship to the")

TextWindow.WriteLine("port of Armenia. Upon arrival, you prepare for a 6000-mile trek to")

TextWindow.WriteLine("the court of the Great Kublai Khan in Shang-tu, Cathay. Having set")

TextWindow.WriteLine("aside " +JL+ " precious jewels to finance your planned 3-year trip, you")

TextWindow.WriteLine("must barter for the following supplies in Armenia:")

TextWindow.WriteLine(" * Camels (Sturdier animals will cost more. You will probably")

TextWindow.WriteLine(" want 8 to 10 camels to carry your many supplies.")

TextWindow.WriteLine(" * Food (You must barter for food as you travel along. However,")

TextWindow.WriteLine(" prices tend to be lower in port cities, so you should pack")

TextWindow.WriteLine(" in a good supply at the start.")

TextWindow.WriteLine(" * Oil for lamps and cooking (Over much of the trip, you will be")

TextWindow.WriteLine(" able to use wood to build fires. However, in the Persian,")

TextWindow.WriteLine(" Lop, and Gobi deserts you will need oil.)")

TextWindow.WriteLine("")

TextWindow.WriteLine(" From Venice you have also packed clothing, weapons (crossbows),")

TextWindow.WriteLine("and medicines (balms and unguents); however, your provisions will be")

TextWindow.WriteLine("depleted as you go along and you must replenish them. The selection")

TextWindow.WriteLine("and price of supplies is quite different in various regions, so you")

TextWindow.WriteLine("must barter wisely. As a merchant, you are not skilled in fishing")

TextWindow.WriteLine("or hunting, although occasionally you might be able to try to get")

TextWindow.WriteLine("some food in this way.")

Sub3720()

TextWindow.Clear()

EndSub

'

Sub Sub600

'Subroutine to initialize hunting skill level

SArray[1] = "SPLAT"

SArray[2] = "SPRONG"

SArray[3] = "TWACK"

SArray[4] = "ZUNK"

FArray[1] = "wild boar"

FArray[2] = "big stag"

FArray[3] = "black bear"

TextWindow.WriteLine("")

TextWindow.WriteLine("Before you begin your journey, please rank your skill with")

TextWindow.WriteLine("the crossbow on the following scale:")

TextWindow.WriteLine(" (1) Can hit a charging boar at 300 paces")

TextWindow.WriteLine(" (2) Can hit a deer at 50 paces")

TextWindow.WriteLine(" (3) Can hit a sleeping woodchuck at 5 paces")

TextWindow.WriteLine(" (4) Occasionally hit own foot when loading")

LN680:

TextWindow.Write("How do you rank yourself? ")

HX = TextWindow.ReadNumber()

If HX > 0 AND HX < 5 Then

TextWindow.WriteLine("")

Goto LN719

EndIf

TextWindow.WriteLine("Please enter 1, 2, 3, or 4")

Goto LN680

LN719:

EndSub

'

Sub Sub720

'Subroutine to get initial supplies

TextWindow.WriteLine(" After three months at sea, you have arrived at the seaport of")

TextWindow.WriteLine("Laiassus, Armenia. There are many merchants in the port city and")

TextWindow.WriteLine("you can easily get the supplies you need. Several traders offer you")

A1 = 17

A2 = 24

TextWindow.WriteLine("camels at prices between " +A1 +" and " +A2+ " jewels each.")

TextWindow.Write("How much do you want to pay for a camel? ")

A = TextWindow.ReadNumber() ..............

 

 

< CLICK ON THE BOOK ICON BELOW TO PURCHASE THE REST OF THE MARCO POLO  SMALL BASIC SOURCE CODE>

 

 

Adapted with permission from David Ahl's BASIC Computer Adventures, published by Microsoft Press, 1986.

Microsoft Small Basic Edition  © Philip Conrod, 2010.  All Rights Reserved