home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / qt3_emx.zip / examples / life / patterns.cpp < prev   
Text File  |  2001-10-11  |  8KB  |  385 lines

  1. /****************************************************************************
  2. ** $Id:  qt/patterns.cpp   3.0.0   edited Jun 22 13:24 $
  3. **
  4. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  5. **
  6. ** This file is part of an example program for Qt.  This example
  7. ** program may be used, distributed and modified without limitation.
  8. **
  9. *****************************************************************************/
  10.  
  11. /****************************************************************************
  12.  *
  13.  * Patterns for life. Adapted from xlock; original copyright notice below.
  14.  *
  15.  * Copyright (c) 1988-91 by Patrick J. Naughton.
  16.  *
  17.  * Permission to use, copy, modify, and distribute this software and its
  18.  * documentation for any purpose and without fee is hereby granted,
  19.  * provided that the above copyright notice appear in all copies and that
  20.  * both that copyright notice and this permission notice appear in
  21.  * supporting documentation.
  22.  *
  23.  * This file is provided AS IS with no warranties of any kind.    The author
  24.  * shall have no liability with respect to the infringement of copyrights,
  25.  * trade secrets or any patents by this file or any part thereof.  In no
  26.  * event will the author be liable for any lost revenue or profits or
  27.  * other special, indirect and consequential damages.
  28.  *****************************************************************************/
  29.  
  30. //#include <qglobal.h>
  31.  
  32.  
  33. #define NUMPTS    63
  34. /* Patterns have < NUMPTS pts (and should have a size of <= 32x32,
  35.    the Gun is an exception) */
  36. static int  patterns[][2 * NUMPTS + 1] = {
  37.     {                /* GLIDER GUN */
  38.     6, -4,
  39.     5, -3, 6, -3,
  40.     -6, -2, -5, -2, 8, -2, 9, -2, 16, -2,
  41.     -7, -1, 8, -1, 9, -1, 10, -1, 16, -1, 17, -1,
  42.     -18, 0, -17, 0, -8, 0, 8, 0, 9, 1,
  43.     -17, 1, -8, 1, 5, 1, 6, 1,
  44.     -8, 2, 6, 2,
  45.     -7, 3,
  46.     -6, 4, -5, 4,
  47.     127
  48.     },
  49.     {                /* FIGURE EIGHT */
  50.     -3, -3, -2, -3, -1, -3,
  51.     -3, -2, -2, -2, -1, -2,
  52.     -3, -1, -2, -1, -1, -1,
  53.     0, 0, 1, 0, 2, 0,
  54.     0, 1, 1, 1, 2, 1,
  55.     0, 2, 1, 2, 2, 2,
  56.     127
  57.     },
  58.     {                /* PULSAR */
  59.     -2, -1, -1, -1, 0, -1, 1, -1, 2, -1,
  60.     -2, 0, 2, 0,
  61.     127
  62.     },
  63.     {                /* BARBER POLE P2 */
  64.     -6, -6, -5, -6,
  65.     -6, -5, -4, -5,
  66.     -4, -3, -2, -3,
  67.     -2, -1, 0, -1,
  68.     0, 1, 2, 1,
  69.     2, 3, 4, 3,
  70.     5, 4,
  71.     4, 5, 5, 5,
  72.     127
  73.     },
  74.     {                /* ACHIM P5 */
  75.     -6, -6, -5, -6,
  76.     -6, -5,
  77.     -4, -4,
  78.     -4, -3, -2, -3,
  79.     -2, -1, 0, -1,
  80.     0, 1, 2, 1,
  81.     2, 3, 3, 3,
  82.     5, 4,
  83.     4, 5, 5, 5,
  84.     127
  85.     },
  86.     {                /* HERTZ P4 */
  87.     -2, -5, -1, -5,
  88.     -2, -4, -1, -4,
  89.     -7, -2, -6, -2, -2, -2, -1, -2, 0, -2, 1, -2, 5, -2, 6, -2,
  90.     -7, -1, -5, -1, -3, -1, 2, -1, 4, -1, 6, -1,
  91.     -5, 0, -3, 0, -2, 0, 2, 0, 4, 0,
  92.     -7, 1, -5, 1, -3, 1, 2, 1, 4, 1, 6, 1,
  93.     -7, 2, -6, 2, -2, 2, -1, 2, 0, 2, 1, 2, 5, 2, 6, 2,
  94.     -2, 4, -1, 4,
  95.     -2, 5, -1, 5,
  96.     127
  97.     },
  98.     {                /* TUMBLER */
  99.     -2, -3, -1, -3, 1, -3, 2, -3,
  100.     -2, -2, -1, -2, 1, -2, 2, -2,
  101.     -1, -1, 1, -1,
  102.     -3, 0, -1, 0, 1, 0, 3, 0,
  103.     -3, 1, -1, 1, 1, 1, 3, 1,
  104.     -3, 2, -2, 2, 2, 2, 3, 2,
  105.     127
  106.     },
  107.     {                /* PULSE1 P4*/
  108.     0, -3, 1, -3,
  109.     -2, -2, 0, -2,
  110.     -3, -1, 3, -1,
  111.     -2, 0, 2, 0, 3, 0,
  112.     0, 2, 2, 2,
  113.     1, 3,
  114.     127
  115.     },
  116.     {                /* SHINING FLOWER P5 */
  117.     -1, -4, 0, -4,
  118.     -2, -3, 1, -3,
  119.     -3, -2, 2, -2,
  120.     -4, -1, 3, -1,
  121.     -4, 0, 3, 0,
  122.     -3, 1, 2, 1,
  123.     -2, 2, 1, 2,
  124.     -1, 3, 0, 3,
  125.     127
  126.     },
  127.     {                /* PULSE2 P6 */
  128.     0, -4, 1, -4,
  129.     -4, -3, -3, -3, -1, -3,
  130.     -4, -2, -3, -2, 0, -2, 3, -2,
  131.     1, -1, 3, -1,
  132.     2, 0,
  133.     1, 2, 2, 2,
  134.     1, 3, 2, 3,
  135.     127
  136.     },
  137.     {                /* PINWHEEL, CLOCK P4 */
  138.     -2, -6, -1, -6,
  139.     -2, -5, -1, -5,
  140.     -2, -3, -1, -3, 0, -3, 1, -3,
  141.     -3, -2, -1, -2, 2, -2, 4, -2, 5, -2,
  142.     -3, -1, 1, -1, 2, -1, 4, -1, 5, -1,
  143.     -6, 0, -5, 0, -3, 0, 0, 0, 2, 0,
  144.     -6, 1, -5, 1, -3, 1, 2, 1,
  145.     -2, 2, -1, 2, 0, 2, 1, 2,
  146.     0, 4, 1, 4,
  147.     0, 5, 1, 5,
  148.     127
  149.     },
  150.     {                /* PENTADECATHOLON */
  151.     -5, 0, -4, 0, -3, 0, -2, 0, -1, 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0,
  152.     127
  153.     },
  154.     {                /* PISTON */
  155.     1, -3, 2, -3,
  156.     0, -2,
  157.     -10, -1, -1, -1,
  158.     -11, 0, -10, 0, -1, 0,    9, 0, 10, 0,
  159.     -1, 1, 9, 1,
  160.     0, 2,
  161.     1, 3, 2, 3,
  162.     127
  163.     },
  164.     {                /* PISTON2 */
  165.        -3, -5,
  166.        -14, -4, -13, -4, -4, -4, -3, -4, 13, -4, 14, -4,
  167.        -14, -3, -13, -3, -5, -3, -4, -3, 13, -3, 14, -3,
  168.        -4, -2, -3, -2, 0, -2, 1, -2,
  169.        -4,  2, -3, 2, 0, 2, 1, 2,
  170.        -14, 3, -13, 3, -5, 3, -4, 3, 13, 3, 14, 3,
  171.        -14, 4, -13, 4, -4, 4, -3, 4, 13, 4, 14, 4,
  172.        -3, 5,
  173.     127
  174.     },
  175.     {                /* SWITCH ENGINE */
  176.     -12, -3, -10, -3,
  177.     -13, -2,
  178.     -12, -1, -9, -1,
  179.     -10, 0, -9,  0, -8,  0,
  180.     13, 2, 14,  2,
  181.     13, 3,
  182.     127
  183.     },
  184.     {                /* GEARS (gear, flywheel, blinker) */
  185.     -1, -4,
  186.     -1, -3, 1, -3,
  187.     -3, -2,
  188.     2, -1, 3, -1,
  189.     -4, 0, -3, 0,
  190.     2, 1,
  191.     -2, 2, 0, 2,
  192.     0, 3,
  193.  
  194.     5, 3,
  195.     3, 4, 4, 4,
  196.     5, 5, 6, 5,
  197.     4, 6,
  198.  
  199.     8, 0,
  200.     8, 1,
  201.     8, 2,
  202.     127
  203.     },
  204.     {                /* TURBINE8 */
  205.     -4, -4, -3, -4, -2, -4, -1, -4, 0, -4, 1, -4, 3, -4, 4, -4,
  206.     -4, -3, -3, -3, -2, -3, -1, -3, 0, -3, 1, -3, 3, -3, 4, -3,
  207.     3, -2, 4, -2,
  208.     -4, -1, -3, -1, 3, -1, 4, -1,
  209.     -4, 0, -3, 0, 3, 0, 4, 0,
  210.     -4, 1, -3, 1, 3, 1, 4, 1,
  211.     -4, 2, -3, 2,
  212.     -4, 3, -3, 3, -1, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3,
  213.     -4, 4, -3, 4, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4,
  214.     127
  215.     },
  216.     {                 /* P16 */
  217.     -3, -6, 1, -6, 2, -6,
  218.     -3, -5, 0, -5, 3, -5,
  219.     3, -4,
  220.     -5, -3, -4, -3, 1, -3, 2, -3, 5, -3, 6, -3,
  221.     -6, -2, -3, -2,
  222.     -6, -1, -3, -1,
  223.     -5, 0, 5, 0,
  224.     3, 1, 6, 1,
  225.     3, 2, 6, 2,
  226.     -6, 3, -5, 3, -2, 3, -1, 3, 4, 3, 5, 3,
  227.     -3, 4,
  228.     -3, 5, 0, 5, 3, 5,
  229.     -2, 6, -1, 6, 3, 6,
  230.     127
  231.     },
  232.     {                /* PUFFER */
  233.     1, -9,
  234.     2, -8,
  235.     -2, -7, 2, -7,
  236.     -1, -6, 0, -6, 1, -6, 2, -6,
  237.     -2, -2,
  238.     -1, -1, 0, -1,
  239.     0, 0,
  240.     0, 1,
  241.     -1, 2,
  242.     1, 5,
  243.     2, 6,
  244.     -2, 7, 2, 7,
  245.     -1, 8, 0, 8, 1, 8, 2, 8,
  246.     127
  247.     },
  248.     {                /* ESCORT */
  249.     3, -8,
  250.     4, -7,
  251.     -2, -6, 4, -6,
  252.     -1, -5, 0, -5, 1, -5, 2, -5, 3, -5, 4, -5,
  253.     -5, -1, -4, -1, -3, -1, -2, -1, -1, -1, 0, -1,
  254.     1, -1, 2, -1, 3, -1, 4, -1, 5, -1, 6, -1,
  255.     -6, 0, 6, 0,
  256.     6, 1,
  257.     5, 2,
  258.     3, 4,
  259.     4, 5,
  260.     -2, 6, 4, 6,
  261.     -1, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7,
  262.     127
  263.     },
  264.     {                /* DART SPEED 1/3 */
  265.     3, -7,
  266.     2, -6, 4, -6,
  267.     1, -5, 2, -5,
  268.     4, -4,
  269.     0, -3, 4, -3,
  270.     -3, -2, 0, -2,
  271.     -4, -1, -2, -1, 1, -1, 2, -1, 3, -1, 4, -1,
  272.     -5, 0, -2, 0,
  273.     -4, 1, -2, 1, 1, 1, 2, 1, 3, 1, 4, 1,
  274.     -3, 2, 0, 2,
  275.     0, 3, 4, 3,
  276.     4, 4,
  277.     1, 5, 2, 5,
  278.     2, 6, 4, 6,
  279.     3, 7,
  280.     127
  281.     },
  282.     {                /* PERIOD 4 SPEED 1/2 */
  283.     -3, -5,
  284.     -4, -4, -3, -4, -2, -4, -1, -4, 0, -4,
  285.     -5, -3, -4, -3, 0, -3, 1, -3, 3, -3,
  286.     -4, -2, 4, -2,
  287.     -3, -1, -2, -1, 1, -1, 3, -1,
  288.     -3, 1, -2, 1, 1, 1, 3, 1,
  289.     -4, 2, 4, 2,
  290.     -5, 3, -4, 3, 0, 3, 1, 3, 3, 3,
  291.     -4, 4, -3, 4, -2, 4, -1, 4, 0, 4,
  292.     -3, 5,
  293.     127
  294.     },
  295.     {                /* ANOTHER PERIOD 4 SPEED 1/2 */
  296.     -4, -7, -3, -7, -1, -7, 0, -7, 1, -7, 2, -7, 3, -7, 4, -7,
  297.     -5, -6, -4, -6, -3, -6, -2, -6, 5, -6,
  298.     -6, -5, -5, -5,
  299.     -5, -4, 5, -4,
  300.     -4, -3, -3, -3, -2, -3, 0, -3,
  301.     -2, -2,
  302.     -2, -1,
  303.     -1, 0,
  304.     -2, 1,
  305.     -2, 2,
  306.     -4, 3, -3, 3, -2, 3, 0, 3,
  307.     -5, 4, 5, 4,
  308.     -6, 5, -5, 5,
  309.     -5, 6, -4, 6, -3, 6, -2, 6, 5, 6,
  310.     -4, 7, -3, 7, -1, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7,
  311.     127
  312.     },
  313.     {                /* SMALLEST KNOWN PERIOD 3 SPACESHIP SPEED 1/3 */
  314.     0, -8,
  315.     -1, -7, 1, -7,
  316.     -1, -6, 1, -6,
  317.     -1, -5,
  318.     -2, -3, -1, -3,
  319.     -1, -2, 1, -2,
  320.     -2, -1, 0, -1,
  321.     -2, 0, -1, 0, 0, 0,
  322.     -1, 2, 1, 2,
  323.     -1, 3, 0, 3,
  324.     0, 4,
  325.     0, 5, 2, 5,
  326.     0, 6, 2, 6,
  327.     1, 7,
  328.     127
  329.     },
  330.     {                /* TURTLE SPEED 1/3 */
  331.     -4, -5, -3, -5, -2, -5, 6, -5,
  332.     -4, -4, -3, -4, 0, -4, 2, -4, 3, -4, 5, -4, 6, -4,
  333.     -2, -3, -1, -3, 0, -3, 5, -3,
  334.     -4, -2, -1, -2, 1, -2, 5, -2,
  335.     -5, -1, 0, -1, 5, -1,
  336.     -5, 0, 0, 0, 5, 0,
  337.     -4, 1, -1, 1, 1, 1, 5, 1,
  338.     -2, 2, -1, 2, 0, 2, 5, 2,
  339.     -4, 3, -3, 3, 0, 3, 2, 3, 3, 3, 5, 3, 6, 3,
  340.     -4, 4, -3, 4, -2, 4, 6, 4,
  341.     127
  342.     },
  343.     {                /* SMALLEST KNOWN PERIOD 5 SPEED 2/5 */
  344.     1, -7, 3, -7,
  345.     -2, -6, 3, -6,
  346.     -3, -5, -2, -5, -1, -5, 4, -5,
  347.     -4, -4, -2, -4,
  348.     -5, -3, -4, -3, -1, -3, 0, -3, 5, -3,
  349.     -4, -2, -3, -2, 0, -2, 1, -2, 2, -2, 3, -2, 4, -2,
  350.     -4, 2, -3, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2,
  351.     -5, 3, -4, 3, -1, 3, 0, 3, 5, 3,
  352.     -4, 4, -2, 4,
  353.     -3, 5, -2, 5, -1, 5, 4, 5,
  354.     -2, 6, 3, 6,
  355.     1, 7, 3, 7,
  356.     127
  357.     },
  358.     {                /* SYM PUFFER */
  359.     1, -4, 2, -4, 3, -4, 4, -4,
  360.     0, -3, 4, -3,
  361.     4, -2,
  362.     -4, -1, -3, -1, 0, -1, 3, -1,
  363.     -4, 0, -3, 0, -2, 0,
  364.     -4, 1, -3, 1, 0, 1, 3, 1,
  365.     4, 2,
  366.     0, 3, 4, 3,
  367.     1, 4, 2, 4, 3, 4, 4, 4,
  368.     127
  369.     },
  370.     {                /* ], NEAR SHIP, PI HEPTOMINO */
  371.     -2, -1, -1, -1, 0, -1,
  372.     1, 0,
  373.     -2, 1, -1, 1, 0, 1,
  374.     127
  375.     },
  376.     {                /* R PENTOMINO */
  377.     0, -1, 1, -1,
  378.     -1, 0, 0, 0,
  379.     0, 1,
  380.     127
  381.     }
  382. };
  383.  
  384. #define NPATS    (sizeof patterns / sizeof patterns[0])
  385.