also not really having done very much in c# i was wondering if someone would be up for having a quick skim through my source and tell me if im doing roughly the right sort of things cheers
I'm really sorry, but I've only just got round to looking at the code.
It's OK, but it's not really using inheritance the way it's supposed to be used - all your classes seem to inherit off one another and the base class is the keyboard reading code.
That's not really how it's supposed to be used.
Having said that, it's really good that you have broken your code up into sane pieces. Keyboard, bats, ai, collision. That is great.
You're not really in need of most OO features in this program.
Right now you've used 'Composition' to join all those four bits into one super-class which can control everything. This isn't great. It would be better to have one controlling class, say GameControl. It would create an instance of each of the sub-classes and marshall data between them - in the constructor create a keyboard reader, ai controller, scene drawer, then that top level class controls everything - e.g. read the keyboard, feed that into the movement routine. Run the ai routine. Feed that into the drawing routine.
Jim