提问者:小点点

如何用C/C++编写钢琴程序


我正在尝试为钢琴编写一个C程序,其中钢琴的节点是通过鼠标移动来控制的。 但是在linux#include中,include; 和#include; 是不存在的,所以我得到了错误。 linux中是否存在用于#include其他库; 和#include; ? 我尝试了下面的代码。

#include <dos.h>
#include <graphics.h>
union REGS in, out;

void detect_mouse ()
{
    in.x.ax = 0;
    int86 (0X33,&in,&out);   //invoke interrupt
    if (out.x.ax == 0)
        printf ("\nMouse Failed To Initialize");
    else
        printf ("\nMouse was Succesfully Initialized");
}

void showmouse_graphics ()
{
    int gdriver = DETECT, gmode, errorcode;
    initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
    in.x.ax = 1;
    int86 (0X33,&in,&out);
    getch ();
    closegraph ();
}
void detect ()
{
    int button;
    while (!kbhit () )
    {
        in.x.ax = 3;
        int86 (0X33,&in,&out);
        button=out.x.bx&7
        switch(button)
        {
            case 1:
                print(“left button pressed\n”);
            break;
            case 2:
                print(“right button pressed\n”);
            break;
            case 4:
                print(“middle button pressed\n”);
            break;
            case 3:
                print(“left and right button pressed\n”);
            break;
            case 5:
                print(“left and middle button pressed\n”);
            break;
            case 6:
                print(“right and middle button pressed\n”);
            break;
            case 7:
                print(“all the three buttons pressed\n”);
            break;
            default:
                print(“No button pressed\n”);
        }
        delay (200); // Otherwise due to quick computer response 100s of words will get print
    }
}
void hide_mouse ()
{
    in.x.ax = 2;
    int86 (0X33,&in,&out);
}

int main ()
{
    detect_mouse ();
    showmouse_graphics ();
    detect ();
    hide_mouse ();
    return 0;
}

共1个答案

匿名用户

对于#include,您可以使用#include,它将提供几乎所有的功能。 GetChar

对于#include,除了DOS之外,它不能在任何其他操作系统中使用,并且Linux中的所有功能都没有真正类似的功能。 但是,当包含#include时,您可以在linux中使用usleep(微秒)

也可以在C++中使用sleep_for:

using namespace std::this_thread; // sleep_for, sleep_until
using namespace std::chrono; // nanoseconds, system_clock, seconds
sleep_for(nanoseconds(20));

对于生成声音,这篇文章似乎试图做一些类似的事情/可以帮助解决您的问题:

使用GCC产生声音频率

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(何用|c|c++|编写|钢琴|程序)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?