mco9 Geschrieben 17. März 2009 Geschrieben 17. März 2009 Hallo, in der Schule haben wir in Informatik Programmieren mit Blue j als Thema. Für mich ist das sehr langweilig, da ich, wenn wir ein Arbeitsblatt mit Aufgaben zu einem Thema (while-schleife....) bekommen, nach 10 Minuten fertig bin, da ich die Grundlagen bereits von anderen Sprachen kenne. Ich habe mir vorgenommen ein Spiel zu programmieren, allerdings kann(will) mir meine Lehrerin nicht helfen, da sie die Arbeitsblätter noch nicht alle erstellt hat... (Ich solle mir halt ein Buch kaufen:mod:) Ich hab kein Bock jetzt ein 50er für nen 500 Seiten-Buch auszugeben, wo ich die Hälfte schon weiß. Deshalb die Frage an euch: Könnt ihr mir helfen mit Blue j ein Spiel zu programmieren:confused: Das Spiel sollte anfangs relativ einfach sein. 2D Shooter: Es erscheinen Zielscheiben, die abgeschossen werden. Zitieren
flashpixx Geschrieben 17. März 2009 Geschrieben 17. März 2009 Ich würde Dir von BlueJ abraten und wenn das Spiel wirklich komplett selbst zu programmieren, als IDE könnte ich Eclipse empfehlen. Es stellt sich dann zunächst die Frage wie graphisch komplex es werden soll (OpenGL) und ob es z.B. nur auf der Tastatur oder auch Maus / Joystick reagieren soll. Ich würde erst einmal ein detailliertes Konzept erstellen. Phil Zitieren
mco9 Geschrieben 17. März 2009 Autor Geschrieben 17. März 2009 ehr weniger grafisch komplex und einfach nur um was während dem Unterricht zu tun. Deshalb könnte ich nicht eclipse benutzen, da wir das in der Schule nicht haben Zitieren
speedi Geschrieben 18. März 2009 Geschrieben 18. März 2009 Kann dem Vorposter nur zustimmen, was das IDE angeht. Am sinnvollsten wäre es du verwendest Eclipse. Auch vielleicht deshalb, weil dir dann einfacher zu helfen ist, da sich deine Fragen nicht auf ein IDE bezieht, womit hier wahrscheinlich nur wenige größere Erfahrungen haben, sondern auf Java im allgemeinen. Als Tutorial für empfiehlt sich zum einen das JAVA-Buch als auch Java ist auch Insel. Wenn du ein Spiel Programmieren willst, welches nicht nur über die Konsole läuft solltest du dich in eine der gebräuchlichen GUI-APIs von Java einlesen. Beispielsweise Swing. Jede Swing-Componente besitzt eine paint-Methode, wenn du diese Überschreibst kannst du das Aussehen der Componente beliebig anpassen (Zeichenbefehle, wie drawLine, drawRect, drawPolygon stehen hier zur Verfügung). In Kombination mit einem Timer (oder einfachen Threads) lassen sich da wirklich nette Sachen machen. Zitieren
mco9 Geschrieben 19. März 2009 Autor Geschrieben 19. März 2009 und wenn ich mir einfach ein paar 2-D-Spiele-Sourcecodes anschaue? Ich denke das würde mir vielleicht weiterhelfen, um gewisse "Befehle" zu lernen und in action zu sehen... Zitieren
speedi Geschrieben 20. März 2009 Geschrieben 20. März 2009 Zuerst einmal solltest du einige Grundlagen allgemeine Grundlagen der Spieleprogrammierung lernen, z.B. was eine Simulationsrate ist. Danach kannst du dir anschauen, wie man in Java eigene Grafik-Objekte erstellt. Mach doch einfach mal ein JFrame, leg darauf ein JPanel und überschreibe bei diesem JPanel die paint-Methode. Da kannst dann schonmal etwas rumprobieren. Zitieren
Street Samurai Geschrieben 26. März 2009 Geschrieben 26. März 2009 Ich hab damals auch in der Schule mit BlueJ ein Rollenspiel programmiert. Dieses war dann aber nur Text-Based, aber es war ne beschäftigung für den langweiligen Java Unterricht mit nem Lehrer der jede Stunde 5 mal wiederholt hat. Anmerken muss man noch, das BlueJ eigentlich eher für Fachkonzepte geeignet ist und nicht für selbstständige Anwendungen. Wenn ich mit meiner Vermutung richtig gehe, habt ihr vielleicht JBuilder bei euch in der Schule. Damit kannst du ziemlich komfortabel eine Oberfläche erstellen und deine BlueJ Klassen einbinden. Bei Open-GL und sonstigem grafischen Zeug kenn ich mich leider nicht aus. Wie gesagt, ich hab nur Variabeln rumgeschubst. Zitieren
mco9 Geschrieben 16. Mai 2009 Autor Geschrieben 16. Mai 2009 (bearbeitet) eclipse... ich war auf deren Seite hab versucht mir einen Überblick zu verschaffen... vergebens fängt schon an, dass ich nicht weiß, was ich downloaden soll... Inzwischen arbeite ich mit greenfoot. Ist sehr praktisch. Ich habe aber folgendes Problem: max_el = Amplitude.getValue() ; cannot find symbol - variable Amplitude was könnte der Grund sein? Bearbeitet 16. Mai 2009 von mco9 Zitieren
flashpixx Geschrieben 16. Mai 2009 Geschrieben 16. Mai 2009 max_el = Amplitude.getValue() ; cannot find symbol - variable Amplitude was könnte der Grund sein? Du hast "max_el" nicht deklariert sondern nur zugewiesen Phil Zitieren
mco9 Geschrieben 17. Mai 2009 Autor Geschrieben 17. Mai 2009 doch, als attribut der klasse private double max_el; und Amplitude ist auch deklariert, aber in einer Anderen Klasse. public Slider Amplitude; Zitieren
flashpixx Geschrieben 17. Mai 2009 Geschrieben 17. Mai 2009 Es wäre dann hilfreich, wenn Du mehr Informationen lieferst, denn so kann man nicht helfen Phil P.S.: Ich hatte mich verschrieben, ich meinte, dass "Amplitude" nicht deklariert ist. Zitieren
mco9 Geschrieben 17. Mai 2009 Autor Geschrieben 17. Mai 2009 hoffe ist nicht zu vielimport greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Wand extends World { public Slider Amplitude; private h_feder Feder; public Wand() { super(640, 480, 1); setBackground("wand.jpg"); Feder = new h_feder(); addObject(Feder, 102, 182); Amplitude = new Slider("(%) Amplitude",1,100); addObject(Amplitude,480,100); } } import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot) /** * The AnimatedActor class serves as a superclass for other, more specific * Actor classes. It provides a mechanism to give actors an animated image.<p> * * To use this class, you need a sequence of image files to be used for the * animation. Let's say we create four files named "cat0.png", "cat1.png", * "cat2.png" and "cat3.png". In this case, our base name would be "cat", the * suffix is ".png", and the number of images is 4.<p> * * You can create an animated actor by subclassing this class, and calling this * class's constructor with the base name, suffix, and number of images as a * parameter. So, to make an animated cat, I might have a subclass 'Cat' with * the folling constructor"<p> * * <pre> * public Cat() { * super("cat", ".png", 4); * } * <pre> * * The image files have to be numbered starting at 0, and they have to ve in the * scenario's 'image' folder.<p> * * The image will change with every act step. * * @author mik * @version 1.0 */ public class AnimatedActor extends Mover { private GreenfootImage[] images; private int currentImage = 0; private boolean hin = true; private double max_el; /** * Construct an animated actor. This assumes that you have provided image * file (in the 'images' folder) named 'basenameN.suffix', where N is * [0..numberOfImages-1]. * * @param basename The base name of the image files. * @param suffix The suffix of the image files (must include the "."). * @param noOfImages The number of images to be use din the animation. */ public AnimatedActor(String basename, String suffix, int noOfImages) { images = new GreenfootImage[noOfImages]; for(int i=0; i < noOfImages; i++) { images[i] = new GreenfootImage(basename + i + suffix); } setImage(images[currentImage]); } /** * Act - do whatever the AnimatedActor wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. * * Method was changed! Now the animation waves, i.e. not 12341234, but 1234321 */ public void act() { // max_el = Amplitude.getValue() ; //*Math.sin(w*t); if(hin) { currentImage = (currentImage + 1) % images.length; } if(hin==false) { currentImage = (currentImage-1) % images.length; } setImage(images[currentImage]); if (currentImage==images.length-1) { hin = false; } if (currentImage==0) { hin = true; } } } Zitieren
Klotzkopp Geschrieben 17. Mai 2009 Geschrieben 17. Mai 2009 und Amplitude ist auch deklariert, aber in einer Anderen Klasse. Und diese Klassen haben offenbar nichts miteinander zu tun. Damit du auf Amplitude zugreifen kannst, brauchst du erst einmal ein Exemplar der Klasse Wand. Davon ist aber in AnimatedActor.act weit und breit nichts zu sehen. Zitieren
mco9 Geschrieben 19. Mai 2009 Autor Geschrieben 19. Mai 2009 Juhu, danke! für die, die's interessiert: jetzt Sieht meine Klasse Wand so aus... public class Wand extends World { public Slider Amplitude; private AnimatedSpring Feder_2; public Wand() { super(640, 480, 1); setBackground("wand.jpg"); Amplitude = new Slider("(%) Amplitude",1,100); addObject(Amplitude,480,100); Feder_2 = new AnimatedSpring(Amplitude,"feder0",".png",11); /* es wird dem Konstruktor jetzt nun auch ein Slider übergeben, der dann intern und private existiert. so kann ich dann innerhalb vom Objekt Feder_2 der klasse AnimatedSpring auf die Variable des Sliders zugreifen */ addObject(Feder_2, 102, 182); } } Zitieren
mco9 Geschrieben 26. Mai 2009 Autor Geschrieben 26. Mai 2009 Hallo, ich mal wieder:). unter Line2D Example - Java Now ist folgender Code zu finden. import javax.swing.*; import java.awt.*; import java.awt.geom.*; public class Line2D1 extends JApplet { private Line2D Shape1; private Line2D Shape2; public Line2D1 () { Shape1 = new Line2D.Float (20.F, 30.F, 150.F, 130.F); Shape2 = new Line2D.Double (); Shape2.setLine (20.F, 60.F, 120.F, 20.F); } public void paint (Graphics g) { //FRAGE: woher soll ich bitte das Graphics g "holen" Graphics2D g2D; boolean Hit; g2D = (Graphics2D) g; Hit = Shape1.intersectsLine (Shape2); g2D.drawString ("intersects = " + Hit, 20, 145); g2D.draw (Shape1); g2D.draw (Shape2); } } Zitieren
Dragon8 Geschrieben 27. Mai 2009 Geschrieben 27. Mai 2009 Das Graphics Objekt musst du nirgendswo herholen, jedenfalls nich zwangsläufig. Die paint()-Methode wird zur Laufzeit aufgerufen wenn das Applet gezeichnet werden soll, dabei wird automatisch das Graphics Objekt zur Verfügung gestellt. In dem Fall kann es dir also egal sein woher es kommt, es ist da und du kannst darauf zeichnen. Und das was du darauf zeichnest wird dann auch angezeigt. Es gibt aber auch Möglichkeiten sich selber solche Graphics Objekte zu erzeucgen, zum Beispiel wenn man in Java selber Bilder zeichnet. Zitieren
zui2000 Geschrieben 29. Mai 2009 Geschrieben 29. Mai 2009 Wenn du später (SPÄTER!!!) auf 3D umsteigen willst, dann kann ich dir die JMonkeyEngine [OpenGL] (jMonkeyEngine.com) empfehlen. Mit dem Tutorial kann man sich schon mal eine Weile beschäftigen, aber man muss echt Zeit investieren um die ganze 3D Logik erstmal zu verstehen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.