Skip to content

Commit b63e78c

Browse files
authored
Merge pull request #21 from marcins1/master
Dodanie nowych funkcji, poprawienie błędów.
2 parents ba210ad + 339c90b commit b63e78c

File tree

1 file changed

+130
-81
lines changed

1 file changed

+130
-81
lines changed

js/app_p5.js

+130-81
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ var pxspeed = 7;
1818
var sx = 50;
1919
var sy = 50;
2020

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+
2129
var onair = false;
2230

2331
//True if player rise
@@ -37,6 +45,7 @@ var spos = 0;
3745
var grav = 7;
3846

3947
var direction = [];
48+
direction[0] = true;
4049

4150
//Bullets size
4251
var bsize = 20;
@@ -116,6 +125,8 @@ enemies[0][2] = 650;
116125
enemies[0][3] = 810;
117126
enemies[0][4] = true;
118127
enemies[0][5] = 0;
128+
enemies[0][6] = -1;
129+
enemies[0][7] = 3;
119130

120131
enemies[1][0] = 4690;
121132
enemies[1][1] = 280;
@@ -124,6 +135,7 @@ enemies[1][3] = 4810;
124135
enemies[1][4] = true;
125136
enemies[1][5] = 1;
126137
enemies[1][6] = 0;
138+
enemies[1][7] = 2;
127139

128140
var enemyimg;
129141
var enemyimg2;
@@ -215,14 +227,18 @@ function keyTyped() {
215227
}
216228

217229
function drawObjects() {
218-
//Draw Player
219-
rect(px, py, sx, sy);
230+
drawPlayer();
220231
drawPlatforms();
221232
drawEnemies();
222233
drawSpikes();
223234
drawBullets();
224235
}
225236

237+
function drawPlayer() {
238+
if (!nodamage) rect(px, py, sx, sy);
239+
else noDamage();
240+
}
241+
226242
function drawPlatforms() {
227243
fill('#0000FF');
228244
i = Math.max(rstart - 1, 0);
@@ -258,22 +274,9 @@ function collision() {
258274

259275
var xmaxid = -1;
260276

261-
262277
minx = 0;
263278
var xminid = -1;
264279

265-
var bmaxx = [];
266-
var bminx = [];
267-
var bmaxy = [];
268-
var bminy = [];
269-
270-
for (i = 0; i < bmax; i++) {
271-
bmaxx[i] = 999999;
272-
bminx[i] = 0;
273-
bmaxy[i] = 999999;
274-
bminy[i] = 0;
275-
}
276-
277280
i = max(cstart - 1, 0);
278281
// console.log(i, maxp[stageid]);
279282
do {
@@ -318,38 +321,6 @@ function collision() {
318321
}
319322
}
320323
}
321-
322-
for (j = 0; j < bmax; j++) {
323-
if (bullets[j][5]) {
324-
325-
if (bullets[j][0] >= platforms[stageid][i][0] && bullets[j][0] <= platforms[stageid][i][0] + platforms[stageid][i][2]) {
326-
if (platforms[stageid][i][1] >= bullets[j][1]) {
327-
if (platforms[stageid][i][1] <= bmaxx[j]) {
328-
bmaxx[j] = platforms[stageid][i][1];
329-
}
330-
}
331-
if (platforms[stageid][i][1] + platforms[stageid][i][3] <= bullets[j][1]) {
332-
if (platforms[stageid][i][1] + platforms[stageid][i][3] >= bminx[j]) {
333-
bminx[j] = platforms[stageid][i][1] + platforms[stageid][i][3];
334-
}
335-
}
336-
}
337-
338-
if (bullets[j][1] >= platforms[stageid][i][1] - bullets[j][2] / 2 && bullets[j][1] <= platforms[stageid][i][1] + platforms[stageid][i][3]) {
339-
if (platforms[stageid][i][0] >= bullets[j][0]) {
340-
if (platforms[stageid][i][0] <= bmaxy[j]) {
341-
bmaxy[j] = platforms[stageid][i][0];
342-
}
343-
}
344-
if (platforms[stageid][i][0] + platforms[stageid][i][2] <= bullets[j][0]) {
345-
if (platforms[stageid][i][0] >= bminy[j]) {
346-
bminy[j] = platforms[stageid][i][0] + platforms[stageid][i][2];
347-
}
348-
}
349-
}
350-
if (bmaxx[j] <= bullets[j][1] + bullets[j][2] / 2 || bminx[j] >= bullets[j][1] - bullets[j][2] / 2 || bmaxy[j] <= bullets[j][0] + bullets[j][2] / 2 || bminy[j] >= bullets[j][0] - bullets[j][2] / 2) bullets[j][5] = false;
351-
}
352-
}
353324
i++;
354325
} while (i <= maxp[stageid] && pposx + resx / 4 >= platforms[stageid][i][0]);
355326

@@ -358,12 +329,26 @@ function collision() {
358329
gravity(maxy);
359330
air(maxy);
360331
if (jumped) jump();
332+
bulletsCollision();
361333
moveEnemies();
362-
enemiesDamage();
334+
damage();
363335
spikesCollision();
364336
checkIfUnderScreen();
365337
}
366338

339+
function bulletsCollision() {
340+
for (h = 0; h < maxp[stageid]; h++) {
341+
for (j = 0; j < bmax; j++) {
342+
if (bullets[j][5]) {
343+
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) {
344+
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) {
345+
bullets[j][5] = false;
346+
}
347+
}
348+
}
349+
}
350+
}
351+
}
367352

368353
function debugcollision(maxid, minid, xmaxid, xminid) {
369354
fill('red');
@@ -503,12 +488,12 @@ function newBullet(enumber) {
503488
}
504489
bullets[i][6] = false;
505490
} else {
506-
var x = enemies[enumber][0] + (esize / 2) - px - spos;
507-
var y = enemies[enumber][1] - py;
508-
var z = Math.pow(x, 2) + Math.pow(y, 2);
509-
var a = z / bspeed;
510-
bullets[i][7] = Math.sqrt(Math.pow(x, 2) / a) * 3;
511-
bullets[i][8] = Math.sqrt(Math.pow(y, 2) / a) * 3;
491+
var a = enemies[enumber][0] + (esize / 2) - px - spos;
492+
var b = enemies[enumber][1] - py;
493+
var c = Math.pow(a, 2) + Math.pow(b, 2);
494+
var d = c / bspeed;
495+
bullets[i][7] = Math.sqrt(Math.pow(a, 2) / d) * 3;
496+
bullets[i][8] = Math.sqrt(Math.pow(b, 2) / d) * 3;
512497

513498
if (enemies[enumber][0] + (esize / 2) - px - spos > 0 && enemies[enumber][1] - py > 0) bullets[i][3] = 6;
514499
else if (enemies[enumber][0] + (esize / 2) - px - spos > 0 && enemies[enumber][1] - py <= 0) bullets[i][3] = 7;
@@ -552,30 +537,40 @@ function restartGame() {
552537
rstart = 0;
553538
cstart = 0;
554539
paused = true;
555-
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;
556548
}
557549

558550

559551
function moveEnemies() {
560552
for (i = 0; i < enumber; i++) {
553+
if (enemies[i][7] > 0) {
561554
//Check enemy direction
562-
if (enemies[i][4]) {
555+
if (enemies[i][4]) {
563556
//Right--->
564-
if (enemies[i][3] - enemies[i][0] - esize <= espeed) {
565-
enemies[i][0] = enemies[i][3] - esize;
566-
enemies[i][4] = false;
567-
} else {
568-
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+
569564
}
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+
}
570573

571-
}
572-
else {
573-
//Left <---
574-
if (enemies[i][0] - enemies[i][2] <= espeed) {
575-
enemies[i][0] = enemies[i][2];
576-
enemies[i][4] = true;
577-
} else {
578-
enemies[i][0] -= espeed;
579574
}
580575

581576
}
@@ -587,24 +582,78 @@ function moveEnemies() {
587582
function drawEnemies() {
588583
fill('gold');
589584
for (i = 0; i < enumber; i++) {
590-
if (enemies[i][5] === 0) image(enemyimg, enemies[i][0] - spos, enemies[i][1]);
591-
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+
}
592589
}
593590
fill('#FFFFFF');
594591
}
595592

596-
function enemiesDamage() {
597-
for (i = 0; i < enumber; i++) {
598-
if (enemies[i][5] === 1) {
599-
if (px + spos >= enemies[i][0] - 500 && px + spos <= enemies[i][0] + 500 && enemies[i][6] === 0) {
600-
enemies[i][6]++;
601-
newBullet(i);
602-
} else if (enemies[i][6] > 0 && enemies[i][6] < 60 * ttshot + 1) enemies[i][6]++;
603-
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+
}
622+
}
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+
}
604634
}
605635
}
606636
}
607637

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+
}
655+
}
656+
608657
function drawSpikes() {
609658
for (i = 0; i < maxs[stageid]; i++) {
610659
//DOWN
@@ -626,10 +675,10 @@ function spikesCollision() {
626675
for (i = 0; i < maxs[stageid]; i++) {
627676
//Spikes UP AND DOWN
628677
if (pposx >= spikes[stageid][i][0] - swidth - sx && pposx <= spikes[stageid][i][0] + swidth)
629-
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);
630679

631680
//Spikes LEFT AND RIGHT
632681
if (py >= spikes[stageid][i][1] - swidth && py <= spikes[stageid][i][1] + swidth)
633-
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);
634683
}
635684
}

0 commit comments

Comments
 (0)