用C语言写钢琴小程序的代码,用C语言编写钢琴小程序

用C语言写钢琴小程序的代码,用C语言编写钢琴小程序

2023年6月22日发(作者:)

⽤C语⾔写钢琴⼩程序的代码,⽤C语⾔编写钢琴⼩程序⽹上搜索键盘钢琴,可以搜索到不少⼩游戏,最常玩的就是Flash⼩游戏,26个按键的后来想⽤C语⾔⾃⼰实现⼀个,没有界⾯~~控制台的。。原理很简单,先在控制台中获取按键事件,在按键事件中,开⼀个线程,这个线程就是专门⽤来播放键对应的⾳效mp3的。为什么要⽤线程呢,因为直接按键播放的话,如果不把mp3播放完,就⽆法再播放同⼀mp3,⽤线程就没有这个问题了。线程函数中,就是使⽤mciSendString函数,打开然后播放对应的mp3⽂件。刚开始写完的时候很哈⽪,可以弹奏了,从⽹上找了⼀些曲谱,弹的很开⼼,后来发现⼀个问题:弹了⼀段时间后,再按键就没有声⾳了,⼏经周折,找到了问题的解决办法,在线程函数中,播放mp3后,Sleep⼀段时间,然后Close它。因为每个key⾳都是3秒,所以Sleep时间就定为3000。下⾯是代码:#include #include #include #include #pragma comment ( lib, "" )/** 隐藏控制台光标*/void HideTheCursor(){CONSOLE_CURSOR_INFO cciCursor;HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {le = FALSE;SetConsoleCursorInfo(hStdOut, &cciCursor);}}/** 播放线程*/unsigned _stdcall thread_play(LPVOID lpParam){char sz_command[126] = {0};char sz_cur_play[32] = {0};/*打开mp3⽂件*/sprintf(sz_command, "open "key%3" alias key_%c", (WORD)lpParam, (WORD)lpParam);mciSendString(sz_command, 0, 0, 0 );sprintf(sz_cur_play, "key_%c", (WORD)lpParam);/*播放*/sprintf(sz_command, "play %s", sz_cur_play);mciSendString(sz_command, 0, 0, 0 );/*3秒后关闭*/Sleep(3000);sprintf(sz_command, "close %s", sz_cur_play);mciSendString(sz_command, 0, 0, 0);return 0;}main(){/*标准输⼊句柄*/HWND h_console_in;/*输⼊记录*/INPUT_RECORD input_rec;DWORD res;/*线程句柄*/HANDLE h_thread_play = INVALID_HANDLE_VALUE;unsigned id_thread_play;printf("欢迎来到键盘钢琴!!nn");HideTheCursor();/*获取标准输⼊句柄,并设置为接受输⼊*/h_console_in = GetStdHandle(STD_INPUT_HANDLE);SetConsoleMode(h_console_in, ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT);while (1){/*读取⼀个输⼊*/ReadConsoleInput(h_console_in, &input_rec, 1, &res);/*刷新输⼊缓冲区*/FlushConsoleInputBuffer(h_console_in);/*输⼊事件为按键输⼊,且按键按下时*/if (input_ype == KEY_EVENT && input_wn == TRUE){/*输⼊的是A-Z之间的按键*/if (input_alKeyCode >= 'A'&& input_alKeyCode <= 'Z'){/*将当前按键作为参数,开线程*/h_thread_play = (HANDLE)_beginthreadex(NULL, 0, &thread_play,(void *)input_alKeyCode, 0, &id_thread_play);}}}}

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687424751a9085.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信