jeudi 23 avril 2015

OOP Sprites

Ich bin gerade dabei, ein grundlegendes Tutorial zur Spiele-Programmierung in Java durchzugehen. Ich weiß, was objektorientiertes Programmieren ist, Methoden, Klassen und das ganze Zeug, Vererbung kenne ich auch schon ein wenig. Ich lerne bereits in der Schule Java, aber möchte privat noch etwas dazu lernen und kann recht wenig mit folgenden Zeilen Code des Quelltexts anfangen. :bahnhof:

Eine Erklärung wäre nett, aber es würde auch schon genügen, wenn ich wüsste wo ich nachlesen kann oder unter welchen Stichpunkten ich danach suchen kann.


Hier erstmal der Code:

Java Code:

  1.  
  2. package com.edu4java.minitennis3;
  3.  
  4.  
  5. import java.awt.Graphics2D;
  6.  
  7.  
  8. public class Ball
  9. {
  10. int x = 0;
  11. int y = 0;
  12. int xa = 1;
  13. int ya = 1;
  14. private Game2 game;
  15.  
  16.  
  17. public Ball(Game2 game)
  18. {
  19. this.game = game;
  20. }
  21.  
  22.  
  23. void move()
  24. {
  25. if (x + xa < 0)
  26. xa = 1;
  27. if (x + xa > game.getWidth() - 30)
  28. xa = -1;
  29. if (y + ya < 0)
  30. ya = 1;
  31. if (y + ya > game.getHeight() - 30)
  32. ya = -1;
  33.  
  34.  
  35. x = x + xa;
  36. y = y + ya;
  37. }
  38.  
  39.  
  40. public void paint(Graphics2D g)
  41. {
  42. g.fillOval(x, y, 30, 30);
  43. }
  44. }


Java Code:

  1. package com.edu4java.minitennis3;
  2.  
  3.  
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.RenderingHints;
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9.  
  10.  
  11. @SuppressWarnings("serial")
  12. public class Game2 extends JPanel
  13. {
  14.  
  15.  
  16. Ball ball = new Ball(this);
  17.  
  18.  
  19. private void move()
  20. {
  21. ball.move();
  22. }
  23.  
  24.  
  25. @Override
  26. public void paint(Graphics g)
  27. {
  28. super.paint(g);
  29. g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  30. ball.paint(g2d);
  31. }
  32.  
  33.  
  34. public static void main(String[] args) throws InterruptedException
  35. {
  36. JFrame frame = new JFrame("Mini Tennis");
  37. Game2 game = new Game2();
  38. frame.add(game);
  39. frame.setSize(300, 400);
  40. frame.setVisible(true);
  41. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  42.  
  43.  
  44. while (true)
  45. {
  46. game.move();
  47. game.repaint();
  48. Thread.sleep(10);
  49. }
  50. }
  51. }



Ich kann ziemlich wenig mit folgenden Zeilen anfangen:

Ball.java

Java Code:

  1.  
  2. private Game2 game;
  3. public Ball(Game2 game)
  4. {
  5. this.game = game;
  6. }



Game2.java

Java Code:

  1. Ball ball = new Ball(this);



In Ball.java verstehe ich nicht, was es bedeutet, eine neue Variable game mit dem Typen Game2 anzulegen. Was enthält diese neue Variable? Und wo in Game.java rufe ich den Konstruktor von Ball.java auf, um die Variable game zu übergeben?

Die Zeile "Ball ball = new Ball(this);" in Game.java ist mir absolut rätselhaft, das this als Übergabeparameter ist mir auch neu.


Eine weitere Frage:

Java Code:

  1.  
  2. super.paint(g);Graphics2D g2d = (Graphics2D) g;


Es wird zwar im Video erwähnt, aber so ganz habe ich das nicht verstanden: Wofür brauche ich den typecast, was bewirkt er und wofür implementiere ich die "paint-Methode"?


Tut mir Leid für die ganzen Fragen, mir fehlen eindeutig noch wichtige Grundlagen.

Danke schon mal für eure Antworten :)


OOP Sprites

0 commentaires:

Enregistrer un commentaire