7 用键盘输入来消遣一下(harib20g)
既然我们已经实现了键盘输入,不如多用它来消遣消遣吧,边玩边做才有乐趣嘛。
于是我们编写了下面这个程序,只看代码的话,能猜出这是个怎样的程序吗?
本次的walk.c节选
void HariMain(void)
{
char *buf;
int win, i, x, y;
api_initmalloc();
buf = api_malloc(160 * 100);
win = api_openwin(buf, 160, 100, -1, "walk");
api_boxfilwin(win, 4, 24, 155, 95, 0 /*黑色*/);
x = 76;
y = 56;
api_putstrwin(win, x, y, 3 /*黄色*/, 1, "*");
for (;;) {
i = api_getkey(1);
api_putstrwin(win, x, y, 0 /*黑色*/, 1, "*"); /*用黑色擦除*/
if (i == '4' && x > 4) { x -= 8; }
if (i == '6' && x < 148) { x += 8; }
if (i == '8' && y > 24) { y -= 8; }
if (i == '2' && y < 80) { y += 8; }
if (i == 0x0a) { break; } /*按回车键结束*/
api_putstrwin(win, x, y, 3 /*黄色*/, 1, "*");
}
api_closewin(win);
api_end();
}
简单来说,这个程序是让“*”在窗口中移动,按小键盘的“5”让它回到窗口中心,按“2”、“4”、“6”、“8”可以上下左右移动,玩累了按下回车键就可以退出程序啦。
那么我们来“make run”试试看,画面如下。
我走我走我走……
如果将“*”这个字符换成一个帅气的卡通人物,将黑色的背景换成更漂亮的背景的话,我们就可以做一个RPG(角色扮演游戏)了呢。不过笔者可不会这么做哦(如果真这么做的话,这本讲操作系统编写方法的书就成了讲RPG制作的书了……笑)。
在Linux中有一个很有名的游戏叫做nethack,如果喜欢那个游戏的话,把“*”改成“@”说不定会更好哦(笑)。