Programmierung 2 - Praktikum
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.6 KiB

2 years ago
2 years ago
2 years ago
  1. package playground;
  2. import java.awt.Color;
  3. import org.apache.logging.log4j.LogManager;
  4. import org.apache.logging.log4j.Logger;
  5. import controller.EgoController;
  6. import controller.ReboundController;
  7. import gameobjects.GameObject;
  8. import gameobjects.RectObject;
  9. public class BreakoutLevel1 extends BreakoutLevelBase{
  10. /**Erases the objects and reverses the speed.
  11. *
  12. * @param ball GameObject
  13. * @param brick GameObject
  14. */
  15. @Override
  16. protected void actionIfBallHitsBrick(GameObject ball,GameObject brick) {
  17. logger.info(brick.getId()+"hits");
  18. this.deleteObject(brick.getId());
  19. ball.setVX(ball.getVX()*1.0);
  20. ball.setVY(ball.getVY()*-1.0);
  21. }
  22. /**When ego is hit, the direction changes.
  23. *
  24. * @param ball GameObject
  25. * @param ego GameObject
  26. */
  27. @Override
  28. protected void actionIfBallHitsEgo(GameObject ball, GameObject ego) {
  29. ball.setVX(ball.getVX()*1.0);
  30. ball.setVY(ball.getVY()*-1.0);
  31. logger.info("Ball collides with ego");
  32. }
  33. /**Creates the ego object and returns it.
  34. * @return ego
  35. */
  36. @Override
  37. protected GameObject createEgoObject() {
  38. RectObject ego = new RectObject("ego", this, 350, 550, 0, 0, 60, 10, Color.blue);
  39. this.addObject(ego);
  40. ego.addController(new EgoController(ego.getWidth(),ego.getHeight()));
  41. ego.addCollider(new collider.RectCollider(ego.getId(),ego,ego.getWidth(),ego.getHeight()));
  42. return ego;
  43. }
  44. /**Creates Ball object and returns it.
  45. *
  46. * @return ball
  47. */
  48. @Override
  49. protected GameObject createBall() {
  50. gameobjects.FallingStar ball = new gameobjects.FallingStar("ball",this,350,350,120,120,Color.red,5);
  51. ball.addController(new ReboundController());
  52. return ball;
  53. }
  54. /** Creates a Brick.
  55. * @param row int
  56. * @param column int
  57. * @return brick GameObject
  58. */
  59. @Override
  60. protected GameObject createBrick(int row, int column) {
  61. RectObject brick = new RectObject("brick"+row+column,this,40+(column*68),40+(row*60),0,0,60,30,Color.green);
  62. brick.addCollider(new collider.RectCollider(brick.getId(),brick,brick.getWidth(),brick.getHeight()));
  63. return brick;
  64. }
  65. /**Prepares the level.
  66. *
  67. * @param level String
  68. */
  69. @Override
  70. public void prepareLevel(String level) {
  71. this.ego = createEgoObject();
  72. this.ball = createBall();
  73. this.addObject(this.ego);
  74. this.addObject(this.ball);
  75. for (int i = 0; i < 3; i++) {
  76. for (int e = 0; e < 10; e++) {
  77. this.addObject(createBrick(i, e));
  78. }
  79. }
  80. logger.info("Ready!");
  81. }
  82. private static Logger logger = LogManager.getLogger(BreakoutLevel1.class);
  83. }