logikfehler?

Status
Nicht offen für weitere Antworten.

kontur

Mitglied
Hallo zusammen!

Mit folgender Methode will ich testen, ob sich ein Punkt mit einem Objekt überschneidet

Code:
	public boolean checkCollision(int x, int y){
		
		boolean collision = false, collisionH = false, collisionV = false;
		
			for (int horizontal=dim[0]; horizontal<(dim[0]+dim[2]); horizontal++){
				if (horizontal == x) collisionH = true;	
			}				
				
                        for (int vertical=dim[1]; vertical<(dim[1]+dim[3]); vertical++){
				if (vertical == y) collisionV = true;
			}	
			
		if ( ( (collisionH = true) && (collisionV = true) ) ){
			collision = true;
		}else{
			collision = false;
		}
		return collision;
	}

x = 200, y = 200
dim 0 = 100
dim 1 = 150
dim 2 = 200
dim 3 = 5

Müsste doch false zurückgeben, wohingegen der punkt x=200, y=153 true zurückgeben müsste?

Wäre dankbar, wenn mir jemand entweder das bestätigt, oder sagt wo der Fehler liegt, so dass ich ggf. anderswo mit der Fehlersuche ansetzen muss.

Danke im Vorraus,
k.
 

SebiB90

Top Contributor
wieso? x 200 und y 200 und im array ist 200 drin also kommt true zurück weil es eine kollision gibt und 153 gibt false zurück weil 153 nicht im array dim vorkommt. ich glaub da haste ein dreher in deinem kopf gemacht.

edit: oder mach ich ein denk fehler ???:L wo ich mir jetzt den code anguck sieht der bischen komisch aus.
sorry hast doch recht, hab den code nicht richtig durchgelesen :oops:
 

kontur

Mitglied
haha...okay, hab den Fehler...
Code:
if ( ( (collisionH = true) && (collisionV = true) ) )
muss na klar mit doppel = sein.
wunderlich, dass das keinen Kompilierfehler gab...

Danke trotzdem für die schnelle Antwort

k.[/code]
 

SebiB90

Top Contributor
kontur hat gesagt.:
haha...okay, hab den Fehler...
Code:
if ( ( (collisionH = true) && (collisionV = true) ) )
muss na klar mit doppel = sein.
wunderlich, dass das keinen Kompilierfehler gab...

Danke trotzdem für die schnelle Antwort

k.[/code]
oh hab ich gar nicht gesehen
und das is klar das das keine fehlermeldung kam, denn du kannst auch in der bedingung werte zu weisen. das ist nicht verboten. praktisch z.b. beim auslesen von dateien
Code:
while((s = reader.readLine()) != null) { //...
 

MPW

Top Contributor
SebiB90 hat gesagt.:
kontur hat gesagt.:
haha...okay, hab den Fehler...
Code:
if ( ( (collisionH = true) && (collisionV = true) ) )
muss na klar mit doppel = sein.
wunderlich, dass das keinen Kompilierfehler gab...

Danke trotzdem für die schnelle Antwort

k.[/code]
oh hab ich gar nicht gesehen
und das is klar das das keine fehlermeldung kam, denn du kannst auch in der bedingung werte zu weisen. das ist nicht verboten. praktisch z.b. beim auslesen von dateien
Code:
while((s = reader.readLine()) != null) { //...


Es gibt nur Stress wenn kein boolean übrig bleibt,

Code:
boolean f = false;
if (f = true) {
    //
}

geht nicht und der Compiler wird streiken.
 

SebiB90

Top Contributor
MPW hat gesagt.:
SebiB90 hat gesagt.:
kontur hat gesagt.:
haha...okay, hab den Fehler...
Code:
if ( ( (collisionH = true) && (collisionV = true) ) )
muss na klar mit doppel = sein.
wunderlich, dass das keinen Kompilierfehler gab...

Danke trotzdem für die schnelle Antwort

k.[/code]
oh hab ich gar nicht gesehen
und das is klar das das keine fehlermeldung kam, denn du kannst auch in der bedingung werte zu weisen. das ist nicht verboten. praktisch z.b. beim auslesen von dateien
Code:
while((s = reader.readLine()) != null) { //...


Es gibt nur Stress wenn kein boolean übrig bleibt,

Code:
boolean f = false;
if (f = true) {
    //
}

geht nicht und der Compiler wird streiken.
wieso sollte dieser code nicht funktionieren???
der ist eigentlich so in ordnung. der variable f wird true zugewiesen und f wird dann als bedingung des ifblocks eingesetzt.
 

MPW

Top Contributor
SebiB90 hat gesagt.:
wieso sollte dieser code nicht funktionieren???
der ist eigentlich so in ordnung. der variable f wird true zugewiesen und f wird dann als bedingung des ifblocks eingesetzt.

Stimmt, hast recht, hatte aber schonmal einen Fall, wo irgendwas mit 1 bzw. 2x "== war...naja egal.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben