-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsketch.js
148 lines (127 loc) · 3.03 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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
// coordenadas da bola
let bola_x = 300
let bola_y = 200
let bola_diametro = 25
let bola_raio = bola_diametro / 2
// coordenadas da minha raquete/barra
let barra_x = 10
let barra_y = 150
let vel_x = 6 // bola velocidade
let vel_y = 6 // bola velocidade
// coordenadas da barra do oponente
let barra_enemy_x = 580
let barra_enemy_y = 150
let vel_enemy_y
// comprimentos e larguras das barras
let barra_comprimento = 10
let barra_altura = 90
// placar do jogo
let meus_pontos = 0
let pontos_oponente = 0
// sons do jogo
let ponto
let raquetada
let trilha
// modo de jogo
let gamemode = "single"
function preload() {
ponto = loadSound("ponto.mp3")
trilha = loadSound("trilha.mp3")
raquetada = loadSound("raquetada.mp3")
}
function setup() {
createCanvas(600, 400)
trilha.loop()
}
function draw() {
background("black")
// bola
makeball() // função da bola
// barras
barra(barra_x, barra_y) // função da minha barra
barra(barra_enemy_x, barra_enemy_y) // função da barra do oponente
// movimentação da barra inimiga
moviment_barra_enemy() // função que movimenta a raquete do oponente
// colisoes
collision2d(barra_x, barra_y) // collisao da minha raquete
collision2d(barra_enemy_x, barra_enemy_y) // collisao da raquete oponente
// placar
placar() // função dos placar
}
function makeball() {
fill("white")
circle(bola_x, bola_y, bola_diametro) // 25 = diametro
noFill()
bola_x += vel_x
bola_y += vel_y
if (bola_x + bola_raio > width || bola_x - bola_raio < 0) {
vel_x *= -1
}
if (bola_y + bola_raio > height || bola_y - bola_raio < 0) {
vel_y *= -1
}
}
function barra(x, y) {
fill("white")
rect(x, y, barra_comprimento, barra_altura)
noFill()
if (keyIsDown(UP_ARROW)) {
barra_y -= 5
}
if (keyIsDown(DOWN_ARROW)) {
barra_y += 5
}
}
function moviment_barra_enemy() {
if (gamemode == "multi") {
if (keyIsDown(87)) {
barra_enemy_y -= 10
}
if (keyIsDown(83)) {
barra_enemy_y += 10
}
}
if (keyIsDown(87)) {
gamemode = "multi"
}
if (gamemode == "single") {
vel_enemy_y = bola_y - barra_enemy_y - barra_comprimento / 2 - 30
barra_enemy_y += ceil(vel_enemy_y / 10)
}
}
function collision2d(x, y) {
let hit = collideRectCircle(x, y, barra_comprimento, barra_altura, bola_x, bola_y, bola_raio);
if(hit) {
vel_x *= -1;
raquetada.play()
}
}
function placar() {
textAlign(CENTER)
textSize(20)
fill("orange")
stroke("white")
rect(181, 23, 40, 20)
noStroke()
fill("white")
text(meus_pontos, 200, 40)
fill("orange")
stroke("white")
rect(381, 23, 40, 20)
noStroke("white")
fill("white")
text(pontos_oponente, 400, 40)
noFill()
// marca ponto para mim
if (bola_x > 585) {
meus_pontos += 1
bola_x = 600 - 30
ponto.play()
}
// marca ponto pro oponente
if (bola_x < 15) {
pontos_oponente += 1
bola_x = 30
ponto.play()
}
}