@@ -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[][*]
@@ -146,6 +146,8 @@ for (i = 0; i < bmax; i++) {
146
146
bullets [ i ] [ 5 ] = false ;
147
147
}
148
148
149
+ var bulletsCounter = - 1 ;
150
+
149
151
//Enemy size
150
152
var esize = 60 ;
151
153
@@ -547,11 +549,12 @@ function physics() {
547
549
checkIfUnderScreen ( ) ;
548
550
checkEnemyPos ( ) ;
549
551
activeEnemies ( ) ;
552
+ activeBullets ( ) ;
550
553
}
551
554
552
555
function bulletsCollision ( ) {
553
556
for ( h = 0 ; h < maxp [ stageid ] ; h ++ ) {
554
- for ( j = 0 ; j < bmax ; j ++ ) {
557
+ for ( j = 0 ; j <= bulletsCounter ; j ++ ) {
555
558
if ( bullets [ j ] [ 5 ] ) {
556
559
if ( bullets [ j ] [ 1 ] <= platforms [ stageid ] [ h ] [ 1 ] + platforms [ stageid ] [ h ] [ 3 ] + bullets [ j ] [ 2 ] * 0.75 && bullets [ j ] [ 1 ] >= platforms [ stageid ] [ h ] [ 1 ] - bullets [ j ] [ 2 ] * 0.75 ) {
557
560
if ( bullets [ j ] [ 0 ] >= platforms [ stageid ] [ h ] [ 0 ] - bullets [ j ] [ 2 ] * 0.75 && bullets [ j ] [ 0 ] <= platforms [ stageid ] [ h ] [ 0 ] + platforms [ stageid ] [ h ] [ 2 ] + bullets [ j ] [ 2 ] * 0.75 ) {
@@ -639,9 +642,8 @@ function movex(vector) {
639
642
}
640
643
641
644
function drawBullets ( ) {
642
- for ( i = 0 ; i < bmax ; i ++ ) {
643
- if ( bullets [ i ] [ 5 ] ) {
644
- switch ( bullets [ i ] [ 3 ] ) {
645
+ for ( i = 0 ; i <= bulletsCounter ; i ++ ) {
646
+ switch ( bullets [ i ] [ 3 ] ) {
645
647
case 0 :
646
648
bullets [ i ] [ 0 ] += bspeed ;
647
649
bullets [ i ] [ 1 ] -= bspeed ;
@@ -680,73 +682,92 @@ function drawBullets() {
680
682
bullets [ i ] [ 0 ] += bullets [ i ] [ 7 ] ;
681
683
bullets [ i ] [ 1 ] += bullets [ i ] [ 8 ] ;
682
684
break ;
683
- }
684
- if ( bullets [ i ] [ 6 ] === false ) fill ( 'white' ) ;
685
- else fill ( 'red' ) ;
686
- ellipse ( bullets [ i ] [ 0 ] - spos , bullets [ i ] [ 1 ] , bullets [ i ] [ 2 ] , bullets [ i ] [ 2 ] ) ;
687
- fill ( 'white' ) ;
688
-
689
- bullets [ i ] [ 4 ] ++ ;
690
- if ( bullets [ i ] [ 4 ] === 60 * blife ) {
691
- bullets [ i ] [ 5 ] = false ;
692
- }
685
+ }
686
+ if ( bullets [ i ] [ 6 ] === false ) fill ( 'white' ) ;
687
+ else fill ( 'red' ) ;
688
+ ellipse ( bullets [ i ] [ 0 ] - spos , bullets [ i ] [ 1 ] , bullets [ i ] [ 2 ] , bullets [ i ] [ 2 ] ) ;
689
+ fill ( 'white' ) ;
690
+
691
+ bullets [ i ] [ 4 ] ++ ;
692
+ if ( bullets [ i ] [ 4 ] === 60 * blife ) {
693
+ bullets [ i ] [ 5 ] = false ;
693
694
}
694
695
}
695
696
}
696
697
697
698
function newBullet ( enumber ) {
698
- for ( i = 0 ; i < bmax ; i ++ ) {
699
- if ( ! bullets [ i ] [ 5 ] ) {
700
- if ( enumber === - 1 ) {
701
- noshot ++ ;
702
- bullets [ i ] [ 2 ] = bsize ;
703
- if ( direction [ 0 ] && direction [ 2 ] ) {
704
- bullets [ i ] [ 0 ] = spos + px + sx ;
705
- bullets [ i ] [ 1 ] = py + 10 ;
706
- bullets [ i ] [ 3 ] = 0 ;
707
- } else if ( direction [ 0 ] && direction [ 3 ] ) {
708
- bullets [ i ] [ 0 ] = spos + px + sx - 3 ;
709
- bullets [ i ] [ 1 ] = py + 45 ;
710
- bullets [ i ] [ 3 ] = 1 ;
711
- } else if ( direction [ 1 ] && direction [ 2 ] ) {
712
- bullets [ i ] [ 0 ] = spos + px ;
713
- bullets [ i ] [ 1 ] = py + 10 ;
714
- bullets [ i ] [ 3 ] = 2 ;
715
- } else if ( direction [ 1 ] && direction [ 3 ] ) {
716
- bullets [ i ] [ 0 ] = spos + px + 3 ;
717
- bullets [ i ] [ 1 ] = py + 45 ;
718
- bullets [ i ] [ 3 ] = 3 ;
719
- } else if ( direction [ 0 ] ) {
720
- bullets [ i ] [ 0 ] = spos + px + sx + 10 ;
721
- bullets [ i ] [ 1 ] = py + 25 ;
722
- bullets [ i ] [ 3 ] = 4 ;
723
- } else if ( direction [ 1 ] ) {
724
- bullets [ i ] [ 0 ] = spos + px - 10 ;
725
- bullets [ i ] [ 1 ] = py + 25 ;
726
- bullets [ i ] [ 3 ] = 5 ;
699
+ if ( bulletsCounter < bmax - 1 ) {
700
+ bulletsCounter ++ ;
701
+ if ( enumber === - 1 ) {
702
+ noshot ++ ;
703
+ bullets [ bulletsCounter ] [ 2 ] = bsize ;
704
+ if ( direction [ 0 ] && direction [ 2 ] ) {
705
+ bullets [ bulletsCounter ] [ 0 ] = spos + px + sx ;
706
+ bullets [ bulletsCounter ] [ 1 ] = py + 10 ;
707
+ bullets [ bulletsCounter ] [ 3 ] = 0 ;
708
+ } else if ( direction [ 0 ] && direction [ 3 ] ) {
709
+ bullets [ bulletsCounter ] [ 0 ] = spos + px + sx - 3 ;
710
+ bullets [ bulletsCounter ] [ 1 ] = py + 45 ;
711
+ bullets [ bulletsCounter ] [ 3 ] = 1 ;
712
+ } else if ( direction [ 1 ] && direction [ 2 ] ) {
713
+ bullets [ bulletsCounter ] [ 0 ] = spos + px ;
714
+ bullets [ bulletsCounter ] [ 1 ] = py + 10 ;
715
+ bullets [ bulletsCounter ] [ 3 ] = 2 ;
716
+ } else if ( direction [ 1 ] && direction [ 3 ] ) {
717
+ bullets [ bulletsCounter ] [ 0 ] = spos + px + 3 ;
718
+ bullets [ bulletsCounter ] [ 1 ] = py + 45 ;
719
+ bullets [ bulletsCounter ] [ 3 ] = 3 ;
720
+ } else if ( direction [ 0 ] ) {
721
+ bullets [ bulletsCounter ] [ 0 ] = spos + px + sx + 10 ;
722
+ bullets [ bulletsCounter ] [ 1 ] = py + 25 ;
723
+ bullets [ bulletsCounter ] [ 3 ] = 4 ;
724
+ } else if ( direction [ 1 ] ) {
725
+ bullets [ bulletsCounter ] [ 0 ] = spos + px - 10 ;
726
+ bullets [ bulletsCounter ] [ 1 ] = py + 25 ;
727
+ bullets [ bulletsCounter ] [ 3 ] = 5 ;
728
+ }
729
+ bullets [ bulletsCounter ] [ 6 ] = false ;
730
+ } else {
731
+ var a = drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos ;
732
+ var b = drawingenemies [ enumber ] [ 1 ] - py ;
733
+ var c = Math . pow ( a , 2 ) + Math . pow ( b , 2 ) ;
734
+ var d = c / bspeed ;
735
+ bullets [ bulletsCounter ] [ 7 ] = Math . sqrt ( Math . pow ( a , 2 ) / d ) * 3 ;
736
+ bullets [ bulletsCounter ] [ 8 ] = Math . sqrt ( Math . pow ( b , 2 ) / d ) * 3 ;
737
+
738
+ if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos > 0 && drawingenemies [ enumber ] [ 1 ] - py > 0 ) bullets [ bulletsCounter ] [ 3 ] = 6 ;
739
+ else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos > 0 && drawingenemies [ enumber ] [ 1 ] - py <= 0 ) bullets [ bulletsCounter ] [ 3 ] = 7 ;
740
+ else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos <= 0 && drawingenemies [ enumber ] [ 1 ] - py > 0 ) bullets [ bulletsCounter ] [ 3 ] = 8 ;
741
+ else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos <= 0 && drawingenemies [ enumber ] [ 1 ] - py <= 0 ) bullets [ bulletsCounter ] [ 3 ] = 9 ;
742
+
743
+ bullets [ bulletsCounter ] [ 0 ] = drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) ;
744
+ bullets [ bulletsCounter ] [ 1 ] = drawingenemies [ enumber ] [ 1 ] ;
745
+ bullets [ bulletsCounter ] [ 2 ] = bsize ;
746
+ bullets [ bulletsCounter ] [ 6 ] = true ;
747
+ }
748
+ bullets [ bulletsCounter ] [ 4 ] = 0 ;
749
+ bullets [ bulletsCounter ] [ 5 ] = true ;
750
+ }
751
+ }
752
+
753
+ function activeBullets ( ) {
754
+ if ( bulletsCounter >= 0 ) {
755
+ for ( p = 0 ; p <= bulletsCounter ; p ++ ) {
756
+ if ( ! bullets [ p ] [ 5 ] ) {
757
+ if ( bulletsCounter === 0 ) bulletsCounter -- ;
758
+ else {
759
+ bullets [ p ] [ 0 ] = bullets [ bulletsCounter ] [ 0 ] ;
760
+ bullets [ p ] [ 1 ] = bullets [ bulletsCounter ] [ 1 ] ;
761
+ bullets [ p ] [ 2 ] = bullets [ bulletsCounter ] [ 2 ] ;
762
+ bullets [ p ] [ 3 ] = bullets [ bulletsCounter ] [ 3 ] ;
763
+ bullets [ p ] [ 4 ] = bullets [ bulletsCounter ] [ 4 ] ;
764
+ bullets [ p ] [ 5 ] = bullets [ bulletsCounter ] [ 5 ] ;
765
+ bullets [ p ] [ 6 ] = bullets [ bulletsCounter ] [ 6 ] ;
766
+ bullets [ p ] [ 7 ] = bullets [ bulletsCounter ] [ 7 ] ;
767
+ bullets [ p ] [ 8 ] = bullets [ bulletsCounter ] [ 8 ] ;
768
+ bulletsCounter -- ;
727
769
}
728
- bullets [ i ] [ 6 ] = false ;
729
- } else {
730
- var a = drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos ;
731
- var b = drawingenemies [ enumber ] [ 1 ] - py ;
732
- var c = Math . pow ( a , 2 ) + Math . pow ( b , 2 ) ;
733
- var d = c / bspeed ;
734
- bullets [ i ] [ 7 ] = Math . sqrt ( Math . pow ( a , 2 ) / d ) * 3 ;
735
- bullets [ i ] [ 8 ] = Math . sqrt ( Math . pow ( b , 2 ) / d ) * 3 ;
736
-
737
- if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos > 0 && drawingenemies [ enumber ] [ 1 ] - py > 0 ) bullets [ i ] [ 3 ] = 6 ;
738
- else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos > 0 && drawingenemies [ enumber ] [ 1 ] - py <= 0 ) bullets [ i ] [ 3 ] = 7 ;
739
- else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos <= 0 && drawingenemies [ enumber ] [ 1 ] - py > 0 ) bullets [ i ] [ 3 ] = 8 ;
740
- else if ( drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) - px - spos <= 0 && drawingenemies [ enumber ] [ 1 ] - py <= 0 ) bullets [ i ] [ 3 ] = 9 ;
741
-
742
- bullets [ i ] [ 0 ] = drawingenemies [ enumber ] [ 0 ] + ( esize / 2 ) ;
743
- bullets [ i ] [ 1 ] = drawingenemies [ enumber ] [ 1 ] ;
744
- bullets [ i ] [ 2 ] = bsize ;
745
- bullets [ i ] [ 6 ] = true ;
746
770
}
747
- bullets [ i ] [ 4 ] = 0 ;
748
- bullets [ i ] [ 5 ] = true ;
749
- break ;
750
771
}
751
772
}
752
773
}
@@ -793,7 +814,8 @@ function restartGame() {
793
814
default :
794
815
}
795
816
}
796
- for ( j = 0 ; j < bmax ; j ++ ) bullets [ j ] [ 5 ] = 0 ;
817
+ for ( j = 0 ; j <= bulletsCounter ; j ++ ) bullets [ j ] [ 5 ] = 0 ;
818
+ bulletsCounter = - 1 ;
797
819
seconds = 0 ;
798
820
minutes = 3 ;
799
821
score [ stageid ] = 0 ;
@@ -1075,7 +1097,7 @@ function damage() {
1075
1097
}
1076
1098
}
1077
1099
}
1078
- for ( j = 0 ; j < bmax ; j ++ ) {
1100
+ for ( j = 0 ; j <= bulletsCounter ; j ++ ) {
1079
1101
if ( enemies [ stageid ] [ drawingenemies [ l ] [ 2 ] ] [ 7 ] > 0 && bullets [ j ] [ 5 ] && ! bullets [ j ] [ 6 ] ) {
1080
1102
if ( bullets [ j ] [ 1 ] <= drawingenemies [ l ] [ 1 ] + esize + bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 1 ] >= drawingenemies [ l ] [ 1 ] - bullets [ j ] [ 2 ] / 2 ) {
1081
1103
if ( bullets [ j ] [ 0 ] >= drawingenemies [ l ] [ 0 ] - bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 0 ] <= drawingenemies [ l ] [ 0 ] + esize + bullets [ j ] [ 2 ] / 2 ) {
@@ -1090,7 +1112,7 @@ function damage() {
1090
1112
}
1091
1113
}
1092
1114
}
1093
- for ( j = 0 ; j < bmax ; j ++ ) {
1115
+ for ( j = 0 ; j <= bulletsCounter ; j ++ ) {
1094
1116
if ( bullets [ j ] [ 6 ] && bullets [ j ] [ 5 ] ) {
1095
1117
if ( bullets [ j ] [ 1 ] <= py + sy + bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 1 ] >= py - bullets [ j ] [ 2 ] / 2 ) {
1096
1118
if ( bullets [ j ] [ 0 ] >= px + spos - bullets [ j ] [ 2 ] / 2 && bullets [ j ] [ 0 ] <= px + spos + sx + bullets [ j ] [ 2 ] / 2 ) {
0 commit comments