Кроме a/has соображения, нужно также рассмотреть "глубину" наследования, которое должен пройти Ваш объект. Что-либо вне пяти или шести уровней наследования глубоко могло бы вызвать неожиданный бросок и упаковку/распаковывание проблем, и в тех случаях могло бы быть мудро составить Ваш объект вместо этого.
Я хранил вызовы getch ()
как char, тогда как они должны были быть int. Прекрасно работает после переключения.
Стандартные (похожие на VT100) терминалы отправляют последовательность символов при нажатии клавиш со стрелками. Вам просто нужно следить за тем, нажимаются они последовательно или нет. Вот символы, на которые следует обратить внимание:
Down Arrow 0x1B 0x5B 0x42
Left Arrow 0x1B 0x5B 0x44
Right Arrow 0x1B 0x5B 0x43
Up Arrow 0x1B 0x5B 0x41
Я обнаружил ту же проблему в Mac OS X. Но она была решена добавлением следующего:
keypad(stdscr, TRUE);