-
Notifications
You must be signed in to change notification settings - Fork 0
/
sketch.js
184 lines (150 loc) · 4.52 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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
let ballX, ballY, ballSize, ballSpeedX, ballSpeedY;
let scoreLeft = 0;
let scoreRight = 0;
function setup() {
createCanvas(600, 400);
// Position initiale et taille du ballon
ballX = width / 2;
ballY = height / 2;
ballSize = 50;
ballSpeedX = 0;
ballSpeedY = 0;
}
function draw() {
background(255);
// Drapeau de la France
drawFlag();
// Cages de but agrandies
drawGoals();
// Dessiner la baguette agrandie au-dessus des étoiles
drawBaguette();
// Dessiner les étoiles alignées au centre
drawStars();
// Dessiner un ballon simple (juste un cercle)
drawSimpleBall();
// Afficher le score
drawScore();
// Mouvement du ballon
ballX += ballSpeedX;
ballY += ballSpeedY;
// Limiter le ballon à l'intérieur des bords du canvas
if (ballX - ballSize / 2 < 0) {
if (ballY > height / 2 - 100 && ballY < height / 2 + 100) {
scoreRight++;
resetBall();
} else {
ballSpeedX *= -1;
}
}
if (ballX + ballSize / 2 > width) {
if (ballY > height / 2 - 100 && ballY < height / 2 + 100) {
scoreLeft++;
resetBall();
} else {
ballSpeedX *= -1;
}
}
if (ballY - ballSize / 2 < 0 || ballY + ballSize / 2 > height) {
ballSpeedY *= -1;
}
}
// Fonction pour dessiner le drapeau de la France
function drawFlag() {
noStroke();
// Bleu
fill(0, 85, 164);
rect(0, 0, width / 3, height);
// Blanc
fill(255);
rect(width / 3, 0, width / 3, height);
// Rouge
fill(239, 65, 53);
rect(2 * width / 3, 0, width / 3, height);
}
// Fonction pour dessiner la baguette agrandie au-dessus des étoiles
function drawBaguette() {
fill(255, 204, 153); // Couleur beige pour la baguette
stroke(153, 102, 51); // Lignes brunes pour les contours
strokeWeight(2);
// Position de la baguette au-dessus des étoiles, centrée
let baguetteWidth = 150; // Taille agrandie
let baguetteHeight = 30; // Taille agrandie
let centerX = width / 2;
let baguetteY = height / 4 - 80; // Position au-dessus des étoiles
// Dessiner la baguette centrée au-dessus des étoiles
rect(centerX - baguetteWidth / 2, baguetteY, baguetteWidth, baguetteHeight, 10);
// Lignes décoratives sur la baguette
line(centerX - 60, baguetteY + 10, centerX - 45, baguetteY + 10);
line(centerX - 30, baguetteY + 10, centerX - 15, baguetteY + 10);
line(centerX + 15, baguetteY + 10, centerX + 30, baguetteY + 10);
line(centerX + 45, baguetteY + 10, centerX + 60, baguetteY + 10);
}
// Fonction pour dessiner les étoiles alignées au centre
function drawStars() {
fill(255, 223, 0);
let starSize = 30;
// Aligner les étoiles horizontalement au centre de la partie blanche
let centerX = width / 2;
let starY = height / 4; // Position des étoiles en hauteur, en dessous de la baguette
// Première étoile (à gauche du centre)
drawStar(centerX - starSize * 1.5, starY, starSize);
// Deuxième étoile (à droite du centre)
drawStar(centerX + starSize * 1.5, starY, starSize);
}
// Fonction utilitaire pour dessiner une étoile
function drawStar(x, y, radius) {
let angle = TWO_PI / 5;
let halfAngle = angle / 2.0;
beginShape();
for (let a = 0; a < TWO_PI; a += angle) {
let sx = x + cos(a) * radius;
let sy = y + sin(a) * radius;
vertex(sx, sy);
sx = x + cos(a + halfAngle) * (radius / 2);
sy = y + sin(a + halfAngle) * (radius / 2);
vertex(sx, sy);
}
endShape(CLOSE);
}
// Fonction pour dessiner un ballon simple (juste un rond)
function drawSimpleBall() {
fill(255);
stroke(0);
ellipse(ballX, ballY, ballSize);
}
// Fonction pour dessiner les cages de but agrandies
function drawGoals() {
stroke(0);
strokeWeight(3);
noFill();
// Cage de gauche (agrandie)
rect(0, height / 2 - 100, 60, 200); // Agrandir la taille des buts
// Cage de droite (agrandie)
rect(width - 60, height / 2 - 100, 60, 200); // Agrandir la taille des buts
}
// Fonction pour dessiner le score
function drawScore() {
textAlign(CENTER, CENTER);
textSize(32);
fill(0);
text(scoreLeft, width / 4, 30);
text(scoreRight, 3 * width / 4, 30);
}
// Réinitialiser la position du ballon après un but
function resetBall() {
ballX = width / 2;
ballY = height / 2;
ballSpeedX = 0;
ballSpeedY = 0;
}
// Utiliser la souris pour contrôler le ballon
function mousePressed() {
let dx = mouseX - ballX;
let dy = mouseY - ballY;
let distance = dist(mouseX, mouseY, ballX, ballY);
// Si la souris est assez proche du ballon, on ajuste la vitesse du ballon
if (distance < ballSize / 2) {
ballSpeedX = dx * 0.2;
ballSpeedY = dy * 0.2;
}
}