another reason to use constants is the removal of static values in your code, say one of your vars or some system uses the value "12" and this is repeated 250 times in your code and you decide "15" is a better value, you have to go edit 250 places in your code, use a constant in the first place and you only ever need to adjust a single value, whenever there is a static value in my code if I cant make it dynamic I make it a const
and as VN points out, AppGameKit constants also moonlight as macros which is very very handy
also, as constants are usually used in C/C++ they can help add additional functionally to function calls, make switch statements and and flag input, a say a function needs 11 arguments, creating a window for example and 7 of those inputs are for window appearance ... put them in flags and use bit opps to filter them
and things like finite state machines become a mess unless you use constants, state's always have a static value that never changes so constants are perfect
so as you can see there are many reasons why constants are used its just knowing when and where you should use them