1 #define minusminus plusplus 2 #define minusplus plusminus 3 4 main() 5 { 6 /* Set up */ 7 8 openpl(); 9 space(-1400, -1000, 1200, 1200); 10 11 /* Big box */ 12 13 move(-1400, -1000); 14 cont(-1400, 1000); 15 cont(600, 1000); 16 cont(600, -1000); 17 cont(-1400, -1000); 18 19 /* Grid -- horizontal lines every 200 */ 20 21 linemod("dotted"); 22 line(600, -800, -1400, -800); 23 line(-1400, -600, 600, -600); 24 line(600, -400, -1400, -400); 25 line(-1400, -200, 600, -200); 26 linemod("solid"); 27 line(600, 0, -1400, 0); 28 linemod("dotted"); 29 line(-1400, 200, 600, 200); 30 line(600, 400, -1400, 400); 31 line(-1400, 600, 600, 600); 32 line(600, 800, -1400, 800); 33 34 /* Grid -- vertical lines every 200 */ 35 36 line(-1200, 1000, -1200, -1000); 37 line(-1000, 1000, -1000, -1000); 38 line(-800, 1000, -800, -1000); 39 line(-600, 1000, -600, -1000); 40 linemod("solid"); 41 line(-400, 1000, -400, -1000); 42 linemod("dotted"); 43 line(-200, 1000, -200, -1000); 44 line(0, 1000, 0, -1000); 45 line(200, 1000, 200, -1000); 46 line(400, 1000, 400, -1000); 47 48 /* Circles radius +250 on "center" */ 49 50 linemod("solid"); 51 circle(-400, 0, 250); 52 circle(-400, 0, 500); 53 circle(-400, 0, 750); 54 circle(-400, 0, 1000); 55 56 /* A few labels */ 57 58 move(-670, 1075); 59 label("- THE PHANTASIA UNIVERSE -"); 60 line(-630, 1045, -115, 1045); 61 move(-360, 80); 62 label("Lorien"); 63 move(-385, -100); 64 label("Ithilien"); 65 move(-560, 80); 66 label("Rohan"); 67 move(-580, -100); 68 label("Anorien"); 69 plusplus("Rovanion", -250, 320); 70 plusplus("The Iron Hills", -100, 560); 71 plusplus("Rhun", 250, 570); 72 minusplus("Dunland", -700, 160); 73 minusplus("Eriador", -920, 300); 74 minusplus("The Northern Waste", -1240, 320); 75 minusminus("Gondor", -720, -180); 76 minusminus("South Gondor", -940, -270); 77 minusminus("Far Harad", -1100, -500); 78 plusminus("Mordor", -180, -300); 79 plusminus("Khand", 0, -500); 80 plusminus("Near Harad", 40, -780); 81 move(340, 900); 82 label("The Moors"); 83 move(300, 840); 84 label("Adventurous"); 85 move(340, -840); 86 label("The Moors"); 87 move(300, -900); 88 label("Adventurous"); 89 move(-1340, 900); 90 label("The Moors"); 91 move(-1340, 840); 92 label("Adventurous"); 93 move(-1340, -840); 94 label("The Moors"); 95 move(-1340, -900); 96 label("Adventurous"); 97 move(700, 1000); 98 label("OUTER CIRCLES:"); 99 line(690, 970, 1000, 970); 100 move(700, 900); 101 label("> 9: The Outer Waste"); 102 move(700, 800); 103 label("> 20: The Dead Marshes"); 104 move(700, 700); 105 label("> 35: Kennaquhair"); 106 move(700, 600); 107 label("> 55: Morannon"); 108 move(700, 300); 109 label("(0,0): The Lord's Chamber"); 110 111 move(700, -400); 112 label("Grid squares are 100 x 100"); 113 move(700, -800); 114 label("Created by Ted Estes"); 115 move(700, -860); 116 label("Plotted by Chris Robertson"); 117 move(700, -920); 118 label(" c 1985"); 119 circle(723, -923, 20); 120 121 /* Close down */ 122 123 move(-1380, 1180); 124 closepl(); 125 exit(0); 126 } 127 128 plusplus(s, x, y) /* draw strings in plus plus quadrant */ 129 char *s; 130 int x, y; 131 { 132 char s1[2]; 133 134 while (*s) 135 { 136 move(x, y); 137 s1[0] = *s++; 138 s1[1] = '\0'; 139 label(s1); 140 x += 25; 141 y -= 30; 142 } 143 } 144 145 plusminus(s, x, y) /* draw strings in plus minus quadrant */ 146 char *s; 147 int x, y; 148 { 149 char s1[2]; 150 151 while (*s) 152 { 153 move(x, y); 154 s1[0] = *s++; 155 s1[1] = '\0'; 156 label(s1); 157 x += 25; 158 y += 30; 159 } 160 } 161