home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / OPENSTEP / Games / NeXTGo-3.0-MIS / patterns.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-06  |  6.5 KB  |  359 lines

  1. #include "comment.header"
  2.  
  3. /* $Id: patterns.c,v 1.2 1997/07/06 19:35:04 ergo Exp $ */
  4.  
  5. /*
  6.  * $Log: patterns.c,v $
  7.  * Revision 1.2  1997/07/06 19:35:04  ergo
  8.  * actual version
  9.  *
  10.  * Revision 1.1.1.1  1997/05/04 16:40:41  ergo
  11.  * John Neil's original sources
  12.  *
  13.  */
  14.  
  15. #define EMPTY 0
  16. #define PATNO 24
  17.  
  18. /* pattern x, y coor and attribute */
  19. /* for each pattern coordinate 0,0 must have my piece */
  20. /* att = 0 - empty, 1 - your piece, 2 - my piece, 3 - my next move */
  21. /* 4 - empty on edge, 5 - your piece on edge, 6 - my piece on edge */
  22. /*
  23.   struct patval {int x, y, att;};
  24.   */
  25.  
  26. /* patn - patern */
  27. /* patlen - no. of pieces in pattern */
  28. /* trfno - no. of transformation to match pattern */
  29. /*       8 for normal pattern, 4 for symmetrical pattern */
  30. /* patwt - pattern value */
  31. /*
  32.   struct pattern {
  33.   struct patval patn[MAXPC];
  34.   int patlen, trfno, patwt;
  35.   };
  36.   */
  37. static struct pattern pat[PATNO] = {
  38.   /*
  39.     pattern 0: 232   connect if invaded
  40.     010
  41.     */
  42.   {{{0, 0, 2},
  43.       {0, 1, EMPTY},
  44.       {1, 0, 3},
  45.       {1, 1, 1},
  46.       {2, 0, 2},
  47.       {2, 1, EMPTY}}, 6, 4, 82},
  48.   /*
  49.     pattern 1: 230   connect if invaded
  50.     012
  51.     */
  52.   {{{0, 0, 2},
  53.       {0, 1, EMPTY},
  54.       {1, 0, 3},
  55.       {1, 1, 1},
  56.       {2, 0, EMPTY},
  57.       {2, 1, 2}}, 6, 8, 82},
  58.   /*
  59.     pattern 2: 212   try to attack
  60.     030
  61.     */
  62.   {{{0, 0, 2},
  63.       {0, 1, EMPTY},
  64.       {1, 0, 1},
  65.       {1, 1, 3},
  66.       {2, 0, 2},
  67.       {2, 1, EMPTY}}, 6, 4, 82},
  68.   /*
  69.     pattern 3: 2302   connect if invaded
  70.     0100
  71.     */
  72.   {{{0, 0, 2},
  73.       {0, 1, EMPTY},
  74.       {1, 0, 3},
  75.       {1, 1, 1},
  76.       {2, 0, EMPTY},
  77.       {2, 1, EMPTY},
  78.       {3, 0, 2},
  79.       {3, 1, EMPTY}},8, 8, 83},
  80.   /*
  81.     pattern 4: 20302   connect if invaded
  82.     00100
  83.     */
  84.   {{{0, 0, 2},
  85.       {0, 1, EMPTY},
  86.       {1, 0, EMPTY},
  87.       {1, 1, EMPTY},
  88.       {2, 0, 3},
  89.       {2, 1, 1},
  90.       {3, 0, EMPTY},
  91.       {3, 1, EMPTY},
  92.       {4, 0, 2},
  93.       {4, 1, EMPTY}}, 10, 4, 84},
  94.   /*
  95.     pattern 5: 203   form eye to protect
  96.     021
  97.     */
  98.   {{{0, 0, 2},
  99.       {0, 1, EMPTY},
  100.       {1, 0, EMPTY},
  101.       {1, 1, 2},
  102.       {2, 0, 3},
  103.       {2, 1, 1}}, 6, 8, 82},
  104.   /*
  105.     pattern 6: 202    form eye to protect
  106.     031
  107.     */
  108.   {{{0, 0, 2},
  109.       {0, 1, EMPTY},
  110.       {1, 0, EMPTY},
  111.       {1, 1, 3},
  112.       {2, 0, 2},
  113.       {2, 1, 1}}, 6, 8, 82},
  114.   /*
  115.     pattern 7: 230   connect if invaded
  116.     102
  117.     */
  118.   {{{0, 0, 2},
  119.       {0, 1, 1},
  120.       {1, 0, 3},
  121.       {1, 1, EMPTY},
  122.       {2, 0, EMPTY},
  123.       {2, 1, 2}}, 6, 8, 82},
  124.   /*
  125.     pattern 8: 200000
  126.     00030  extend
  127.     00000
  128.     */
  129.   {{{0, 0, 2},
  130.       {1, 0, EMPTY},
  131.       {2, 0, EMPTY},
  132.       {3, 0, EMPTY},
  133.       {4, 0, EMPTY},
  134.       {5, 0, EMPTY},
  135.       {1, 1, EMPTY},
  136.       {2, 1, EMPTY},
  137.       {3, 1, EMPTY},
  138.       {4, 1, 3},
  139.       {5, 1, EMPTY},
  140.       {1, 2, EMPTY},
  141.       {2, 2, EMPTY},
  142.       {3, 2, EMPTY},
  143.       {4, 2, EMPTY},
  144.       {5, 2, EMPTY}}, 16, 8, 80},
  145.   /*
  146.     pattern 9:  2
  147.     000
  148.     000  extend
  149.     000
  150.     030
  151.     000
  152.     */
  153.   {{{ 0, 0, 2},
  154.       {-1, 1, EMPTY},
  155.       { 0, 1, EMPTY},
  156.       { 1, 1, EMPTY},
  157.       {-1, 2, EMPTY},
  158.       { 0, 2, EMPTY},
  159.       { 1, 2, EMPTY},
  160.       {-1, 3, EMPTY},
  161.       { 0, 3, EMPTY},
  162.       { 1, 3, EMPTY},
  163.       {-1, 4, EMPTY},
  164.       { 0, 4, 3},
  165.       { 1, 4, EMPTY},
  166.       {-1, 5, EMPTY},
  167.       { 0, 5, EMPTY},
  168.       { 1, 5, EMPTY}}, 16, 4, 80},
  169.   /*
  170.     pattern 10: 20000
  171.     0030  extend
  172.     0000
  173.     */
  174.   {{{0, 0, 2},
  175.       {1, 0, EMPTY},
  176.       {2, 0, EMPTY},
  177.       {3, 0, EMPTY},
  178.       {4, 0, EMPTY},
  179.       {1, 1, EMPTY},
  180.       {2, 1, EMPTY},
  181.       {3, 1, 3},
  182.       {4, 1, EMPTY},
  183.       {1, 2, EMPTY},
  184.       {2, 2, EMPTY},
  185.       {3, 2, EMPTY},
  186.       {4, 2, EMPTY}}, 13, 8, 79},
  187.   /*
  188.     pattern 11:    2
  189.     000
  190.     000  extend
  191.     030
  192.     000
  193.     */
  194.   {{{ 0, 0, 2},
  195.       {-1, 1, EMPTY},
  196.       { 0, 1, EMPTY},
  197.       { 1, 1, EMPTY},
  198.       {-1, 2, EMPTY},
  199.       { 0, 2, EMPTY},
  200.       { 1, 2, EMPTY},
  201.       {-1, 3, EMPTY},
  202.       { 0, 3, 3},
  203.       { 1, 3, EMPTY},
  204.       {-1, 4, EMPTY},
  205.       { 0, 4, EMPTY},
  206.       { 1, 4, EMPTY}}, 13, 4, 79},
  207.   /*
  208.     pattern 12: 2000
  209.     030  extend
  210.     000
  211.     */
  212.   {{{0, 0, 2},
  213.       {1, 0, EMPTY},
  214.       {2, 0, EMPTY},
  215.       {3, 0, EMPTY},
  216.       {1, 1, EMPTY},
  217.       {2, 1, 3},
  218.       {3, 1, EMPTY},
  219.       {1, 2, EMPTY},
  220.       {2, 2, EMPTY},
  221.       {3, 2, EMPTY}}, 10, 8, 76},
  222.   /*
  223.     pattern 13:    2
  224.     000  extend
  225.     030
  226.     000
  227.     */
  228.   {{{ 0, 0, 2},
  229.       {-1, 1, EMPTY},
  230.       { 0, 1, EMPTY},
  231.       { 1, 1, EMPTY},
  232.       {-1, 2, EMPTY},
  233.       { 0, 2, 3},
  234.       { 1, 2, EMPTY},
  235.       {-1, 3, EMPTY},
  236.       { 0, 3, EMPTY},
  237.       { 1, 3, EMPTY}}, 10, 4, 76},
  238.   /*
  239.     pattern 14: 643   form eye on the edge
  240.     20
  241.     */
  242.   {{{0, 0, 6},
  243.       {1, 0, 4},
  244.       {1, 1, 2},
  245.       {2, 0, 3},
  246.       {2, 1, EMPTY}}, 5, 8, 80},
  247.   /*
  248.     pattern 15: 646    solidify eye on the edge
  249.     231
  250.     */
  251.   {{{0, 0, 6},
  252.       {1, 0, 4},
  253.       {1, 1, 2},
  254.       {2, 0, 6},
  255.       {2, 1, 3},
  256.       {3, 1, 1}}, 6, 8, 75},
  257.   /*
  258.     pattern 16: 646    solidify eye on the edge
  259.     230
  260.     1
  261.     */
  262.   {{{0, 0, 6},
  263.       {1, 0, 4},
  264.       {1, 1, 2},
  265.       {2, 0, 6},
  266.       {2, 1, 3},
  267.       {2, 2, 1},
  268.       {3, 1, EMPTY}}, 7, 8, 75},
  269.   /*
  270.     pattern 17: 646    solidify eye on the edge
  271.     230
  272.     0
  273.     */
  274.   {{{0, 0, 6},
  275.       {1, 0, 4},
  276.       {1, 1, 2},
  277.       {2, 0, 6},
  278.       {2, 1, 3},
  279.       {2, 2, EMPTY},
  280.       {3, 1, EMPTY}}, 7, 8, 75},
  281.   /*
  282.     pattern 18:    2       form eye on center
  283.     202
  284.     3
  285.     */
  286.   {{{0, 0, 2},
  287.       {-1, 1, 2},
  288.       {0, 1, EMPTY},
  289.       {1, 1, 2},
  290.       {0, 2, 3}}, 5, 4, 80},
  291.   /*
  292.     pattern 19:    2       solidify eye on center
  293.     202
  294.     231
  295.     */
  296.   {{{0, 0, 2},
  297.       {-1, 1, 2},
  298.       {0, 1, EMPTY},
  299.       {1, 1, 2},
  300.       {0, 2, 2},
  301.       {1, 2, 3},
  302.       {2, 2, 1}}, 7, 8, 75},
  303.   /*
  304.     pattern 20:    2       solidify eye on center
  305.     202
  306.     230
  307.     0
  308.     */
  309.   {{{0, 0, 2},
  310.       {-1, 1, 2},
  311.       {0, 1, EMPTY},
  312.       {1, 1, 2},
  313.       {0, 2, 2},
  314.       {1, 2, 3},
  315.       {2, 2, EMPTY},
  316.       {1, 3, EMPTY}}, 8, 8, 75},
  317.   /*
  318.     pattern 21:    2      solidify eye on center
  319.     202
  320.     230
  321.     1
  322.     */
  323.   {{{0, 0, 2},
  324.       {-1, 1, 2},
  325.       {0, 1, EMPTY},
  326.       {1, 1, 2},
  327.       {0, 2, 2},
  328.       {1, 2, 3},
  329.       {2, 2, EMPTY},
  330.       {1, 3, 1}}, 8, 8, 75},
  331.   /*
  332.     pattern 23: 20100     connect if invaded
  333.     00302
  334.     */
  335.   {{{0, 0, 2},
  336.       {0, 1, EMPTY},
  337.       {1, 0, EMPTY},
  338.       {1, 1, EMPTY},
  339.       {2, 0, 1},
  340.       {2, 1, 3},
  341.       {3, 0, EMPTY},
  342.       {3, 1, EMPTY},
  343.       {4, 0, EMPTY},
  344.       {4, 1, 2}}, 10, 8, 84},
  345.   /*
  346.     pattern 24: 2100    connect if invaded
  347.     0302
  348.     */
  349.   {{{0, 0, 2},
  350.       {0, 1, EMPTY},
  351.       {1, 0, 1},
  352.       {1, 1, 3},
  353.       {2, 0, EMPTY},
  354.       {2, 1, EMPTY},
  355.       {3, 0, EMPTY},
  356.       {3, 1, 2}}, 10, 8, 83}
  357. };
  358. /* end patterns */
  359.