2D Alienshooter

paddy778

Mitglied
hey Leute;) hab schon Erfahrung mit Spielen, die in Java programmiert sind, gemacht und habe im Internet ein Spiel gesehen, das die Kollisionen von Objekten zeigt. Und ich habe versucht dieses Spiel auszuprobieren, aber es ging nicht. die Bilder, die ich dort heruntergeladen habe, wurden mir nicht als Objekte im Fenster gezeichnet, wie es eig sein sollte hat jemand ne Idee?
Oder klappt es bei jemandem? Der komplette Code befindet sich auf dieser Seite und auch die zugehörigen Dateien. Danke!

Hier der Link zum Code: http://zetcode.com/tutorials/javagamestutorial/collision/

Und zusätzlich habe ich im Anhang noch ein Bild angehängt, wie das Spiel am Ende aussehen soll.
 

Jardcore

Top Contributor
Wie genau hast du es denn ausprobiert? Hast du den Quelltext kopiert? Es ist relativ aufwändig deinem Link zu folgen und dort den kompletten Code zu studieren, der wahrscheinlich richtig ist.

Poste am besten den genauen Fehler den du hast, so das man zusammen das Problem ausmachen kann.

Wenn du dich ernsthaft mit der Spieleentwicklung in Java auseinander setzten willst kann ich dir Libgdx bzw. Lwjgl empfehlen.
 

paddy778

Mitglied
ich habe zuerst die Syntax der einzelnen Klassen/java Dateien geprüft, die auch richtig waren und habe dann versucht das Spiel zum Laufen zu bringen. Die Methode loadImage() wird zwar aufgerufen, aber die Bilder, die dann als Objekte gezeichnet werden sollen, werden nicht angezeigt.
Wäre mal gut, wenn du das Spiel auch mal testen könntest ob es bei dir funktioniert:)
Die Funktionen, die für die Bilder sind, hab ich mit angefügt als Datei.

PS: habe Eclipse verwendet.

Hier die Methode, die nicht richtig funktioniert:


Java:
 private void drawObjects(Graphics g) {

        if (craft.isVisible()) {
            g.drawImage(craft.getImage(), craft.getX(), craft.getY(),  
                    this);
        }

        ArrayList<Missile> ms = craft.getMissiles();

        for (Missile m : ms) {
            if (m.isVisible()) {
                g.drawImage(m.getImage(), m.getX(), m.getY(), this);
            }
        }

        for (Alien a : aliens) {
            if (a.isVisible()) {
                g.drawImage(a.getImage(), a.getX(), a.getY(), this); 
            }
        }

Wenn ich die Zeile g.drawImage... ersetze und stattdessen kreise zeichne funktionieren die Funktionen. Dann werden halt Punkte statt die Bilder angezeigt.
 
Zuletzt bearbeitet:

Joose

Top Contributor
Entweder im Beitrag Editor über Einfügen->Code oder wie schon oben geschrieben die Code-Tags am Anfang bzw. Ende des Code setzen
[code=java] .. dein code .. [/code]
wird zu
Java:
 .. dein code ..
 

Jardcore

Top Contributor
Könntest du die Fehlermeldung posten die in deiner Console ausgegeben wird? Vielleicht hast du die Bilder in den falschen Ordner gepackt.

Im Objekt Missile müsstest du mal gucken was die getImage() Methode macht und dort schauen von wo das Bild gezogen werden sollte.
 

paddy778

Mitglied
Das ist das Problem! Compiler gibt keinen Fehler! es werden Bilder nur nicht angezeigt. Ich Lade hier mal Bilder hoch , die zeigen wie es angezeigt wird und was angezeigt werden soll. das rote sind die Alien und rechts das Raumschiff
momentanAusgabe.PNG Muster.png
 

paddy778

Mitglied
Und das ist die Methode getImage():

Java:
  protected int x;
  protected int y;
  protected int width;
  protected int height;
  protected boolean vis;
  protected Image image;

  public Sprite(int x, int y) {

  this.x = x;
  this.y = y;
  vis = true;
  }

  protected void getImageDimensions() {

  width = image.getWidth(null);
  height = image.getHeight(null);
  }

  protected void loadImage(String imageName) {

  ImageIcon ii = new ImageIcon(imageName);
  image = ii.getImage();
  }

  public Image getImage() {
  return image;
  }

Außerdem sollen so die Bilder vom PC geladen werden, am Beispiel vom Alien Bild:

Java:
  private void initAlien() {

  loadImage("alien.png");
  getImageDimensions();
  }
ich hoffe ihr könnt mir helfen. Danke
 

paddy778

Mitglied
direkt dort wo auch die Java Dateien sind. Aber ich habe das Problem anderweitig gelöst :)
Habe aus den 5 Dateien eine gemacht und mit einem anderen Programm namens Java Editor hat es nach beheben mehrerer Compilerfehler ( habe die Klasse CollisionEx, in der das Hauptprogramm war, nicht als erste public class gemacht) endlich geklappt. Aber danke trotzdem:)

Hab das Spiel mal hochgeladen( Da kein Java geht mache ich ne txt Datei daraus), falls du es mal anschauen willst;)
Aber eine Frage noch, falls du dir mein Spiel anschaust:
Wie kommt man oben links auf die Zahl 27 und wie kann ich sie ändern?
 

Anhänge

  • CollisionEx.txt
    9,4 KB · Aufrufe: 2
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor
Wie kommt man oben links auf die Zahl 27 und wie kann ich sie ändern?
Das ist die Anzahl der Elemente, die in der ArrayList private ArrayList<Alien> aliens; gespeichert ist. Sie wird mit folgendem Codeausschnitt ausgegeben:
Java:
g.drawString("Aliens left: " + aliens.size(), 5, 15);
Du kannst sie ändern, indem du Alien-Objekte zur ArrayList hinzufügst oder daraus entfernst.
 

Neue Themen


Oben