Skip to content

Commit 5d12d5d

Browse files
authored
Merge pull request #22 from marcinadd/master
Przejście do kolejnego poziomu. Wielopoziomowość dla wrogów.
2 parents b63e78c + 4c9d6db commit 5d12d5d

File tree

4 files changed

+131
-96
lines changed

4 files changed

+131
-96
lines changed

app_p5.html

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ <h1>Projekt [wpisz nazwę]</h1>
4747
<!--kod aplikacji w p5js-->
4848
<script src="js/platforms.js"></script>
4949
<script src="js/spikes.js"></script>
50+
<script src="js/enemies.js"></script>
5051
<script src="js/app_p5.js"></script>
5152

5253
</body>

js/app_p5.js

+80-94
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,16 @@ var paused = false;
8383

8484
var inmenu = true;
8585

86+
//True if Stage is Completed
87+
var completed=false;
88+
8689

8790
for (i = 0; i < bmax; i++) {
8891
bullets[i] = [];
8992
bullets[i][4] = 0;
9093
bullets[i][5] = false;
9194
}
9295

93-
//Number of enemies
94-
var enumber = 2;
95-
9696
//Enemy size
9797
var esize = 60;
9898

@@ -102,44 +102,9 @@ var espeed = 2;
102102
//Every second the opponent can shoot
103103
var ttshot = 2;
104104

105-
var enemies = [];
106-
107-
for (i = 0; i < enumber; i++) {
108-
enemies[i] = [];
109-
}
110-
111-
//Enemies[][*]
112-
//0-Current x-pos
113-
//1-y pos
114-
//2-Min x-pos
115-
//3-Max x-pos
116-
//4-Direction
117-
//**false left <---
118-
//**true right --->
119-
//5-Type of enemy
120-
//6-Time to shot
121-
122-
enemies[0][0] = 650;
123-
enemies[0][1] = 380;
124-
enemies[0][2] = 650;
125-
enemies[0][3] = 810;
126-
enemies[0][4] = true;
127-
enemies[0][5] = 0;
128-
enemies[0][6] = -1;
129-
enemies[0][7] = 3;
130-
131-
enemies[1][0] = 4690;
132-
enemies[1][1] = 280;
133-
enemies[1][2] = 4690;
134-
enemies[1][3] = 4810;
135-
enemies[1][4] = true;
136-
enemies[1][5] = 1;
137-
enemies[1][6] = 0;
138-
enemies[1][7] = 2;
139-
105+
//Images
140106
var enemyimg;
141107
var enemyimg2;
142-
143108
//Load Images
144109
function preload() {
145110
enemyimg = loadImage('./assets/enemy.png');
@@ -169,12 +134,11 @@ function menu() {
169134
}
170135

171136
function game() {
172-
if (!paused) {
137+
if (!(completed||paused)){
173138
background(200);
174139
drawObjects();
175140
collision();
176-
} else pause();
177-
141+
}else if(completed) stageCompleted();else pause();
178142
}
179143

180144
function pause() {
@@ -184,6 +148,15 @@ function pause() {
184148
fill('#FFFFFF');
185149
}
186150

151+
function stageCompleted() {
152+
textSize(50);
153+
fill('#000000');
154+
text("Congratulations!!!",500,100);
155+
text("Level "+(stageid+1)+" Completed", 500, 400);
156+
text("Press SPACE to Continue", 500, 700);
157+
fill('#FFFFFF');
158+
}
159+
187160
function keyboardEvent() {
188161
if (keyIsDown(RIGHT_ARROW) && !paused) {
189162
movex(1);
@@ -204,25 +177,34 @@ function keyboardEvent() {
204177
}
205178

206179
function keyPressed() {
180+
//Z-JUMP
207181
if (keyCode === 90 && !paused) {
208182
if (!onair) {
209183
jcounter = 0;
210184
jumped = true;
211185
}
212186
}
187+
//X-Shoot
188+
if (keyCode === 88) {
189+
newBullet(-1);
190+
}
191+
//SPACE
213192
if (keyCode === 32) {
214193
if (inmenu) inmenu = false;
215194
else
216-
paused = !paused;
195+
if(completed){
196+
stageid++;
197+
completed=false;
198+
restartGame();
199+
} else paused = !paused;
217200

218201
}
219202

220-
221203
}
222204

223-
function keyTyped() {
224-
if (key === 'x') {
225-
newBullet(-1);
205+
function keyReleased() {
206+
if(keyCode===90){
207+
jumped=false;
226208
}
227209
}
228210

@@ -240,10 +222,11 @@ function drawPlayer() {
240222
}
241223

242224
function drawPlatforms() {
243-
fill('#0000FF');
244-
i = Math.max(rstart - 1, 0);
225+
i = Math.max(rstart - 2, 0);
226+
245227
do {
246228
if (pposx - resx > platforms[stageid][i][0]) rstart = i;
229+
if(i===maxp[stageid]) fill('#00FF00'); else fill('#0000FF');
247230
rect(platforms[stageid][i][0] - spos, platforms[stageid][i][1], platforms[stageid][i][2], platforms[stageid][i][3]);
248231
i++;
249232
} while (i <= maxp[stageid] && pposx + resx >= platforms[stageid][i][0]);
@@ -326,7 +309,7 @@ function collision() {
326309

327310

328311
// debugcollision(maxid, minid, xmaxid, xminid); //Uncomment to debug collision
329-
gravity(maxy);
312+
gravity(maxy, maxid);
330313
air(maxy);
331314
if (jumped) jump();
332315
bulletsCollision();
@@ -363,13 +346,15 @@ function debugcollision(maxid, minid, xmaxid, xminid) {
363346

364347
}
365348

366-
function gravity(maxy) {
349+
function gravity(maxy, maxid) {
367350

368351
if (maxy - 1 > py + sy) {
369352
if (maxy - 1 > py + sy + grav)
370353
py += grav;
371354
else
372355
py = maxy - sy - 1;
356+
} else {
357+
if(maxid===maxp[stageid]) completed=true;
373358
}
374359
}
375360

@@ -488,20 +473,20 @@ function newBullet(enumber) {
488473
}
489474
bullets[i][6] = false;
490475
} else {
491-
var a = enemies[enumber][0] + (esize / 2) - px - spos;
492-
var b = enemies[enumber][1] - py;
476+
var a = enemies[stageid][enumber][0] + (esize / 2) - px - spos;
477+
var b = enemies[stageid][enumber][1] - py;
493478
var c = Math.pow(a, 2) + Math.pow(b, 2);
494479
var d = c / bspeed;
495480
bullets[i][7] = Math.sqrt(Math.pow(a, 2) / d) * 3;
496481
bullets[i][8] = Math.sqrt(Math.pow(b, 2) / d) * 3;
497482

498-
if (enemies[enumber][0] + (esize / 2) - px - spos > 0 && enemies[enumber][1] - py > 0) bullets[i][3] = 6;
499-
else if (enemies[enumber][0] + (esize / 2) - px - spos > 0 && enemies[enumber][1] - py <= 0) bullets[i][3] = 7;
500-
else if (enemies[enumber][0] + (esize / 2) - px - spos <= 0 && enemies[enumber][1] - py > 0) bullets[i][3] = 8;
501-
else if (enemies[enumber][0] + (esize / 2) - px - spos <= 0 && enemies[enumber][1] - py <= 0) bullets[i][3] = 9;
483+
if (enemies[stageid][enumber][0] + (esize / 2) - px - spos > 0 && enemies[stageid][enumber][1] - py > 0) bullets[i][3] = 6;
484+
else if (enemies[stageid][enumber][0] + (esize / 2) - px - spos > 0 && enemies[stageid][enumber][1] - py <= 0) bullets[i][3] = 7;
485+
else if (enemies[stageid][enumber][0] + (esize / 2) - px - spos <= 0 && enemies[stageid][enumber][1] - py > 0) bullets[i][3] = 8;
486+
else if (enemies[stageid][enumber][0] + (esize / 2) - px - spos <= 0 && enemies[stageid][enumber][1] - py <= 0) bullets[i][3] = 9;
502487

503-
bullets[i][0] = enemies[enumber][0] + (esize / 2);
504-
bullets[i][1] = enemies[enumber][1];
488+
bullets[i][0] = enemies[stageid][enumber][0] + (esize / 2);
489+
bullets[i][1] = enemies[stageid][enumber][1];
505490
bullets[i][2] = bsize;
506491
bullets[i][6] = true;
507492
}
@@ -523,6 +508,7 @@ function lose() {
523508
fill('#FF0000');
524509
text("GAME OVER", resx / 2, resy / 2);
525510
fill('#FFFFFF');
511+
paused = true;
526512
restartGame();
527513
}
528514

@@ -536,39 +522,38 @@ function restartGame() {
536522
jcounter = false;
537523
rstart = 0;
538524
cstart = 0;
539-
paused = true;
540525
plifep = 3;
541526
nodamage = false;
542527
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;
528+
for (j = 0; j < maxe[stageid]; j++) {
529+
if (enemies[stageid][j][5] === 0) enemies[stageid][j][7] = 3;
530+
else enemies[stageid][j][7] = 2;
546531
}
547532
for (j = 0; j < bmax; j++) bullets[j][5] = 0;
548533
}
549534

550535

551536
function moveEnemies() {
552-
for (i = 0; i < enumber; i++) {
553-
if (enemies[i][7] > 0) {
537+
for (i = 0; i < maxe[stageid]; i++) {
538+
if (enemies[stageid][i][7] > 0) {
554539
//Check enemy direction
555-
if (enemies[i][4]) {
540+
if (enemies[stageid][i][4]) {
556541
//Right--->
557-
if (enemies[i][3] - enemies[i][0] - esize <= espeed) {
558-
enemies[i][0] = enemies[i][3] - esize;
559-
enemies[i][4] = false;
542+
if (enemies[stageid][i][3] - enemies[stageid][i][0] - esize <= espeed) {
543+
enemies[stageid][i][0] = enemies[stageid][i][3] - esize;
544+
enemies[stageid][i][4] = false;
560545
} else {
561-
enemies[i][0] += espeed;
546+
enemies[stageid][i][0] += espeed;
562547
}
563548

564549
}
565550
else {
566551
//Left <---
567-
if (enemies[i][0] - enemies[i][2] <= espeed) {
568-
enemies[i][0] = enemies[i][2];
569-
enemies[i][4] = true;
552+
if (enemies[stageid][i][0] - enemies[stageid][i][2] <= espeed) {
553+
enemies[stageid][i][0] = enemies[stageid][i][2];
554+
enemies[stageid][i][4] = true;
570555
} else {
571-
enemies[i][0] -= espeed;
556+
enemies[stageid][i][0] -= espeed;
572557
}
573558

574559
}
@@ -581,37 +566,37 @@ function moveEnemies() {
581566

582567
function drawEnemies() {
583568
fill('gold');
584-
for (i = 0; i < enumber; i++) {
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]);
569+
for (i = 0; i < maxe[stageid]; i++) {
570+
if (enemies[stageid][i][7] > 0) {
571+
if (enemies[stageid][i][5] === 0) image(enemyimg, enemies[stageid][i][0] - spos, enemies[stageid][i][1]);
572+
else image(enemyimg2, enemies[stageid][i][0] - spos, enemies[stageid][i][1]);
588573
}
589574
}
590575
fill('#FFFFFF');
591576
}
592577

593578
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]++;
579+
for (l = 0; l < maxe[stageid]; l++) {
580+
if (enemies[stageid][l][5] === 1 && enemies[stageid][l][7] > 0) {
581+
if (px + spos >= enemies[stageid][l][0] - 500 && px + spos <= enemies[stageid][l][0] + 500 && enemies[stageid][l][6] === 0) {
582+
enemies[stageid][l][6]++;
598583
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;
584+
} else if (enemies[stageid][l][6] > 0 && enemies[stageid][l][6] < 60 * ttshot + 1) enemies[stageid][l][6]++;
585+
else if (enemies[stageid][l][6] === 60 * ttshot + 1) enemies[stageid][l][6] = 0;
601586
}
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) {
587+
if (enemies[stageid][l][7] > 0) {
588+
if (py <= enemies[stageid][l][1] + esize - sy && py >= enemies[stageid][l][1] - sy) {
589+
if (px >= enemies[stageid][l][0] - spos - sx && px <= enemies[stageid][l][0] + esize - spos) {
605590
lifePoints(-1, -1);
606591
}
607592
}
608593
}
609594
for (j = 0; j < bmax; j++) {
610-
if (enemies[l][7] > 0) {
595+
if (enemies[stageid][l][7] > 0) {
611596
if (bullets[j][5]) {
612597
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) {
598+
if (bullets[j][1] <= enemies[stageid][l][1] + esize + bullets[j][2] / 2 && bullets[j][1] >= enemies[stageid][l][1] - bullets[j][2] / 2) {
599+
if (bullets[j][0] >= enemies[stageid][l][0] - bullets[j][2] / 2 && bullets[j][0] <= enemies[stageid][l][0] + esize + bullets[j][2] / 2) {
615600
bullets[j][5] = false;
616601
lifePoints(l, -1);
617602
}
@@ -640,7 +625,7 @@ function lifePoints(id, number) {
640625
plifep += number;
641626
nodamage = true;
642627
} else if (id >= 0) {
643-
enemies[id][7] += number;
628+
enemies[stageid][id][7] += number;
644629
}
645630
if (plifep === 0) lose();
646631
}
@@ -655,18 +640,19 @@ function noDamage() {
655640
}
656641

657642
function drawSpikes() {
643+
//TODO Optimise drawing
658644
for (i = 0; i < maxs[stageid]; i++) {
659645
//DOWN
660646
if (spikes[stageid][i][2] === 0) triangle(spikes[stageid][i][0] - spos - swidth, spikes[stageid][i][1], spikes[stageid][i][0] - spos + swidth, spikes[stageid][i][1], spikes[stageid][i][0] - spos, spikes[stageid][i][1] + sheight);
661647

662648
//UP
663-
if (spikes[stageid][i][2] === 1) triangle(spikes[stageid][i][0] - spos + swidth, spikes[stageid][i][1], spikes[stageid][i][0] - spos - swidth, spikes[stageid][i][1], spikes[stageid][i][0] - spos, spikes[stageid][i][1] - sheight);
649+
else if (spikes[stageid][i][2] === 1) triangle(spikes[stageid][i][0] - spos + swidth, spikes[stageid][i][1], spikes[stageid][i][0] - spos - swidth, spikes[stageid][i][1], spikes[stageid][i][0] - spos, spikes[stageid][i][1] - sheight);
664650

665651
//LEFT
666-
if (spikes[stageid][i][2] === 2) triangle(spikes[stageid][i][0] - spos, spikes[stageid][i][1] + swidth, spikes[stageid][i][0] - spos, spikes[stageid][i][1] - swidth, spikes[stageid][i][0] - spos - sheight, spikes[stageid][i][1]);
652+
else if (spikes[stageid][i][2] === 2) triangle(spikes[stageid][i][0] - spos, spikes[stageid][i][1] + swidth, spikes[stageid][i][0] - spos, spikes[stageid][i][1] - swidth, spikes[stageid][i][0] - spos - sheight, spikes[stageid][i][1]);
667653

668654
//RIGHT
669-
if (spikes[stageid][i][2] === 3) triangle(spikes[stageid][i][0] - spos, spikes[stageid][i][1] - swidth, spikes[stageid][i][0] - spos, spikes[stageid][i][1] + swidth, spikes[stageid][i][0] - spos + sheight, spikes[stageid][i][1]);
655+
else if (spikes[stageid][i][2] === 3) triangle(spikes[stageid][i][0] - spos, spikes[stageid][i][1] - swidth, spikes[stageid][i][0] - spos, spikes[stageid][i][1] + swidth, spikes[stageid][i][0] - spos + sheight, spikes[stageid][i][1]);
670656
}
671657
}
672658

0 commit comments

Comments
 (0)