If you want to determine whether a point (tx,ty) is within a circle with its centre at (x,y) then you need to determine whether (x-tx)2 + (y-ty)2 is less than r squared (where r is the radius of the circle or what you are referring to as the range)
One obvious question here is how often the map changes. When you check for passability, does this take into account mobile objects? If not, you could probably get away with only updating the partitions whenever the stationary objects on the map change (probably just building construction/destruction, but maybe terrain modification if you are planning on including something like that)
It is not necessary to use C++ to write games, and it is more than possible to write games with C# or Java. If you already have experience in using those languages I would recommend using them for your early game projects over learning C++. For graphics I would recommend using SFML if you are going to use C++ or C#.
If TILE_SIZE is 7, then the loop goes from j=0 to j=6. When j is equal to 6, it tries to push past[j/2] onto verts. Since past has a length of TILE_SIZE/2 or 3, its valid indices go from 0 to 2. I am not sure at the moment how to fix this though.
In response to the people asking about how suliman is handling WM_CLOSE messages, presumably the HGE engine he is using is taking care of that (or maybe it isn't). Suliman, I think in order to better reason about your code, you might want to put it up so we can have a look at it. You could also try asking for help on the HGE engine forums here.
One important thing to keep in mind about windows bitmaps is that the bitmap data is padded so that each row takes up a number of bytes that is a multiple of 4 (and that this padding occurs at the end of the row).
The problem here is that you are using = instead of == (unless this was a typo), so that materials[material].index[meshes].uses = false will actually evaluate to the expression on the right-hand side of the equals sign. This means that the if statement's condition will never evaluate as true and so the continue statement won't be executed.
Preliminary testing appears to support the statement that "file" and "file." are interchangeable on modern Windows (in fact, when I made a file called "file." it simply got rid of the period) I cannot say anything definitive about Linux and OSX though.
From the documentation of the ArrayList: Note that this implementation is not synchronized. If multiple threads access an ArrayList instance concurrently, and at least one of the threads modifies the list structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more elements, or explicitly resizes the backing array; merely setting the value of an element is not a structural modification.) This means that you'll have to prevent two threads from accessing the ArrayList at the same time; this could be accomplished by having a wrapper of the ArrayList that queues up addition and deletion operations, or by eschewing the use of multiple threads entirely (although you may have a good reason for going threaded)
There are no problems with using Java to make a 2D platformer (as far as I know), so my recommendation would be that you stick with Java since you are comfortable with it and know a lot about that language.