xxxxxxxxxx
189
/*
Plan:
1. Control plane with WASD (1st draft) Done!
2. Shoot bullet with spacebar (1st draft) Done!
3. Pick up nearby coins for score, powerups and hearts
4. Random enemy spawn (1st draft)
5. Destroy enemy when hit by bullet (1st draft)
6. Collide with enemy to destroy enemy (1st draft)
7. Lose HP when collide (1st draft)
8. Enemy shoot bullet (1st draft)
9. Lose HP = Lose (1st draft)
10. Enemy drop coin and random powerups when destroyed
11. Scrolling loop background (1st draft)
11. Counter for powerups
Assets:
1. Plane asset with different colors to show powerups(1st draft)
2. Alien enemies to show different abilities?
3. Looping background(1st draft)
4. Coin
5. Powerups
6. Shoot sound(1st draft)
7. Alien shoot sound(1st draft)
8. Alien hit sound(1st draft)
9. Alien destroy sound(1st draft)
10. Hit sound(1st draft)
11. Destroy sound
12. BGM?
13. Coin pickup
14. Powerup pickup
15. Powerup timeup
16. Heart(1st draft)
Gameplay:
Shoot enemies to destroy them
Get coins for score
Powerups:
1. Ordinary(White): Shoot 1 bullet every second (1st draft)
2. Orange: Shoot 1 bullet to front and 2 bullets to diagonal every second
3. Red: Shoot 1 bullet every 0.2 second
4. Yellow: Shoot laser constantly
5. Green: Do not shoot but do not lose HP when collide
6. Blue: Shoot 1 auto-piloting bullet every second
7. Purple: Ordinary but move faster
8. Black: Shoot 1 very powerful bullet every second
Reference for later:
1.https://www.w3schools.com/jsref/jsref_splice.asp
(How to delete a specific element from an array)
2.
*/
//Hero Variables
var heroSp = 5;
var fireCounter = 0;
var heroState = 0;
var bulletCounter;
var bulletSp=10;
var heroX;
var heroY;
var heroBulletsShot;
//Image
var heroW;
var heroR;
var heroO;
var heroYe;
var heroG;
var heroB;
var heroP;
var heroD;
//Array
var heroPUp =[];
var heroBullet = [[]];//[[bulletX,bulletY,bulletDMG]]
var enemyPos = [[25,25,50,50]];//[[enemyTopX,enemyTopY,enemyBotX,enemyBotY]]
//Class
function preload(){
heroW = loadImage("planeWhite.png"); // drawn with aseprite
}
function setup() {
createCanvas(400, 600);
noSmooth();
heroPUp = [heroW,
heroR,
heroO,
heroY,
heroG,
heroB,
heroP,
heroD];
noCursor();
heroX =width / 2;
heroY=height / 2;
// player.diameter = 50;
// player.x = 400;
// if (kb.pressing('a'))
// {player.vel.x = -5;}
// else if (kb.pressing('d'))
// {player.vel.x = 5;}
// else
// {player.vel.x = 0;}
// hero(5,5,60);
}
function draw() {
background(200);
hero(5,heroSp,15);
bullet(bulletSp, 1);
enemy(10,0);
imageMode(CENTER);
image(heroPUp[heroState],heroX,heroY, heroPUp[heroState].width * 2, heroPUp[heroState].height * 2)
}
function enemy(hp,sp)
{
fill(255);
rectMode(CORNERS)
rect(25,25,50,50)
}
function hero(maxHP,sp,fireRate)
{
//W=up, S=down, A=left, D=right
if(keyIsDown(87) && heroY >= heroPUp[heroState].height)
{
heroY -= sp;
}
if(keyIsDown(83) && heroY <= height - heroPUp[heroState].height)
{
heroY+=sp;
}
if(keyIsDown(65) && heroX >= heroPUp[heroState].width)
{
heroX-=sp;
}
if(keyIsDown(68) && heroX <= width - heroPUp[heroState].width)
{
heroX+=sp;
}
//Press spacebar to fire
if(fireCounter < fireRate)
{
fireCounter++;
}
else if(fireCounter >= fireRate)
{
if(keyIsDown(32))
{
heroBullet.push([heroX,heroY,1]);
fireCounter = 0;
}
}
}
function bullet(sp,dmg){
for (i=0; i<heroBullet.length; i++) {
fill(255,0,0);
noStroke();
ellipse(heroBullet[i][0],heroBullet[i][1],10);
heroBullet[i][1]-= sp; // decrease Y pos over time
// reference: https://editor.p5js.org/melodyloveless/sketches/idzkT0dIW
for (j = 0; j < enemyPos.length; j++)
{
if (heroBullet[i][0]>25 && heroBullet[i][1]>25 && heroBullet[i][0]<50 && heroBullet[i][1]>50)
{
console.log(heroBullet);
// heroBullet.splice(i);
}
}
}
}