Detect pixel color at a point

Started by
1 comment, last by Servant of the Lord 11 years, 8 months ago
Hi there.
Suppose I have an array of block-like sprites.In the center of each sprite, the pixel is set to a color , say magenta.When my character moves, he does it with a fixed velocity and the sprites are displayed in such a way that when the caracter collides with them , he practically covers the whole sprite, not just a part of it .They all have the same dimensions.
In my snake-like game, I have to check 2 arrays of coordinates and the "food" coordinates, regarding their collision with the head.Wouldnt it be easier to set in the center of each sprite a certain color and in the collision function to check wether the pixel color in center of the head's rectangle has those certain RGB values ?
If it's possible, how could I do that in SDL ?
My guess is that the blocks would first have to be blitted on the background and then the background to the display.
Advertisement
I don't think it matters that much in your case. Whether you check upon a color on a certain point or just at a certain point. If you for some reason want the collision to be on the sides/border of the head you will need to calculate the offset anyway based on the point in the middle of the head.

Also not sure about this, how SDL works with its buffer and such, but you will probably have to check every pixel in your buffer for that color. This might be fine in your case, but wouldn't be a smart thing to do when you make some more complex games.

In my snake-like game, I have to check 2 arrays of coordinates and the "food" coordinates, regarding their collision with the head.Wouldnt it be easier to set in the center of each sprite a certain color and in the collision function to check wether the pixel color in center of the head's rectangle has those certain RGB values ?

I think that would be less effective. It's not much of a slowdown to check the two arrays.

Here it might get complicated: What if your user is accidentally running the game with 16-bit colors? The colors you are expecting would be wrong.
You'd have to check last frame's screen, otherwise the snake would have already been drawn over the object he's trying to eat.

While a good programming experiment, this way of doing things is not very applicable to your future game projects - you may need to do so from time to time, but in general, your future games would be managing and tracking the location of each object individually, not reading their locations by pixel color.

Why do you have two arrays? What do they contain? You said the second contains food coordinates, but what does the first contain?

If it's possible, how could I do that in SDL ?
My guess is that the blocks would first have to be blitted on the background and then the background to the display.[/quote]

This tutorial explains setting and picking single pixel values.

This topic is closed to new replies.

Advertisement