Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing

Spandeli8

Neues Mitglied
Hallo

Ich habe gerade ein Schulprojekt am laufen, bei dem ich ein Spiel mit Java Processing programmiere. Im Hintergrund sollen Asteroiden vorbei fliegen, dies hat auch geklappt. Nun habe ich das Problem, dass die Asteroiden (die Asteroiden sind als Bild-Datei eingefügt), die ganze beim überfliegen meine Objekte verdecken. Diese Objekte habe ich als Klasse erzeugt. Ich schaffe es aber nicht, die Asteroiden komplett in den Hintergrund zu bekommen. Nun ist meine Frage, wie schaffe ich es meine Objekte bzw. Bilder gegenüber anderen Bildern hervorzuheben?


Hier der Code:

Java:
PImage met1, met2, met3, met4;
//Hintergrund
PImage sternenhimmel;
PImage plattform;



int cols = 12;
int rows = 12;
int[][] met = new int[cols][rows];

int t1=100;
int t2=150;
int t3=200;

//Platforms
Platform p;
Platform pa;
Platform pb;
Platform pc;
Platform pd;

//Playerobject
Playerobject oa;

//Movement of the object "Playerobject"
int x = 10;
 







void setup(){
  //Platforms
  p = new Platform (30, 100);
  pa = new Platform (150, 300);
  pb = new Platform (350, 500);
  pc = new Platform (700, 700);
  pd = new Platform (600, 900);
  
  //Playerobject
  oa = new Playerobject (30, 50);
  
//Sternenhintergrund
sternenhimmel = loadImage("Sternenhimmel.jpg");

//Plattform
plattform = loadImage("Plattform.png");



for (int i = 0; i < cols; i++) {
  for (int j = 0; j < rows; j++) {
    met[i][j] = int(random(50,950));
  }
}
  size(1030,1030);

met1 = loadImage("MET1.png");
met2 = loadImage("MET2.png");
met3 = loadImage("MET3.png");
met4 = loadImage("MET4.png");

image(met1,met[0][1],met[0][2],100,100);
image(met2,met[1][1],met[1][2],100,100);
image(met3,met[2][1],met[2][2],100,100);
image(met4,met[3][1],met[3][2],100,100);

image(met1,met[4][1],met[4][2],150,150);
image(met2,met[5][1],met[5][2],150,150);
image(met3,met[6][1],met[6][2],150,150);
image(met4,met[7][1],met[7][2],150,150);

image(met1,met[8][1],met[8][2],200,200);
image(met2,met[9][1],met[9][2],200,200);
image(met3,met[10][1],met[10][2],200,200);
image(met4,met[11][1],met[11][2],200,200);

 








   

}

void draw(){
 

  
  

  
//Hintergrund Sternenhimmel  
background(sternenhimmel);


//Platforms
p.display();
pa.display();
pb.display();
pc.display();
pd.display();

//Playerobject
oa.display();
//Platforms image

image(plattform, 15, 93, 240, 35);
image(plattform, 135, 293, 240, 35);
image(plattform, 335, 493, 240, 35);
image(plattform, 685, 693, 240, 35);
image(plattform, 585, 893, 240, 35);







for (int i = 0; i < cols; i++) {
if(met[i][2]<-200){
  met[i][2]=int(random(1000,1100));
  met[i][1]=int(random(50,950));
} else {
  met[i][2]=met[i][2]-5;
}
}
image(met1,met[0][1],met[0][2],100,100);
image(met2,met[1][1],met[1][2],100,100);
image(met3,met[2][1],met[2][2],100,100);
image(met4,met[3][1],met[3][2],100,100);

image(met1,met[4][1],met[4][2],150,150);
image(met2,met[5][1],met[5][2],150,150);
image(met3,met[6][1],met[6][2],150,150);
image(met4,met[7][1],met[7][2],150,150);

image(met1,met[8][1],met[8][2],200,200);
image(met2,met[9][1],met[9][2],200,200);
image(met3,met[10][1],met[10][2],200,200);
image(met4,met[11][1],met[11][2],200,200);
}

Playerobject Klasse:

Java:
class Playerobject{
  float x, y, w, h;
  
  Playerobject(float startX, float startY){
  x = startX;
  y = startY;
  w = 50;
  h = 50;
  }
  
  void display(){
  fill (#2955F0);
  rect (x, y, w, h);

  }
Plattform Klasse;
  
 

  
class Platform{
  float x, y, w, h;
  
  Platform(float startX, float startY){
  x = startX;
  y = startY;
  w = 200;
  h = 20;
  }
  
  void display(){
  fill (#F72D2D);
  rect (x, y, w, h);
  
  }



}





Freundliche Grüsse
 
Zuletzt bearbeitet von einem Moderator:
Ich kenne mich mit Processing nicht aus, aber in der Regel erreicht man das dadurch, dass man von "hinten nach vorne" zeichnet. Was im Vordergrund sein soll, wird als letztes gezeichnet.

Ein paar Anmerkungen zum Code. Den solltest Du mal aufräumen und vernünftige Bezeichner wählen, beispielsweise ist oa für ein Spieler-Objekt jetzt nicht gerade intuitiv zu verstehen, auch sich p, pa, pb, pc, ... oder t1, t2, t3 absolut nichtssagend.

//Movement of the object "Playerobject"
int x = 10;
Warum ist das nicht Teil des Player-Objekts?

Deine met-Bilder kannst Du in einem Array verwalten. Dann brauchst Du auch keine zig image-Zeilen, sondern kannst eine Schleife verwenden.

Unter Beachtung der image-Zeilen ist mir unklar, warum das met-Array 12x12 groß ist.

Code, der sich wiederholt, kann in Methoden ausgelagert werden.

Das wäre, was mir beim Überfliegen so aufgefallen wäre.

Und noch eine Bitte: wenn Du hier Code postest, dann verwende im Editor die Schaltfläche ganz links (</>), um den Spaß einzufügen. Das ist ansonsten nur schwer zu lesen.
 

Zurück
Oben