@@ -117,7 +113,7 @@ public class PlayState extends GameState {
...
@@ -117,7 +113,7 @@ public class PlayState extends GameState {
}
}
}
}
// ritar bakgrunden samt linjen som spelaren står på
privatevoiddrawBackground(GraphicsContextg){
privatevoiddrawBackground(GraphicsContextg){
drawBg(g,bgColor);
drawBg(g,bgColor);
g.setStroke(lineColor);
g.setStroke(lineColor);
...
@@ -126,7 +122,7 @@ public class PlayState extends GameState {
...
@@ -126,7 +122,7 @@ public class PlayState extends GameState {
g.strokeLine(Constants.screenWidth,350,0,350);
g.strokeLine(Constants.screenWidth,350,0,350);
}
}
// om powerups har blivit ativerade och speedup powerupen inte är aktiov så ritas en ny powerup ut, beroende på om den tar num är 0 eller 1, som genereras random i speedcheck()
privatevoiddrawPowerUps(GraphicsContextg){
privatevoiddrawPowerUps(GraphicsContextg){
if(isPowerUpActive&&!speedActive){
if(isPowerUpActive&&!speedActive){
...
@@ -134,15 +130,14 @@ public class PlayState extends GameState {
...
@@ -134,15 +130,14 @@ public class PlayState extends GameState {
if(num==0){
if(num==0){
drawSpeedUp(g);
drawSpeedUp(g);
last=speedUp;
}else{
}else{
drawExtraLife(g);
drawExtraLife(g);
last=extraLife;
}
}
}
}
}
}
// ritar speedup, fungerar likadant som ritningen under för den andra powerupen
publicvoiddrawSpeedUp(GraphicsContextg){
publicvoiddrawSpeedUp(GraphicsContextg){
if(speedUp.getX()<0-Constants.playerWidth){
if(speedUp.getX()<0-Constants.playerWidth){
speedUp.setX(Constants.screenWidth);
speedUp.setX(Constants.screenWidth);
...
@@ -154,7 +149,6 @@ public class PlayState extends GameState {
...
@@ -154,7 +149,6 @@ public class PlayState extends GameState {
publicvoiddrawExtraLife(GraphicsContextg){
publicvoiddrawExtraLife(GraphicsContextg){
if(extraLife.getX()<0-Constants.playerWidth){
if(extraLife.getX()<0-Constants.playerWidth){
// extraLife.setImage(Constants.lifeImg);
extraLife.setX(Constants.screenWidth);
extraLife.setX(Constants.screenWidth);
isPowerUpActive=false;
isPowerUpActive=false;
}
}
...
@@ -162,8 +156,11 @@ public class PlayState extends GameState {
...
@@ -162,8 +156,11 @@ public class PlayState extends GameState {
}
}
// ritar enemy, beroende på om den flygande har blivit aktiverad eller ej, som intitielt sker i ground enemy, därefter i flygande enemy
// om bomb inte är null så ritas den också.
publicvoiddrawEnemies(GraphicsContextg){
publicvoiddrawEnemies(GraphicsContextg){
if(!isFlyingEnemyActive){
if(!isFlyingEnemyActive){
drawGroundEnemy(g);
drawGroundEnemy(g);
}else{
}else{
...
@@ -178,7 +175,8 @@ public class PlayState extends GameState {
...
@@ -178,7 +175,8 @@ public class PlayState extends GameState {
// om den befinner sig utanför skärmen så pterställer vi en vriabel för att bomben har blivit droppad i flyingenemy klassen
// Den tar ett rando 50/50 beslut om det ska ritas uten en flygande enemy härnäst, om false så blir det flygande igen
@@ -199,9 +197,10 @@ public class PlayState extends GameState {
...
@@ -199,9 +197,10 @@ public class PlayState extends GameState {
}
}
}
}
// fungerar mer eller mindre likadant som för flying enemy.
// Sparar en variabel för om det skett en kollision eller ej, sätter den til null samt kordinaten för kollisonen varje gång enemy hamnar utanför skärmen.
@@ -215,37 +214,38 @@ public class PlayState extends GameState {
...
@@ -215,37 +214,38 @@ public class PlayState extends GameState {
if(player.getPasses()>4&&getRandom()==0){// 50% chance after player hase passed
if(player.getPasses()>4&&getRandom()==0){// 50% chance after player hase passed
isFlyingEnemyActive=true;
isFlyingEnemyActive=true;
// Reset position
System.out.println("flyingenemy");
System.out.println("Stage one activated, flyingenemy added to the mix");
}
}
}
}
}
}
//TODO om score är större än visst antal --> lotta mellan flying och vanlig, vi kan göra en random med 2 int, ochberoende på vad den blir kan vi rita en
//TODO göra en variabel för y positionen som hämtas om vi ritar flygande, för att den ska behålla samma position på hela y axeln
// kör modulo 6, 10, 15
// Vi baserar nivåperna och hastigheten på spelet baserat på hur mpånga enemy vi har passerat.
// dessa returnerar bara samma på nummer som är delbara med 30
// dessa returnerar bara samma på nummer som är delbara med 30, därmed gör vi båda sakerna om det är en siffra jämt delbar med 30
// om vi har passerat ett antal jämt delbart med 6, ökjar vi farten på spelet.
// om vi har passerat fler än tio samt att det är en siffra jämt delbart med 10, aktiverar vi powerupsm, och genrar vilken som ska ritas, 50/50 chans.
publicvoidspeedCheck(){
publicvoidspeedCheck(){
if(player.getPasses()%6==0){
if(player.getPasses()%30==0){
movingSpeed+=1;
System.out.println("speed set to: "+Integer.toString(movingSpeed));
isPowerUpActive=true;
num=getRandom();
}elseif(player.getPasses()%6==0){
movingSpeed+=1;
movingSpeed+=1;
System.out.println("speed set to: "+Integer.toString(movingSpeed));
System.out.println("speed set to: "+Integer.toString(movingSpeed));
}elseif(player.getPasses()>1&&player.getPasses()%2==0){//denna bör ändras till något som aldrig klaffar med den ovan
@@ -364,7 +366,8 @@ public class PlayState extends GameState {
...
@@ -364,7 +366,8 @@ public class PlayState extends GameState {
}
}
}
}
// fungerar lite annorlunda jämfört med kollisionen på marken. Här behöver vi ingen global variabel. Vi ställer istället bomben till null om det sker en kollisone eller om den åker utanför skärmen.
privatevoidcheckBombCollision(){
privatevoidcheckBombCollision(){
if(bomb!=null){
if(bomb!=null){
bomb.setY(bomb.getY()+movingSpeed);
bomb.setY(bomb.getY()+movingSpeed);
...
@@ -381,7 +384,9 @@ public class PlayState extends GameState {
...
@@ -381,7 +384,9 @@ public class PlayState extends GameState {
}
}
}
}
// om det är en bil enemy så minskar vi bara dens x position.
// Om flygande enemy så skapar vi en ny bomb som får x koordinaten som player hade sist vi kallade på den funktionen. Sen släpps bomben inom +-50px av den.
// om den bomben vi skapat inte är null så tilldelar vi globala variabeln bomb den nya bomben. Anars ritas bomben bara vid ursprungspositionen.