Kleines Game mit Kollision

TheCptPrime

Neues Mitglied
hallo leute ,

ich habe versucht ein einfaches frogger ähnliches Spiel zu programmieren.
Nun bei der Kollisionsabfrage habe ich überhaupt keine ahnung wie ich sie in mein programm einbinden könnte. Würde mich sehr über einen Tipp freuen.???:L

Hier der Code:


Java:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;



public class Kontrolle implements KeyListener {
	
	//Attribute
	
	ZeichenFlaeche9 meineFlaeche = new ZeichenFlaeche9();	
	IntegerInputFrame meineEingabe = new IntegerInputFrame();
	
	Hindernisse[] hindernisse;
	
	Frosch frosch = new Frosch();
	//Attribute Hindernisse
	
	private int bahnenAbstandX = 100; 
	private int breite = 20;
	private int hoehe = 60;
	private int ersteBahnAbstand = 100;
	private int y=(int) (10 *Math.random()*60)-50;

	
	//Attribute Frosch
	
	
	private int breiteFrosch = 20;
	private int hoeheFrosch = 20;
	private int xFrosch = 100 - (breiteFrosch/2);
	
	
	
	
	int Eingabe = 1 + meineEingabe.getInteger("Bitte geben sie die Anzahl an Hindernissen an!", 200, 200);
	

	
	
	public void run(){
		System.out.println(xFrosch);
		meineFlaeche.macheZeichenFlaecheSichtbar();
		meineFlaeche.addKeyListener(this);
		hindernisse = new Hindernisse[Eingabe];
		
		linienErstellen();
		figurenErstellen();
		int yFrosch = meineFlaeche.getHeight()/2;
		frosch.setzeFrosch(0, xFrosch, yFrosch, breiteFrosch, hoeheFrosch, meineFlaeche);
	

		
		while (true) {

			for (int i = 1; i < hindernisse.length; i++) {
				hindernisse[i].bewegen(meineFlaeche);
				}
				frosch.bewegeFrosch(xFrosch, meineFlaeche);
				try {
					Thread.sleep(5);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
	
			}	
			
	}	

	

		 
	public void linienErstellen(){
		for (int i = 1; i < hindernisse.length; i++) {
			
			hindernisse[i] = new Hindernisse();
			hindernisse[i].setzeLinien(i+Eingabe, (i*bahnenAbstandX)+ersteBahnAbstand, meineFlaeche);
			
		}

	}
		
	public void figurenErstellen(){

		
		for (int i = 1; i < hindernisse.length; i++) {			
			
			hindernisse[i] = new Hindernisse();
			hindernisse[i].setze(i , (i*bahnenAbstandX-(breite/2))+ersteBahnAbstand, y ,breite, hoehe, meineFlaeche);
		
			
			
		}		
	}


	public void keyPressed(KeyEvent keyEvent) {
		
		if (keyEvent.getKeyCode() == KeyEvent.VK_RIGHT) {
			
			xFrosch = xFrosch + (100+breiteFrosch) -2*(breiteFrosch/2);
			System.out.println(xFrosch);
		}
		
		if (keyEvent.getKeyCode() == KeyEvent.VK_LEFT){		
			
			xFrosch = xFrosch - (100+breiteFrosch) +2*(breiteFrosch/2);
			System.out.println(xFrosch);
		}

		
	}


	public void keyReleased(KeyEvent keyEvent) {

		
	}


	public void keyTyped(KeyEvent keyEvent) {
		
	}
}

Java:
public class Frosch {
	
	private int x;
	private int y;
	private int breite;
	private int hoehe;
	private int id;
	
	
	public void setzeFrosch(int id,int x, int y, int breite, int hoehe, ZeichenFlaeche9 meineFlaeche){
		
		this.id = id;
		this.x = x;
		this.y = y;
		this.breite = breite;
		this.hoehe = hoehe;
		
	}
	
	public void bewegeFrosch(int x, ZeichenFlaeche9 meineFlaeche){
		
		
		meineFlaeche.loeschen(id);
		meineFlaeche.setzeGefuelltesRechteck(id, x, y, breite, hoehe);
		
	}

}

Java:
public class Hindernisse {
	
	
	private int x;
	private int y;
	private int breite;
	private int hoehe;
	private int id;
	private int bewegen;
	private int xLinie;
	
	
	public void setze(int id, int x,int y, int breite, int hoehe,ZeichenFlaeche9 meineFlaeche){
		
		this.id = id;
		this.x = x;
		this.y = (int) (10 *Math.random()*60)-50;
		this.breite = breite;
		this.hoehe = hoehe;
		
		meineFlaeche.setzeGefuelltesRechteck(id, x, x, breite, hoehe);	
	}
	
	public void setzeLinien(int id ,int x ,ZeichenFlaeche9 meineFlaeche){
		
		this.xLinie = x;
		this.id = id;
		
		
		meineFlaeche.loeschen(id);
		meineFlaeche.setzeLinie(id, x, 0, x, meineFlaeche.getHeight());
		
		
		
	}

	public void bewegen(ZeichenFlaeche9 meineFlaeche){
		
		if ( y >= meineFlaeche.getHeight() - hoehe) {
			bewegen = 0;
		}
		if( y <= 0) {
			bewegen = 1;
		}
		if (bewegen == 1) {
			y = y+1;
		}
		if (bewegen == 0) {
			y = y-1;
		}
		
		meineFlaeche.loeschen(id);
		meineFlaeche.setzeGefuelltesRechteck(id, x, y, breite, hoehe);
	}


}


ps: entschuldige mich dafür ,dass ich die kommentare vergessen habe.Ich hoffe ihr versteht das trotzdem

für die Kollision dachte ich an diesen code:

Java:
if ((x1+breite1> x2) && (x1< x2 + breite2) && (y1 + breite1 > y2) && (y1< y2 + hoehe2).....{

}
 
Zuletzt bearbeitet:
also ich hab ja so etwas bereits:

Java:
if ((x1+breite1> x2) && (x1< x2 + breite2) && (y1 + breite1 > y2) && (y1< y2 + hoehe2).....{
 
}

aber das problem ist wie soll das programm zwischen den einzelnen HIndernissen unterscheiden, die werden ja mit einer for schleife erstellt. Und wo soll ich überhaupt die abfrage machen? z.B in der while schleife, dort wo die figuren bewegt werden?
 

Zurück
Oben