Skip to content

Commit e824bf9

Browse files
committed
move tiles to one directory
1 parent 2e275bb commit e824bf9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+72
-31
lines changed

index.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
55
<meta charset="utf-8" />
66
<title>Wave Function Collapse</title>
7+
<style>
8+
body {
9+
background-color: #555;
10+
}
11+
</style>
712
</head>
813

914
<body>

sketch.js

Lines changed: 55 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,72 @@
1-
const tiles = [];
1+
let tiles = [];
22
const tileImages = [];
33

44
let grid = [];
55

6-
const DIM = 25;
6+
const DIM = 20;
77

88
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';
1015
for (let i = 0; i < 13; i++) {
1116
tileImages[i] = loadImage(`${path}/${i}.png`);
1217
}
1318
}
1419

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+
1529
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']);
1740

1841
// 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;
3758
}
3859

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);
4270

4371
// Generate the adjacency rules based on edges
4472
for (let i = 0; i < tiles.length; i++) {
@@ -88,8 +116,8 @@ function draw() {
88116
let index = cell.options[0];
89117
image(tiles[index].img, i * w, j * h, w, h);
90118
} else {
91-
fill(0);
92-
stroke(255);
119+
noFill();
120+
stroke(51);
93121
rect(i * w, j * h, w, h);
94122
}
95123
}

tile.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
11
function reverseString(s) {
2-
let arr = s.split("");
2+
let arr = s.split('');
33
arr = arr.reverse();
4-
return arr.join("");
4+
return arr.join('');
55
}
66

77
function compareEdge(a, b) {
88
return a == reverseString(b);
99
}
1010

1111
class Tile {
12-
constructor(img, edges) {
12+
constructor(img, edges, i) {
1313
this.img = img;
1414
this.edges = edges;
1515
this.up = [];
1616
this.right = [];
1717
this.down = [];
1818
this.left = [];
19+
20+
if (i !== undefined) {
21+
this.index = i;
22+
}
1923
}
2024

2125
analyze(tiles) {
2226
for (let i = 0; i < tiles.length; i++) {
2327
let tile = tiles[i];
28+
29+
// Tile 5 can't match itself
30+
if (tile.index == 5 && this.index == 5) continue;
31+
2432
// UP
2533
if (compareEdge(tile.edges[2], this.edges[0])) {
2634
this.up.push(i);
@@ -54,6 +62,6 @@ class Tile {
5462
for (let i = 0; i < len; i++) {
5563
newEdges[i] = this.edges[(i - num + len) % len];
5664
}
57-
return new Tile(newImg, newEdges);
65+
return new Tile(newImg, newEdges, this.index);
5866
}
5967
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)