7 用键盘输入来消遣一下(harib20g)

既然我们已经实现了键盘输入,不如多用它来消遣消遣吧,边玩边做才有乐趣嘛。

于是我们编写了下面这个程序,只看代码的话,能猜出这是个怎样的程序吗?

本次的walk.c节选

  1. void HariMain(void)
  2. {
  3. char *buf;
  4. int win, i, x, y;
  5. api_initmalloc();
  6. buf = api_malloc(160 * 100);
  7. win = api_openwin(buf, 160, 100, -1, "walk");
  8. api_boxfilwin(win, 4, 24, 155, 95, 0 /*黑色*/);
  9. x = 76;
  10. y = 56;
  11. api_putstrwin(win, x, y, 3 /*黄色*/, 1, "*");
  12. for (;;) {
  13. i = api_getkey(1);
  14. api_putstrwin(win, x, y, 0 /*黑色*/, 1, "*"); /*用黑色擦除*/
  15. if (i == '4' && x > 4) { x -= 8; }
  16. if (i == '6' && x < 148) { x += 8; }
  17. if (i == '8' && y > 24) { y -= 8; }
  18. if (i == '2' && y < 80) { y += 8; }
  19. if (i == 0x0a) { break; } /*按回车键结束*/
  20. api_putstrwin(win, x, y, 3 /*黄色*/, 1, "*");
  21. }
  22. api_closewin(win);
  23. api_end();
  24. }

简单来说,这个程序是让“*”在窗口中移动,按小键盘的“5”让它回到窗口中心,按“2”、“4”、“6”、“8”可以上下左右移动,玩累了按下回车键就可以退出程序啦。

那么我们来“make run”试试看,画面如下。

7 用键盘输入来消遣一下(harib20g) - 图1

我走我走我走……

如果将“*”这个字符换成一个帅气的卡通人物,将黑色的背景换成更漂亮的背景的话,我们就可以做一个RPG(角色扮演游戏)了呢。不过笔者可不会这么做哦(如果真这么做的话,这本讲操作系统编写方法的书就成了讲RPG制作的书了……笑)。

在Linux中有一个很有名的游戏叫做nethack,如果喜欢那个游戏的话,把“*”改成“@”说不定会更好哦(笑)。