|
1 |
| -const tiles = []; |
| 1 | +let tiles = []; |
2 | 2 | const tileImages = [];
|
3 | 3 |
|
4 | 4 | let grid = [];
|
5 | 5 |
|
6 |
| -const DIM = 25; |
| 6 | +const DIM = 20; |
7 | 7 |
|
8 | 8 | function preload() {
|
9 |
| - const path = "circuit"; |
| 9 | + // const path = 'rail'; |
| 10 | + // for (let i = 0; i < 7; i++) { |
| 11 | + // tileImages[i] = loadImage(`${path}/tile${i}.png`); |
| 12 | + // } |
| 13 | + |
| 14 | + const path = 'tiles/circuit-coding-train'; |
10 | 15 | for (let i = 0; i < 13; i++) {
|
11 | 16 | tileImages[i] = loadImage(`${path}/${i}.png`);
|
12 | 17 | }
|
13 | 18 | }
|
14 | 19 |
|
| 20 | +function removeDuplicatedTiles(tiles) { |
| 21 | + const uniqueTilesMap = {}; |
| 22 | + for (const tile of tiles) { |
| 23 | + const key = tile.edges.join(','); // ex: "ABB,BCB,BBA,AAA" |
| 24 | + uniqueTilesMap[key] = tile; |
| 25 | + } |
| 26 | + return Object.values(uniqueTilesMap); |
| 27 | +} |
| 28 | + |
15 | 29 | function setup() {
|
16 |
| - createCanvas(800, 800); |
| 30 | + createCanvas(600, 600); |
| 31 | + //randomSeed(15); |
| 32 | + |
| 33 | + // tiles[0] = new Tile(tileImages[0], ['AAA', 'AAA', 'AAA', 'AAA']); |
| 34 | + // tiles[1] = new Tile(tileImages[1], ['ABA', 'ABA', 'ABA', 'AAA']); |
| 35 | + // tiles[2] = new Tile(tileImages[2], ['BAA', 'AAB', 'AAA', 'AAA']); |
| 36 | + // tiles[3] = new Tile(tileImages[3], ['BAA', 'AAA', 'AAB', 'AAA']); |
| 37 | + // tiles[4] = new Tile(tileImages[4], ['ABA', 'ABA', 'AAA', 'AAA']); |
| 38 | + // tiles[5] = new Tile(tileImages[5], ['ABA', 'AAA', 'ABA', 'AAA']); |
| 39 | + // tiles[6] = new Tile(tileImages[6], ['ABA', 'ABA', 'ABA', 'ABA']); |
17 | 40 |
|
18 | 41 | // Loaded and created the tiles
|
19 |
| - tiles[0] = new Tile(tileImages[0], ["AAA", "AAA", "AAA", "AAA"]); |
20 |
| - tiles[1] = new Tile(tileImages[1], ["BBB", "BBB", "BBB", "BBB"]); |
21 |
| - tiles[2] = new Tile(tileImages[2], ["BBB", "BCB", "BBB", "BBB"]); |
22 |
| - tiles[3] = new Tile(tileImages[3], ["BBB", "BDB", "BBB", "BDB"]); |
23 |
| - tiles[4] = new Tile(tileImages[4], ["ABB", "BCB", "BBA", "AAA"]); |
24 |
| - tiles[5] = new Tile(tileImages[5], ["ABB", "BBB", "BBB", "BBA"]); |
25 |
| - tiles[6] = new Tile(tileImages[6], ["BBB", "BCB", "BBB", "BCB"]); |
26 |
| - tiles[7] = new Tile(tileImages[7], ["BDB", "BCB", "BDB", "BCB"]); |
27 |
| - tiles[8] = new Tile(tileImages[8], ["BDB", "BBB", "BCB", "BBB"]); |
28 |
| - tiles[9] = new Tile(tileImages[9], ["BCB", "BCB", "BBB", "BCB"]); |
29 |
| - tiles[10] = new Tile(tileImages[10], ["BCB", "BCB", "BCB", "BCB"]); |
30 |
| - tiles[11] = new Tile(tileImages[11], ["BCB", "BCB", "BBB", "BBB"]); |
31 |
| - tiles[12] = new Tile(tileImages[12], ["BBB", "BCB", "BBB", "BCB"]); |
32 |
| - |
33 |
| - for (let i = 2; i < 14; i++) { |
34 |
| - for (let j = 1; j < 4; j++) { |
35 |
| - tiles.push(tiles[i].rotate(j)); |
36 |
| - } |
| 42 | + tiles[0] = new Tile(tileImages[0], ['AAA', 'AAA', 'AAA', 'AAA']); |
| 43 | + tiles[1] = new Tile(tileImages[1], ['BBB', 'BBB', 'BBB', 'BBB']); |
| 44 | + tiles[2] = new Tile(tileImages[2], ['BBB', 'BCB', 'BBB', 'BBB']); |
| 45 | + tiles[3] = new Tile(tileImages[3], ['BBB', 'BDB', 'BBB', 'BDB']); |
| 46 | + tiles[4] = new Tile(tileImages[4], ['ABB', 'BCB', 'BBA', 'AAA']); |
| 47 | + tiles[5] = new Tile(tileImages[5], ['ABB', 'BBB', 'BBB', 'BBA']); |
| 48 | + tiles[6] = new Tile(tileImages[6], ['BBB', 'BCB', 'BBB', 'BCB']); |
| 49 | + tiles[7] = new Tile(tileImages[7], ['BDB', 'BCB', 'BDB', 'BCB']); |
| 50 | + tiles[8] = new Tile(tileImages[8], ['BDB', 'BBB', 'BCB', 'BBB']); |
| 51 | + tiles[9] = new Tile(tileImages[9], ['BCB', 'BCB', 'BBB', 'BCB']); |
| 52 | + tiles[10] = new Tile(tileImages[10], ['BCB', 'BCB', 'BCB', 'BCB']); |
| 53 | + tiles[11] = new Tile(tileImages[11], ['BCB', 'BCB', 'BBB', 'BBB']); |
| 54 | + tiles[12] = new Tile(tileImages[12], ['BBB', 'BCB', 'BBB', 'BCB']); |
| 55 | + |
| 56 | + for (let i = 0; i < 12; i++) { |
| 57 | + tiles[i].index = i; |
37 | 58 | }
|
38 | 59 |
|
39 |
| - // tiles[2] = tiles[1].rotate(1); |
40 |
| - // tiles[3] = tiles[1].rotate(2); |
41 |
| - // tiles[4] = tiles[1].rotate(3); |
| 60 | + const initialTileCount = tiles.length; |
| 61 | + for (let i = 0; i < initialTileCount; i++) { |
| 62 | + let tempTiles = []; |
| 63 | + for (let j = 0; j < 4; j++) { |
| 64 | + tempTiles.push(tiles[i].rotate(j)); |
| 65 | + } |
| 66 | + tempTiles = removeDuplicatedTiles(tempTiles); |
| 67 | + tiles = tiles.concat(tempTiles); |
| 68 | + } |
| 69 | + console.log(tiles.length); |
42 | 70 |
|
43 | 71 | // Generate the adjacency rules based on edges
|
44 | 72 | for (let i = 0; i < tiles.length; i++) {
|
@@ -88,8 +116,8 @@ function draw() {
|
88 | 116 | let index = cell.options[0];
|
89 | 117 | image(tiles[index].img, i * w, j * h, w, h);
|
90 | 118 | } else {
|
91 |
| - fill(0); |
92 |
| - stroke(255); |
| 119 | + noFill(); |
| 120 | + stroke(51); |
93 | 121 | rect(i * w, j * h, w, h);
|
94 | 122 | }
|
95 | 123 | }
|
|
0 commit comments