by Martin Mathis

A nostalgic AmigaBasic program published 1987 by COMPUTE! BOOKS in

Compute!'s First Book Of Amiga, ISBN 0-87455-090-4

"COMPUTE!'s First Book Of Amiga" (ISBN 0-87455-090-4)


In 1986 during summer break, a mere 21 and aspiring to become an electrical engineer (I would later flunk with some of the worst grades they've ever seen), I wrote an AmigaBasic program for my trusty Amiga 1000. I called it "Pioneer", inspired by a stay in the USA a year prior and the classic game "Oregon Trail", and since it was the height of computer magazines publishing BASIC listings I submitted it to COMPUTE! for consideration (I think my parents thought I was nuts and that one couldn't do that). It was a few weeks later that an envelope was in the mail: In it a contract from COMPUTE! offering $300 for the publication of my game - bingo! Later I got another letter saying they want to use the game in the upcoming book "Compute!'s First Book Of Amiga" and that I would get $0.02 per copy sold and a complimentary copy (eventually it sold like 2000 copies but I had to remind them of sending me the free copy). The rest is history and it is time to dig it up again for no particular reason other than nostalgia.

Royalty Statement

Initially all I wanted to do was draw a map of the United States. I wrote a BASIC program that allowed me to draw lines and dump the co-ordinates to a file (hey, those were the days where I primarily programmed on my home computer! No surfing the Net, playing games (well, ok, a few) and using pre-made mega-apps). I ran down to the print shop to have a US map scaled to screen size onto transparent plastic foil. I taped it to the monitor and drew the US and the state outlines.
Later I came up with the game idea based on a program called "Oregon Trail" that I had seen years ago on a TRS-80. I wanted to be able to travel across the USA like the pioneers did. I decided the game should be driven by geographical questions which I could easily make up with information from my Rand McNally road atlas. I decided on two different concepts that both required to answer questions correctly: having to make it east to west for single play and conquering the country by accumulating the most states for multiple players. The code was messy but it worked and if you notice I have hidden Jaclyn Smith's name in there :)

Below are the instructions as printed in the book (images I added for this page) and the program listing as submitted (they omitted some of the comments in print). If you have an Amiga 1000 or 2000 and a copy of Kickstart 1.1 you can still give it a spin (there was partial incompatibility with Kickstart 1.2)..


Pioneer by Martin Mathis

Pioneer Title Screen

A one- to four-player game, "Pioneer" tests your geography skills. Includes a medium-resolution map of the United States, speech, and mouse control. Requires 512K memory.

"Pioneer" is an educational geography game. The program uses medium-resolution graphics (for a map of the United States), speech and windows, and part of the game is mouse controlled. There are several ways to play Pioneer depending on the number of players, and it includes an Atlas option for practice or information.

The game is easy to play: Simply answer the questions about the states. In addition to testing your knowledge of geographical facts, you'll learn how to spell names like Tallahassee or Pennsylvania.

Typing In and Starting Pioneer

Pioneer is written in Amiga BASIC. It uses DATA statements for the geographical information, and uses the x and y co-ordinates of the lines and points to draw the map. Be careful typing these statements. One missing or misplaced DATA statement can cause the program not to run or, even worse, cause the program to be confused about which questions go with which answers.

After you've finished typing, be sure to save a copy. Before running the program set the screen to 80 columns by clicking on the Preferences icon and setting the proper width. Then type RUN or select Start from the Run menu and turn up the volume. It takes some time for initialization.

Any system request windows will be behind the Pioneer screen. Right after starting Pioneer, put the Workbench disk in the drive so the speech file can be loaded.

Using the Atlas Option

Selecting F1 in the main menu takes you to the atlas mode. You'll see a prompt and the map. At the prompt you can enter one of the following:

  • The name of a state or its mail code.
  • The name of the capital or the largest city of a state.
  • A number from 1 to 50 (to look for the state by its size rank).

Or you can select a state by pressing the mouse button at the approximate center of a state. In all of the above cases, the chosen state will be painted red on the map, and an information window about it will appear, displaying the state's capital, largest city, area (and rank in brackets), and its percentage of the total United States area. Click the mouse button or press the space bar to close the window. Hit ESC to exit the atlas mode.

The program will protest if you try to choose the ocean, a borderline, text, or if you type in an invalid city name.

Sometimes the program doesn't recognize a state if you click the mouse too close to the border. Imagine a rectangle centered within the state's borders. You can select the state with your mouse only if you click inside this rectangle. For that reason, for example, you must place the mouse pointer in the eastern part of Michigan and the western half of California to choose those states. Just practice a bit to get the idea.

Playing Alone

Single Game Screen Shot

If you select the single-player option by pressing F2 from the main menu, you'll have to decide on the difficulty level. Levels 1, 2, and 3 present the easiest questions, but level 3 allows fewer wrong answers. Levels 4, 5 and 6 have more difficult questions, and levels 7, 8, and 9 contain the most difficult questions. The more difficult the question, the more points you'll get for a correct response.

The idea is to make it from Washington D.C. to either the Midwest, the South, or the West Coast (depending on the level) by answering questions and scoring points. Each point moves you closer to your destination. Correctly answering an easy question gives you one point; a medium-level question is worth two points, and a hard one yields four points.

If you don't know the correct answer press the HELP key, which counts as a wrong answer. At the top of the screen, your current location and the distance remaining are displayed. Each point equals about 60 miles.

At a "Show me..." question, point to the state with the mouse pointer and press the button. The other answers have to be typed in. The game is over after you reach your destination or when too many questions are answered incorrectly. Your performance will then be rated.

Two to Four Players

Multi Player Screen Shot

If you select F3 from the menu you'll need to also indicate the number of players and their names. The object is to win as many states (and their land area) as possible. The final score is the number of states multiplied by the percentage of land area owned. The bigger the state you want to go for, the harder the questions become and the more of them you'll have to answer correctly. Small states are useful, too, because they can multiply your score and are easier to get. Just pick the state you want to win with your mouse. Note that there will never be questions about the state you're currently playing for.

At the beginning of a new round you can press the ESC key to abort the game. Otherwise the game ends after all 50 states are taken. The HELP key is also active again.

When the game is over each player gets his or her own score window, which will be behind the Hall of Fame window. Use the drag bar and the size gadget to view the other windows.

' \------------------------------------------------------------/ ' | P I O N E E R - Copyright Aug 1986 by Martin Mathis | ' | ============= 6 Geibel Street | ' | ----------- requires 512K 8037 Zurich | ' | _________ and Kick 1.1 Switzerland | ' | | ' | With a little help from the 1986 Rand McNally Road Atlas | ' /------------------------------------------------------------\ CLS:CLEAR,30000:RANDOMIZE TIMER:OPTION BASE 1 DIM s$(50,5),abc$(50),abc(50),xpos(50),ypos(50),w(50),e(50),n(50),s(50),xtr(89),ytr(89),lct$(89) usa=3539341&:clr$=">"+STRING$(22," "):clr1$="A:"+STRING$(22," ") SCREEN 1,320,200,2,1:WINDOW 1,"",(0,0)-(311,185),16,1 PALETTE 0,.3,.2,1:PALETTE 1,.33,.87,0:PALETTE 2,.95,.25,0:PALETTE 3,.3,.2,1 babble "i'll be right up." FOR i=1 TO 50:FOR j=1 TO 5:READ s$(i,j):NEXT:abc$(i)=s$(i,1):abc(i)=VAL(s$(i,5)) IF s$(i,4)="s" THEN s$(i,4)=s$(i,3) NEXT:shell=25 shell: array=0:FOR i=1 TO 50-shell IF abc(i)<abc(i+shell) THEN SWAP abc$(i),abc$(i+shell):SWAP abc(i),abc(i+shell):array=1 NEXT:IF array=1 THEN shell shell=INT(shell/2):IF shell>=1 THEN shell RESTORE FillDat:FOR i=1 TO 50:READ xpos(i),ypos(i):NEXT RESTORE PickDat:FOR i=1 TO 50:READ w(i),e(i),n(i),s(i):NEXT x2=62:y2=37:RESTORE USBorderDat:GOSUB DrawUS COLOR 2,0:LOCATE 3,10:h$="Welcome to the":p$="U.S.A." FOR i=1 TO 14:FOR j=1 TO 3:LOCATE j,8+i:PRINT MID$(h$,i,1) IF j>1 THEN LOCATE j-1,8+i:PRINT " " FOR k=0 TO 74:NEXT k,j,i:RESTORE StateBorderDat:GOSUB DrawState x2=40:y2=124:RESTORE AKDat:GOSUB DrawAK FOR i=50 TO 1 STEP -1:PAINT(xpos(i),ypos(i)),1,3 IF i=11 THEN c=1:GOSUB 98 IF i=22 THEN c=1:GOSUB 99 NEXT:FOR i=1 TO 0 STEP -.002:PALETTE 3,i/3,i/5,i:NEXT FOR i=1 TO 6:FOR j=1 TO 5:LOCATE j,24+i:PRINT MID$(p$,i,1) IF j>1 THEN LOCATE j-1,24+i:PRINT " " FOR k=0 TO 124:NEXT k,j,i babble "this is the gaim. off py.onier.":GOSUB clr:LOCATE 5,25:PRINT STRING$(6," ") RESTORE TrackDat:FOR i=1 TO 89:READ xtr(i),ytr(i),lct$(i):NEXT MainMenu: WINDOW 2," P I O N E E R",(15,20)-(142,52),0,1:COLOR 2,0:WINDOW OUTPUT 2 PRINT "F1 Atlas Mode":PRINT "F2 One Pioneer" PRINT "F3 Some Pioneers":PRINT "F4 Quit";:babble "pleez select" key1: b$=INKEY$:IF b$<CHR$(129) OR b$>CHR$(132) THEN key1 ON ASC(b$)-128 GOTO Atlas,Pion1,Some,Kwit Atlas: WINDOW CLOSE 2:WINDOW OUTPUT 1:c$="" IF tgl=0 THEN babble "at.lass mode":tgl=1 LOCATE 1,14:COLOR 2,3:PRINT "Atlas mode":COLOR 2,0 3 LOCATE 3,1:PRINT "> "c$; b$=INKEY$:GOSUB Pick:nogo=0:babble x$:IF b$=CHR$(13) AND c$<>"" THEN 4 IF b$=CHR$(8) AND c$<>"" THEN c$=LEFT$(c$,LEN(c$)-1):LOCATE 3,1:PRINT clr$:GOTO 3 IF b$=CHR$(27) THEN tgl=0:GOSUB clr:GOTO MainMenu IF b$>="0" AND b$<="9" AND VAL(c$+b$)<51 AND LEN(c$)<2 THEN c$=c$+b$:GOTO 3 IF (b$<"A" OR b$>"z") AND b$<>" " AND b$<>"." THEN 3 c$=c$+UCASE$(b$):IF LEN(c$)>19 THEN c$="":LOCATE 3,1:PRINT clr$ GOTO 3 4 IF UCASE$(c$)="PORTLAND" THEN port=1 IF VAL(c$)>0 AND VAL(c$)<51 THEN c$=abc$(VAL(c$)) FOR i=1 TO 50:FOR j=1 TO 4 IF UCASE$(s$(i,j))=UCASE$(c$) THEN ii=i:jj=j:GOTO 5 NEXT j,i:babble "unnown data, try again.":GOSUB clr:GOTO Atlas 5 x$=s$(ii,1)+","+s$(ii,2):PAINT(xpos(ii),ypos(ii)),2,3 IF ii=11 THEN c=2:GOSUB 98 IF ii=22 THEN c=2:GOSUB 99 GOTO StateInfo Pion1: didit=0:e$="":d$="questions":xdc=242:ydc=93:curloc$="Washington DC":CLS PRINT:PRINT " Choose level":PRINT " (1-9) ?" 10 b$=INKEY$ IF b$<"1" OR b$>"9" THEN 10 ELSE CLS:PRINT:PRINT " Level chosen":PRINT SPACE$(6)"("b$")" lev=VAL(b$):e$="easy ":xd=194:yd=82:dest$="Mid West":mile=860:pstep=61.46:frm=1:tom=14 IF lev>3 THEN e$=e$+"and meedium ":xd=157:yd=135:dest$="South":mile=1490:pstep=55.19:frm=15:tom=41 END IF IF lev>6 THEN e$=e$+"and hard ":xd=61:yd=120:dest$="West Coast":mile=2950:pstep=61.43:frm=42:tom=89 END IF IF lev=1 OR lev=4 OR lev=7 THEN jsm=1.3 IF lev=2 OR lev=5 OR lev=8 THEN jsm=1.2 IF lev=3 OR lev=6 OR lev=9 THEN jsm=1.1 points=tom-frm+1:abspts=INT(points*jsm+.5):e$=e$+d$:babble e$:WINDOW CLOSE 2:WINDOW OUTPUT 1 mtg=mile:LOCATE 2,3:COLOR 2:PRINT "Your destination is the "dest$"." LOCATE 4,3:COLOR 1:PRINT "You start from Washington D.C.":FOR i=0 TO 2 FOR j=0 TO 2:CIRCLE(xdc,ydc),j,3:CIRCLE(xd,yd),j,3:NEXT:FOR k=0 TO 999:NEXT FOR j=0 TO 2:CIRCLE(xdc,ydc),j,2:CIRCLE(xd,yd),j,2:NEXT:FOR k=0 TO 999:NEXT k,i babble "try to make it from washington dc to the "+dest$:curloc=frm-1 lev=INT(lev/3+.9):town$(1)="Chicago":town$(2)="Dallas":town$(3)="Los Angeles" cmnt$(1)="not getting killed by Al Capone.":cmnt$(2)="competing with J.R. Ewing." cmnt$(3)="messing with illegal aliens.":cmnt$(4)="getting into Hollywood's society." GameLoop: FOR i=0 TO 9:b$=INKEY$:NEXT IF curloc>=frm THEN FOR i=1 TO 50:IF lct$(curloc)=s$(i,2) THEN curloc$=s$(i,1):ii=i NEXT END IF GOSUB StatLin question=INT(RND(1)*lev)+1:ON question GOSUB easy,medium,hard IF question=3 THEN question=4 IF q1=0 AND question=1 THEN GOSUB EasPick:GOTO 20 c$="":GOSUB GetAnswer:r1$=c$:eas=0 20 GOSUB Check abspts=abspts-question:IF ans=1 THEN babl=INT(RND(1)*4) IF babl=0 THEN babble "yoo are right" IF babl=1 THEN babble "that's correct" IF babl=2 THEN babble "you've got that one." IF babl=3 THEN babble "good job." points=points-question:mile=mile-question*pstep:curloc=curloc+question IF curloc>tom THEN curloc=tom FOR i=frm TO curloc:PSET(xtr(i),ytr(i)),2:SOUND RND*500+90,1:NEXT curloc$=lct$(curloc):IF curloc$="D" THEN mile=0:didit=1:curloc$=dest$:GOSUB StatLin:GOTO Gover GOTO GameLoop END IF IF b$<>CHR$(139) THEN babble "oops." IF eas=0 THEN LOCATE 4,1:COLOR 3:PRINT "The right answer is ";:COLOR 2 PRINT r$;:COLOR 3:PRINT ".":FOR i=0 TO 6999:NEXT END IF IF abspts<=0 THEN didit=0:GOSUB StatLin:GOTO Gover GOTO GameLoop Gover: LOCATE 3,12:COLOR 2,3:PRINT "The Game is Over":babble "game over" FOR i=0 TO 7999:NEXT:GOSUB clr IF didit=0 THEN IF curloc >=frm THEN:FOR j=0 TO 1:CIRCLE(xtr(curloc),ytr(curloc)),j,2:NEXT LOCATE 1,1:COLOR 1:PRINT "You didn't make it to your destination." COLOR 0:PRINT "You wind up in ";:COLOR 2:PRINT curloc$;:COLOR 0 PRINT " after":COLOR 2:PRINT INT(mtg-mile);:COLOR 0:PRINT "miles ("; COLOR 2:PRINT STR$(INT((mtg-mile)/mtg*100+.5))"% ";:COLOR 0:PRINT "), where you" job=INT(RND(1)*5):IF job=0 THEN PRINT "build a log cabin and become a hunter." IF job=1 THEN PRINT "get into the lumberjack business." IF job=2 THEN PRINT "build a house and start farming." IF job=3 THEN PRINT "settle down and raise a family." IF job=4 THEN PRINT "die lonely a couple of years later." babble "well, that's tough luck, py.onier.":GOTO Cindy END IF LOCATE 1,1:COLOR 1:PRINT "You made it to the "dest$" !!!" COLOR 0:PRINT "You build the town of ";:COLOR 2:PRINT town$(lev) COLOR 0:PRINT "where you have a hard time":IF lev=3 AND RND(1)<.5 THEN lev=4 PRINT cmnt$(lev):FOR i=0 TO 3999:NEXT babble "you are faimous and rich, py.onier." Cindy: babble "hit any key to continue." FOR i=0 TO 9:a$=INKEY$:NEXT 30 a$=INKEY$:FOR i=frm TO curloc:PSET(xtr(i),ytr(i)),2:NEXT FOR i=frm TO curloc:PSET(xtr(i),ytr(i)),3:NEXT IF a$="" THEN 30 COLOR 1,0:CLS:x2=62:y2=37:RESTORE USBorderDat:GOSUB DrawUS RESTORE StateBorderDat:GOSUB DrawState:x2=40:y2=124:RESTORE AKDat GOSUB DrawAK:FOR i=50 TO 1 STEP -1:PAINT(xpos(i),ypos(i)),1,3 IF i=11 THEN c=1:GOSUB 98 IF i=22 THEN c=1:GOSUB 99 NEXT:GOTO MainMenu StatLin: GOSUB clr:COLOR 0,1:FOR i=1 TO 40:LOCATE 1,i:PRINT " ":NEXT LOCATE 1,2:PRINT "Loc: "curloc$:LOCATE 1,21 PRINT "/ "MID$(STR$(INT(mile+.5)),2,LEN(STR$(INT(mile+.5)))-1)" miles to go" RETURN Pion2: round=round+1:p2=1:FOR g=1 TO p:r1$="":IF sta>49 THEN GameOver COLOR 2,3:LOCATE 1,1:PRINT "Round"round:PRINT "Pioneer "p$(g)" >":COLOR 1,0 babble "your turn "+p$(g) 7 IF MOUSE(0)<>0 THEN 7 FOR i=0 TO 9:b$=INKEY$:NEXT 8 b$=INKEY$:IF b$=CHR$(27) AND g=1 AND round>1 THEN round=round-1:babble "game aborted after"+STR$(round)+" rounds":GOTO GameOver END IF GOSUB Pick:IF nogo=1 THEN nogo=0:babble x$:GOTO 8 h=ii:are=VAL(s$(h,5)):GOSUB clr:COLOR 2,3:LOCATE 1,1:PRINT s$(h,1) GOSUB easy:IF q1=0 THEN GOSUB EasPick c$="":IF q1>0 THEN GOSUB GetAnswer:r1$=c$:eas=0 GOSUB Check:IF ans=0 THEN nay IF are>9200 THEN babble "alrite, but there's more to answer" GOSUB clr:COLOR 2,3:LOCATE 1,1:PRINT s$(h,1) GOSUB medium:c$="":GOSUB GetAnswer:r1$=c$:GOSUB Check:eas=0:IF ans=0 THEN nay END IF IF are>59000& THEN babble "really, you're getting closer" GOSUB clr:COLOR 2,3:LOCATE 1,1:PRINT s$(h,1) GOSUB medium:c$="":GOSUB GetAnswer:r1$=c$:GOSUB Check:eas=0:IF ans=0 THEN nay END IF IF are>130000& THEN babble "yes, but the last question is a hard one." GOSUB clr:COLOR 2,3:LOCATE 1,1:PRINT s$(h,1) GOSUB hard:c$="":GOSUB GetAnswer:r1$=c$:GOSUB Check:eas=0:IF ans=0 THEN nay END IF yup: babble "o.k! you won the state." sta=sta+1:score(g)=score(g)+are:sta(g)=sta(g)+1:GOTO GoOn nay: IF b$<>CHR$(139) THEN babble "nope" PAINT(xpos(h),ypos(h)),1,3 IF h=11 THEN c=1:GOSUB 98 IF h=22 THEN c=1:GOSUB 99 IF eas=0 THEN COLOR 2,0:LOCATE 4,1:PRINT "The correct answer is ";:COLOR 1:PRINT r$;:COLOR 2:PRINT "." END IF GoOn: GOSUB Windw:GOSUB clr:NEXT:GOTO Pion2 GameOver: GOSUB clr:COLOR 2,3:LOCATE 2,14:PRINT "GAME OVER":COLOR 3,0:LOCATE 3,13 PRINT round"Rounds":babble"gaim over":wind=1:g=1 WINDOW 2,p$(1),(5,13)-(170,73),16,1:WINDOW OUTPUT 2:GOSUB wind WINDOW 3,p$(2),(136,30)-(306,90),16,1:WINDOW OUTPUT 3:GOSUB wind IF p>2 THEN WINDOW 4,p$(3),(5,103)-(170,163),16,1:WINDOW OUTPUT 4:GOSUB wind IF p>3 THEN WINDOW 5,p$(4),(136,120)-(306,180),16,1:WINDOW OUTPUT 5:GOSUB wind WINDOW 6," Pioneers' Hall of Fame",(60,40)-(250,160),19,1:WINDOW OUTPUT 6 SOUND 1100,6:FOR i=1 TO p:per$=STR$(score(i)):GOSUB Percentage score(i)=VAL(per$):ttl(i)=sta(i)*score(i):NEXT FOR i=1 TO p-1:FOR j=i TO p IF ttl(i)<ttl(j) THEN SWAP p$(i),p$(j):SWAP ttl(i),ttl(j):SWAP sta(i),sta(j):SWAP score(i),score(j) END IF NEXT j,i FOR i=1 TO p:IF i=1 THEN COLOR 2,3 ELSE COLOR 1,3 PRINT:PRINT STR$(i)". "p$(i)" ":COLOR 2,0:PRINT sta(i)"X"score(i)"="ttl(i) NEXT:COLOR 1,0:PRINT:PRINT "Hit any key to continue"; FOR i=0 TO 9:b$=INKEY$:NEXT 11 b$=INKEY$:IF b$="" THEN 11 FOR i=2 TO 6:WINDOW CLOSE i:NEXT:WINDOW OUTPUT 1:COLOR 1,0:GOSUB clr:wind=0 FOR i=50 TO 1 STEP -1:PAINT(xpos(i),ypos(i)),1,3 IF i=11 THEN c=1:GOSUB 98 IF i=22 THEN c=1:GOSUB 99 NEXT:p2=0:GOTO MainMenu GetAnswer: COLOR 3,0:LOCATE 3,1:PRINT clr1$:COLOR 1,0:LOCATE 3,3:PRINT c$ ga: b$=INKEY$:IF b$=CHR$(13) AND c$<>"" THEN RETURN IF b$=CHR$(139) THEN c$="":eas=0:babble "help":RETURN IF b$=CHR$(8) AND c$<>"" THEN c$=LEFT$(c$,LEN(c$)-1):GOTO GetAnswer IF (b$>"z" OR b$<"0") AND b$<>" " AND b$<>"." GOTO ga c$=c$+UCASE$(b$):IF LEN(c$)>19 THEN c$="" GOTO GetAnswer Check: ans=0:IF port=1 AND (UCASE$(r1$)="OREGON" OR UCASE$(r1$)="MAINE") THEN ans=1:port=0 IF UCASE$(r$)=UCASE$(r1$) THEN ans=1 IF hard=0 THEN RETURN hard=0:IF q1=0 THEN r1=VAL(r$):r2=VAL(r1$):rl=r1-r1/100*15:rh=r1+r1/100*15 IF rl<=r2 AND r2<=rh THEN ans=1:RETURN END IF IF q1=1 THEN FOR i=1 TO 50:IF UCASE$(abc$(i))=UCASE$(r1$) THEN ii=i NEXT:IF ii=VAL(ar$) THEN ans=1 END IF RETURN EasPick: r1$="" 9 IF MOUSE(0)<>1 THEN 9 x=MOUSE(3):y=MOUSE(4):FOR i=1 TO 50 IF x>w(i) AND x<e(i) AND y>n(i) AND y<s(i) THEN r1$=s$(i,1) NEXT:IF r1$="" THEN 9 LOCATE 3,3:PRINT r1$:eas=1:RETURN Windw: WINDOW 2,p$(g),(g*30,35+g*18)-(170+g*30,100+g*18),0,1:WINDOW OUTPUT 2 wind: COLOR 3,0:PRINT "States owned:":COLOR 2:PRINT sta(g) COLOR 3:PRINT "Area owned in sq.mi.:":COLOR 2:PRINT score(g) COLOR 3:PRINT "Land area of USA:":COLOR 2:per$=STR$(score(g)) GOSUB Percentage:PRINT " "per$" %"; IF wind=1 THEN PRINT:PRINT INT(sta(g)/round*1000)/1000"States/turn"; g=g+1:SOUND g*200,4:FOR i=0 TO 2999:NEXT:RETURN END IF COLOR 1:PRINT:PRINT:PRINT "Hit SPACE"; FOR i=0 TO 9:b$=INKEY$:NEXT key3: b$=INKEY$:IF b$<>" " AND MOUSE(0)<>1 THEN key3 WINDOW CLOSE 2:WINDOW OUTPUT 1:RETURN Some: CLS:PRINT:PRINT "How many players" PRINT " (2 to 4) ?" key2: b$=INKEY$:IF b$<"2" OR b$>"4" THEN key2 p=VAL(b$):babble b$+" py.oniers." CLS:PRINT "Enter names :" FOR i=1 TO p:babble "player"+STR$(i):INPUT p$(i):IF p$(i)="" THEN p$(i)="Player"+STR$(i) p$(i)=UCASE$(LEFT$(p$(i),15)):score(i)=0:sta(i)=0:NEXT WINDOW OUTPUT 1:WINDOW CLOSE 2 babble "all set. let's go." round=0:sta=0:GOTO Pion2 StateInfo: GOSUB clr:av=(w(ii)+e(ii))/2:ar=1 IF av>160 THEN WINDOW 2,x$,(8,25)-(140,98),0,1 IF av<161 THEN WINDOW 2,x$,(170,25)-(302,98),0,1 WINDOW OUTPUT 2 COLOR 3,0:PRINT "Capital:":COLOR 2:PRINT s$(ii,3) COLOR 3:PRINT "Largest City:":COLOR 2:PRINT s$(ii,4) COLOR 3:PRINT "Area in sq.mi.:":COLOR 2:PRINT s$(ii,5)" "; FOR i=1 TO 50:IF abc$(i)=s$(ii,1) THEN ar=i NEXT:PRINT "("ar")" per$=s$(ii,5):GOSUB Percentage:PRINT per$"% of USArea" COLOR 1:PRINT:PRINT "Hit SPACE"; FOR i=0 TO 9:b$=INKEY$:NEXT 6 b$=INKEY$:IF b$<>" " AND MOUSE(0)<>1 THEN 6 WINDOW CLOSE 2:WINDOW OUTPUT 1:PAINT(xpos(ii),ypos(ii)),1,3 IF ii=11 THEN c=1:GOSUB 98 IF ii=22 THEN c=1:GOSUB 99 IF port=1 THEN port=0:ii=37:GOTO 5 GOTO Atlas Percentage: a$=STR$(INT(VAL(per$)/usa*10000)/100):per$=RIGHT$(a$,LEN(a$)-1):RETURN Pick: x$="":i=0:s=0:IF MOUSE(0)=1 THEN x=MOUSE(3):y=MOUSE(4):pt=POINT(x,y) IF x<4 OR x>308 OR y<4 OR y>182 THEN Pick IF pt=0 THEN x$="salt water. yuch!":nogo=1:RETURN IF pt=3 THEN x$="watch the border patrol!":nogo=1:RETURN IF pt=2 THEN x$="nice try kiddo!":nogo=1:RETURN PAINT(x,y),2,3:FOR i=1 TO 50 IF x>w(i) AND x<e(i) AND y>n(i) AND y<s(i) THEN x$=s$(i,1)+","+s$(i,2):jj=1:ii=i:GOTO 1 NEXT:PAINT(x,y),1,3:nogo=1 1 IF i=11 THEN c=2:GOSUB 98 IF i=22 THEN c=2:GOSUB 99 IF nogo=1 OR p2=1 THEN RETURN GOTO StateInfo END IF nogo=1:RETURN easy: q=INT(RND*50)+1:IF q=ii THEN easy q1=INT(RND*3) IF q1=0 THEN q$="Show me "+s$(q,1)+" on the map.":r$=s$(q,1) IF q1=1 THEN q$="Mail code for "+s$(q,1)+"?":r$=s$(q,2) IF q1=2 THEN q$="What state's "+s$(q,2)+" short for?":r$=s$(q,1) GOTO qa medium: q=INT(RND*50)+1:IF q=ii THEN medium q1=INT(RND*4) IF q1=0 THEN q$=s$(q,4)+" is the largest city of?":r$=s$(q,1):IF s$(q,4)="Portland" THEN port=1 IF q1=1 THEN q$=s$(q,3)+" is the capital of?":r$=s$(q,1) IF q1=2 THEN q$="What's the capital of "+s$(q,1)+"?":r$=s$(q,3) IF q1=3 THEN q$="Largest city of "+s$(q,1)+" is?":r$=s$(q,4) GOTO qa hard: q=INT(RND*50)+1:IF q=ii THEN hard q1=INT(RND*2):hard=1 IF q1=0 THEN q$="Area of "+s$(q,1)+" (+/- 15%)?":r$=s$(q,5) IF q1=1 THEN ar$=STR$(INT(RND*48)+2):q$="The"+ar$+". largest state ?":r$=abc$(VAL(ar$)) qa: COLOR 3,0:LOCATE 2,1:PRINT "Q:";:COLOR 2,0:PRINT q$ COLOR 3,0:LOCATE 3,1:PRINT "A:";:COLOR 1,0:RETURN Kwit: WINDOW OUTPUT 1:WINDOW CLOSE 2 FOR i=0 TO 1 STEP .002:PALETTE 3,i/3,i/5,i:NEXT FOR i=0 TO 1 STEP .004:PALETTE 1,.33,.87-i/1.43,i:NEXT SYSTEM clr: LOCATE 1,1:FOR i=0 TO 3:PRINT STRING$(40," ") NEXT:RETURN DrawUS: READ x1,y1:IF x1=-1 THEN RETURN LINE(x1,y1)-(x2,y2),3:x2=x1:y2=y1:GOTO DrawUS DrawState: READ x1,y1,x2,y2:IF x1=-1 THEN RETURN LINE(x1,y1)-(x2,y2),3:GOTO DrawState DrawAK: READ x1,y1:IF x1=-1 THEN RETURN LINE(x1,y1)-(x2,y2),3:x2=x1:y2=y1:GOTO DrawAK 98 PAINT(78,143),c,3:PAINT(69,138),c,3:PAINT(98,168),c,3:PAINT(94,158),c,3:RETURN 99 PAINT(205,75),c,3:PAINT(195,60),c,3:RETURN GeoData: DATA Alabama,AL,Montgomery,Birmingham,50766,Alaska,AK,Juneau,Anchorage,570833 DATA Arizona,AZ,Phoenix,s,113510,Arkansas,AR,Little Rock,s,53187 DATA California,CA,Sacramento,Los Angeles,156297,Colorado,CO,Denver,s,103598 DATA Connecticut,CT,Hartford,Bridgeport,4872,Delaware,DE,Dover,Wilmington,1933 DATA Florida,FL,Tallahassee,Jacksonville,54157,Georgia,GA,Atlanta,s,58060 DATA Hawaii,HI,Honolulu,s,6427,Idaho,ID,Boise,s,82413,Illinois,IL,Springfield,Chicago,55646 DATA Indiana,IN,Indianapolis,s,35936,Iowa,IA,Des Moines,s,55965,Kansas,KS,Topeka,Wichita,81783 DATA Kentucky,KY,Frankfort,Louisville,39674,Louisiana,LA,Baton Rouge,New Orleans,44520 DATA Maine,ME,Augusta,Portland,30995,Maryland,MD,Annapolis,Baltimore,9838 DATA Massachusetts,MA,Boston,s,7826,Michigan,MI,Lansing,Detroit,56959 DATA Minnesota,MN,St.Paul,Minneapolis,79548,Mississippi,MS,Jackson,s,47234 DATA Missouri,MO,Jefferson City,St.Louis,68945,Montana,MT,Helena,Billings,145388 DATA Nebraska,NE,Lincoln,Omaha,76639,Nevada,NV,Carson City,Las Vegas,109895 DATA New Hampshire,NH,Concord,Manchester,8992,New Jersey,NJ,Trenton,Newark,7468 DATA New Mexico,NM,Santa Fe,Albuquerque,121336,New York,NY,Albany,New York,47379 DATA North Carolina,NC,Raleigh,Charlotte,48843,North Dakota,ND,Bismarck,Fargo,69299 DATA Ohio,OH,Columbus,Cleveland,41004,Oklahoma,OK,Oklahoma City,s,68656 DATA Oregon,OR,Salem,Portland,96187,Pennsylvania,PA,Harrisburg,Philadelphia,44892 DATA Rhode Island,RI,Providence,s,1054,South Carolina,SC,Columbia,s,30207 DATA South Dakota,SD,Pierre,Sioux Falls,75956,Tennessee,TN,Nashville,Memphis,41154 DATA Texas,TX,Austin,Houston,262015,Utah,UT,Salt Lake City,s,82076 DATA Vermont,VT,Montpelier,Burlington,9273,Virginia,VA,Richmond,Norfolk,39700 DATA Washington,WA,Olympia,Seattle,66512,West Virginia,WV,Charleston,s,24124 DATA Wisconsin,WI,Madison,Milwaukee,54424,Wyoming,WY,Cheyenne,Casper,96988 USBorderDat: DATA 62,37,110,43,164,46,182,52,174,59,187,56,205,60,192,65,192,80,196,83,198,80,199 DATA 65,205,62,214,82,228,68,252,54,254,39,262,38,270,50,260,65,263,69,251,80 DATA 247,101,251,108,228,136,239,159,238,163,230,161,218,143,210,146,194,145 DATA 190,153,171,152,155,162,157,170,148,166,136,151,130,150,128,155,112,137 DATA 101,139,65,126,53,113,44,77,56,37,62,43,62,37,-1,-1 StateBorderDat: DATA 46,71,99,83,81,106,135,113,135,112,166,111,86,81,75,130,63,76,59,91 DATA 59,91,78,116,106,88,101,139,112,137,129,137,129,137,129,112,129,115 DATA 142,115,142,115,142,125,142,125,167,128,167,128,170,151,130,44,126,89 DATA 84,40,75,77,128,69,101,66,101,66,98,86,98,86,135,90,135,90,134,112 DATA 87,40,90,62,90,62,100,69,153,46,156,86,156,86,165,102,165,102,167,130 DATA 128,63,153,64,127,79,155,80,135,95,162,96,174,59,171,68,171,68 DATA 181,81,181,81,178,95,178,95,190,108,190,108,186,120,186,120,182,132 DATA 182,132,183,143,183,143,190,143,190,143,193,146,194,81,195,103,195,103 DATA 190,108,180,80,192,79,156,76,176,76,160,92,178,92,166,114,187,115 DATA 168,133,181,133,197,82,212,80,206,82,207,96,207,96,199,103 DATA 199,103,195,103,253,53,260,64,260,66,248,69,248,69,244,58,251,68 DATA 252,55,248,70,251,78,250,73,257,70,257,70,259,72,255,71,256,74 DATA 251,78,241,72,241,72,220,77,220,77,225,89,225,89,245,84,245,84 DATA 244,75,243,84,249,92,248,91,245,91,245,91,242,85,247,95,238,93 DATA 238,93,237,89,237,89,229,90,229,90,229,88,207,96,217,98,217,98 DATA 224,87,234,90,227,102,227,102,219,103,219,103,216,99,218,102,213,108 DATA 188,113,246,102,222,107,212,117,186,121,228,114,228,114,240,121,217,116 DATA 231,131,206,118,212,140,228,139,201,141,201,141,200,145,194,119 DATA 197,145,52,51,79,58,181,58,192,65 DATA 97,164,103,171,103,171,95,176,95,176,94,168,94,168,98,164,91,153 DATA 97,158,97,158,92,159,92,159,90,154,84,146,89,147,85,151,86,152,79 DATA 140,81,144,81,144,76,144,76,144,75,141,75,141,78,139,71,136,69,139 DATA 69,139,65,137,65,137,68,134,68,134,72,136,-1,-1,-1,-1 AKDat: DATA 40,124,53,136,46,153,59,166,58,168,47,158,35,154,32,159,26,158 DATA 12,164,14,161,25,153,16,147,18,130,29,124,40,124,-1,-1 FillDat: DATA 200,130,34,135,90,120,180,120,60,100,120,100,255,75,246,89,230,150 DATA 220,130,78,143,80,70,190,90,200,90,170,80,140,100,210,100,180,140 DATA 260,50,240,90,255,70,205,75,160,60,190,130,170,100,110,60,140,90 DATA 70,90,255,60,250,80,120,120,240,70,240,110,140,50,215,90,150,120 DATA 70,60,230,80,257,72,230,120,140,70,200,115,150,140,90,90,250,60 DATA 240,100,70,50,225,95,180,70,110,80 PickDat: DATA 197,207,119,140,15,59,124,168,81,102,110,136,169,183,115,133,45,60 DATA 75,120,106,135,90,109,251,257,73,78,244,248,87,93,202,240,141,163 DATA 213,224,123,139,67,105,135,177,77,99,68,78,184,196,80,103,196,207 DATA 82,98,161,178,77,92,136,163,96,111,201,216,101,108,170,184,133,152 DATA 257,271,39,59,238,243,86,94,252,264,67,70,195,214,59,80,156,172,45,76 DATA 185,196,125,143,166,179,92,114,91,128,41,66,136,157,80,95,68,82,80,102 DATA 253,259,61,67,245,252,79,85,105,130,112,137,222,246,59,72,222,251 DATA 106,114,130,154,45,64,207,220,82,96,143,167,112,125,47,76,59,71 DATA 225,245,77,85,256,260,71,75,228,236,119,128,129,155,64,79,196,214 DATA 112,118,130,167,129,170,85,105,87,106,247,252,58,69,231,249,96,102 DATA 52,80,38,51,222,228,90,102,180,193,65,79,102,127,70,86 TrackDat: DATA 240,90,MD,238,88,MD,235,88,MD,231,89,MD,227,90,WV,223,89,WV,219,88,OH DATA 215,88,OH,210,89,OH,205,90,IN,201,90,IN,199,87,IN,196,85,IN,194,82,D DATA 241,98,VA,240,101,VA,240,105,NC,239,109,NC,238,113,NC,238,117,NC DATA 235,120,SC,232,122,SC,229,124,SC,225,126,GA,221,127,GA,217,128,GA DATA 213,129,GA,209,130,AL,205,130,AL,201,130,AL,197,131,AL,193,132,MS DATA 189,133,MS,185,134,MS,181,135,LA,177,135,LA,173,135,LA,169,136,LA DATA 165,136,TX,161,136,TX,157,135,D,240,96,VA,236,95,VA,232,95,VA,228,95,WV DATA 224,96,WV,220,96,WV,216,97,OH,212,98,KY,208,98,KY,204,98,IN,200,99,IN DATA 196,100,IN,192,100,IL,188,101,IL,184,102,MO,180,102,MO,176,103,MO DATA 172,104,MO,168,105,MO,164,106,KS,160,107,KS,156,108,KS,153,110,KS DATA 151,113,OK,149,115,OK,145,116,OK,141,116,TX,137,117,TX,133,117,TX DATA 130,118,TX,125,118,NM,121,118,NM,117,117,NM,113,117,NM,109,116,NM DATA 105,115,NM,101,114,AZ,97,113,AZ,93,112,AZ,89,111,AZ,85,110,AZ DATA 81,110,AZ,77,110,NV,74,113,CA,71,115,CA,68,117,CA,65,119,CA,61,120,D SUB babble (a$) STATIC SAY TRANSLATE$(a$) END SUB

Download PIONEER (13K LZH Archive)

(If you're not prompted to save the file to disk,
hold down SHIFT in Netscape Navigator while clicking link)

[ Top | Up to Computers Page | Music | Travel | Miscellany ]
Go to Front PageGo to Site DirectoryGo to What's NewGo to Guest BookGo to Messages And AnnouncementsGo to About This Site

Last updated January 23, 1997 by Martin Mathis, e-mail