@@ -73,11 +73,11 @@ direction[0] = true;
73
73
//Bullets size
74
74
var bsize = 12 ;
75
75
//Max number of bullets
76
- var bmax = 10 ;
76
+ var bmax = 15 ;
77
77
//Bullets speed
78
78
var bspeed = 12 ;
79
79
//Bullets life in seconds
80
- var blife = 5 ;
80
+ var blife = 2.1 ;
81
81
82
82
var bullets = [ ] ;
83
83
//bullets[][*]
@@ -149,6 +149,8 @@ for (i = 0; i < bmax; i++) {
149
149
bullets [ i ] [ 5 ] = false ;
150
150
}
151
151
152
+ var bulletsCounter = - 1 ;
153
+
152
154
//Enemy size
153
155
var esize = 60 ;
154
156
@@ -164,8 +166,12 @@ var tcounter = 0;
164
166
var maxtime = minutes * 60 + seconds ;
165
167
166
168
//Number of shot
167
- var noshot = 0 ;
168
- var score = [ ] ;
169
+ var noshot = 1 ;
170
+ var score = 0 ;
171
+ var points = 0 ;
172
+ var points2 = 0 ;
173
+ var currentscore = 0 ;
174
+ var generalscore = 0 ;
169
175
170
176
var drawingenemies = [ ] ;
171
177
for ( var n = 0 ; n < 4 ; n ++ ) drawingenemies [ n ] = [ ] ;
@@ -387,8 +393,8 @@ function stageCompleted() {
387
393
textSize ( 50 ) ;
388
394
fill ( '#000000' ) ;
389
395
text ( "Congratulations!!!" , 500 , 100 ) ;
390
- text ( "Your score:" , 575 , 175 ) ;
391
- text ( score , 640 , 250 ) ;
396
+ text ( "Your current score:" , 490 , 175 ) ;
397
+ text ( generalscore , 640 , 250 ) ;
392
398
text ( "Level " + ( stageid + 1 ) + " Completed" , 500 , 400 ) ;
393
399
text ( "Press SPACE to Continue" , 500 , 700 ) ;
394
400
fill ( '#FFFFFF' ) ;
@@ -567,6 +573,7 @@ function physics() {
567
573
checkIfUnderScreen ( ) ;
568
574
checkEnemyPos ( ) ;
569
575
activeEnemies ( ) ;
576
+ activeBullets ( ) ;
570
577
571
578
console . log ( enemiesCounter ) ;
572
579
@@ -577,8 +584,8 @@ function physics() {
577
584
}
578
585
579
586
function bulletsCollision ( ) {
580
- for ( i = 0 ; i < maxp [ stageid ] ; i ++ ) {
581
- for ( j = 0 ; j < bmax ; j ++ ) {
587
+ for ( h = 0 ; h < maxp [ stageid ] ; h ++ ) {
588
+ for ( j = 0 ; j <= bulletsCounter ; j ++ ) {
582
589
if ( bullets [ j ] [ 5 ] ) {
583
590
if ( bullets [ j ] [ 1 ] <= platforms [ stageid ] [ i ] [ 1 ] + platforms [ stageid ] [ i ] [ 3 ] + bullets [ j ] [ 2 ] * 0.75 && bullets [ j ] [ 1 ] >= platforms [ stageid ] [ i ] [ 1 ] - bullets [ j ] [ 2 ] * 0.75 ) {
584
591
if ( bullets [ j ] [ 0 ] >= platforms [ stageid ] [ i ] [ 0 ] - bullets [ j ] [ 2 ] * 0.75 && bullets [ j ] [ 0 ] <= platforms [ stageid ] [ i ] [ 0 ] + platforms [ stageid ] [ i ] [ 2 ] + bullets [ j ] [ 2 ] * 0.75 ) {
@@ -614,7 +621,7 @@ function gravity(maxy, maxid) {
614
621
} else {
615
622
if ( maxid === maxp [ stageid ] - 1 ) {
616
623
completed = true ;
617
- countPoints ( ) ;
624
+ countPoints ( 1 ) ;
618
625
}
619
626
}
620
627
}
@@ -665,103 +672,132 @@ function movex(vector) {
665
672
}
666
673
667
674
function drawBullets ( ) {
668
- for ( i = 0 ; i < bmax ; i ++ ) {
669
- if ( bullets [ i ] [ 5 ] ) {
670
- if ( bullets [ i ] [ 3 ] === 0 ) {
675
+ for ( i = 0 ; i <= bulletsCounter ; i ++ ) {
676
+ switch ( bullets [ i ] [ 3 ] ) {
677
+ case 0 :
671
678
bullets [ i ] [ 0 ] += bspeed ;
672
679
bullets [ i ] [ 1 ] -= bspeed ;
673
- } else if ( bullets [ i ] [ 3 ] === 1 ) {
680
+ break ;
681
+ case 1 :
674
682
bullets [ i ] [ 0 ] += bspeed ;
675
683
bullets [ i ] [ 1 ] += bspeed ;
676
- } else if ( bullets [ i ] [ 3 ] === 2 ) {
684
+ break ;
685
+ case 2 :
677
686
bullets [ i ] [ 0 ] -= bspeed ;
678
687
bullets [ i ] [ 1 ] -= bspeed ;
679
- } else if ( bullets [ i ] [ 3 ] === 3 ) {
688
+ break ;
689
+ case 3 :
680
690
bullets [ i ] [ 0 ] -= bspeed ;
681
691
bullets [ i ] [ 1 ] += bspeed ;
682
- } else if ( bullets [ i ] [ 3 ] === 4 ) {
692
+ break ;
693
+ case 4 :
683
694
bullets [ i ] [ 0 ] += bspeed ;
684
- } else if ( bullets [ i ] [ 3 ] === 5 ) {
695
+ break ;
696
+ case 5 :
685
697
bullets [ i ] [ 0 ] -= bspeed ;
686
- } else if ( bullets [ i ] [ 3 ] === 6 ) {
698
+ break ;
699
+ case 6 :
687
700
bullets [ i ] [ 0 ] -= bullets [ i ] [ 7 ] ;
688
701
bullets [ i ] [ 1 ] -= bullets [ i ] [ 8 ] ;
689
- } else if ( bullets [ i ] [ 3 ] === 7 ) {
702
+ break ;
703
+ case 7 :
690
704
bullets [ i ] [ 0 ] -= bullets [ i ] [ 7 ] ;
691
705
bullets [ i ] [ 1 ] += bullets [ i ] [ 8 ] ;
692
- } else if ( bullets [ i ] [ 3 ] === 8 ) {
706
+ break ;
707
+ case 8 :
693
708
bullets [ i ] [ 0 ] += bullets [ i ] [ 7 ] ;
694
709
bullets [ i ] [ 1 ] -= bullets [ i ] [ 8 ] ;
695
- } else if ( bullets [ i ] [ 3 ] === 9 ) {
710
+ break ;
711
+ case 9 :
696
712
bullets [ i ] [ 0 ] += bullets [ i ] [ 7 ] ;
697
713
bullets [ i ] [ 1 ] += bullets [ i ] [ 8 ] ;
698
- }
699
- if ( bullets [ i ] [ 6 ] === false ) fill ( 'white' ) ;
700
- else fill ( 'red ' ) ;
701
- ellipse ( bullets [ i ] [ 0 ] - spos , bullets [ i ] [ 1 ] , bullets [ i ] [ 2 ] , bullets [ i ] [ 2 ] ) ;
702
- fill ( 'white' ) ;
703
-
704
- bullets [ i ] [ 4 ] ++ ;
705
- if ( bullets [ i ] [ 4 ] === 60 * blife ) {
706
- bullets [ i ] [ 5 ] = false ;
707
- }
714
+ break ;
715
+ }
716
+ if ( bullets [ i ] [ 6 ] === false ) fill ( 'white ' ) ;
717
+ else fill ( 'red' ) ;
718
+ ellipse ( bullets [ i ] [ 0 ] - spos , bullets [ i ] [ 1 ] , bullets [ i ] [ 2 ] , bullets [ i ] [ 2 ] ) ;
719
+ fill ( 'white' ) ;
720
+
721
+ bullets [ i ] [ 4 ] ++ ;
722
+ if ( bullets [ i ] [ 4 ] === 60 * blife ) {
723
+ bullets [ i ] [ 5 ] = false ;
708
724
}
709
725
}
710
726
}
711
727
712
728
function newBullet ( enumber ) {
713
- for ( i = 0 ; i < bmax ; i ++ ) {
714
- if ( ! bullets [ i ] [ 5 ] ) {
715
- if ( enumber === - 1 ) {
716
- noshot ++ ;
717
- bullets [ i ] [ 2 ] = bsize ;
718
- if ( direction [ 0 ] && direction [ 2 ] ) {
719
- bullets [ i ] [ 0 ] = spos + px + sx ;
720
- bullets [ i ] [ 1 ] = py + 10 ;
721
- bullets [ i ] [ 3 ] = 0 ;
722
- } else if ( direction [ 0 ] && direction [ 3 ] ) {
723
- bullets [ i ] [ 0 ] = spos + px + sx - 3 ;
724
- bullets [ i ] [ 1 ] = py + 45 ;
725
- bullets [ i ] [ 3 ] = 1 ;
726
- } else if ( direction [ 1 ] && direction [ 2 ] ) {
727
- bullets [ i ] [ 0 ] = spos + px ;
728
- bullets [ i ] [ 1 ] = py + 10 ;
729
- bullets [ i ] [ 3 ] = 2 ;
730
- } else if ( direction [ 1 ] && direction [ 3 ] ) {
731
- bullets [ i ] [ 0 ] = spos + px + 3 ;
732
- bullets [ i ] [ 1 ] = py + 45 ;
733
- bullets [ i ] [ 3 ] = 3 ;
734
- } else if ( direction [ 0 ] ) {
735
- bullets [ i ] [ 0 ] = spos + px + sx + 10 ;
736
- bullets [ i ] [ 1 ] = py + 25 ;
737
- bullets [ i ] [ 3 ] = 4 ;
738
- } else if ( direction [ 1 ] ) {
739
- bullets [ i ] [ 0 ] = spos + px - 10 ;
740
- bullets [ i ] [ 1 ] = py + 25 ;
741
- bullets [ i ] [ 3 ] = 5 ;
729
+ if ( bulletsCounter < bmax - 1 ) {
730
+ bulletsCounter ++ ;
731
+ if ( enumber === - 1 ) {
732
+ noshot ++ ;
733
+ bullets [ bulletsCounter ] [ 2 ] = bsize ;
734
+ if ( direction [ 0 ] && direction [ 2 ] ) {
735
+ bullets [ bulletsCounter ] [ 0 ] = spos + px + sx ;
736
+ bullets [ bulletsCounter ] [ 1 ] = py + 10 ;
737
+ bullets [ bulletsCounter ] [ 3 ] = 0 ;
738
+ } else if ( direction [ 0 ] && direction [ 3 ] ) {
739
+ bullets [ bulletsCounter ] [ 0 ] = spos + px + sx - 3 ;
740
+ bullets [ bulletsCounter ] [ 1 ] = py + 45 ;
741
+ bullets [ bulletsCounter ] [ 3 ] = 1 ;
742
+ } else if ( direction [ 1 ] && direction [ 2 ] ) {
743
+ bullets [ bulletsCounter ] [ 0 ] = spos + px ;
744
+ bullets [ bulletsCounter ] [ 1 ] = py + 10 ;
745
+ bullets [ bulletsCounter ] [ 3 ] = 2 ;
746
+ } else if ( direction [ 1 ] && direction [ 3 ] ) {
747
+ bullets [ bulletsCounter ] [ 0 ] = spos + px + 3 ;
748
+ bullets [ bulletsCounter ] [ 1 ] = py + 45 ;
749
+ bullets [ bulletsCounter ] [ 3 ] = 3 ;
750
+ } else if ( direction [ 0 ] ) {
751
+ bullets [ bulletsCounter ] [ 0 ] = spos + px + sx + 10 ;
752
+ bullets [ bulletsCounter ] [ 1 ] = py + 25 ;
753
+ bullets [ bulletsCounter ] [ 3 ] = 4 ;
754
+ } else if ( direction [ 1 ] ) {
755
+ bullets [ bulletsCounter ] [ 0 ] = spos + px - 10 ;
756
+ bullets [ bulletsCounter ] [ 1 ] = py + 25 ;
757
+ bullets [ bulletsCounter ] [ 3 ] = 5 ;
758
+ }
759
+ bullets [ bulletsCounter ] [ 6 ] = false ;
760
+ } else {
761
+ var a = drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos ;
762
+ var b = drawingenemies [ enumber ] [ 1 ] - py ;
763
+ var c = Math . pow ( a , 2 ) + Math . pow ( b , 2 ) ;
764
+ var d = c / bspeed ;
765
+ bullets [ bulletsCounter ] [ 7 ] = Math . sqrt ( Math . pow ( a , 2 ) / d ) * 3 ;
766
+ bullets [ bulletsCounter ] [ 8 ] = Math . sqrt ( Math . pow ( b , 2 ) / d ) * 3 ;
767
+
768
+ if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos > 0 && drawingenemies [ enumber ] [ 1 ] - py > 0 ) bullets [ bulletsCounter ] [ 3 ] = 6 ;
769
+ else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos > 0 && drawingenemies [ enumber ] [ 1 ] - py <= 0 ) bullets [ bulletsCounter ] [ 3 ] = 7 ;
770
+ else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos <= 0 && drawingenemies [ enumber ] [ 1 ] - py > 0 ) bullets [ bulletsCounter ] [ 3 ] = 8 ;
771
+ else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos <= 0 && drawingenemies [ enumber ] [ 1 ] - py <= 0 ) bullets [ bulletsCounter ] [ 3 ] = 9 ;
772
+
773
+ bullets [ bulletsCounter ] [ 0 ] = drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) ;
774
+ bullets [ bulletsCounter ] [ 1 ] = drawingenemies [ enumber ] [ 1 ] ;
775
+ bullets [ bulletsCounter ] [ 2 ] = bsize ;
776
+ bullets [ bulletsCounter ] [ 6 ] = true ;
777
+ }
778
+ bullets [ bulletsCounter ] [ 4 ] = 0 ;
779
+ bullets [ bulletsCounter ] [ 5 ] = true ;
780
+ }
781
+ }
782
+
783
+ function activeBullets ( ) {
784
+ if ( bulletsCounter >= 0 ) {
785
+ for ( p = 0 ; p <= bulletsCounter ; p ++ ) {
786
+ if ( ! bullets [ p ] [ 5 ] ) {
787
+ if ( bulletsCounter === 0 ) bulletsCounter -- ;
788
+ else {
789
+ bullets [ p ] [ 0 ] = bullets [ bulletsCounter ] [ 0 ] ;
790
+ bullets [ p ] [ 1 ] = bullets [ bulletsCounter ] [ 1 ] ;
791
+ bullets [ p ] [ 2 ] = bullets [ bulletsCounter ] [ 2 ] ;
792
+ bullets [ p ] [ 3 ] = bullets [ bulletsCounter ] [ 3 ] ;
793
+ bullets [ p ] [ 4 ] = bullets [ bulletsCounter ] [ 4 ] ;
794
+ bullets [ p ] [ 5 ] = bullets [ bulletsCounter ] [ 5 ] ;
795
+ bullets [ p ] [ 6 ] = bullets [ bulletsCounter ] [ 6 ] ;
796
+ bullets [ p ] [ 7 ] = bullets [ bulletsCounter ] [ 7 ] ;
797
+ bullets [ p ] [ 8 ] = bullets [ bulletsCounter ] [ 8 ] ;
798
+ bulletsCounter -- ;
742
799
}
743
- bullets [ i ] [ 6 ] = false ;
744
- } else {
745
- var a = drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos ;
746
- var b = drawingenemies [ enumber ] [ 1 ] - py ;
747
- var c = Math . pow ( a , 2 ) + Math . pow ( b , 2 ) ;
748
- var d = c / bspeed ;
749
- bullets [ i ] [ 7 ] = Math . sqrt ( Math . pow ( a , 2 ) / d ) * 3 ;
750
- bullets [ i ] [ 8 ] = Math . sqrt ( Math . pow ( b , 2 ) / d ) * 3 ;
751
-
752
- if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos > 0 && drawingenemies [ enumber ] [ 1 ] - py > 0 ) bullets [ i ] [ 3 ] = 6 ;
753
- else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos > 0 && drawingenemies [ enumber ] [ 1 ] - py <= 0 ) bullets [ i ] [ 3 ] = 7 ;
754
- else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos <= 0 && drawingenemies [ enumber ] [ 1 ] - py > 0 ) bullets [ i ] [ 3 ] = 8 ;
755
- else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos <= 0 && drawingenemies [ enumber ] [ 1 ] - py <= 0 ) bullets [ i ] [ 3 ] = 9 ;
756
-
757
- bullets [ i ] [ 0 ] = drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) ;
758
- bullets [ i ] [ 1 ] = drawingenemies [ enumber ] [ 1 ] ;
759
- bullets [ i ] [ 2 ] = bsize ;
760
- bullets [ i ] [ 6 ] = true ;
761
800
}
762
- bullets [ i ] [ 4 ] = 0 ;
763
- bullets [ i ] [ 5 ] = true ;
764
- break ;
765
801
}
766
802
}
767
803
}
@@ -808,19 +844,18 @@ function restartGame() {
808
844
default :
809
845
}
810
846
}
811
- for ( j = 0 ; j < bmax ; j ++ ) bullets [ j ] [ 5 ] = 0 ;
847
+ for ( j = 0 ; j <= bulletsCounter ; j ++ ) bullets [ j ] [ 5 ] = 0 ;
848
+ bulletsCounter = - 1 ;
812
849
seconds = 0 ;
813
850
minutes = 3 ;
814
- score [ stageid ] = 0 ;
815
- noshot = 0 ;
851
+ score = 0 ;
852
+ noshot = 1 ;
816
853
lastp = getLastPlatform ( ) ;
817
854
sstart = 0 ;
818
-
819
855
for ( p = 0 ; p <= enemiesCounter ; p ++ ) {
820
856
enemies [ stageid ] [ drawingenemies [ p ] [ 2 ] ] [ 8 ] = false ;
821
- }
822
- enemiesCounter = - 1 ;
823
-
857
+ }
858
+ enemiesCounter = - 1 ;
824
859
}
825
860
826
861
function checkEnemyPos ( ) {
@@ -849,8 +884,6 @@ function createNewEnemy(x, y, id) {
849
884
function drawEnemies ( ) {
850
885
for ( i = 0 ; i <= enemiesCounter ; i ++ ) {
851
886
var k = 0 ;
852
-
853
-
854
887
//Draw Life Bars
855
888
switch ( enemies [ stageid ] [ drawingenemies [ i ] [ 2 ] ] [ 5 ] ) {
856
889
case 0 :
@@ -1053,6 +1086,7 @@ function drawHUD() {
1053
1086
fill ( 'black' ) ;
1054
1087
text ( plifep , 82 , 65 ) ;
1055
1088
drawTimer ( ) ;
1089
+ text ( countPoints ( 0 ) , 1245 , 65 ) ;
1056
1090
fill ( '#FFFFFF' ) ;
1057
1091
}
1058
1092
@@ -1095,22 +1129,23 @@ function damage() {
1095
1129
}
1096
1130
}
1097
1131
}
1098
- for ( j = 0 ; j < bmax ; j ++ ) {
1132
+ for ( j = 0 ; j <= bulletsCounter ; j ++ ) {
1099
1133
if ( enemies [ stageid ] [ drawingenemies [ l ] [ 2 ] ] [ 7 ] > 0 && bullets [ j ] [ 5 ] && ! bullets [ j ] [ 6 ] ) {
1100
1134
if ( bullets [ j ] [ 1 ] <= drawingenemies [ l ] [ 1 ] + esize + bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 1 ] >= drawingenemies [ l ] [ 1 ] - bullets [ j ] [ 2 ] / 2 ) {
1101
1135
if ( bullets [ j ] [ 0 ] >= drawingenemies [ l ] [ 0 ] - bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 0 ] <= drawingenemies [ l ] [ 0 ] + esize + bullets [ j ] [ 2 ] / 2 ) {
1102
1136
bullets [ j ] [ 5 ] = false ;
1103
1137
lifePoints ( drawingenemies [ l ] [ 2 ] , - 1 ) ;
1104
1138
if ( enemies [ stageid ] [ drawingenemies [ l ] [ 2 ] ] [ 7 ] === 0 ) {
1105
- if ( enemies [ stageid ] [ drawingenemies [ l ] [ 2 ] ] [ 5 ] === 0 ) score [ stageid ] += 150 ;
1106
- else score [ stageid ] += 250 ;
1139
+ if ( enemies [ stageid ] [ drawingenemies [ l ] [ 2 ] ] [ 5 ] === 0 ) score += 150 ;
1140
+ else if ( enemies [ stageid ] [ drawingenemies [ l ] [ 2 ] ] [ 5 ] === 1 ) score += 250 ;
1141
+ else score += 400 ;
1107
1142
}
1108
1143
}
1109
1144
}
1110
1145
}
1111
1146
}
1112
1147
}
1113
- for ( j = 0 ; j < bmax ; j ++ ) {
1148
+ for ( j = 0 ; j <= bulletsCounter ; j ++ ) {
1114
1149
if ( bullets [ j ] [ 6 ] && bullets [ j ] [ 5 ] ) {
1115
1150
if ( bullets [ j ] [ 1 ] <= py + sy + bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 1 ] >= py - bullets [ j ] [ 2 ] / 2 ) {
1116
1151
if ( bullets [ j ] [ 0 ] >= px + spos - bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 0 ] <= px + spos + sx + bullets [ j ] [ 2 ] / 2 ) {
@@ -1209,13 +1244,18 @@ function spikesCollision() {
1209
1244
}
1210
1245
}
1211
1246
1212
- function countPoints ( ) {
1213
- for ( var k = 1 ; k <= plifep ; k ++ ) score [ stageid ] += 75 ;
1214
- var points = ( 60 * minutes + seconds ) * 300 / maxtime ;
1215
- if ( noshot === 0 ) noshot ++ ;
1216
- var points2 = 350 / noshot ;
1217
- score [ stageid ] = score [ stageid ] + points + points2 ;
1218
- score [ stageid ] = Math . round ( score [ stageid ] ) ;
1247
+ function countPoints ( type ) {
1248
+ switch ( type ) {
1249
+ case 0 :
1250
+ points = ( 60 * minutes + seconds ) * 600 / maxtime ;
1251
+ points2 = 500 / noshot ;
1252
+ currentscore = Math . round ( points + points2 + score ) ;
1253
+ return currentscore + generalscore ;
1254
+ break ;
1255
+ case 1 :
1256
+ generalscore = generalscore + currentscore ;
1257
+ break ;
1258
+ }
1219
1259
}
1220
1260
1221
1261
0 commit comments