===MMPREY.BAS=== //This module is part of the original MMBasic library. It is reproduced here with kind permission of Hugh Buckle and Geoff Graham. Be aware it may reference functionality which has changed or is deprecated in the latest versions of MMBasic.// 10 : Rem "Prey" was published by Phil Cohen in ETI magazine September 1982. 20 : Rem Originally written for the Apple II. 30 : Rem In the same year I ported it to run on the Microbee computer, 40 : Rem and added a few features using the Microbee's more advanced 50 : Rem graphics commands and screen resolution. 60 : Rem In 2011, 29 years later, I found the same ETI magazine, and 70 : Rem decided to rewite it MMBasic to run on the Maximite, just for fun. 80 : Rem Glenn Littleford. www.thebackshed.com 90 : Cls 100 : Print Tab(10); "***Prey***" : Print 110 : Print "Prey is a life simulation program. It plots the " 120 : Print "population numbers of a predator, like a fox, " 130 : Print "and a prey." 150 : Print "You first set up their initial environment, to """ 160 : Print "see if it can sustain stable populations, and " 170 : Print "then introduce a change some time during the" 180 : Print "10 year simulation. For example, reduce the " 190 : Print "territory, ( land clearing ), increase the" 200 : Print "food yield ( plant carrots ), or cull the prey" 210 : Print "when they threaten your land productivity." 220 : Print "The program will then plot the effect on prey" 230 : Print "and predator populations." : Print 240 : Input "Press ENTER to continue"; a$ 250 : TR = 500: P1 = 180: P2 = 75: YD = 15 260 : L1=10 : L2=20 : CU=1 270 : Cls 280 : Print "*** Prey ***" : Print 290 : Print "Option Description Value" : Print 300 : Print " 1 Size of territory "; TR 310 : Print " 2 Prey Population "; Int(P1) 320 : Print " 3 Predator Population "; Int(P2) 330 : Print " 4 Food yield per unit area "; YD 340 : Print " 5 Prey natural life span "; L1 350 : Print " 6 Predator natural life span "; L2 360 : Print " 7 Prey Cull Losses "; CU 370 : Print " 8 Done, move to next step" 380 : Print " 9 Reset to defaults" 390 : Print " Q Quit" 400 : Print 410 : Input "Which would you like to alter "; A$ 420 : If a$="Q" Or a$="q" Then GoTo 1200 430 : A=Val(a$) : If A>9 Or A<1 Then GoTo 270 440 : Print 450 : On A GoTo 460, 470, 480, 490, 500, 510, 520, 530, 250, 1200 460 : Input "Territory Size"; TR: GoTo 270 470 : Input "Prey Population"; P1: GoTo 270 480 : Input "Predator Population"; P2: GoTo 270 490 : Input "Food yeild per unit area"; YD: GoTo 270 500 : Input "prey natural life span"; L1: GoTo 270 510 : Input "Predator natural life span"; L2: GoTo 270 520 : Input "Prey cull losses"; CU: GoTo 270 530 : Input "Year for change ( 0-10 )"; YR 540 : YX=Int(20*YR) 550 : Input "Which variable to change ( 1-7 )"; V 560 : If V > 7 Or V < 1 Then GoTo 550 570 : Print "Value to be set at year "; YR; " "; 580 : Input VL 590 : Cls 600 : Locate 10,0 : Print "*** Prey ***" 610 : Line (100,0)-(300,159),1,"B" 620 : For i=100 To 300 Step 20 630 : Line (i,159)-(i,162) 640 : Locate i-10,170 : Print (i-100)/20 650 : Next I 660 : Locate 0,30 : Print "Territory:"; 670 : Locate 0,45 : Print "Prey Pop :"; 680 : Locate 0,60 : Print "Pred Pop :"; 690 : Locate 0,75 : Print "Yield :"; 700 : Locate 0,90 : Print "Cull :"; 710 : Locate 0,105 : Print "Pred Life:"; 720 : Locate 0,120 : Print "Prey Life:"; 730 : Line (0,148)-(12,148) : Locate 15,145 : Print "Prey"; 740 : For i=0 To 12 Step 2 : Line (i,160)-(i,157) : Next i : Locate 15,156 : Print "Predator"; 750 : X = 0 760 : KL = (P1 * P2) / TR 770 : FD = TR * YD 780 : If P1 = 0 Then B1 = 0: GoTo 800 790 : B1 = FD / P1 800 : If B1 > P1 / 4 Then B1 = P1 / 4 810 : B2 = 10 * KL / P2 820 : If B2 > P2 / 4 Then B2 = P2 / 4 830 : M1 = (P1 - B1) / L1 840 : M2 = (P2 - B2) / L2 850 : P1 = P1 - M1 - KL + B1 - CU 860 : P2 = P2 - M2 + B2 870 : If P1 < 0 Then P1 = 0 880 : If P2 < 0 Then P2 = 0 890 : Y = 159 - (.5 * P1) 900 : If Y < 0 Then Y = 0: If Y > 159 Then Y = 159 910 : If X = 0 Then GoTo 930 920 : Line (X+100 - 1, OY)-(X+100, Y) 930 : OY = Y 940 : Y = 159 - (.8 * P2) 950 : If Y > 1 And Y < 158 And Int(X / 2) = X / 2 Then Line (X+100, Y - 1)-(X+100, Y + 1) 960 : X = X + 1 970 : Locate 60,30 : Print TR; " "; 980 : Locate 60,45 : Print Int(P1); " "; 990 : Locate 60,60 : Print Int(P2); " "; 1000 : Locate 60,75 : Print YD; " "; 1010 : Locate 60,90 : Print CU; " " 1020 : Locate 60,105 : Print L1; " "; 1030 : Locate 60,120 : Print L2; " "; 1040 : If X <> YX Then GoTo 1160 1050 : Locate 0,187 1060 : Print "Year "; YR; " "; 1070 : On V GoTo 1080, 1090, 1100, 1110, 1120, 1130, 1140 1080 : Print "Territory "; TR; : TR = VL: GoTo 1150 1090 : Print "Prey Pop"; Int(P1); : P1 = VL: GoTo 1150 1100 : Print "Pred Pop "; Int(P2); : P2 = VL: GoTo 1150 1110 : Print "Yield "; YD; : YD = VL: GoTo 1150 1120 : Print "Prey Life "; L1; : L1 = VL: GoTo 1150 1130 : Print "Pred Life "; L2; : L2 = VL: GoTo 1150 1140 : Print "Cull "; CU; : CU = VL 1150 : Print " -> "; VL; " "; 1160 : Pause 50 1170 : If X < 200 Then GoTo 760 1180 : Locate 140,200 : Input "Press ENTER to continue "; A$ 1190 : GoTo 270 1200 : Cls 1210 : Print : Print 1220 : Print Tab(20); "Thanks for playing" 1230 : Print 1240 : Print Tab(20); "www.thebackshed.com" 1220 : End >