@@ -18,6 +18,14 @@ var pxspeed = 7;
18
18
var sx = 50 ;
19
19
var sy = 50 ;
20
20
21
+ //Player life points
22
+ var plifep = 3 ;
23
+ //True if player can't get damage
24
+ //False if player can get damage
25
+ var nodamage = false ;
26
+ //No damage counter
27
+ var ndcounter = 0 ;
28
+
21
29
var onair = false ;
22
30
23
31
//True if player rise
@@ -117,6 +125,8 @@ enemies[0][2] = 650;
117
125
enemies [ 0 ] [ 3 ] = 810 ;
118
126
enemies [ 0 ] [ 4 ] = true ;
119
127
enemies [ 0 ] [ 5 ] = 0 ;
128
+ enemies [ 0 ] [ 6 ] = - 1 ;
129
+ enemies [ 0 ] [ 7 ] = 3 ;
120
130
121
131
enemies [ 1 ] [ 0 ] = 4690 ;
122
132
enemies [ 1 ] [ 1 ] = 280 ;
@@ -125,6 +135,7 @@ enemies[1][3] = 4810;
125
135
enemies [ 1 ] [ 4 ] = true ;
126
136
enemies [ 1 ] [ 5 ] = 1 ;
127
137
enemies [ 1 ] [ 6 ] = 0 ;
138
+ enemies [ 1 ] [ 7 ] = 2 ;
128
139
129
140
var enemyimg ;
130
141
var enemyimg2 ;
@@ -216,14 +227,18 @@ function keyTyped() {
216
227
}
217
228
218
229
function drawObjects ( ) {
219
- //Draw Player
220
- rect ( px , py , sx , sy ) ;
230
+ drawPlayer ( ) ;
221
231
drawPlatforms ( ) ;
222
232
drawEnemies ( ) ;
223
233
drawSpikes ( ) ;
224
234
drawBullets ( ) ;
225
235
}
226
236
237
+ function drawPlayer ( ) {
238
+ if ( ! nodamage ) rect ( px , py , sx , sy ) ;
239
+ else noDamage ( ) ;
240
+ }
241
+
227
242
function drawPlatforms ( ) {
228
243
fill ( '#0000FF' ) ;
229
244
i = Math . max ( rstart - 1 , 0 ) ;
@@ -316,7 +331,7 @@ function collision() {
316
331
if ( jumped ) jump ( ) ;
317
332
bulletsCollision ( ) ;
318
333
moveEnemies ( ) ;
319
- enemiesDamage ( ) ;
334
+ damage ( ) ;
320
335
spikesCollision ( ) ;
321
336
checkIfUnderScreen ( ) ;
322
337
}
@@ -522,30 +537,40 @@ function restartGame() {
522
537
rstart = 0 ;
523
538
cstart = 0 ;
524
539
paused = true ;
525
-
540
+ plifep = 3 ;
541
+ nodamage = false ;
542
+ ndcounter = 0 ;
543
+ for ( j = 0 ; j < enumber ; j ++ ) {
544
+ if ( enemies [ j ] [ 5 ] === 0 ) enemies [ j ] [ 7 ] = 3 ;
545
+ else enemies [ j ] [ 7 ] = 2 ;
546
+ }
547
+ for ( j = 0 ; j < bmax ; j ++ ) bullets [ j ] [ 5 ] = 0 ;
526
548
}
527
549
528
550
529
551
function moveEnemies ( ) {
530
552
for ( i = 0 ; i < enumber ; i ++ ) {
553
+ if ( enemies [ i ] [ 7 ] > 0 ) {
531
554
//Check enemy direction
532
- if ( enemies [ i ] [ 4 ] ) {
555
+ if ( enemies [ i ] [ 4 ] ) {
533
556
//Right--->
534
- if ( enemies [ i ] [ 3 ] - enemies [ i ] [ 0 ] - esize <= espeed ) {
535
- enemies [ i ] [ 0 ] = enemies [ i ] [ 3 ] - esize ;
536
- enemies [ i ] [ 4 ] = false ;
537
- } else {
538
- enemies [ i ] [ 0 ] += espeed ;
557
+ if ( enemies [ i ] [ 3 ] - enemies [ i ] [ 0 ] - esize <= espeed ) {
558
+ enemies [ i ] [ 0 ] = enemies [ i ] [ 3 ] - esize ;
559
+ enemies [ i ] [ 4 ] = false ;
560
+ } else {
561
+ enemies [ i ] [ 0 ] += espeed ;
562
+ }
563
+
539
564
}
565
+ else {
566
+ //Left <---
567
+ if ( enemies [ i ] [ 0 ] - enemies [ i ] [ 2 ] <= espeed ) {
568
+ enemies [ i ] [ 0 ] = enemies [ i ] [ 2 ] ;
569
+ enemies [ i ] [ 4 ] = true ;
570
+ } else {
571
+ enemies [ i ] [ 0 ] -= espeed ;
572
+ }
540
573
541
- }
542
- else {
543
- //Left <---
544
- if ( enemies [ i ] [ 0 ] - enemies [ i ] [ 2 ] <= espeed ) {
545
- enemies [ i ] [ 0 ] = enemies [ i ] [ 2 ] ;
546
- enemies [ i ] [ 4 ] = true ;
547
- } else {
548
- enemies [ i ] [ 0 ] -= espeed ;
549
574
}
550
575
551
576
}
@@ -557,22 +582,76 @@ function moveEnemies() {
557
582
function drawEnemies ( ) {
558
583
fill ( 'gold' ) ;
559
584
for ( i = 0 ; i < enumber ; i ++ ) {
560
- if ( enemies [ i ] [ 5 ] === 0 ) image ( enemyimg , enemies [ i ] [ 0 ] - spos , enemies [ i ] [ 1 ] ) ;
561
- else image ( enemyimg2 , enemies [ i ] [ 0 ] - spos , enemies [ i ] [ 1 ] ) ;
585
+ if ( enemies [ i ] [ 7 ] > 0 ) {
586
+ if ( enemies [ i ] [ 5 ] === 0 ) image ( enemyimg , enemies [ i ] [ 0 ] - spos , enemies [ i ] [ 1 ] ) ;
587
+ else image ( enemyimg2 , enemies [ i ] [ 0 ] - spos , enemies [ i ] [ 1 ] ) ;
588
+ }
562
589
}
563
590
fill ( '#FFFFFF' ) ;
564
591
}
565
592
566
- function enemiesDamage ( ) {
567
- for ( i = 0 ; i < enumber ; i ++ ) {
568
- if ( enemies [ i ] [ 5 ] === 1 ) {
569
- if ( px + spos >= enemies [ i ] [ 0 ] - 500 && px + spos <= enemies [ i ] [ 0 ] + 500 && enemies [ i ] [ 6 ] === 0 ) {
570
- enemies [ i ] [ 6 ] ++ ;
571
- newBullet ( i ) ;
572
- } else if ( enemies [ i ] [ 6 ] > 0 && enemies [ i ] [ 6 ] < 60 * ttshot + 1 ) enemies [ i ] [ 6 ] ++ ;
573
- else if ( enemies [ i ] [ 6 ] === 60 * ttshot + 1 ) enemies [ i ] [ 6 ] = 0 ;
593
+ function damage ( ) {
594
+ for ( l = 0 ; l < enumber ; l ++ ) {
595
+ if ( enemies [ l ] [ 5 ] === 1 && enemies [ l ] [ 7 ] > 0 ) {
596
+ if ( px + spos >= enemies [ l ] [ 0 ] - 500 && px + spos <= enemies [ l ] [ 0 ] + 500 && enemies [ l ] [ 6 ] === 0 ) {
597
+ enemies [ l ] [ 6 ] ++ ;
598
+ newBullet ( l ) ;
599
+ } else if ( enemies [ l ] [ 6 ] > 0 && enemies [ l ] [ 6 ] < 60 * ttshot + 1 ) enemies [ l ] [ 6 ] ++ ;
600
+ else if ( enemies [ l ] [ 6 ] === 60 * ttshot + 1 ) enemies [ l ] [ 6 ] = 0 ;
601
+ }
602
+ if ( enemies [ l ] [ 7 ] > 0 ) {
603
+ if ( py <= enemies [ l ] [ 1 ] + esize - sy && py >= enemies [ l ] [ 1 ] - sy ) {
604
+ if ( px >= enemies [ l ] [ 0 ] - spos - sx && px <= enemies [ l ] [ 0 ] + esize - spos ) {
605
+ lifePoints ( - 1 , - 1 ) ;
606
+ }
607
+ }
608
+ }
609
+ for ( j = 0 ; j < bmax ; j ++ ) {
610
+ if ( enemies [ l ] [ 7 ] > 0 ) {
611
+ if ( bullets [ j ] [ 5 ] ) {
612
+ if ( ! bullets [ j ] [ 6 ] ) {
613
+ if ( bullets [ j ] [ 1 ] <= enemies [ l ] [ 1 ] + esize + bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 1 ] >= enemies [ l ] [ 1 ] - bullets [ j ] [ 2 ] / 2 ) {
614
+ if ( bullets [ j ] [ 0 ] >= enemies [ l ] [ 0 ] - bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 0 ] <= enemies [ l ] [ 0 ] + esize + bullets [ j ] [ 2 ] / 2 ) {
615
+ bullets [ j ] [ 5 ] = false ;
616
+ lifePoints ( l , - 1 ) ;
617
+ }
618
+ }
619
+ }
620
+ }
621
+ }
574
622
}
575
623
}
624
+ for ( j = 0 ; j < bmax ; j ++ ) {
625
+ if ( bullets [ j ] [ 6 ] ) {
626
+ if ( bullets [ j ] [ 5 ] ) {
627
+ if ( bullets [ j ] [ 1 ] <= py + sy + bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 1 ] >= py - bullets [ j ] [ 2 ] / 2 ) {
628
+ if ( bullets [ j ] [ 0 ] >= px + spos - bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 0 ] <= px + spos + sx + bullets [ j ] [ 2 ] / 2 ) {
629
+ bullets [ j ] [ 5 ] = false ;
630
+ lifePoints ( - 1 , - 1 ) ;
631
+ }
632
+ }
633
+ }
634
+ }
635
+ }
636
+ }
637
+
638
+ function lifePoints ( id , number ) {
639
+ if ( id === - 1 && ! nodamage ) {
640
+ plifep += number ;
641
+ nodamage = true ;
642
+ } else if ( id >= 0 ) {
643
+ enemies [ id ] [ 7 ] += number ;
644
+ }
645
+ if ( plifep === 0 ) lose ( ) ;
646
+ }
647
+
648
+ function noDamage ( ) {
649
+ ndcounter ++ ;
650
+ if ( ndcounter % 10 === 0 ) rect ( px , py , sx , sy ) ;
651
+ if ( ndcounter === 60 * 1.5 ) {
652
+ nodamage = false ;
653
+ ndcounter = 0 ;
654
+ }
576
655
}
577
656
578
657
function drawSpikes ( ) {
@@ -596,10 +675,10 @@ function spikesCollision() {
596
675
for ( i = 0 ; i < maxs [ stageid ] ; i ++ ) {
597
676
//Spikes UP AND DOWN
598
677
if ( pposx >= spikes [ stageid ] [ i ] [ 0 ] - swidth - sx && pposx <= spikes [ stageid ] [ i ] [ 0 ] + swidth )
599
- if ( ( spikes [ stageid ] [ i ] [ 2 ] === 0 && py >= spikes [ stageid ] [ i ] [ 1 ] && py <= spikes [ stageid ] [ i ] [ 1 ] + sheight ) || ( spikes [ stageid ] [ i ] [ 2 ] === 1 && py >= spikes [ stageid ] [ i ] [ 1 ] - sheight && py <= spikes [ stageid ] [ i ] [ 1 ] ) ) lose ( ) ;
678
+ if ( ( spikes [ stageid ] [ i ] [ 2 ] === 0 && py >= spikes [ stageid ] [ i ] [ 1 ] && py <= spikes [ stageid ] [ i ] [ 1 ] + sheight ) || ( spikes [ stageid ] [ i ] [ 2 ] === 1 && py >= spikes [ stageid ] [ i ] [ 1 ] - sheight && py <= spikes [ stageid ] [ i ] [ 1 ] ) ) lifePoints ( - 1 , - 1 ) ;
600
679
601
680
//Spikes LEFT AND RIGHT
602
681
if ( py >= spikes [ stageid ] [ i ] [ 1 ] - swidth && py <= spikes [ stageid ] [ i ] [ 1 ] + swidth )
603
- if ( ( spikes [ stageid ] [ i ] [ 2 ] === 2 && pposx >= spikes [ stageid ] [ i ] [ 0 ] - sheight - sx / 3 && pposx <= spikes [ stageid ] [ i ] [ 0 ] + sx ) || ( spikes [ stageid ] [ i ] [ 2 ] === 3 && pposx >= spikes [ stageid ] [ i ] [ 0 ] && pposx <= spikes [ stageid ] [ i ] [ 0 ] + sheight ) ) lose ( ) ;
682
+ if ( ( spikes [ stageid ] [ i ] [ 2 ] === 2 && pposx >= spikes [ stageid ] [ i ] [ 0 ] - sheight - sx / 3 && pposx <= spikes [ stageid ] [ i ] [ 0 ] + sx ) || ( spikes [ stageid ] [ i ] [ 2 ] === 3 && pposx >= spikes [ stageid ] [ i ] [ 0 ] && pposx <= spikes [ stageid ] [ i ] [ 0 ] + sheight ) ) lifePoints ( - 1 , - 1 ) ;
604
683
}
605
684
}
0 commit comments