-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsketch.js
105 lines (95 loc) · 1.94 KB
/
sketch.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
let grid;
let score = 0;
function setup() {
var canvas = createCanvas(400, 400);
canvas.position(screen.availWidth / 2 - 400 / 2, 120);
noLoop();
grid = blankGrid();
// console.table(grid);
addNumber();
addNumber();
updateCanvas();
}
// One "move"
function keyPressed() {
let flipped = false;
let rotated = false;
let played = true;
switch (keyCode) {
case DOWN_ARROW:
// do nothing
break;
case UP_ARROW:
grid = flipGrid(grid);
flipped = true;
break;
case RIGHT_ARROW:
grid = transposeGrid(grid);
rotated = true;
break;
case LEFT_ARROW:
grid = transposeGrid(grid);
grid = flipGrid(grid);
rotated = true;
flipped = true;
break;
default:
played = false;
}
if (played) {
let past = copyGrid(grid);
for (let i = 0; i < 4; i++) {
grid[i] = operate(grid[i]);
}
let changed = compare(past, grid);
if (flipped) {
grid = flipGrid(grid);
}
if (rotated) {
grid = transposeGrid(grid);
}
if (changed) {
addNumber();
}
updateCanvas();
let gameover = isGameOver();
if (gameover) {
console.log('GAME OVER');
}
let gamewon = isGameWon();
if (gamewon) {
console.log('GAME WON');
}
}
}
function updateCanvas() {
background(255);
drawGrid();
select('#score').html(score);
}
function drawGrid() {
let w = 100;
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 4; j++) {
noFill();
strokeWeight(2);
let val = grid[i][j];
let s = val.toString();
strokeWeight(4);
stroke(0);
if (val != 0) {
fill(colorsSizes[s].color);
} else {
noFill();
}
rect(i * w, j * w, w, w);
if (val !== 0) {
textAlign(CENTER, CENTER);
noStroke();
fill(0);
textSize(colorsSizes[s].size);
text(val, i * w + w / 2, j * w + w / 2);
}
}
}
}