Problem z RGB (?)

0

Witam,
Piszę grę która polega na tym, że trzeba dojechać samochodem do mety. Mapa porusza się do góry i jest narysowana dwoma kolorami biały - trasa zielony przeszkody. Gracz traci życie jeśli najedzie na przeszkodę. Jest 5 żyć. Po dojechaniu na metę zmienia się plansza.

Wszystko niby działa dopóki nie dochodzi do zmiany planszy. Kolizję i metę rozpoznaję metodą obraz.getRGB(int,int)
no i tutaj się pojawia mój problem. Aby przejść do następnej mapy sprawdzam, czy pixel znajduję się na kolorze czerwonym, jeśli tak to wywołuję metodę restartlvl() w której restartowane jest położenie gracza, ustawienie nowego timera, oraz podniesienie parametru poziom o 1. Problem w tym, że parametr poziom nie podnosi się o jeden tylko o duuuuuuuuuuuuuuuuużo dużo więcej, to samo tyczy się parametru live po wjechaniu na przeszkodę. Fragmenty kodu:

String pathBackground = "img/mapa"+poziom+".png";
            background = ImageIO.read(new File(pathBackground));
Color c = new Color(background.getRGB((int)xscale, y-(int)yscale));
int red = c.getRed();
             if (red == 34){
    	    	 live++;
                 restart();
             if (red == 237){
    	    	 restartlvl();
    	    	 System.out.println(poziom);
    	     }

Jeżeli komuś udało by się znaleźć chwilę żeby rzucić na to okiem, pomoc była by nieoceniona.
Pozdrawiam, mith.

0

Za mało informacji, żeby nie zgadywać.
Po pierwsze czy linia mety ma u Ciebie "grubość" jednego piksela? Raczej nie.
Czy po zaistnieniu warunku zabezpieczasz się przed tym, żeby warunek ten nie mógł zostać ponownie spełniony? W tym wypadku podejrzewałbym podnoszenie level lub live tak długo aż nie przeleci cała szerokość przeszkody lub mety.
Po drugie - dlaczego sprawdzasz tylko jedną składową koloru? Nawet kolor, który wydaje się niebieski lub żółty może mieć niezerową składową czerwoną (czasem wo wartości takiej jak zupełnie inny kolor). Poza tym ze względu na różne rodzaje planów i palet fizycznych w różnych trybach graficznych do określania koloru powinieneś stosować zakres, a nie jedną wybraną wartość piksela (czyli 3 składowe).

1 użytkowników online, w tym zalogowanych: 0, gości: 1