getch() und kbhit() sind nichtstandardisierte Relikte aus DOS-Zeiten, von denen man in neueren Projekten tunlichst die Finger lassen sollte.
Du kannst das, was du willst, mit der
WinAPI-Funktion
GetAsyncKeyState machen.
Btw, warum benutzt du Schleifen für die Implementation des Spielablaufes? Das ist auch ein Paradigma aus der Zeit, als ein Programm den Rechner noch für sich alleine hatte. Dein Programm verbraucht dadurch unnötig CPU-Zeit, und u.U. machst du damit gar das Laufzeitverhalten von der Geschwindigkeit des Rechners abhängig. Ein besserer Ansatz wäre es, sich regelmäßig Timer-Messages schicken zu lassen.