Zum Inhalt springen

Spiele in blue j programmieren


mco9

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

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 von mco9
Link zu diesem Kommentar
Auf anderen Seiten teilen

hoffe ist nicht zu viel

import 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;

            }


    }

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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); 

    }

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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);

  }


}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...