简单的键盘画图

#include <bios.h>
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define SPACE 0x3920
#define ENTER 0x1c0d
main()
{
    struct point
    {
        int x, y;
    } a;            /*定义a为结构体point类型*/
    int key, key1;
    a.x = 40;           /*设置光标的初始位置*/
    a.y = 10;
    clrscr();
    gotoxy(a.x, a.y);          /*光标定位在指定位置*/
    printf("%c", 6);
    while (bioskey(1) == 0)
    {
        key = bioskey(0);         /*将所按键盘的控制码赋给key*/
        switch (key)
        {
            case UP:          /*当按键为向上键时实现向上画图*/
                {
                    a.y -= 1;        /*纵坐标减1*/
                    if (a.y == 0)
                        a.y = 24;
                    gotoxy(a.x, a.y);
                    printf("%c", 6);
                    break;
                }
            case DOWN:         /*当按键为向下键时实现向下画图*/
                {
                    a.y += 1;        /*纵坐标加1*/
                    if (a.y == 24)
                        a.y = 1;
                    gotoxy(a.x, a.y);
                    printf("%c", 6);
                    break;
                }
            case LEFT:         /*当按键为向左键时实现向左画图*/
                {
                    a.x -= 1;        /*横坐标减1*/
                    if (a.x == 0)
                        a.x = 80;
                    gotoxy(a.x, a.y);
                    printf("%c", 6);
                    break;
                }
            case RIGHT:         /*当按键为向右键时实现向右画图*/
                {
                    a.x += 1;        /*横坐标加1*/
                    if (a.x == 80)
                        a.x = 1;
                    gotoxy(a.x, a.y);
                    printf("%c", 6);
                    break;
                }
            case ENTER:         /*当按键为回车键时光标跳到下一列且不画图*/
                {
                    a.y += 1;        /*纵坐标加1*/
                    if (a.y == 24)
                        a.y = 1;
                    gotoxy(a.x, a.y);
                    break;
                }
            case SPACE:         /*当按键为空格键时执行大括号内的语句*/
                {
                    while (bioskey(1) == 0)
                    {
                        key1 = bioskey(0);     /*将所按键盘的控制码赋给key*/
                        switch (key1)
                        {
                        case UP:       /*当按键为向上键时向上清除所画图像*/
                            {
                                a.y -= 1;
                                if (a.y == 0)
                                    a.y = 24;
                                gotoxy(a.x, a.y);
                                putch(' ');
                                break;
                            }
                        case DOWN:      /*当按键为向下键时向下清除所画图像*/
                            {
                                a.y += 1;
                                if (a.y == 24)
                                    a.y = 1;
                                gotoxy(a.x, a.y);
                                putch(' ');
                                break;
                            }
                        case LEFT:       /*当按键为向左键时向左清除所画图像*/
                            {
                                a.x -= 1;
                                if (a.x == 0)
                                    a.x = 80;
                                gotoxy(a.x, a.y);
                                putch(' ');
                                break;
                            }
                        case RIGHT:      /*当按键为向右键时向右清除所画图像*/
                            {
                                a.x += 1;
                                if (a.x == 80)
                                    a.x = 1;
                                gotoxy(a.x, a.y);
                                putch(' ');
                                break;
                            }
                        case ENTER:      /*当按键为回车键时光标跳到下一列且不画图*/
                            {
                                a.y += 1;
                                if (a.y == 24)
                                    a.y = 1;
                                gotoxy(a.x, a.y);
                                break;
                            }
                        }
                        if (key1 == 0x3920)     /*当按键为空格键时,跳出循环*/
                            break;
                    }
                }
        }
        if (key == 0x011b)         /*当按键为esc时,退出循环*/
            break;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值