added interface IKeyEvent and AbstractKeyEvent for handling Player key events
//extend AbstractKeyEvent to create a keyevent, and accept Player p in constructor -- call super(p)