home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / vmsnet / ayo / part02 < prev    next >
Internet Message Format  |  1992-07-15  |  12KB

  1. Path: uunet!wupost!uwm.edu!ux1.cso.uiuc.edu!umn.edu!news.cs.indiana.edu!bsu-cs!bsu-ucs.uucp!00mjstum
  2. From: 00mjstum@bsu-ucs.uucp (Matthew J. Stum)
  3. Newsgroups: vmsnet.sources.games
  4. Subject: AYO, part 002 OF 002
  5. Message-ID: <1992Jul16.103609.8754@bsu-ucs.uucp>
  6. Date: 16 Jul 92 15:36:09 GMT
  7. Lines: 328
  8.  
  9. -+-+-+-+-+-+-+-+ START OF PART 2 -+-+-+-+-+-+-+-+
  10. X`09`09`09   end
  11. X`09`09`09  else
  12. X`09`09`09   begin
  13. X`09`09`09`09done:=true;
  14. X`09`09`09`09really_done:=true;
  15. X`09`09`09   end;
  16. X`09`09until done;
  17. X`09`09divy_up(comp_start);
  18. X`09`09if comp_start in `5B'a','m'`5D then really_done:=true;
  19. X`09`09if not really_done then
  20. X`09`09   begin
  21. X`09`09`09set_ownership;
  22. X`09`09`09init_pockets;
  23. X`09`09`09show_seeds;
  24. X`09`09`09hand:=0; comp:=0;
  25. X`09`09`09show_captured;
  26. X`09`09   end;
  27. X`09until really_done;
  28. X`09if comp_start='a' then
  29. X`09`09writeln(esc,'`5B20;33HYeah!  I won...')
  30. X`09   else
  31. X`09if comp_start='m' then
  32. X`09`09writeln(esc,'`5B20;30HGood Job!  You won...')
  33. X`09   else
  34. X`09`09writeln(esc,'`5B20;32HHave a nice day!');
  35. X`09writeln(esc,'`5B23;1HPress any key to continue...');
  36. X`09stat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  37. Xend;
  38. X
  39. Xprocedure get_game_info;
  40. Xbegin
  41. X`09writeln;
  42. X`09writeln('Difficulty Level: (1-3)');
  43. X`09writeln;
  44. X`09repeat
  45. X`09`09stat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  46. X`09until key in `5B'1','2','3'`5D;
  47. X`09difficulty_level:=(ord(key)-ord('0'))*2;
  48. X`09writeln;
  49. X`09writeln('Who goes first?');
  50. X`09writeln('  1) You');
  51. X`09writeln('  2) The computer');
  52. X`09writeln('  3) Flip for it');
  53. X`09writeln;
  54. X`09repeat
  55. X`09`09stat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  56. X`09until key in `5B'1','2','3'`5D;
  57. X`09case key of
  58. X`09`09'1': player:=p1;
  59. X`09`09'2': player:=p2;
  60. X`09`09'3': begin
  61. X`09`09`09for i:=23 downto 12 do
  62. X`09`09`09   begin
  63. X`09`09`09`09write(esc,'`5B',i:1,';40H');
  64. X`09`09`09`09case i mod 4 of
  65. X`09`09`09`09`090:writeln('\');
  66. X`09`09`09`09`091:writeln('-');
  67. X`09`09`09`09`092:writeln('/');
  68. X`09`09`09`09`093:writeln('`7C');
  69. X`09`09`09`09end;
  70. X`09`09`09`09writeln(esc,'`5B',i:1,';40H ');
  71. X`09`09`09   end;
  72. X`09`09`09writeln(esc,'`5B12;40H-');
  73. X`09`09`09writeln(esc,'`5B12;40H ');
  74. X`09`09`09writeln(esc,'`5B12;40H\');
  75. X`09`09`09writeln(esc,'`5B12;40H ');
  76. X`09`09`09writeln(esc,'`5B12;40H`7C');
  77. X`09`09`09writeln(esc,'`5B12;40H ');
  78. X`09`09`09writeln(esc,'`5B12;40H/');
  79. X`09`09`09writeln(esc,'`5B12;40H ');
  80. X`09`09`09for i:=12 to 23 do
  81. X`09`09`09   begin
  82. X`09`09`09`09write(esc,'`5B',i:1,';40H');
  83. X`09`09`09`09case i mod 4 of
  84. X`09`09`09`09`090:writeln('-');
  85. X`09`09`09`09`091:writeln('\');
  86. X`09`09`09`09`092:writeln('`7C');
  87. X`09`09`09`09`093:writeln('/');
  88. X`09`09`09`09end;
  89. X`09`09`09`09writeln(esc,'`5B',i:1,';40H ');
  90. X`09`09`09   end;
  91. X`09`09`09time(tm);
  92. X`09`09`09if odd(ord(tm`5B11`5D)) then
  93. X`09`09`09   begin
  94. X`09`09`09`09player:=p1;
  95. X`09`09`09`09writeln(esc,'`5B18;1HYou go first, press any key...');
  96. X`09`09`09   end
  97. X`09`09`09  else
  98. X`09`09`09   begin
  99. X`09`09`09`09player:=p2;
  100. X`09`09`09`09writeln(esc,'`5B18;1HThe computer goes first, press any key...')
  101. V;
  102. X`09`09`09   end;
  103. X`09`09`09stat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  104. X`09`09     end;
  105. X`09end;
  106. Xend;
  107. X
  108. Xprocedure background_rules;
  109. Xbegin
  110. Xwrite(esc,'`5B2J',esc,'`5B1;1H');
  111. Xwriteln('                                   Ayo');
  112. Xwriteln;
  113. Xwriteln('                          A West African Board Game');
  114. Xwriteln;
  115. Xwriteln;
  116. Xwriteln('`09Ayo is one version of a type of game played widely in Africa and
  117. V Asia. ');
  118. Xwriteln('It goes under different names in different places and even has wide
  119. Vly different');
  120. Xwriteln('board configurations and rules, but the versions all share the feat
  121. Vures and');
  122. Xwriteln('general strategies of moving numbers of seeds along pockets to capt
  123. Vure seeds');
  124. Xwriteln('and, ultimately, pockets.  The version presented here is the one fo
  125. Vund among');
  126. Xwriteln('the Yoruba (pronounced YO-roo-bah, accent on the first syllable) of
  127. V');
  128. Xwriteln('southwestern Nigeria, in West Africa.  ');
  129. Xwriteln(esc,'`5B23;1HPress any key to continue...');
  130. Xstat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  131. Xwrite(esc,'`5B2J',esc,'`5B1;1H');
  132. Xwriteln('                                   Ayo');
  133. Xwriteln;
  134. Xwriteln('                          A West African Board Game');
  135. Xwriteln;
  136. Xwriteln;
  137. Xwriteln('`09The game consists of a game board and 48 hard, round, greyish se
  138. Veds. ');
  139. Xwriteln('The seeds are about the size of marbles, and the board is usually c
  140. Varved from a');
  141. Xwriteln('piece of pale hardwood called iroko.  (The iroko is a tall rain-for
  142. Vest hardwood');
  143. Xwriteln('with flying buttress roots.)  The board usually measures about six
  144. V inches by');
  145. Xwriteln('twenty inches and has two rows of six pockets carved into it.  The
  146. V pockets are');
  147. Xwriteln('about two and a half inches in diameter and an inch deep.  The game
  148. Vboard is');
  149. Xwriteln('about an inch and a half thick and may be carved with traditional d
  150. Vecorative');
  151. Xwriteln('figures.');
  152. Xwriteln(esc,'`5B23;1HPress any key to continue...');
  153. Xstat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  154. Xwrite(esc,'`5B2J',esc,'`5B1;1H');
  155. Xwriteln('                                   Ayo');
  156. Xwriteln;
  157. Xwriteln('                          A West African Board Game');
  158. Xwriteln;
  159. Xwriteln;
  160. Xwriteln('`09Two players play the game, taking turns moving seeds countercloc
  161. Vkwise');
  162. Xwriteln('from their own sides of the board.  To make a move, a player takes
  163. V all the');
  164. Xwriteln('seeds out of one pocket and deposits them one by one in the pockets
  165. V to the');
  166. Xwriteln('right, beginning with the immediately adjacent pocket.  If the last
  167. V seed played');
  168. Xwriteln('in a player''s turn lands in a pocket that then contains two or thr
  169. Vee seeds, the');
  170. Xwriteln('player captures those seeds and removes them from the board.  The p
  171. Vlayer also');
  172. Xwriteln('captures the seeds in any leftward adjacent pockets that contain tw
  173. Vo or three.  ');
  174. Xwriteln('The round ends when one player can no longer make a play, whether b
  175. Vecause no');
  176. Xwriteln('seeds are left at all or none are left on his (among the Yoruba, on
  177. Vly men play');
  178. Xwriteln('the game) side.  Both players then put their captured seeds back in
  179. V the');
  180. Xwriteln('pockets, four to a pocket, both starting from the same end of board
  181. V.  In the');
  182. Xwriteln('next round, each player plays from those pockets that he has filled
  183. V with at ');
  184. Xwriteln('least three seeds at the end of the previous round.  The rounds pro
  185. Vceed in this');
  186. Xwriteln('way until one player has captured all of the pockets.  A player may
  187. V play only');
  188. Xwriteln('from his own pockets but may capture from either side.');
  189. Xwriteln(esc,'`5B23;1HPress any key to continue...');
  190. Xstat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  191. Xwrite(esc,'`5B2J',esc,'`5B1;1H');
  192. Xwriteln('                                   Ayo');
  193. Xwriteln;
  194. Xwriteln('                          A West African Board Game');
  195. Xwriteln;
  196. Xwriteln;
  197. Xwriteln('`09Skilled players often use the strategy of holding a number of th
  198. Ve seeds');
  199. Xwriteln('from one of their pockets in the left hand so that the opponent can
  200. Vnot tell how');
  201. Xwriteln('many seeds are in that pocket.  They can do this only with one pock
  202. Vet at a');
  203. Xwriteln('time, but they can change the number of seeds from that pocket that
  204. V they');
  205. Xwriteln('conceal whenever they wish, and they can also completely change the
  206. V pocket they');
  207. Xwriteln('are concealing from by replacing all of the seeds in the first pock
  208. Vet they had');
  209. Xwriteln('chosen and removing a number of seeds from another pocket.  The pla
  210. Vyer');
  211. Xwriteln('concealing some seeds must always leave at least three seeds in a p
  212. Vocket so');
  213. Xwriteln('that the pocket does not appear to be capturable.');
  214. Xwriteln(esc,'`5B23;1HPress any key to continue...');
  215. Xstat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  216. Xwrite(esc,'`5B2J',esc,'`5B1;1H');
  217. Xwriteln('                                   Ayo');
  218. Xwriteln;
  219. Xwriteln('                          A West African Board Game');
  220. Xwriteln;
  221. Xwriteln;
  222. Xwriteln('`09Yoruba men play this game from childhood and become highly skill
  223. Ved at');
  224. Xwriteln('it.  They play at such speed that they appear not to think at all,
  225. V but a slow');
  226. Xwriteln('player is criticized and often ridiculed.  A skilled Ayo player is
  227. V highly');
  228. Xwriteln('respected for his skill, so much so that there is even a Yoruba say
  229. Ving that');
  230. Xwriteln('translates as "As brave as an Ayo player." ');
  231. Xwriteln(esc,'`5B23;1HPress any key to continue...');
  232. Xstat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  233. Xend;
  234. X
  235. Xprocedure instructions;
  236. Xbegin
  237. Xwrite(esc,'`5B2J',esc,'`5B1;1H');
  238. Xwriteln('                                       Ayo');
  239. Xwriteln;
  240. Xwriteln('                              The Computer Version');
  241. Xwriteln;
  242. Xwriteln('`09If you have read the "Background notes and rules" at the main me
  243. Vnu');
  244. Xwriteln('of this program, then playing Ayo vs. the computer should not be di
  245. Vfficult.');
  246. Xwriteln('When you play Ayo, you will see 12 boxes that look like this:  /---
  247. V-\');
  248. Xwriteln('                                                               `7C
  249. V    `7C');
  250. Xwriteln('                                                               \---
  251. V-/');
  252. Xwriteln('These boxes represent the pockets.  Inside the boxes will be a numb
  253. Ver.  This');
  254. Xwriteln('represents the number of seeds lying in the pocket.');
  255. Xwriteln(esc,'`5B23;1HPress any key to continue...');
  256. Xstat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  257. Xwrite(esc,'`5B2J',esc,'`5B1;1H');
  258. Xwriteln('                                       Ayo');
  259. Xwriteln;
  260. Xwriteln('                              The Computer Version');
  261. Xwriteln;
  262. Xwriteln('`09Along the outside of the two rows of pockets are the letters ''A
  263. V'' through');
  264. Xwriteln('''L''.  These are there to help you tell the computer which pocket
  265. V you wish to');
  266. Xwriteln('play from.  When it is your turn to play (when you don''t see the w
  267. Vord');
  268. Xwriteln('"Thinking..." on the screen) you just simply press the letter corre
  269. Vsponding to');
  270. Xwriteln('the pocket you wish to remove the seeds from and the computer will
  271. V automatically');
  272. Xwriteln('distribute them, make any captures if possible, and start thinking
  273. V about its own');
  274. Xwriteln('next move.  Remember, you can only play from a pocket that you own.
  275. V  The pockets');
  276. Xwriteln('that you own will be indicated by highlighting the number of the se
  277. Veds in the');
  278. Xwriteln('pocket with reverse video.');
  279. Xwriteln(esc,'`5B23;1HPress any key to continue...');
  280. Xstat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  281. Xwrite(esc,'`5B2J',esc,'`5B1;1H');
  282. Xwriteln('                                       Ayo');
  283. Xwriteln;
  284. Xwriteln('                              The Computer Version');
  285. Xwriteln;
  286. Xwriteln('`09Once either you or the computer can no longer move, the computer
  287. V will');
  288. Xwriteln('automatically re-distribute the seeds in the pockets, re-mark which
  289. V pockets you');
  290. Xwriteln('own, and will begin play again.  Play ends when either you or the c
  291. Vomputer has');
  292. Xwriteln('captured enough seeds to own all of the pockets.  It''s as simple a
  293. Vs that...');
  294. Xwriteln(esc,'`5B23;1HPress any key to continue...');
  295. Xstat:=$qiow(chan:=iochan,func:=func,p1:=key,p2:=1);
  296. Xend;
  297. X
  298. Xbegin
  299. X`09stat:=$assign('TT:',iochan);
  300. X`09logging:=false;
  301. Xrepeat
  302. X`09writeln(esc,'`5B2J',esc,'`5B1;1H');
  303. X`09writeln('Welcome to Ayo...');
  304. X`09writeln;
  305. X`09writeln('0) Quit.');
  306. X`09writeln('1) Background notes and rules. (Provided by H. F. Stahlke... tha
  307. Vnx!)');
  308. X`09writeln('2) Instructions for using this computer version.');
  309. X`09writeln('3) Play Ayo.');
  310. X`09writeln;
  311. X`09repeat
  312. X`09`09stat:=$qiow(chan:=iochan,func:=func,p1:=choice,p2:=1);
  313. X`09until choice in `5B'0','1','2','3','l','L'`5D;
  314. X`09if choice in `5B'l','L'`5D then
  315. X`09   begin
  316. X`09`09choice:='3';
  317. X`09`09logging:=true;
  318. X`09`09writeln('Logging has been turned on...');
  319. X`09   end;
  320. X`09case choice of
  321. X`09  '1':background_rules;
  322. X`09  '2':instructions;
  323. X`09  '3':begin
  324. X`09`09get_game_info;
  325. X`09`09play_the_game;
  326. X`09`09logging:=false;
  327. X`09      end;
  328. X`09end; (*case*)
  329. Xuntil choice='0';
  330. Xend.
  331. $ CALL UNPACK AYO.PAS;3 387232624
  332. $ v=f$verify(v)
  333. $ EXIT
  334. -- 
  335. Matt Stum                    Gwydion ap Myrddin       Ball State University
  336. 00mjstum@leo.bsuvc.bsu.edu   Shire of Afonlyn, MK     Muncie, IN  USA
  337.