diff --git a/SMIMS-Game/JumpBoostItem.class b/SMIMS-Game/JumpBoostItem.class index 8ce3e47..b874d3f 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 dc588f3..2368462 100644 --- a/SMIMS-Game/JumpBoostItem.java +++ b/SMIMS-Game/JumpBoostItem.java @@ -8,7 +8,7 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) */ public class JumpBoostItem extends PowerUps { - int duration = 60*5; + int duration = 60*60; public void act() { touchedByPlayer(); diff --git a/SMIMS-Game/MyWorld.java b/SMIMS-Game/MyWorld.java index 6591938..94f1f87 100644 --- a/SMIMS-Game/MyWorld.java +++ b/SMIMS-Game/MyWorld.java @@ -10,7 +10,7 @@ public class MyWorld extends World { int PlattformCountdown; int timer = 200; //Zeit, bevor das erste Projektil auftaucht - //kann später noch beliebig angepasst werden + //kann später noch beliebig angepasst werden int targetTimer = 100; /** * Constructor for objects of class MyWorld. @@ -22,7 +22,7 @@ public class MyWorld extends World super(400, 600, 1); prepare(); } - + /** * Prepare the world for the start of the program. * That is: create the initial objects and add them to the world. @@ -59,7 +59,7 @@ public class MyWorld extends World if(PlattformCountdown==0) //Damit in regelmäßigen Abständen auf jeden Fall eine Plattform auftaucht { addObject(new Plattform(), Greenfoot.getRandomNumber(400), 5); - PlattformCountdown=50; + PlattformCountdown=100; } PlattformCountdown--; if(Greenfoot.getRandomNumber(100000)>=99800) @@ -78,12 +78,9 @@ public class MyWorld extends World { addObject(new BreakingPlattform(50), Greenfoot.getRandomNumber(400), 6); //Nach Links bewegende Plattform } - if(Greenfoot.getRandomNumber(100000)>=99550) - { - addObject(new SpikedPlattform(50), Greenfoot.getRandomNumber(400), 6); //Nach Links bewegende Plattform - } - } + } + public void projectile(){ if(timer == 0){ Projectile projectile = new Projectile(); @@ -94,7 +91,7 @@ public class MyWorld extends World timer = timer - 1; } } - + public void targetingProjectile(){ if(targetTimer == 0){ TargetingProjectile targetingProjectile = new TargetingProjectile(); diff --git a/SMIMS-Game/Player.class b/SMIMS-Game/Player.class index 887bfb5..54dffb6 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 5208ed6..5fff3f3 100644 --- a/SMIMS-Game/Player.ctxt +++ b/SMIMS-Game/Player.ctxt @@ -10,9 +10,11 @@ comment3.target=void\ jump() comment4.params= comment4.target=void\ fall() comment5.params= -comment5.target=boolean\ collision() +comment5.target=void\ shootProjectile() comment6.params= -comment6.target=void\ handlePowerUps() -comment7.params=duration\ type -comment7.target=void\ reveivePowerUp(int,\ java.lang.String) -numComments=8 +comment6.target=boolean\ collision() +comment7.params= +comment7.target=void\ handlePowerUps() +comment8.params=duration\ type +comment8.target=void\ reveivePowerUp(int,\ java.lang.String) +numComments=9 diff --git a/SMIMS-Game/Player.java b/SMIMS-Game/Player.java index 1ed0bd9..700b5b5 100644 --- a/SMIMS-Game/Player.java +++ b/SMIMS-Game/Player.java @@ -11,6 +11,8 @@ public class Player extends Actor int jumpBoostDuration = -1; int jumpBoostStrength = 5; + boolean projectileReady = false; + int projectileTimer; private int speed = 6; private int currentJumpStrength; @@ -27,11 +29,18 @@ public class Player extends Actor jump(); fall(); handlePowerUps(); + shootProjectile(); - //Check ob der Spieler am unteren Bildschirmrand ist + //Check ob der Spieler am unteren Fensterrand ist if (getY()+1 >= getWorld().getHeight()){ Greenfoot.setWorld(new GameOverWorld()); } + //Check ob der Spieler an der Seite vom Fenster ist + if (getX() <= 0){ + setLocation(getWorld().getWidth(), getY()); + } else if (getX() >= getWorld().getWidth()-1){ + setLocation(1, getY()); + } } // Bewegung nach links und rechts @@ -76,9 +85,26 @@ public class Player extends Actor setLocation( getX(), groundTop - getImage().getHeight() / 2 ); verticalSpeed = 0; landed = true; - break; } - } onGround = landed; + break; + } + } + onGround = landed; } + + public void shootProjectile(){ + projectileTimer++; + MouseInfo mouse = Greenfoot.getMouseInfo(); + if (Greenfoot.mousePressed(null)){ + PlayerProjectile playerProjectile = new PlayerProjectile(); + getWorld().addObject(playerProjectile, getX(), getY()); + playerProjectile.turnTowards(Greenfoot.getMouseInfo().getX(), Greenfoot.getMouseInfo().getY()); + projectileReady = false; + } + if (projectileTimer >= 10){ + projectileReady = true; + projectileTimer = 0; + } + } public boolean collision(){ if (getIntersectingObjects(Projectile.class).size()>0) diff --git a/SMIMS-Game/PlayerProjectile.class b/SMIMS-Game/PlayerProjectile.class new file mode 100644 index 0000000..104b3f9 Binary files /dev/null and b/SMIMS-Game/PlayerProjectile.class differ diff --git a/SMIMS-Game/PlayerProjectile.ctxt b/SMIMS-Game/PlayerProjectile.ctxt new file mode 100644 index 0000000..a107553 --- /dev/null +++ b/SMIMS-Game/PlayerProjectile.ctxt @@ -0,0 +1,9 @@ +#BlueJ class context +comment0.target=PlayerProjectile +comment0.text=\r\n\ Write\ a\ description\ of\ class\ PlayerProjectile\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n +comment1.params= +comment1.target=void\ act() +comment1.text=\r\n\ Act\ -\ do\ whatever\ the\ PlayerProjectile\ 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=boolean\ isProjectileOnScreen() +numComments=3 diff --git a/SMIMS-Game/PlayerProjectile.java b/SMIMS-Game/PlayerProjectile.java new file mode 100644 index 0000000..4332be1 --- /dev/null +++ b/SMIMS-Game/PlayerProjectile.java @@ -0,0 +1,34 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +/** + * Write a description of class PlayerProjectile here. + * + * @author (your name) + * @version (a version number or a date) + */ +public class PlayerProjectile extends Actor +{ + /** + * Act - do whatever the PlayerProjectile wants to do. This method is called whenever + * the 'Act' or 'Run' button gets pressed in the environment. + */ + public void act() + { + move(7); + if (!isProjectileOnScreen()){ + getWorld().removeObject(this); + } + } + + public boolean isProjectileOnScreen(){ + //Check Y-Value + if (getY() <= 0 || getY() >= getWorld().getHeight()-1){ + return false; + } + //Check X-Value + if (getX() <= 0 || getX() >= getWorld().getHeight()-1){ + return false; + } + return true; + } +} diff --git a/SMIMS-Game/images/beeper.png b/SMIMS-Game/images/beeper.png new file mode 100644 index 0000000..8968e50 Binary files /dev/null and b/SMIMS-Game/images/beeper.png differ diff --git a/SMIMS-Game/project.greenfoot b/SMIMS-Game/project.greenfoot index e1610cf..a169c86 100644 --- a/SMIMS-Game/project.greenfoot +++ b/SMIMS-Game/project.greenfoot @@ -1,96 +1,51 @@ #Greenfoot project file -class.BreakingPlattform.image=Unbenannt2.png +class.Button.image=button-red.png +class.GameOverWorld.image=GameOverBackground.png class.Ground.image=weave.jpg -class.MovingPlattform.image=Unbenannt.png -class.Plattform.image=Plattform.png +class.MyWorld.image=GameBackground.png class.Player.image=ppl2.png -class.Spike.image=Spike.png -class.SpikedPlattform.image=SpikedPlattform.png -class.UnactiveSpike.image=Spike_Copy.png +class.Projectile.image=Projectile1.png +class.StartWorld.image=StartBackground.png +class.TargetingProjectile.image=blue-draught.png dependency1.from=GameOverWorld dependency1.to=Button dependency1.type=UsesDependency dependency10.from=MyWorld -dependency10.to=BreakingPlattform +dependency10.to=Projectile dependency10.type=UsesDependency -dependency11.from=MyWorld -dependency11.to=SpikedPlattform +dependency11.from=Player +dependency11.to=GameOverWorld dependency11.type=UsesDependency -dependency12.from=MyWorld -dependency12.to=Projectile +dependency12.from=Player +dependency12.to=Ground dependency12.type=UsesDependency -dependency13.from=MyWorld -dependency13.to=TargetingProjectile +dependency13.from=Player +dependency13.to=Projectile dependency13.type=UsesDependency -dependency14.from=Spike -dependency14.to=GameOverWorld +dependency14.from=Plattform +dependency14.to=MyWorld dependency14.type=UsesDependency -dependency15.from=Spike -dependency15.to=MyWorld +dependency15.from=Plattform +dependency15.to=Player dependency15.type=UsesDependency -dependency16.from=Spike -dependency16.to=Player +dependency16.from=MovingPlattform +dependency16.to=MyWorld dependency16.type=UsesDependency -dependency17.from=Player -dependency17.to=GameOverWorld +dependency17.from=Button +dependency17.to=MyWorld dependency17.type=UsesDependency -dependency18.from=Player -dependency18.to=Plattform +dependency18.from=PowerUps +dependency18.to=Player dependency18.type=UsesDependency -dependency19.from=Player -dependency19.to=Projectile +dependency19.from=JumpBoostItem +dependency19.to=Player dependency19.type=UsesDependency dependency2.from=PlayerTestWorld dependency2.to=Ground dependency2.type=UsesDependency -dependency20.from=UnactiveSpike -dependency20.to=SpikedPlattform -dependency20.type=UsesDependency -dependency21.from=UnactiveSpike -dependency21.to=MyWorld -dependency21.type=UsesDependency -dependency22.from=UnactiveSpike -dependency22.to=Spike -dependency22.type=UsesDependency -dependency23.from=Plattform -dependency23.to=MyWorld -dependency23.type=UsesDependency -dependency24.from=Plattform -dependency24.to=Player -dependency24.type=UsesDependency -dependency25.from=MovingPlattform -dependency25.to=MyWorld -dependency25.type=UsesDependency -dependency26.from=MovingPlattform -dependency26.to=Player -dependency26.type=UsesDependency -dependency27.from=SpikedPlattform -dependency27.to=Spike -dependency27.type=UsesDependency -dependency28.from=SpikedPlattform -dependency28.to=GameOverWorld -dependency28.type=UsesDependency -dependency29.from=SpikedPlattform -dependency29.to=MyWorld -dependency29.type=UsesDependency dependency3.from=PlayerTestWorld dependency3.to=Player dependency3.type=UsesDependency -dependency30.from=SpikedPlattform -dependency30.to=UnactiveSpike -dependency30.type=UsesDependency -dependency31.from=TargetingProjectile -dependency31.to=Player -dependency31.type=UsesDependency -dependency32.from=Button -dependency32.to=MyWorld -dependency32.type=UsesDependency -dependency33.from=PowerUps -dependency33.to=Player -dependency33.type=UsesDependency -dependency34.from=JumpBoostItem -dependency34.to=Player -dependency34.type=UsesDependency dependency4.from=PlayerTestWorld dependency4.to=JumpBoostItem dependency4.type=UsesDependency @@ -101,21 +56,21 @@ dependency6.from=MyWorld dependency6.to=Player dependency6.type=UsesDependency dependency7.from=MyWorld -dependency7.to=Score +dependency7.to=Plattform 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=1048 -editor.fx.0.width=1936 -editor.fx.0.x=-18 -editor.fx.0.y=4 -height=736 -package.numDependencies=34 -package.numTargets=18 +editor.fx.0.height=737 +editor.fx.0.width=814 +editor.fx.0.x=360 +editor.fx.0.y=26 +height=830 +package.numDependencies=19 +package.numTargets=14 project.charset=UTF-8 publish.hasSource=false publish.locked=true @@ -131,133 +86,105 @@ readme.x=10 readme.y=10 simulation.speed=50 target1.height=70 -target1.name=Spike +target1.name=Player target1.showInterface=false target1.type=ClassTarget target1.width=120 target1.x=0 target1.y=0 target10.height=70 -target10.name=StartWorld +target10.name=TargetingProjectile target10.showInterface=false target10.type=ClassTarget target10.width=120 target10.x=0 target10.y=0 target11.height=70 -target11.name=Plattform +target11.name=Projectile target11.showInterface=false target11.type=ClassTarget target11.width=120 target11.x=0 target11.y=0 target12.height=70 -target12.name=TargetingProjectile +target12.name=Button target12.showInterface=false target12.type=ClassTarget target12.width=120 target12.x=0 target12.y=0 target13.height=70 -target13.name=Projectile +target13.name=PowerUps target13.showInterface=false target13.type=ClassTarget target13.width=120 target13.x=0 target13.y=0 target14.height=70 -target14.name=Score +target14.name=MyWorld target14.showInterface=false target14.type=ClassTarget target14.width=120 target14.x=0 target14.y=0 -target15.height=70 -target15.name=Button -target15.showInterface=false -target15.type=ClassTarget -target15.width=120 -target15.x=0 -target15.y=0 -target16.height=70 -target16.name=PowerUps -target16.showInterface=false -target16.type=ClassTarget -target16.width=120 -target16.x=0 -target16.y=0 -target17.height=70 -target17.name=SpikedPlattform -target17.showInterface=false -target17.type=ClassTarget -target17.width=120 -target17.x=0 -target17.y=0 -target18.height=70 -target18.name=MyWorld -target18.showInterface=false -target18.type=ClassTarget -target18.width=120 -target18.x=0 -target18.y=0 target2.height=70 -target2.name=Player +target2.name=MovingPlattform target2.showInterface=false target2.type=ClassTarget target2.width=120 target2.x=0 target2.y=0 target3.height=70 -target3.name=MovingPlattform +target3.name=Ground target3.showInterface=false target3.type=ClassTarget target3.width=120 target3.x=0 target3.y=0 target4.height=70 -target4.name=Ground +target4.name=JumpBoostItem target4.showInterface=false target4.type=ClassTarget target4.width=120 target4.x=0 target4.y=0 target5.height=70 -target5.name=UnactiveSpike +target5.name=BreakingPlattform target5.showInterface=false target5.type=ClassTarget target5.width=120 target5.x=0 target5.y=0 target6.height=70 -target6.name=JumpBoostItem +target6.name=GameOverWorld target6.showInterface=false target6.type=ClassTarget target6.width=120 target6.x=0 target6.y=0 target7.height=70 -target7.name=BreakingPlattform +target7.name=PlayerTestWorld target7.showInterface=false target7.type=ClassTarget target7.width=120 target7.x=0 target7.y=0 target8.height=70 -target8.name=GameOverWorld +target8.name=StartWorld target8.showInterface=false target8.type=ClassTarget target8.width=120 target8.x=0 target8.y=0 target9.height=70 -target9.name=PlayerTestWorld +target9.name=Plattform target9.showInterface=false target9.type=ClassTarget target9.width=120 target9.x=0 target9.y=0 version=3.1.0 -width=856 -world.lastInstantiated=StartWorld -xPosition=481 -yPosition=94 +width=1550 +world.lastInstantiated=MyWorld +xPosition=0 +yPosition=0