diff --git a/SMIMS-Game/Enemy.ctxt b/SMIMS-Game/Enemy.ctxt index 214f50f..b6b41cc 100644 --- a/SMIMS-Game/Enemy.ctxt +++ b/SMIMS-Game/Enemy.ctxt @@ -1,7 +1,11 @@ #BlueJ class context comment0.target=Enemy -comment1.params= -comment1.target=void\ act() +comment1.params=targetX\ targetY +comment1.target=Enemy(int,\ int) comment2.params= -comment2.target=void\ shootAtPlayer() -numComments=3 +comment2.target=void\ act() +comment3.params=targetX\ targetY +comment3.target=void\ moveToTargetLocation(int,\ int) +comment4.params= +comment4.target=void\ shootAtPlayer() +numComments=5 diff --git a/SMIMS-Game/Groundflower.class b/SMIMS-Game/Groundflower.class index 0d343b5..0874a3f 100644 Binary files a/SMIMS-Game/Groundflower.class and b/SMIMS-Game/Groundflower.class differ diff --git a/SMIMS-Game/Groundflower.ctxt b/SMIMS-Game/Groundflower.ctxt index 973ef36..4fd28d2 100644 --- a/SMIMS-Game/Groundflower.ctxt +++ b/SMIMS-Game/Groundflower.ctxt @@ -6,6 +6,4 @@ comment1.target=void\ act() comment1.text=\r\n\ Act\ -\ do\ whatever\ the\ StarPowerUp\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n comment2.params= comment2.target=void\ collect() -comment3.params= -comment3.target=void\ bewegeNachUnten() -numComments=4 +numComments=3 diff --git a/SMIMS-Game/Groundflower.java b/SMIMS-Game/Groundflower.java index 90de034..266dfad 100644 --- a/SMIMS-Game/Groundflower.java +++ b/SMIMS-Game/Groundflower.java @@ -15,23 +15,16 @@ public class Groundflower extends PowerUps */ public void act() { - bewegeNachUnten(); - this.touchedByPlayer(); - // Add your action code here. + moveDown(); + touchedByPlayer(); + if (deleteAfterActCycle){ + getWorld().removeObject(this); + } } @ Override void collect() { Player player = getIntersectingObjects(Player.class).get(0); - player.reveivePowerUp(duration, "GroundPower"); - } - - public void bewegeNachUnten() - { - this.setLocation(this.getX(), this.getY()+2); - if(this.getY()>=this.getWorld().getHeight()) - { - this.getWorld().removeObject(this); - } + player.receivePowerUp(duration, "GroundPower"); } } diff --git a/SMIMS-Game/HealthItem.class b/SMIMS-Game/HealthItem.class index 7910582..417a134 100644 Binary files a/SMIMS-Game/HealthItem.class and b/SMIMS-Game/HealthItem.class differ diff --git a/SMIMS-Game/HealthItem.java b/SMIMS-Game/HealthItem.java index a927d50..315b0dc 100644 --- a/SMIMS-Game/HealthItem.java +++ b/SMIMS-Game/HealthItem.java @@ -11,11 +11,15 @@ public class HealthItem extends PowerUps int duration = 60*60; public void act() { + moveDown(); touchedByPlayer(); + if (deleteAfterActCycle){ + getWorld().removeObject(this); + } } @Override void collect(){ Player player = getIntersectingObjects(Player.class).get(0); - player.reveivePowerUp(duration, "Heal"); + player.receivePowerUp(duration, "Heal"); } } diff --git a/SMIMS-Game/JumpBoostItem.class b/SMIMS-Game/JumpBoostItem.class index b874d3f..a241d39 100644 Binary files a/SMIMS-Game/JumpBoostItem.class and b/SMIMS-Game/JumpBoostItem.class differ diff --git a/SMIMS-Game/JumpBoostItem.java b/SMIMS-Game/JumpBoostItem.java index 2368462..5188430 100644 --- a/SMIMS-Game/JumpBoostItem.java +++ b/SMIMS-Game/JumpBoostItem.java @@ -11,11 +11,15 @@ public class JumpBoostItem extends PowerUps int duration = 60*60; public void act() { + moveDown(); touchedByPlayer(); + if (deleteAfterActCycle){ + getWorld().removeObject(this); + } } @Override void collect(){ Player player = getIntersectingObjects(Player.class).get(0); - player.reveivePowerUp(duration, "JumpBoost"); + player.receivePowerUp(duration, "JumpBoost"); } } diff --git a/SMIMS-Game/Player.class b/SMIMS-Game/Player.class index 2d06a0a..62aa04e 100644 Binary files a/SMIMS-Game/Player.class and b/SMIMS-Game/Player.class differ diff --git a/SMIMS-Game/Player.ctxt b/SMIMS-Game/Player.ctxt index 330efd4..176720c 100644 --- a/SMIMS-Game/Player.ctxt +++ b/SMIMS-Game/Player.ctxt @@ -18,5 +18,5 @@ comment7.target=void\ checkHealth() comment8.params= comment8.target=void\ handlePowerUps() comment9.params=duration\ type -comment9.target=void\ reveivePowerUp(int,\ java.lang.String) +comment9.target=void\ receivePowerUp(int,\ java.lang.String) numComments=10 diff --git a/SMIMS-Game/Player.java b/SMIMS-Game/Player.java index 0a66f42..19fd2fc 100644 --- a/SMIMS-Game/Player.java +++ b/SMIMS-Game/Player.java @@ -118,7 +118,7 @@ public class Player extends Actor health--; getWorld().removeObjects(getIntersectingObjects(Projectile.class)); getWorld().removeObjects(getIntersectingObjects(Enemy.class)); - getWorld().removeObjects(getIntersectingObjects(Spike.class)); + getWorld().removeObjects(getWorld().getObjects(Spike.class)); } } @@ -137,7 +137,7 @@ public class Player extends Actor } } - public void reveivePowerUp(int duration, String type){ + public void receivePowerUp(int duration, String type){ switch(type){ case "dummy": break; @@ -145,10 +145,12 @@ public class Player extends Actor currentJumpStrength = defaultJumpStrength; currentJumpStrength += jumpBoostStrength; jumpBoostDuration = duration; + break; case "Heal": if (health < MAX_HEALTH){ health++; } + break; case "GroundPower": World theWorld= this.getWorld(); if(!theWorld.getObjects(TemporaryGround.class).isEmpty()) @@ -159,6 +161,7 @@ public class Player extends Actor { theWorld.addObject((new TemporaryGround(duration)), 200, 550); } + break; } } } diff --git a/SMIMS-Game/PlayerProjectile.class b/SMIMS-Game/PlayerProjectile.class index ecbbe70..236a71e 100644 Binary files a/SMIMS-Game/PlayerProjectile.class and b/SMIMS-Game/PlayerProjectile.class differ diff --git a/SMIMS-Game/PlayerProjectile.java b/SMIMS-Game/PlayerProjectile.java index 710f0d2..16e1c85 100644 --- a/SMIMS-Game/PlayerProjectile.java +++ b/SMIMS-Game/PlayerProjectile.java @@ -8,6 +8,7 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) */ public class PlayerProjectile extends Actor { + boolean deleteAfterActCycle = false; /** * Act - do whatever the PlayerProjectile wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. @@ -16,7 +17,7 @@ public class PlayerProjectile extends Actor { move(7); checkForEnemyCollision(); - if (!isProjectileOnScreen()){ + if (deleteAfterActCycle || !isProjectileOnScreen()){ getWorld().removeObject(this); } } @@ -24,6 +25,7 @@ public class PlayerProjectile extends Actor public void checkForEnemyCollision(){ if (getOneIntersectingObject(Enemy.class) != null){ getWorld().removeObject(getOneIntersectingObject(Enemy.class)); + deleteAfterActCycle = true; } } diff --git a/SMIMS-Game/PowerUps.class b/SMIMS-Game/PowerUps.class index 829f360..f4233a4 100644 Binary files a/SMIMS-Game/PowerUps.class and b/SMIMS-Game/PowerUps.class differ diff --git a/SMIMS-Game/PowerUps.ctxt b/SMIMS-Game/PowerUps.ctxt index 2145f73..58a37d5 100644 --- a/SMIMS-Game/PowerUps.ctxt +++ b/SMIMS-Game/PowerUps.ctxt @@ -7,4 +7,6 @@ comment2.params= comment2.target=void\ touchedByPlayer() comment3.params= comment3.target=void\ collect() -numComments=4 +comment4.params= +comment4.target=void\ moveDown() +numComments=5 diff --git a/SMIMS-Game/PowerUps.java b/SMIMS-Game/PowerUps.java index ac9a537..9e3c868 100644 --- a/SMIMS-Game/PowerUps.java +++ b/SMIMS-Game/PowerUps.java @@ -9,20 +9,35 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class PowerUps extends Actor { int duration; + boolean deleteAfterActCycle = false; + public void act() { + moveDown(); touchedByPlayer(); + if (deleteAfterActCycle){ + getWorld().removeObject(this); + } } public void touchedByPlayer(){ if (getIntersectingObjects(Player.class).size() > 0){ collect(); - getWorld().removeObject(this); + deleteAfterActCycle = true; } } void collect(){ Player player = getIntersectingObjects(Player.class).get(0); - player.reveivePowerUp(duration, "dummy"); + player.receivePowerUp(duration, "dummy"); + } + + public void moveDown() + { + this.setLocation(this.getX(), this.getY()+2); + if(this.getY()>=this.getWorld().getHeight()) + { + deleteAfterActCycle = true; + } } } diff --git a/SMIMS-Game/project.greenfoot b/SMIMS-Game/project.greenfoot index 4d01a29..f6cddf8 100644 --- a/SMIMS-Game/project.greenfoot +++ b/SMIMS-Game/project.greenfoot @@ -1,27 +1,30 @@ #Greenfoot project file class.BreakingPlattform.image=Breaking1.png class.Button.image=button-red.png +class.Enemy.image=bee.png class.GameOverWorld.image=GameOverBackground.png class.Ground.image=weave.jpg +class.HealthItem.image=herz.png class.JumpBoostItem.image=mushroom.png class.MovingPlattform.image=Platform1.png class.MyWorld.image=GameBackground.png class.Plattform.image=Platform1.png class.Player.image=Player.png +class.PlayerProjectile.image=beeper.png class.Projectile.image=Projectile1.png class.Spike.image=singleSpike.png class.SpikedPlattform.image=Spikes2.png class.StartWorld.image=StartBackground.png class.TargetingProjectile.image=blue-draught.png class.UnactiveSpike.image=inactiveSpike.png -dependency1.from=GameOverWorld -dependency1.to=Button +dependency1.from=PlayerTestWorld +dependency1.to=Ground dependency1.type=UsesDependency dependency10.from=MyWorld -dependency10.to=BreakingPlattform +dependency10.to=SpikedPlattform dependency10.type=UsesDependency dependency11.from=MyWorld -dependency11.to=SpikedPlattform +dependency11.to=Enemy dependency11.type=UsesDependency dependency12.from=MyWorld dependency12.to=Projectile @@ -29,115 +32,130 @@ dependency12.type=UsesDependency dependency13.from=MyWorld dependency13.to=TargetingProjectile dependency13.type=UsesDependency -dependency14.from=Spike -dependency14.to=GameOverWorld +dependency14.from=GameOverWorld +dependency14.to=Button dependency14.type=UsesDependency -dependency15.from=Spike -dependency15.to=MyWorld +dependency15.from=StartWorld +dependency15.to=Button dependency15.type=UsesDependency -dependency16.from=Spike -dependency16.to=Player +dependency16.from=UnactiveSpike +dependency16.to=SpikedPlattform dependency16.type=UsesDependency -dependency17.from=Player -dependency17.to=GameOverWorld +dependency17.from=UnactiveSpike +dependency17.to=MyWorld dependency17.type=UsesDependency -dependency18.from=Player -dependency18.to=Plattform +dependency18.from=UnactiveSpike +dependency18.to=Spike dependency18.type=UsesDependency -dependency19.from=Player -dependency19.to=PlayerProjectile +dependency19.from=Button +dependency19.to=MyWorld dependency19.type=UsesDependency dependency2.from=PlayerTestWorld -dependency2.to=Ground +dependency2.to=Player dependency2.type=UsesDependency -dependency20.from=Player -dependency20.to=Projectile +dependency20.from=PowerUps +dependency20.to=Player dependency20.type=UsesDependency -dependency21.from=Player -dependency21.to=Enemy +dependency21.from=HealthItem +dependency21.to=Player dependency21.type=UsesDependency -dependency22.from=UnactiveSpike -dependency22.to=SpikedPlattform +dependency22.from=JumpBoostItem +dependency22.to=Player dependency22.type=UsesDependency -dependency23.from=UnactiveSpike -dependency23.to=MyWorld +dependency23.from=Groundflower +dependency23.to=Player dependency23.type=UsesDependency -dependency24.from=UnactiveSpike -dependency24.to=Spike +dependency24.from=Enemy +dependency24.to=Player dependency24.type=UsesDependency -dependency25.from=Plattform -dependency25.to=MyWorld +dependency25.from=Enemy +dependency25.to=EnemyProjectile dependency25.type=UsesDependency -dependency26.from=Plattform -dependency26.to=Player +dependency26.from=Spike +dependency26.to=MyWorld dependency26.type=UsesDependency -dependency27.from=MovingPlattform -dependency27.to=MyWorld +dependency27.from=Player +dependency27.to=GameOverWorld dependency27.type=UsesDependency -dependency28.from=MovingPlattform -dependency28.to=Player +dependency28.from=Player +dependency28.to=Plattform dependency28.type=UsesDependency -dependency29.from=SpikedPlattform -dependency29.to=Spike +dependency29.from=Player +dependency29.to=PlayerProjectile dependency29.type=UsesDependency dependency3.from=PlayerTestWorld -dependency3.to=Player +dependency3.to=JumpBoostItem dependency3.type=UsesDependency -dependency30.from=SpikedPlattform -dependency30.to=GameOverWorld +dependency30.from=Player +dependency30.to=TemporaryGround dependency30.type=UsesDependency -dependency31.from=SpikedPlattform -dependency31.to=MyWorld +dependency31.from=Player +dependency31.to=Projectile dependency31.type=UsesDependency -dependency32.from=SpikedPlattform -dependency32.to=UnactiveSpike +dependency32.from=Player +dependency32.to=Enemy dependency32.type=UsesDependency -dependency33.from=TargetingProjectile -dependency33.to=Player +dependency33.from=Player +dependency33.to=Spike dependency33.type=UsesDependency -dependency34.from=Button -dependency34.to=MyWorld +dependency34.from=Healthbar +dependency34.to=Player dependency34.type=UsesDependency -dependency35.from=PowerUps -dependency35.to=Player +dependency35.from=Plattform +dependency35.to=MyWorld dependency35.type=UsesDependency -dependency36.from=JumpBoostItem +dependency36.from=Plattform dependency36.to=Player dependency36.type=UsesDependency -dependency37.from=Enemy -dependency37.to=Player +dependency37.from=MovingPlattform +dependency37.to=MyWorld dependency37.type=UsesDependency -dependency38.from=Enemy -dependency38.to=EnemyProjectile +dependency38.from=MovingPlattform +dependency38.to=Player dependency38.type=UsesDependency -dependency39.from=PlayerProjectile -dependency39.to=Enemy +dependency39.from=SpikedPlattform +dependency39.to=Spike dependency39.type=UsesDependency -dependency4.from=PlayerTestWorld -dependency4.to=JumpBoostItem +dependency4.from=MyWorld +dependency4.to=Player dependency4.type=UsesDependency -dependency5.from=StartWorld -dependency5.to=Button +dependency40.from=SpikedPlattform +dependency40.to=GameOverWorld +dependency40.type=UsesDependency +dependency41.from=SpikedPlattform +dependency41.to=MyWorld +dependency41.type=UsesDependency +dependency42.from=SpikedPlattform +dependency42.to=UnactiveSpike +dependency42.type=UsesDependency +dependency43.from=TargetingProjectile +dependency43.to=Player +dependency43.type=UsesDependency +dependency44.from=PlayerProjectile +dependency44.to=Enemy +dependency44.type=UsesDependency +dependency5.from=MyWorld +dependency5.to=Score dependency5.type=UsesDependency dependency6.from=MyWorld -dependency6.to=Player +dependency6.to=Plattform dependency6.type=UsesDependency dependency7.from=MyWorld -dependency7.to=Score +dependency7.to=Healthbar dependency7.type=UsesDependency dependency8.from=MyWorld -dependency8.to=Plattform +dependency8.to=MovingPlattform dependency8.type=UsesDependency dependency9.from=MyWorld -dependency9.to=MovingPlattform +dependency9.to=BreakingPlattform dependency9.type=UsesDependency editor.fx.0.height=737 editor.fx.0.width=814 -editor.fx.0.x=754 -editor.fx.0.y=45 +editor.fx.0.x=444 +editor.fx.0.y=78 height=830 -package.numDependencies=39 -package.numTargets=21 +package.numDependencies=44 +package.numTargets=25 project.charset=UTF-8 publish.hasSource=false publish.locked=true @@ -153,147 +171,175 @@ readme.x=10 readme.y=10 simulation.speed=50 target1.height=70 -target1.name=Spike +target1.name=MovingPlattform target1.showInterface=false target1.type=ClassTarget target1.width=120 target1.x=0 target1.y=0 target10.height=70 -target10.name=StartWorld +target10.name=PowerUps target10.showInterface=false target10.type=ClassTarget target10.width=120 target10.x=0 target10.y=0 target11.height=70 -target11.name=Plattform +target11.name=Enemy target11.showInterface=false target11.type=ClassTarget target11.width=120 target11.x=0 target11.y=0 target12.height=70 -target12.name=TargetingProjectile +target12.name=MyWorld target12.showInterface=false target12.type=ClassTarget target12.width=120 target12.x=0 target12.y=0 target13.height=70 -target13.name=Projectile +target13.name=Spike target13.showInterface=false target13.type=ClassTarget target13.width=120 target13.x=0 target13.y=0 target14.height=70 -target14.name=Score +target14.name=Groundflower target14.showInterface=false target14.type=ClassTarget target14.width=120 target14.x=0 target14.y=0 target15.height=70 -target15.name=Button +target15.name=Player target15.showInterface=false target15.type=ClassTarget target15.width=120 target15.x=0 target15.y=0 target16.height=70 -target16.name=EnemyProjectile +target16.name=Healthbar target16.showInterface=false target16.type=ClassTarget target16.width=120 target16.x=0 target16.y=0 target17.height=70 -target17.name=PowerUps +target17.name=BreakingPlattform target17.showInterface=false target17.type=ClassTarget target17.width=120 target17.x=0 target17.y=0 target18.height=70 -target18.name=Enemy +target18.name=GameOverWorld target18.showInterface=false target18.type=ClassTarget target18.width=120 target18.x=0 target18.y=0 target19.height=70 -target19.name=PlayerProjectile +target19.name=StartWorld target19.showInterface=false target19.type=ClassTarget target19.width=120 target19.x=0 target19.y=0 target2.height=70 -target2.name=Player +target2.name=Ground target2.showInterface=false target2.type=ClassTarget target2.width=120 target2.x=0 target2.y=0 target20.height=70 -target20.name=SpikedPlattform +target20.name=Plattform target20.showInterface=false target20.type=ClassTarget target20.width=120 target20.x=0 target20.y=0 target21.height=70 -target21.name=MyWorld +target21.name=Projectile target21.showInterface=false target21.type=ClassTarget target21.width=120 target21.x=0 target21.y=0 +target22.height=70 +target22.name=Score +target22.showInterface=false +target22.type=ClassTarget +target22.width=120 +target22.x=0 +target22.y=0 +target23.height=70 +target23.name=EnemyProjectile +target23.showInterface=false +target23.type=ClassTarget +target23.width=120 +target23.x=0 +target23.y=0 +target24.height=70 +target24.name=PlayerProjectile +target24.showInterface=false +target24.type=ClassTarget +target24.width=120 +target24.x=0 +target24.y=0 +target25.height=70 +target25.name=SpikedPlattform +target25.showInterface=false +target25.type=ClassTarget +target25.width=120 +target25.x=0 +target25.y=0 target3.height=70 -target3.name=MovingPlattform +target3.name=HealthItem target3.showInterface=false target3.type=ClassTarget target3.width=120 target3.x=0 target3.y=0 target4.height=70 -target4.name=Ground +target4.name=UnactiveSpike target4.showInterface=false target4.type=ClassTarget target4.width=120 target4.x=0 target4.y=0 target5.height=70 -target5.name=UnactiveSpike +target5.name=JumpBoostItem target5.showInterface=false target5.type=ClassTarget target5.width=120 target5.x=0 target5.y=0 target6.height=70 -target6.name=JumpBoostItem +target6.name=PlayerTestWorld target6.showInterface=false target6.type=ClassTarget target6.width=120 target6.x=0 target6.y=0 target7.height=70 -target7.name=BreakingPlattform +target7.name=TargetingProjectile target7.showInterface=false target7.type=ClassTarget target7.width=120 target7.x=0 target7.y=0 target8.height=70 -target8.name=GameOverWorld +target8.name=TemporaryGround target8.showInterface=false target8.type=ClassTarget target8.width=120 target8.x=0 target8.y=0 target9.height=70 -target9.name=PlayerTestWorld +target9.name=Button target9.showInterface=false target9.type=ClassTarget target9.width=120