Guest User

Untitled

a guest
Dec 21st, 2016
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 18.02 KB | None | 0 0
  1. import java.util.Arrays;
  2.  
  3. float gridSize=8.00;
  4. float size;
  5. boolean display=false;
  6. boolean[] save;
  7. boolean saveExists=false;
  8. boolean displayHelp=true;
  9. float coinFlip;
  10.  
  11. String help="A-Z: Draw a pattern\nSPACE: Change colour\nLEFT/RIGHT: Change size\n\nENTER: Generate a random pattern\n(can be then modified with A-Z)\n\nCONTROL/CMD: Save current pattern\nTAB: Load saved pattern\n\nBACKSPACE: Start over";
  12.  
  13.  
  14. int h1;
  15. int s1;
  16. int v1;
  17.  
  18. int h1s;
  19. int s1s;
  20. int v1s;
  21.  
  22. int hbg;
  23. int sbg;
  24. int vbg;
  25.  
  26. int hbgs;
  27. int sbgs;
  28. int vbgs;
  29.  
  30. Tile[] tiles;
  31.  
  32. int[] keyA={  0, 0, 0, 0, 0, 0, 1, 0,
  33.               0, 1, 0, 0, 0, 1, 1, 0,
  34.               0, 1, 1, 0, 0, 0, 1, 0,
  35.               0, 1, 0, 0, 0, 1, 1, 0,
  36.               0, 1, 1, 0, 0, 0, 1, 0,
  37.               0, 1, 0, 0, 0, 1, 1, 0,
  38.               0, 1, 1, 0, 0, 0, 1, 0,
  39.               0, 1, 0, 0, 0, 0, 0, 0,};
  40.            
  41. int[] keyB={  0, 0, 0, 0, 0, 0, 1, 0,
  42.               0, 1, 0, 0, 0, 0, 0, 0,
  43.               0, 0, 0, 0, 0, 0, 1, 0,
  44.               0, 1, 0, 0, 1, 1, 1, 1,
  45.               1, 1, 1, 1, 0, 0, 1, 0,
  46.               0, 1, 0, 0, 0, 0, 0, 0,
  47.               0, 0, 0, 0, 0, 0, 1, 0,
  48.               0, 1, 0, 0, 0, 0, 0, 0,};
  49.              
  50. int[] keyC={  0, 0, 0, 0, 0, 0, 0, 0,
  51.               0, 0, 0, 0, 0, 0, 0, 0,
  52.               0, 0, 0, 0, 0, 0, 0, 0,
  53.               0, 0, 0, 0, 0, 0, 0, 0,
  54.               0, 0, 0, 0, 0, 1, 1, 1,
  55.               1, 1, 1, 0, 0, 1, 1, 0,
  56.               0, 1, 1, 0, 0, 0, 1, 0,
  57.               0, 1, 0, 0, 0, 0, 0, 0,};
  58.              
  59. int[] keyD={  0, 0, 0, 0, 0, 0, 1, 0,
  60.               0, 1, 0, 0, 0, 1, 1, 0,
  61.               0, 1, 1, 0, 0, 1, 1, 1,
  62.               1, 1, 1, 0, 1, 1, 1, 1,
  63.               0, 0, 0, 0, 0, 0, 0, 0,
  64.               0, 0, 0, 0, 0, 0, 0, 0,
  65.               0, 0, 0, 0, 0, 0, 0, 0,
  66.               0, 0, 0, 0, 0, 0, 0, 0,};
  67.              
  68. int[] keyE={  0, 0, 0, 0, 0, 0, 0, 0,
  69.               0, 0, 0, 0, 0, 0, 0, 0,
  70.               1, 1, 1, 1, 1, 1, 1, 1,
  71.               1, 1, 1, 1, 1, 1, 1, 1,
  72.               1, 1, 1, 1, 1, 1, 1, 1,
  73.               1, 1, 1, 1, 1, 1, 1, 1,
  74.               0, 0, 0, 0, 0, 0, 0, 0,
  75.               0, 0, 0, 0, 0, 0, 0, 0,};
  76.  
  77. int[] keyF={  0, 0, 0, 0, 0, 0, 0, 0,
  78.               0, 0, 0, 0, 0, 0, 0, 0,
  79.               1, 1, 1, 1, 1, 1, 0, 1,
  80.               1, 0, 1, 1, 1, 0, 0, 1,
  81.               1, 0, 0, 1, 1, 1, 0, 1,
  82.               1, 0, 1, 1, 1, 1, 1, 1,
  83.               0, 0, 0, 0, 0, 0, 0, 0,
  84.               0, 0, 0, 0, 0, 0, 0, 0,};
  85.              
  86. int[] keyG={  0, 1, 1, 0, 0, 1, 1, 0,
  87.               0, 1, 1, 0, 0, 1, 1, 0,
  88.               1, 0, 0, 1, 1, 0, 0, 1,
  89.               1, 0, 0, 1, 1, 0, 0, 1,
  90.               0, 0, 0, 0, 0, 0, 0, 0,
  91.               0, 0, 0, 0, 0, 0, 0, 0,
  92.               0, 0, 0, 0, 0, 0, 0, 0,
  93.               0, 0, 0, 0, 0, 0, 0, 0,};              
  94.  
  95. int[] keyH={  1, 0, 0, 1, 1, 1, 0, 1,
  96.               1, 0, 1, 1, 1, 0, 0, 1,
  97.               1, 0, 0, 1, 0, 0, 0, 0,
  98.               0, 0, 0, 0, 0, 0, 0, 0,
  99.               0, 0, 0, 0, 0, 0, 0, 0,
  100.               0, 0, 0, 0, 1, 0, 0, 1,
  101.               1, 0, 0, 1, 1, 1, 0, 1,
  102.               1, 0, 1, 1, 1, 0, 0, 1,};
  103.  
  104. int[] keyI={  0, 1, 1, 0, 0, 1, 1, 0,
  105.               0, 1, 1, 0, 0, 1, 1, 0,
  106.               0, 1, 1, 0, 0, 1, 1, 0,
  107.               0, 1, 1, 0, 0, 1, 1, 0,
  108.               0, 1, 1, 0, 0, 1, 1, 0,
  109.               0, 1, 1, 0, 0, 1, 1, 0,
  110.               0, 1, 1, 0, 0, 1, 1, 0,
  111.               0, 1, 1, 0, 0, 1, 1, 0,};
  112.  
  113. int[] keyJ={  0, 0, 0, 0, 0, 0, 0, 0,
  114.               0, 0, 0, 0, 0, 0, 0, 0,
  115.               0, 0, 0, 0, 0, 0, 0, 0,
  116.               0, 0, 0, 0, 0, 0, 0, 0,
  117.               0, 0, 0, 0, 1, 0, 1, 0,
  118.               0, 1, 0, 1, 1, 1, 1, 1,
  119.               1, 1, 1, 1, 0, 1, 0, 1,
  120.               1, 0, 1, 0, 0, 0, 0, 0,};
  121.  
  122. int[] keyK={  0, 0, 0, 0, 0, 0, 1, 0,
  123.               0, 1, 0, 0, 0, 1, 1, 0,
  124.               0, 1, 1, 0, 0, 1, 0, 1,
  125.               1, 0, 1, 0, 1, 0, 0, 1,
  126.               1, 0, 0, 1, 0, 1, 0, 1,
  127.               1, 0, 1, 0, 0, 1, 1, 0,
  128.               0, 1, 1, 0, 0, 0, 1, 0,
  129.               0, 1, 0, 0, 0, 0, 0, 0,};
  130.  
  131. int[] keyL={  1, 1, 1, 1, 1, 1, 0, 1,
  132.               1, 0, 1, 1, 1, 0, 0, 1,
  133.               1, 0, 0, 1, 0, 0, 0, 0,
  134.               0, 0, 0, 0, 0, 0, 0, 0,
  135.               0, 0, 0, 0, 0, 0, 0, 0,
  136.               0, 0, 0, 0, 1, 0, 0, 1,
  137.               1, 0, 0, 1, 1, 1, 0, 1,
  138.               1, 0, 1, 1, 1, 1, 1, 1,};
  139.  
  140.  
  141. int[] keyM={  0, 0, 0, 0, 0, 0, 0, 0,
  142.               0, 0, 0, 0, 0, 0, 0, 0,
  143.               0, 0, 0, 0, 0, 0, 1, 0,
  144.               0, 1, 0, 0, 0, 1, 1, 0,
  145.               0, 1, 1, 0, 0, 1, 1, 1,
  146.               1, 1, 1, 0, 1, 1, 1, 1,
  147.               0, 1, 1, 0, 0, 1, 1, 1,
  148.               1, 1, 1, 0, 1, 1, 1, 1,};
  149.  
  150. int[] keyN={  1, 0, 0, 1, 1, 1, 0, 1,
  151.               1, 0, 1, 1, 1, 0, 0, 1,
  152.               1, 0, 0, 1, 1, 0, 0, 0,
  153.               0, 0, 0, 1, 0, 0, 0, 0,
  154.               0, 0, 0, 0, 1, 0, 0, 0,
  155.               0, 0, 0, 1, 1, 0, 0, 1,
  156.               1, 0, 0, 1, 1, 0, 0, 0,
  157.               0, 0, 0, 1, 1, 0, 0, 1,};
  158.  
  159. int[] keyO={  0, 0, 0, 0, 0, 1, 0, 0,
  160.               0, 0, 1, 0, 0, 1, 1, 0,
  161.               0, 1, 1, 0, 0, 1, 1, 0,
  162.               0, 1, 1, 0, 0, 1, 1, 0,
  163.               0, 1, 1, 0, 0, 1, 1, 0,
  164.               0, 1, 1, 0, 0, 1, 1, 0,
  165.               0, 1, 1, 0, 0, 1, 0, 0,
  166.               0, 0, 1, 0, 0, 0, 0, 0,};
  167.  
  168. int[] keyP={  1, 1, 1, 1, 1, 1, 0, 1,
  169.               1, 0, 1, 1, 1, 0, 0, 1,
  170.               1, 0, 0, 1, 1, 1, 0, 1,
  171.               1, 0, 1, 1, 0, 1, 1, 0,
  172.               0, 1, 1, 0, 1, 0, 1, 0,
  173.               0, 1, 0, 1, 1, 0, 0, 1,
  174.               1, 0, 0, 1, 1, 1, 0, 1,
  175.               1, 0, 1, 1, 1, 1, 1, 1,};
  176.  
  177. int[] keyQ={  1, 1, 1, 1, 1, 1, 0, 1,
  178.               1, 0, 1, 1, 1, 0, 0, 1,
  179.               1, 0, 0, 1, 1, 0, 0, 0,
  180.               0, 0, 0, 1, 1, 0, 0, 1,
  181.               1, 0, 0, 1, 1, 0, 0, 0,
  182.               0, 0, 0, 1, 0, 0, 0, 0,
  183.               0, 0, 0, 0, 1, 0, 1, 0,
  184.               0, 1, 0, 1, 1, 1, 1, 1,};
  185.  
  186. int[] keyR={  1, 1, 1, 1, 1, 0, 1, 1,
  187.               1, 1, 0, 1, 1, 0, 0, 1,
  188.               1, 0, 0, 1, 1, 0, 0, 1,
  189.               1, 0, 0, 1, 1, 0, 0, 1,
  190.               1, 0, 0, 1, 1, 0, 1, 0,
  191.               0, 1, 0, 1, 1, 0, 0, 1,
  192.               1, 0, 0, 1, 1, 1, 0, 1,
  193.               1, 0, 1, 1, 1, 1, 1, 1,};
  194.              
  195. int[] keyS={  0, 1, 1, 0, 0, 0, 1, 0,
  196.               0, 1, 0, 0, 0, 0, 0, 0,
  197.               0, 0, 0, 0, 1, 0, 1, 0,
  198.               0, 1, 0, 1, 1, 1, 1, 1,
  199.               1, 1, 1, 1, 1, 1, 1, 1,
  200.               1, 1, 1, 1, 1, 1, 1, 1,
  201.               1, 1, 1, 1, 1, 1, 1, 1,
  202.               1, 1, 1, 1, 1, 1, 1, 1,};
  203.  
  204. int[] keyT={  1, 1, 1, 1, 1, 1, 1, 1,
  205.               1, 1, 1, 1, 1, 1, 1, 1,
  206.               0, 0, 0, 0, 1, 0, 0, 0,
  207.               0, 0, 0, 1, 1, 0, 0, 1,
  208.               1, 0, 0, 1, 1, 0, 0, 1,
  209.               1, 0, 0, 1, 1, 0, 0, 1,
  210.               1, 0, 0, 1, 1, 0, 0, 1,
  211.               1, 0, 0, 1, 1, 0, 0, 1,};
  212.  
  213. int[] keyU={  1, 1, 1, 1, 1, 1, 1, 1,
  214.               1, 1, 1, 1, 1, 1, 1, 1,
  215.               1, 1, 1, 1, 1, 0, 1, 1,
  216.               1, 1, 0, 1, 1, 0, 0, 1,
  217.               1, 0, 0, 1, 1, 0, 0, 1,
  218.               1, 0, 0, 1, 1, 0, 0, 1,
  219.               1, 0, 0, 1, 1, 1, 0, 1,
  220.               1, 0, 1, 1, 1, 1, 1, 1,};
  221.  
  222. int[] keyV={  1, 1, 1, 1, 1, 1, 1, 1,
  223.               1, 1, 1, 1, 1, 1, 1, 1,
  224.               1, 1, 1, 1, 1, 0, 1, 0,
  225.               0, 1, 0, 1, 0, 0, 0, 0,
  226.               0, 0, 0, 0, 1, 0, 0, 0,
  227.               0, 0, 0, 1, 1, 0, 0, 1,
  228.               1, 0, 0, 1, 1, 1, 0, 1,
  229.               1, 0, 1, 1, 1, 1, 1, 1,};
  230.  
  231. int[] keyW={  0, 1, 1, 0, 0, 0, 1, 0,
  232.               0, 1, 0, 0, 0, 0, 0, 0,
  233.               1, 1, 1, 1, 1, 0, 1, 0,
  234.               0, 1, 0, 1, 0, 0, 0, 0,
  235.               1, 0, 0, 1, 1, 0, 1, 0,
  236.               0, 1, 0, 1, 1, 0, 0, 1,
  237.               1, 0, 0, 1, 1, 1, 0, 1,
  238.               1, 0, 1, 1, 1, 1, 1, 1,};
  239.  
  240. int[] keyX={  1, 1, 1, 1, 1, 1, 1, 1,
  241.               1, 1, 1, 1, 1, 1, 1, 1,
  242.               1, 1, 1, 1, 1, 0, 1, 1,
  243.               1, 1, 0, 1, 1, 0, 0, 1,
  244.               1, 0, 0, 1, 1, 0, 1, 1,
  245.               1, 1, 0, 1, 1, 1, 1, 1,
  246.               1, 1, 1, 1, 1, 1, 1, 1,
  247.               1, 1, 1, 1, 1, 1, 1, 1,};
  248.  
  249. int[] keyY={  1, 1, 1, 1, 1, 1, 1, 1,
  250.               1, 1, 1, 1, 1, 1, 1, 1,
  251.               0, 0, 0, 0, 1, 0, 0, 0,
  252.               0, 0, 0, 1, 1, 0, 0, 1,
  253.               1, 0, 0, 1, 1, 1, 0, 1,
  254.               1, 0, 1, 1, 1, 0, 0, 1,
  255.               1, 0, 0, 1, 1, 1, 0, 1,
  256.               1, 0, 1, 1, 1, 1, 1, 1,};
  257.  
  258. int[] keyZ={  1, 1, 1, 1, 1, 1, 1, 1,
  259.               1, 1, 1, 1, 1, 0, 0, 1,
  260.               1, 0, 0, 1, 1, 0, 0, 0,
  261.               0, 0, 0, 1, 1, 1, 1, 1,
  262.               1, 1, 1, 1, 1, 0, 0, 0,
  263.               0, 0, 0, 1, 1, 0, 0, 1,
  264.               1, 0, 0, 1, 1, 1, 1, 1,
  265.               1, 1, 1, 1, 1, 1, 1, 1,};
  266.  
  267. int[][] sym=  {
  268.               {0 ,0, 0, 0},
  269.               {0 ,0, 0, 0},
  270.               {0 ,0, 0, 0},
  271.               {0 ,0, 0, 0},
  272.               {0 ,0, 0, 0},
  273.               {0 ,0, 0, 0},
  274.               {0 ,0, 0, 0},
  275.               {0 ,0, 0, 0},
  276.               {0 ,0, 0, 0},
  277.               {0 ,0, 0, 0},
  278.               {0 ,0, 0, 0},
  279.               {0 ,0, 0, 0},
  280.               {0 ,0, 0, 0},
  281.               {0 ,0, 0, 0},
  282.               {0 ,0, 0, 0},
  283.               {0 ,0, 0, 0},
  284.               };
  285.  
  286.  
  287. void setup(){
  288.  
  289.  
  290.   save = new boolean[64];
  291.  
  292.   tiles = new Tile[64];
  293.  
  294.   tiles[0] = new Tile(0,0,2,0,1,1,display);
  295.   tiles[1] = new Tile(2,0,4,0,3,1,display);
  296.   tiles[2] = new Tile(4,0,6,0,5,1,display);
  297.   tiles[3] = new Tile(6,0,8,0,7,1,display);
  298.  
  299.   tiles[4] = new Tile(0,0,1,1,0,2,display);
  300.   tiles[5] = new Tile(2,0,3,1,2,2,display);
  301.   tiles[6] = new Tile(4,0,5,1,4,2,display);
  302.   tiles[7] = new Tile(6,0,7,1,6,2,display);
  303.  
  304.   tiles[8] = new Tile(2,0,2,2,1,1,display);
  305.   tiles[9] = new Tile(4,0,4,2,3,1,display);
  306.   tiles[10] =new Tile(6,0,6,2,5,1,display);
  307.   tiles[11] =new Tile(8,0,8,2,7,1,display);
  308.  
  309.   tiles[12] =new Tile(0,2,2,2,1,1,display);
  310.   tiles[13] =new Tile(2,2,4,2,3,1,display);
  311.   tiles[14] =new Tile(4,2,6,2,5,1,display);
  312.   tiles[15] =new Tile(6,2,8,2,7,1,display);
  313.  
  314.  
  315.  
  316.   tiles[16] =new Tile(0,2,2,2,1,3,display);
  317.   tiles[17] =new Tile(2,2,4,2,3,3,display);
  318.   tiles[18] =new Tile(4,2,6,2,5,3,display);
  319.   tiles[19] =new Tile(6,2,8,2,7,3,display);
  320.  
  321.   tiles[20] =new Tile(0,2,1,3,0,4,display);
  322.   tiles[21] =new Tile(2,2,3,3,2,4,display);
  323.   tiles[22] =new Tile(4,2,5,3,4,4,display);
  324.   tiles[23] =new Tile(6,2,7,3,6,4,display);
  325.  
  326.   tiles[24] =new Tile(2,2,2,4,1,3,display);
  327.   tiles[25] =new Tile(4,2,4,4,3,3,display);
  328.   tiles[26] =new Tile(6,2,6,4,5,3,display);
  329.   tiles[27] =new Tile(8,2,8,4,7,3,display);
  330.  
  331.   tiles[28] =new Tile(0,4,2,4,1,3,display);
  332.   tiles[29] =new Tile(2,4,4,4,3,3,display);
  333.   tiles[30] =new Tile(4,4,6,4,5,3,display);
  334.   tiles[31] =new Tile(6,4,8,4,7,3,display);
  335.  
  336.  
  337.  
  338.   tiles[32] =new Tile(0,4,2,4,1,5,display);
  339.   tiles[33] =new Tile(2,4,4,4,3,5,display);
  340.   tiles[34] =new Tile(4,4,6,4,5,5,display);
  341.   tiles[35] =new Tile(6,4,8,4,7,5,display);
  342.  
  343.   tiles[36] =new Tile(0,4,1,5,0,6,display);
  344.   tiles[37] =new Tile(2,4,3,5,2,6,display);
  345.   tiles[38] =new Tile(4,4,5,5,4,6,display);
  346.   tiles[39] =new Tile(6,4,7,5,6,6,display);
  347.  
  348.   tiles[40] =new Tile(2,4,2,6,1,5,display);
  349.   tiles[41] =new Tile(4,4,4,6,3,5,display);
  350.   tiles[42] =new Tile(6,4,6,6,5,5,display);
  351.   tiles[43] =new Tile(8,4,8,6,7,5,display);
  352.  
  353.   tiles[44] =new Tile(0,6,2,6,1,5,display);
  354.   tiles[45] =new Tile(2,6,4,6,3,5,display);
  355.   tiles[46] =new Tile(4,6,6,6,5,5,display);
  356.   tiles[47] =new Tile(6,6,8,6,7,5,display);
  357.  
  358.  
  359.  
  360.   tiles[48] =new Tile(0,6,2,6,1,7,display);
  361.   tiles[49] =new Tile(2,6,4,6,3,7,display);
  362.   tiles[50] =new Tile(4,6,6,6,5,7,display);
  363.   tiles[51] =new Tile(6,6,8,6,7,7,display);
  364.  
  365.   tiles[52] =new Tile(0,6,1,7,0,8,display);
  366.   tiles[53] =new Tile(2,6,3,7,2,8,display);
  367.   tiles[54] =new Tile(4,6,5,7,4,8,display);
  368.   tiles[55] =new Tile(6,6,7,7,6,8,display);
  369.  
  370.   tiles[56] =new Tile(2,6,2,8,1,7,display);
  371.   tiles[57] =new Tile(4,6,4,8,3,7,display);
  372.   tiles[58] =new Tile(6,6,6,8,5,7,display);
  373.   tiles[59] =new Tile(8,6,8,8,7,7,display);
  374.  
  375.   tiles[60] =new Tile(0,8,2,8,1,7,display);
  376.   tiles[61] =new Tile(2,8,4,8,3,7,display);
  377.   tiles[62] =new Tile(4,8,6,8,5,7,display);
  378.   tiles[63] =new Tile(6,8,8,8,7,7,display);
  379.  
  380.  
  381.   smooth();
  382.   background(255);
  383.   strokeWeight(2);
  384.   strokeJoin(ROUND);
  385.   display=false;
  386.   noStroke();
  387.   fill(25);
  388.   //noLoop();
  389.   //size(600,600);
  390.   fullScreen();
  391.  
  392.   colorMode(HSB,360,100,100);
  393.  
  394.   randomizeColors();
  395.  
  396.   drawHelp();
  397. }
  398.  
  399. void draw(){
  400.  
  401. }
  402.  
  403. void drawTiles(){
  404.   for(int i=0;i<width;i+=size*8)
  405.   {
  406.     for(int j=0;j<height;j+=size*8)
  407.     {
  408.       for(Tile t:tiles)
  409.       {
  410.          t.disp(i,j);
  411.       }
  412.     }
  413.   }
  414. }
  415.  
  416. void drawHelp(){
  417.   background(0,0,100);
  418.   fill(100,0,70);
  419.   textSize(24);
  420.   text(help, width/2-180,height/2-200,1000,1000);
  421.   fill(h1,s1,v1);
  422. }
  423.  
  424. class Tile {
  425.   float x1, y1, x2, y2, x3, y3;
  426.   boolean visible;
  427.   Tile (float xpos1, float ypos1, float xpos2, float ypos2, float xpos3, float ypos3, boolean v) {  
  428.     x1=xpos1;
  429.     y1=ypos1;
  430.     x2=xpos2;
  431.     y2=ypos2;
  432.     x3=xpos3;
  433.     y3=ypos3;
  434.     visible=v;
  435.   }
  436.  
  437.   void disp(float x,float y) {
  438.     size=width/(gridSize*8);
  439.     if(visible)triangle(x+size*x1, y+size*y1, x+size*x2, y+size*y2, x+size*x3, y+size*y3);
  440.   }
  441.  
  442. }
  443.  
  444. void updateTiles(int[] a){
  445.   for(int i=0;i<64;i++){
  446.     if(a[i]>0)tiles[i].visible=!tiles[i].visible;
  447.   }  
  448.   drawTiles();  
  449. }
  450.  
  451. int[] createRandom(boolean neigh, boolean symm, int maxSeeds, int chance){
  452.  
  453.   for(int i=0;i<16;i++){
  454.     for(int j=0;j<4;j++){
  455.       sym[i][j]=0;
  456.     }
  457.   }
  458.  
  459.   int[] randomArray;
  460.   randomArray=new int[64];
  461.  
  462.   int seeds = int(random(1,maxSeeds));
  463.   for(int i=0;i<seeds;i++){
  464.     int randX = int(random(0,16));
  465.     int randY = int(random(0,4));
  466.     sym[min(15,randX)][min(3,randY)]=1;
  467.   }
  468.  
  469.   if(neigh)createNeighbours(sym,chance);
  470.   if(symm)createSymmetry(sym);
  471.    
  472.   for(int i=0;i<16;i++){
  473.     for(int j=0;j<4;j++){
  474.       randomArray[4*i+j]=sym[i][j];
  475.     }
  476.   }  
  477.  
  478.   return randomArray;
  479. }
  480.  
  481.  
  482.  
  483. void createSymmetry(int[][] a){
  484.   for(int i=0;i<16;i++){
  485.     for(int j=0;j<4;j++){
  486.       if(i%4==0){
  487.         if(a[i][j]>0){a[i][3-j]=1;}
  488.       }
  489.       if(i%4==1){
  490.         if(a[i][j]>0){a[i+1][3-j]=1;}
  491.       }
  492.       if(i%4==2){
  493.         if(a[i][j]>0){a[i-1][3-j]=1;}
  494.       }
  495.       if(i%4==3){
  496.         if(a[i][j]>0){a[i][3-j]=1;}
  497.       }
  498.     }
  499.   }
  500. }
  501.  
  502. void createNeighbours(int[][] a, int chance){
  503.   for(int i=0;i<16;i++){
  504.     for(int j=0;j<4;j++){
  505.       int t=int(random(0,100));
  506.       if(i%4==0&&t<chance){
  507.         if(a[i][j]>0&&t<chance){a[(i+15)%16][j]=1;}
  508.       }
  509.       if(i%4==1&&t<chance){
  510.         if(a[i][j]>0){a[i+1][(j+3)%4]=1;}
  511.       }
  512.       if(i%4==2&&t<chance){
  513.         if(a[i][j]>0){a[i-1][(j+5)%4]=1;}
  514.       }
  515.       if(i%4==3&&t<chance){
  516.         if(a[i][j]>0){a[(i+17)%16][j]=1;}
  517.       }
  518.     }
  519.   }
  520. }
  521.  
  522. void randomizeColors(){
  523.  
  524.   float mono=random(0,10);
  525.  
  526.   h1=int(random(0,361))%360;
  527.   s1=int(random(50,101));
  528.   v1=int(random(30,70));
  529.   s1=s1-(v1-15);
  530.  
  531.   if(mono<1.5)s1=0;
  532.  
  533.   fill(h1,s1,v1);
  534.   stroke(h1,s1,v1);
  535.  
  536.   int side=0;
  537.   coinFlip=random(-1,1);
  538.   if(coinFlip<0){side=-1;}else{side=1;}  
  539.  
  540.   hbg=h1+int(random(-10,10));
  541.   sbg=s1;
  542.   vbg=v1+side*int(random(10,25));
  543.  
  544.   background(hbg,sbg,vbg);
  545.   if(vbg<10)randomizeColors();
  546. }
  547.  
  548.  
  549. void keyPressed(){
  550.  
  551.   if(keyCode<=90&&keyCode>=65||keyCode==ENTER||keyCode==BACKSPACE||
  552.      keyCode==TAB||key==' '||keyCode==LEFT||keyCode==RIGHT)
  553.      background(hbg,sbg,vbg);
  554.  
  555.   if(key=='a'||key=='A'){
  556.     updateTiles(keyA);
  557.   }
  558.   if(key=='b'||key=='B'){
  559.     updateTiles(keyB);
  560.   }
  561.   if(key=='c'||key=='C'){
  562.     updateTiles(keyC);
  563.   }  
  564.   if(key=='d'||key=='D'){
  565.     updateTiles(keyD);
  566.   }  
  567.   if(key=='e'||key=='E'){
  568.     updateTiles(keyE);
  569.   }  
  570.   if(key=='f'||key=='F'){
  571.     updateTiles(keyF);
  572.   }  
  573.   if(key=='g'||key=='G'){
  574.     updateTiles(keyG);
  575.   }  
  576.   if(key=='h'||key=='H'){
  577.     updateTiles(keyH);
  578.   }  
  579.   if(key=='i'||key=='I'){
  580.     updateTiles(keyI);
  581.   }  
  582.   if(key=='j'||key=='J'){
  583.     updateTiles(keyJ);
  584.   }  
  585.   if(key=='k'||key=='K'){
  586.     updateTiles(keyK);
  587.   }  
  588.   if(key=='l'||key=='L'){
  589.     updateTiles(keyL);
  590.   }  
  591.   if(key=='m'||key=='M'){
  592.     updateTiles(keyM);
  593.   }  
  594.   if(key=='n'||key=='N'){
  595.     updateTiles(keyN);
  596.   }  
  597.   if(key=='o'||key=='O'){
  598.     updateTiles(keyO);
  599.   }  
  600.   if(key=='p'||key=='P'){
  601.     updateTiles(keyP);
  602.   }  
  603.   if(key=='q'||key=='Q'){
  604.     updateTiles(keyQ);
  605.   }
  606.   if(key=='r'||key=='R'){
  607.     updateTiles(keyR);
  608.   }
  609.   if(key=='s'||key=='S'){
  610.     updateTiles(keyS);
  611.   }
  612.   if(key=='t'||key=='T'){
  613.     updateTiles(keyT);
  614.   }
  615.   if(key=='u'||key=='U'){
  616.     updateTiles(keyU);
  617.   }
  618.   if(key=='v'||key=='V'){
  619.     updateTiles(keyV);
  620.   }
  621.   if(key=='w'||key=='W'){
  622.     updateTiles(keyW);
  623.   }
  624.   if(key=='x'||key=='X'){
  625.     updateTiles(keyX);
  626.   }
  627.   if(key=='y'||key=='Y'){
  628.     updateTiles(keyY);
  629.   }
  630.   if(key=='z'||key=='Z'){
  631.     updateTiles(keyZ);
  632.   }
  633.   if(key==ENTER){    
  634.     for(Tile t:tiles){
  635.       t.visible=false;
  636.     }
  637.     randomizeColors();
  638.     updateTiles(createRandom(true,true,33,75));
  639.   }
  640.   if(keyCode==BACKSPACE){
  641.     for(Tile t:tiles){
  642.       t.visible=false;
  643.     }
  644.     drawHelp();
  645.   }
  646.  
  647.   if(key==' '){    
  648.     randomizeColors();
  649.     drawTiles();
  650.   }
  651.  
  652.   if(keyCode==CONTROL||keyCode==157){ //OSX Cmd key
  653.     for(int i=0;i<64;i++){
  654.       save[i]=tiles[i].visible;
  655.       h1s=h1;
  656.       s1s=s1;
  657.       v1s=v1;
  658.       hbgs=hbg;
  659.       sbgs=sbg;
  660.       vbgs=vbg;
  661.     }
  662.     saveExists=true;
  663.   }
  664.   if(keyCode==TAB&&saveExists){
  665.     for(int i=0;i<64;i++){
  666.       tiles[i].visible=save[i];
  667.     }
  668.     fill(h1s,s1s,v1s);
  669.     stroke(h1s,s1s,v1s);
  670.    
  671.     hbg=hbgs;
  672.     sbg=sbgs;
  673.     vbg=vbgs;
  674.    
  675.     background(hbg,sbg,vbg);
  676.    
  677.     drawTiles();
  678.   }
  679.   if(keyCode==LEFT){
  680.     if(gridSize>1)gridSize--;
  681.     drawTiles();
  682.   }
  683.   if(keyCode==RIGHT){
  684.     if(gridSize<26)gridSize++;
  685.     drawTiles();
  686.   }
  687.   if(keyCode==SHIFT){
  688.   saveFrame("###.png");
  689.   }
  690. }
Advertisement
Add Comment
Please, Sign In to add comment