# Feste Blöcke mit Grafik



## Marie97 (10. Jan 2015)

Hallo ich habe drei Fragen zum Thema:
1. Ich habe in meinem Programm mehrere fillRects eingebaut. Diese sollen fest sein, sprich der Charakter kann nicht hindurch gehen. Ich habe da mit Kollisionsabfragen gearbeitet. Es klappt auch soweit bloß hätte ich gerne einen Rat wie man das macht, dass der Charakter auf einen Block springen kann? Bei mir kann er dies zwar, allerdings kann er während er auf dem Block steht nicht Springen, da ich die Sprungposition festgelegt habe(das will ich irgendwie ändern).Hier mal der Code:
	
	
	
	





```
public boolean Kollisionsabfrage_für_Coin(int x_block, int y_block, int x_charakter, int y_charakter){
	
		
		//Man kann auf den Block springen.
		if(x_charakter >= x_block && y_charakter <= y_block-Height-Height){
			if(x_charakter <= x_block + Width){	
				Sprung.Sprungposition = y_block-125;
			}
			else{
				if(x_charakter - 40 <= x_block + Width){
					Sprung.Sprungposition = y_block-125;
				}		
			}
		}
		
		//Der Charakter kann nicht vorwärts durch den Block laufen
		if(x_charakter>=x_block&&y_charakter<y_block&&y_charakter>y_block-100){
			if(x_charakter<=x_block+Width){
			Level1.left=x_block-70;
			}	  
		}
		
		//Der Charakter kann nicht rückwärts durch den Block laufen
				if(x_charakter-50<=x_block+Width&&y_charakter<y_block&&y_charakter>y_block-100){
					if(x_charakter-50>=x_block){
					Level1.left=x_block+50;
					}
				}
		
		//Springt man unter den Block, bekommt man einen Coin.
			if(x_charakter >= x_block && y_charakter == y_block){
			if(x_charakter <= x_block + Width){	
				Sprung.höchsterSprungpunkt = true;				
				coin = true;
				return true;
			}
```
2. Ich würde gerne wissen, wie man ein fillRect nicht in einer Farbe sondern mit einer Grafik zeichnet
3. Ich will noch drei runde Blöcke einbauen, die unsichtbar werden sollen sobald sie berührt werden.
LG Marie


----------



## Java20134 (10. Jan 2015)

Zu Zweitens: 
Es gibt die Methode Graphics.drawImage(Image, x, y, null);. Dabei musst du ein BufferedImage erstellen und das dann der Methode übergeben. 

Zu Drittens: 
Ich würde einfach ein BufferedImage erstellen. Davor musst du noch ein png-Bild zeichnen, welches den Kreis repräsentiert und  dann brauchst du noch den MouseListener.


----------



## Marie97 (10. Jan 2015)

Vielen dank erstmal 
Zweitens habe ich hinbekommen.
Kannst du mir Drittens nochmal erklären, das Bild kann ich ja wie beim zweiten machen, aber wie heißt das wenn es transparent werden soll? setVisible(false) klappt glaub ich ja nicht?
LG Marie


----------



## Java20134 (10. Jan 2015)

guck dir dazu mal den MouseListener an. Du kannst das Bild ja zum Beispiel in ein JLabel packen.


----------



## Marie97 (11. Jan 2015)

Ich will das Bild ja nicht anklicken damit es transparent wird sondern wenn mein Charakter dadurch rennt soll es verschwinden, so als ob er das einsammelt.


----------



## Java20134 (11. Jan 2015)

Ach ich hatte das so verstanden, dass wenn du über das Objekt gehst soll es verschwinden. 
Aber OK jetzt weiß ich wie es gemeint war. Na dann musst du mit der Kollision arbeiten. LetsGameDev erklärt das sehr schön! http://www.java-forum.org/spiele-und-multimedia-programmierung/165030-feste-bloecke-grafik-new-post.html


----------



## Marie97 (11. Jan 2015)

Das ist mir bewusst nur ich brauche ja einen Befehl, um zu sagen, wenn eine Kollision da ist vom Charakter und dem Bild, dann soll das Bild verschwinden. Und den Befehl den möchte ich wissen


----------



## Java20134 (11. Jan 2015)

Die einfachste Sache wäre, das man ein boolean Wert ersellt. Oder man setzt das Bild des Jlabels einfach auf nul, dass müsset auch gehen. Bei der ersten Methode bin ich mir sicher.


----------



## Marie97 (11. Jan 2015)

Ich hab ja einen Boolean.

```
Taler1.Kollisionsabfrage_für_Taler(Taler1.getX_Taler() - getX_Bild(),Taler1.getY_Taler() + Taler1.getHeight(), left + (74 - 12), panda_y );{
				if(Taler1.coin() == true){
				coin_score += 10;
//Hier müsste dann ein Befehl zum unsichtbar machen des Bildes hin
				}
			}
```
Ich könnte auch ein Bild rüber zeichnen aber nicht das alte verschwinden lassen, so als ob ich es einsammele


----------



## Marie97 (11. Jan 2015)

Ich habs geschafft 
und zwar habe ich wie du gesagt hast das Bild auf null gesetzt und jetzt kappt es 
Vielen Dank noch mal
LG


----------

