Skip to content

Commit b3cf162

Browse files
committed
Przebudowa rysowania pociskow, optymalizacja kodu
1 parent 6da5c9e commit b3cf162

File tree

1 file changed

+91
-69
lines changed

1 file changed

+91
-69
lines changed

js/app_p5.js

+91-69
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ direction[0] = true;
7373
//Bullets size
7474
var bsize = 12;
7575
//Max number of bullets
76-
var bmax = 10;
76+
var bmax = 15;
7777
//Bullets speed
7878
var bspeed = 12;
7979
//Bullets life in seconds
80-
var blife = 5;
80+
var blife = 2.1;
8181

8282
var bullets = [];
8383
//bullets[][*]
@@ -146,6 +146,8 @@ for (i = 0; i < bmax; i++) {
146146
bullets[i][5] = false;
147147
}
148148

149+
var bulletsCounter = -1;
150+
149151
//Enemy size
150152
var esize = 60;
151153

@@ -547,11 +549,12 @@ function physics() {
547549
checkIfUnderScreen();
548550
checkEnemyPos();
549551
activeEnemies();
552+
activeBullets();
550553
}
551554

552555
function bulletsCollision() {
553556
for (h = 0; h < maxp[stageid]; h++) {
554-
for (j = 0; j < bmax; j++) {
557+
for (j = 0; j <= bulletsCounter; j++) {
555558
if (bullets[j][5]) {
556559
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) {
557560
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) {
639642
}
640643

641644
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]) {
645647
case 0:
646648
bullets[i][0] += bspeed;
647649
bullets[i][1] -= bspeed;
@@ -680,73 +682,92 @@ function drawBullets() {
680682
bullets[i][0] += bullets[i][7];
681683
bullets[i][1] += bullets[i][8];
682684
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;
693694
}
694695
}
695696
}
696697

697698
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--;
727769
}
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;
746770
}
747-
bullets[i][4] = 0;
748-
bullets[i][5] = true;
749-
break;
750771
}
751772
}
752773
}
@@ -793,7 +814,8 @@ function restartGame() {
793814
default:
794815
}
795816
}
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;
797819
seconds = 0;
798820
minutes = 3;
799821
score[stageid] = 0;
@@ -1075,7 +1097,7 @@ function damage() {
10751097
}
10761098
}
10771099
}
1078-
for (j = 0; j < bmax; j++) {
1100+
for (j = 0; j <= bulletsCounter; j++) {
10791101
if (enemies[stageid][drawingenemies[l][2]][7] > 0 && bullets[j][5] && !bullets[j][6]) {
10801102
if (bullets[j][1] <= drawingenemies[l][1] + esize + bullets[j][2] / 2 && bullets[j][1] >= drawingenemies[l][1] - bullets[j][2] / 2) {
10811103
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() {
10901112
}
10911113
}
10921114
}
1093-
for (j = 0; j < bmax; j++) {
1115+
for (j = 0; j <= bulletsCounter; j++) {
10941116
if (bullets[j][6] && bullets[j][5]) {
10951117
if (bullets[j][1] <= py + sy + bullets[j][2] / 2 && bullets[j][1] >= py - bullets[j][2] / 2) {
10961118
if (bullets[j][0] >= px + spos - bullets[j][2] / 2 && bullets[j][0] <= px + spos + sx + bullets[j][2] / 2) {

0 commit comments

Comments
 (0)