Sign in to follow this  

Detect pixel color at a point

This topic is 1969 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
[quote name='cold_heats_.--.' timestamp='1343110073' post='4962505']
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 ?[/quote]
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[i] last frame[/i]'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?

[quote]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]

[url="http://sol.gfxile.net/gp/"]This tutorial[/url] explains setting and picking single pixel values.

Share this post


Link to post
Share on other sites

This topic is 1969 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this