-
Notifications
You must be signed in to change notification settings - Fork 0
/
Blocks.js
99 lines (95 loc) · 2.45 KB
/
Blocks.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
let xc, yc, sc, vx, vy, size, temp, w, n, p
let blocksX = []
let blocksY = []
let blocksS = []
let blocksH = []
function setup() {
createCanvas(600, 500);
xc = width / 2
yc = height / 2
sc = 10
vx = 0
vy = 7
size = 100
w = 0
n = 5
p = 1
for (i = 0; i < n; i++) {
blocksH[i] = round(random(1, 3))
blocksS[i] = round(random(20, 50))
blocksX[i] = round(random(blocksS[i] / 2, width - blocksS[i] / 2))
blocksY[i] = round(random(blocksS[i] / 2, height / 2 - blocksS[i]))
}
textAlign(CENTER, CENTER)
textSize(72)
draw()
frameRate(0.4)
}
function draw() {
if (p == 1) {
frameRate(60)
background(0);
rectMode(CENTER)
noStroke()
for (let i = 0; i < blocksS.length; i++) {
if (blocksH[i] != 0) {
if (blocksH[i] == 1) {
fill(150, 0, 0)
} else if (blocksH[i] == 2) {
fill(255, 255, 0)
} else if (blocksH[i] == 3) {
fill(0, 150, 0)
}
square(blocksX[i], blocksY[i], blocksS[i])
}
}
fill(200, 200, 255)
circle(xc, yc, 20)
rect(mouseX, height - 20, size, sc)
for (i = 0; i < blocksS.length; i++) {
if (blocksH[i] == 0) {
w++
} else {
w = 0
break
}
}
if (w == blocksS.length) {
text("YOU WIN!", width / 2, height / 2)
noLoop()
}
if ((yc >= height - 20 - sc) && (xc >= (mouseX - size / 2)) && (xc <= (mouseX + size / 2))) {
temp = vx
vx = sqrt(vx ** 2 + vy ** 2) * (sin(PI * (xc - mouseX) / size))
vy = sqrt(temp ** 2 + vy ** 2) * (-cos(PI * (xc - mouseX) / size))
}
if ((xc <= sc) || (xc >= (width - sc))) {
vx = -vx
}
if (yc <= sc) {
vy = -vy
}
if (yc >= height) {
text("YOU LOSE!", width / 2, height / 2)
noLoop()
}
for (let i = 0; i < blocksS.length; i++) {
if (blocksH[i] > 0) {
if (((xc + sc) >= (blocksX[i] - blocksS[i] / 2)) && ((xc - sc) <= (blocksX[i] + blocksS[i] / 2)) && ((yc + sc) >= (blocksY[i]) - blocksS[i] / 2) && ((yc - sc) <= (blocksY[i] + blocksS[i] / 2))) {
if (abs(xc - blocksX[i]) >= abs(yc - blocksY[i])) {
vx = -vx
}
if (abs(xc - blocksX[i]) <= abs(yc - blocksY[i])) {
vy = -vy
}
blocksH[i]--
}
}
}
xc += vx
yc += vy
}
}
function keyPressed() {
p *= -1
}