Browse Source

petit rework

pull/2/head
demisel 11 months ago
parent
commit
1c53e870c9
4 changed files with 59 additions and 33 deletions
  1. 1
    0
      index.html
  2. 29
    6
      js/controller.js
  3. 9
    27
      js/drawer.js
  4. 20
    0
      js/ui.js

+ 1
- 0
index.html View File

8
 	<link href="./css/style.css" rel="stylesheet">
8
 	<link href="./css/style.css" rel="stylesheet">
9
 	<script src="./js/p5.min.js"></script>
9
 	<script src="./js/p5.min.js"></script>
10
 	<script src="./js/tube.js"></script>
10
 	<script src="./js/tube.js"></script>
11
+	<script src="./js/ui.js"></script>
11
 	<script src="./js/game.js"></script>
12
 	<script src="./js/game.js"></script>
12
 	<script src="./js/drawer.js"></script>
13
 	<script src="./js/drawer.js"></script>
13
 	<script src="./js/controller.js"></script>
14
 	<script src="./js/controller.js"></script>

+ 29
- 6
js/controller.js View File

1
 function setup()
1
 function setup()
2
 {
2
 {
3
+	this.width = 800
4
+	this.height = 600
5
+	this.ui = new UI(this.width, this.height);
6
+	this.lastTime = 0;
3
 	newGame();
7
 	newGame();
4
 }
8
 }
5
 
9
 
6
 function newGame() {
10
 function newGame() {
7
-	let params = gatherMenuValues();
11
+	const params = gatherMenuValues();
8
 	
12
 	
9
 	this.game = new Game(params.TUBESNUMBERS, params.TUBESLEVELS);
13
 	this.game = new Game(params.TUBESNUMBERS, params.TUBESLEVELS);
10
-	this.drawer = new Drawer(params.PADDING);
14
+	this.drawer = new Drawer(params.PADDING, this.width, this.height);
11
 	
15
 	
12
 	this.drawer.setTubesParams(params.TUBESNUMBERS, params.TUBESLEVELS, params.TUBESIZE);
16
 	this.drawer.setTubesParams(params.TUBESNUMBERS, params.TUBESLEVELS, params.TUBESIZE);
13
 	
17
 	
22
 	{
26
 	{
23
 		this.game.selectTube(tubeId);
27
 		this.game.selectTube(tubeId);
24
 	}
28
 	}
25
-	
26
 	this.needUpdate = true;
29
 	this.needUpdate = true;
27
 }
30
 }
28
 
31
 
40
 		PADDING: inputPadding
43
 		PADDING: inputPadding
41
 	};
44
 	};
42
 }
45
 }
46
+
43
 function draw()
47
 function draw()
44
 {
48
 {
45
-	if (!this.needUpdate && !game.isCompleted) return;
49
+
50
+	const timeDelta = millis() - lastTime;
51
+	// peut-être pas nécessaire de limiter le framerate
52
+	if (timeDelta < 50)
53
+		return;
54
+	this.lastTime = millis();
46
 	
55
 	
56
+	const steps = [
57
+		(this.needUpdate || this.game.isCompleted) && drawGame,
58
+		this.game.isCompleted && drawUI
59
+	]
60
+
61
+	steps.forEach(step => step && step());
62
+}
63
+
64
+function drawGame()
65
+{
47
 	this.drawer.draw(this.game);
66
 	this.drawer.draw(this.game);
48
-	
49
 	this.needUpdate = false;
67
 	this.needUpdate = false;
50
-}
68
+}
69
+
70
+function drawUI()
71
+{
72
+	this.ui.drawWinView();
73
+}

+ 9
- 27
js/drawer.js View File

1
 class Drawer
1
 class Drawer
2
 {
2
 {
3
-	#canvasWidth
4
-	#canvasHeight
5
 	
3
 	
6
-	constructor(_padding)
4
+	constructor(_padding, width, height)
7
 	{
5
 	{
8
 		this.padding = _padding;
6
 		this.padding = _padding;
9
-		
10
-		createCanvas(0, 0);
7
+
8
+		this.width = width;
9
+		this.height = height;
10
+
11
+		createCanvas(width, height);
11
 	}
12
 	}
12
 	
13
 	
13
 	setTubesParams(_tubesNumbers, _tubeLevels, _tubeSize)
14
 	setTubesParams(_tubesNumbers, _tubeLevels, _tubeSize)
14
 	{
15
 	{
15
 		this.tubesNumbers = _tubesNumbers;
16
 		this.tubesNumbers = _tubesNumbers;
16
 		this.tubeLevels = _tubeLevels;
17
 		this.tubeLevels = _tubeLevels;
17
-		this.tubeSize = _tubeSize;
18
-		
19
-		this.#canvasWidth = this.tubesNumbers * (this.tubeSize + this.padding) + this.padding;
20
-		this.#canvasHeight = 2 * this.padding + (this.tubeLevels+1) * this.tubeSize;
21
-		
22
-		resizeCanvas(this.#canvasWidth, this.#canvasHeight);
18
+		this.tubeSize = _tubeSize;		
23
 	}
19
 	}
24
 	
20
 	
25
 	draw(game)
21
 	draw(game)
31
 		
27
 		
32
 		this.drawTubes(this.padding, this.padding+this.tubeSize, tubes, selectedTube);
28
 		this.drawTubes(this.padding, this.padding+this.tubeSize, tubes, selectedTube);
33
 
29
 
34
-		if(game.isCompleted)
35
-			this.drawWinView();
36
 	}
30
 	}
37
 
31
 
38
 	drawTubes(x, y, tubes, selectedTube)
32
 	drawTubes(x, y, tubes, selectedTube)
78
 	{
72
 	{
79
 		return x >= this.padding
73
 		return x >= this.padding
80
 			&& y >= this.padding
74
 			&& y >= this.padding
81
-			&& x < this.#canvasWidth - this.padding
82
-			&& y < this.#canvasHeight - this.padding;
75
+			&& x < this.width - this.padding
76
+			&& y < this.height - this.padding;
83
 	}
77
 	}
84
 
78
 
85
-	drawWinView(){
86
-		fill('red');
87
-		textSize(50);
88
-		let textX = this.#canvasWidth / 2 - 175 + 10 * sin(frameCount/10);
89
-		let textY = this.#canvasHeight / 2 		+ 10 * cos(frameCount/10);
90
-		let message = "👑 You Win! 👑"  
91
-		text(message, textX, textY);
92
-		textX ++;
93
-		textY ++;
94
-		fill('yellow');
95
-		text(message, textX, textY);
96
-	}
97
 }
79
 }

+ 20
- 0
js/ui.js View File

1
+class UI {
2
+
3
+    constructor(width, height){
4
+        this.width = width;
5
+        this.height = height;
6
+    }
7
+
8
+    drawWinView(){
9
+        fill('red');
10
+		textSize(50);
11
+		let textX = lerp(this.width / 2 - 175, 20 * sin(frameCount/10), 0.2);
12
+		let textY = lerp(this.height / 2, 20 * cos(frameCount/10), 0.2);
13
+		let message = "👑 You Win! 👑"  
14
+		text(message, textX, textY);
15
+		textX ++;
16
+		textY ++;
17
+		fill('yellow');
18
+		text(message, textX, textY);
19
+    }
20
+}

Loading…
Cancel
Save