@@ -20,24 +20,40 @@ <h2 class="mb-4"><a href="#frogger-game" id="frogger-game">Frogger Game</a></h2>
2020const grid = 50 ;
2121const rows = 10 ;
2222const cols = 8 ;
23- let frog , cars , gameOver , win ;
23+ let frog , cars , gameOver , win , level , maxLevel ;
2424
25- function resetGame ( ) {
26- frog = { x : 3 , y : 9 } ;
27- cars = [
28- { y : 7 , speed : 2 , dir : 1 , positions : [ 0 , 4 ] } ,
29- { y : 6 , speed : 3 , dir : - 1 , positions : [ 2 , 6 ] } ,
30- { y : 5 , speed : 2 , dir : 1 , positions : [ 1 , 5 ] } ,
31- { y : 3 , speed : 3 , dir : - 1 , positions : [ 3 , 7 ] }
25+
26+ function getCarsForLevel ( lvl ) {
27+ // Increase number of cars and speed with each level
28+ const baseCars = [
29+ { y : 7 , speed : 2 + lvl , dir : 1 , positions : [ 0 , 4 ] } ,
30+ { y : 6 , speed : 3 + Math . floor ( lvl / 2 ) , dir : - 1 , positions : [ 2 , 6 ] } ,
31+ { y : 5 , speed : 2 + Math . floor ( lvl / 2 ) , dir : 1 , positions : [ 1 , 5 ] } ,
32+ { y : 3 , speed : 3 + lvl , dir : - 1 , positions : [ 3 , 7 ] }
3233 ] ;
34+ if ( lvl > 1 ) {
35+ // Add more cars for higher levels
36+ baseCars . push ( { y : 4 , speed : 2 + lvl , dir : lvl % 2 === 0 ? 1 : - 1 , positions : [ 0 , 6 ] } ) ;
37+ }
38+ if ( lvl > 2 ) {
39+ baseCars . push ( { y : 2 , speed : 3 + lvl , dir : lvl % 2 === 1 ? 1 : - 1 , positions : [ 2 , 5 ] } ) ;
40+ }
41+ return baseCars ;
42+ }
43+
44+ function resetGame ( newLevel ) {
45+ frog = { x : 3 , y : 9 } ;
46+ level = typeof newLevel === 'number' ? newLevel : 1 ;
47+ maxLevel = 5 ;
48+ cars = getCarsForLevel ( level ) ;
3349 gameOver = false ;
3450 win = false ;
3551}
3652
37- resetGame ( ) ;
53+ resetGame ( 1 ) ;
3854// Restart button handler
3955document . getElementById ( 'restartBtn' ) . addEventListener ( 'click' , function ( ) {
40- resetGame ( ) ;
56+ resetGame ( level ) ;
4157} ) ;
4258
4359function drawFrog ( ) {
@@ -117,10 +133,19 @@ <h2 class="mb-4"><a href="#frogger-game" id="frogger-game">Frogger Game</a></h2>
117133 }
118134}
119135
136+ let advancingLevel = false ;
120137function checkWin ( ) {
121- if ( frog . y === 0 ) {
122- win = true ;
123- gameOver = true ;
138+ if ( frog . y === 0 && ! advancingLevel ) {
139+ if ( level < maxLevel ) {
140+ advancingLevel = true ;
141+ setTimeout ( ( ) => {
142+ resetGame ( level + 1 ) ;
143+ advancingLevel = false ;
144+ } , 800 ) ;
145+ } else {
146+ win = true ;
147+ gameOver = true ;
148+ }
124149 }
125150}
126151
@@ -161,6 +186,11 @@ <h2 class="mb-4"><a href="#frogger-game" id="frogger-game">Frogger Game</a></h2>
161186 ctx . moveTo ( 36 , canvas . height / 2 ) ;
162187 ctx . lineTo ( canvas . width , canvas . height / 2 ) ;
163188 ctx . stroke ( ) ;
189+ // Draw level indicator
190+ ctx . fillStyle = '#fff' ;
191+ ctx . font = 'bold 18px sans-serif' ;
192+ ctx . textAlign = 'left' ;
193+ ctx . fillText ( 'Level: ' + level + ' / ' + maxLevel , 48 , 32 ) ;
164194 drawFrog ( ) ;
165195 drawCars ( ) ;
166196 if ( gameOver ) {
0 commit comments