“上下左右”4个方向键的ASCII码是不是24,25,26,27 ?

dislimit 2003-11-09 09:30:00
“上下左右”4个方向键的ASCII码是不是24,25,26,27 ?

如果不是又如何使程序在用户键入方向键时作出相应的响应?(最好不用加回车键就送入缓冲区,我在写一个迷宫游戏)
...全文
3983 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenyiwen 2003-11-12
  • 打赏
  • 举报
回复
如果是在terminal下可用curses库, 如果是图形界面则由使用的toolkit (如Qt, gtk等) 定义
zming 2003-11-11
  • 打赏
  • 举报
回复
“↑↓←→”键的键值不是ASCII码,是扫描码。

在Unix下,十年前我们使用Curses库与Termcap库来做字符终端的TTY编程
(Vi即使用这种方式),现在发展了,在Linux下我不知道用什么更新的方法。

Curses编程中,键盘上所有的键通过Termcap进行了键值映射(如果系统
支持这种终端的话),并使用Curses库中的getch()来获得键值(整型数)。

在Curses库的,方向键的定义为:
KEY_UP 0403 /* ↑ */
KEY_DOWN 0402 /* ↓ */
KEY_LEFT 0404 /* ← */
KEY_RIGHT 0405 /* → */

下面是一段Curses编程的例子,需要 -lcurses 以链接Curses库:

#include <curses.h>

main()
{
int x, y;
int ch;

x = y = 1;

initscr();
cbreak();
nonl();
noecho();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
refresh();

do
{
ch = getch();

switch ( ch ) {
case KEY_UP : y--; break;
case KEY_DOWN : y++; break;
case KEY_LEFT : x--; break;
case KEY_RIGHT : x++; break;
case 27 : /* ESC键 */
endwin();
exit(0);
}
move(x, y);
}
}




dislimit 2003-11-11
  • 打赏
  • 举报
回复
在控制台下好像无法获得方向键.
getchar()得不到这些键值.只是光标会做相应得移动.

请问
#define VK_LEFT 0x25 //=37
#define VK_UP 0x26 //=38
#define VK_RIGHT 0x27 //=39
#define VK_DOWN 0x28 //=40

这些值是什么编码?符合标准C吗?

我在LINUX下用EMACS,GCC和GDB编程,如何让程序对方向键作出响应?
(请介绍一下具体实现方式)
谢谢!
simclock 2003-11-10
  • 打赏
  • 举报
回复
为了用着方便,看着明白啊。不用也行,不过你得老记得0x25。。。。。。。
dislimit 2003-11-10
  • 打赏
  • 举报
回复
不知我说得对不对:
#define VK_LEFT 0x25 //=37
#define VK_UP 0x26 //=38
#define VK_RIGHT 0x27 //=39
#define VK_DOWN 0x28 //=40

可是37 38 39 40 按ASCII码 ,是‘%’之类的东西。
如果这不是ASCII码,那又是什么编码?
编译器如何识别你用得是哪种编码?

我用得是LINUX下的标准库,这样实现可以吗?
dislimit 2003-11-10
  • 打赏
  • 举报
回复
谁能告诉我,紧急!~
dislimit 2003-11-09
  • 打赏
  • 举报
回复
那么请问为什么上述宏定义能够表示方向键?
iidj 2003-11-09
  • 打赏
  • 举报
回复
用getche()行吗?
#define VK_LEFT 0x25
#define VK_UP 0x26
#define VK_RIGHT 0x27
#define VK_DOWN 0x28
晨星 2003-11-09
  • 打赏
  • 举报
回复
上下左右键没有“Ascii”码。
Ascii码是一套编码标准,并不是键盘上的每一个键都有Ascii码。
yuantao 2003-11-09
  • 打赏
  • 举报
回复
直接调用中断,在dos下是这样
int具体的端口忘了
dislimit 2003-11-09
  • 打赏
  • 举报
回复
getchar()要获得字符,必须敲回车才能将字符输入缓冲区,如何在按下方向键的时候就让程序响应?(如游戏中相应的移动)
其实现原理?
dislimit 2003-11-09
  • 打赏
  • 举报
回复
对不起,能否详细解释一下,我是菜鸟。^_^
zxb3235 2003-11-09
  • 打赏
  • 举报
回复
对!!!!!
fireseed 2003-11-09
  • 打赏
  • 举报
回复
#define VK_LEFT 0x25
#define VK_UP 0x26
#define VK_RIGHT 0x27
#define VK_DOWN 0x28

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧