一、游戏功能
实现小明过马路游戏,功能如下:
随机产生马路上的车辆,车型有三种,小轿车、面包车、公交车;
通过按键控制小明移动,按一次“1”键小明走过一个车道;
按键控制通过中断判断;
小明每过一次马路回到原点,加快车辆移动速度;
判断小明所在车道上车辆与小明位置关系,实现碰撞检测;
小明每过一个车道加10分,游戏结束显示总分数;
二、程序原理
程序主要利用了两个外设,键盘和LCD,没有用到线程和进程的知识。
键盘
键盘驱动有一点需要说明,读取键盘数值时会阻塞进程直至产生按键中断,因此需要将wait_event_interruptible_timeout(button_waitq, ev_press,5);此处的数值设置为5,意为等待5ms,超时自动退出。
键盘读取函数
//键盘读取处理函数
int read_key()
{
//持续检测键盘输入,为了防止长时间等待,超时5ms即退出,驱动代码需要更改
//int key_value = 0;
char current_buttons[2];
//char realchar;
if (read(buttons_fd, current_buttons, sizeof current_buttons) != sizeof current_buttons)
{
printf("nothing\n");
return 0;
}
if (buttons[0] != current_buttons[0] || buttons[1] != current_buttons[1])
{
buttons[0] = current_buttons[0];
buttons[1] = current