软件:VS2013-->win32应用程序

语言: C/C++

程序功能:   运行程序后自动播放一段示例音乐,开始自由演奏(用户再按下1~7数字键发出对应音符)

下载地址:https://download.csdn.net/download/cai_niaocainiao/10618216

规划,流程:(音乐文件和图片文件放在智能电子钢琴文件夹里)
    1.播放音乐                //音乐格式为mp3
        1.1 音乐文件
        1.2 打开音乐文件
        1.3 播放音乐文件
        1.4 关闭音乐文件
    2.按键控制音乐播放
        2.1 getch获取按键
        2.2 switch调用不同函数播不同音乐文件
    3.加上界面                 //图片格式为.bmp
        3.1 一开始做好界面
            贴图三部曲:定义变量 加载图片 贴图
        3.2 按下对应的按键就用灰色把对应的钢琴键覆盖
        3.3 等待一段时间后还原
    4.智能自动播放示例音乐
        4.1 程序模拟按键
            按键消息
            SendMessage

5.播放完示例音乐,后出现一张start图片停留2000ms后恢复钢琴界面

步骤:

1.创建win32应用程序(Visual c++ -->win32应用程序)

注:去掉安全开发生命周期(SDL)检查,否则一些功能将用不了


2.项目属性-->配置属性-->常规-->字符集-->使用多字节字符集

3.代码:

// 智能电子钢琴.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "windows.h"
#include "Mmsystem.h"
#include "conio.h"  //getch的头文件
#include <graphics.h> // 图形库的头文件,需要先安装好easyx//图片宽
#define WIDTH 100
//图片高
#define HEIGH 400
//定时器间隔时间
#define SPACE 50//贴图,定义变量
IMAGE bmp[7];
IMAGE down;
IMAGE start;
HWND G_hWnd;#pragma comment(lib,"Winmm.lib")void playMusic(char *m)       //m为传进来的音乐名
{int m_in;char buff[256] = { 0 };  //初始化为空sprintf(buff, "open sounds\\%s alias m", m);  //alias m别名,将m写入字符串里//对应位置贴灰色图片m_in = m[0] - '0'; //转换成Int型printf("n:%d\n", m_in);putimage((m_in - 1)*WIDTH, 0, &down);//1 播放音乐mciSendString(buff, NULL, NULL, NULL);//设置字节符为多字节字符集,解决不匹配问题。mciSendString("play m", NULL, NULL, NULL);Sleep(50); //延迟50ms//贴回对应图片putimage((m_in - 1)*WIDTH, 0, &bmp[m_in-1]);Sleep(200);mciSendString("close m", NULL, NULL, NULL);}//贴图的准备工作
void initDraw()
{char buff[256];//1制作窗口G_hWnd=initgraph(7 * WIDTH, HEIGH,SHOWCONSOLE);//加载图片loadimage(&down, "images\\down.bmp");loadimage(&start, "images\\start.bmp");for (int i = 0; i < 7; i++){memset(buff, 0, 256);//清空数组sprintf(buff, "images\\%d.bmp", i + 1);loadimage(&bmp[i], buff);}
}void drawbeginWindow()             //画开始界面
{for (int i = 0; i < 7; i++){putimage(i*WIDTH, 0, &bmp[i]);}
}int array[] = { 6, 0, 6, 0, 3, 0, 6, 0, 0, 0, 6, 0, 6, 0,
5, 0, 6, 0, 7, 0, 5, 0, 3, 0, 4, 0, 4, 0, 4, 0, 5, 0, 4, 0, 4, 0, 4, 0, 3, 0, 2, 0, 3, 0, 3, 0 };int len = sizeof(array) / sizeof(array[0]);//获取数组元素个数
int index = 0;//每隔固定时间做的事情
VOID timeProc(HWND G_hWnd, UINT uInt, UINT_PTR ptr,DWORD dWord)
{//防止数组越界if (index >= len){KillTimer(G_hWnd, 10086);  //结束自动播放putimage(0, 0, &start);       //贴start图片Sleep(2000);//贴回对应图片drawbeginWindow();}switch (array[index]){case 1:SendMessage(G_hWnd, WM_KEYDOWN, 49, NULL);break;case 2:SendMessage(G_hWnd, WM_KEYDOWN, 50, NULL);break;case 3:SendMessage(G_hWnd, WM_KEYDOWN, 51, NULL);break;case 4:SendMessage(G_hWnd, WM_KEYDOWN, 52, NULL);break;case 5:SendMessage(G_hWnd, WM_KEYDOWN, 53, NULL);break;case 6:SendMessage(G_hWnd, WM_KEYDOWN, 54, NULL);break;case 7:SendMessage(G_hWnd, WM_KEYDOWN, 55, NULL);break;}index++;}int _tmain(int argc, _TCHAR* argv[])
{initDraw();// 2 按键控制int ch;  //用来保存按键虚拟键值DWORD id;  //线程的身份证号//定时器 每隔固定时间就响一下SetTimer(G_hWnd, 10086, SPACE, (TIMERPROC)timeProc);       //10086是定时器的idwhile (1){drawbeginWindow();ch = getch();printf("%d\n", ch);switch (ch){case 49:   //创建线程CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)playMusic, "1.mp3", NULL, &id);break;case 50:  //创建线程CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)playMusic, "2.mp3", NULL, &id);break;case 51:   //创建线程CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)playMusic, "3.mp3", NULL, &id); break;case 52:   //创建线程CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)playMusic, "4.mp3", NULL, &id);break;case 53:   //创建线程CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)playMusic, "5.mp3", NULL, &id);break;case 54:  //创建线程CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)playMusic, "6.mp3", NULL, &id);break;case 55:  //创建线程CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)playMusic, "7.mp3", NULL, &id);break;}}while (1);return 0;
}

结果部分截图:

程序运行后:

播放完示例音乐,出现图片:

start图片停留2000ms后,即可自由演奏

VS2013写智能电子钢琴相关推荐

  1. 用c语言给心仪的女生写一个电子钢琴

    导火线 2020/3/26 周四的晚上,上完公选课的我跑去打了几局排位,还遇到对面开挂.我心里那个气啊,就差2颗星了,还让不让人玩了.直接举报! 完了之后.某某人给我发了一条微信,说某某人其实比较喜欢 ...

  2. c语言怎么表示字节集,用易语言写一个电子钢琴软件

    这只是一个窗口程序集,是整个软件的一部分,算是核心吧 易语言不同于C语言.java,易语言是全中文编写,说实话,我感觉中文编写还不如英文编写顺手.我感觉最简单的还是我当初自己学的Python语言. 下 ...

  3. “药药切克闹”系列-基于STM32触摸屏的超级无敌智能电子密码锁(仿手机键盘26键设计,密码支持英文大写+英文小写+数字)

    项目名称:"药药切克闹"系列-基于STM32触摸屏的超级无敌智能电子密码锁(密码支持英文大写+英文小写+数字) CSDN:YANG-03                      ...

  4. 电子邮箱怎么写?电子邮箱格式选择,电子邮件注册哪个好?

    申请TOM邮箱后,支持使用随心邮,在微信你理收发邮件.填写电子邮箱地址和密码即可登录了,不需要设置服务器参数,让我们来看看TOMVIP邮箱的注册吧! 电子邮箱怎么写?电子邮箱格式选择 电子邮箱名称当然 ...

  5. 【电路方案】基于8086多种花色流水灯设计/8086秒表计时系统/8086电子琴设计/8086多功能密码锁设计/8086电子秒表计时器时钟系统设计/8086电子计时器控制设计/8086智能电子称称重

    基于8086多种花色流水灯仿真设计-汇编教程和protues画图 关于8086多种花色的流水冻控制电路方案,下面包含了汇编程序和配套的流水灯电路图,大家可以参考一下此方案教程.1.汇编程 CODE S ...

  6. 嵌入式开发--电子钢琴项目(Linux+C开发)附上源码

    文章目录 电子钢琴项目 前言 一.环境搭建 二.开发板的使用与Linux文件IO 三.项目界面显示 四.触摸屏应用 五.收工躺平 电子钢琴项目 前言 复盘一下之前做的一个小项目,温习一下c语言和Lin ...

  7. 用Python制作简易播放器(电子钢琴) mac系统

    用Python制作简易播放器(电子钢琴) 开发环境:Python3.7 Mac OS 思路: 先根据需要设计GUI的样式,并思考需要定义什么功能 把功能写出来 把功能填入GUI之中 用曲子测试完整的程 ...

  8. 中兴智能视觉大数据公交车专用道移动智能电子警察系统功能、特点及优势详细介绍...

    中兴智能视觉大数据公交车专用道移动智能电子警察系统功能.特点及优势详细介绍 公交车专用道移动智能电子警察系统是专为交管部门查处社会车辆高峰期占用公交车道行驶行为的一款产品. 系统由前端抓拍设备和后端电 ...

  9. 教你弹奏电子钢琴【Flash版】

    就算你不懂音乐也能弹出动听的歌曲,这就是我下面给大家介绍的好东东--电子钢琴flash版,也是刚刚在有意思吧这一个网站上无意发现的,试试吧,很不错呢,可以自己模拟钢琴弹奏各种曲子.其实,这款Flash ...

最新文章

  1. Android 获取标题栏的高度
  2. 0pp0r11如何更改语言_更改电脑日期的方法
  3. Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi
  4. 为什么python是解释型面向对象的语言_python为什么是面向对象的
  5. Codeforces 500D. New Year Santa Network
  6. add_subplot()--matplotlib
  7. 在校开发的装柜辅助系统
  8. “十四五”融合地表水国控断面监测数据(约3641个点位,含水质等级、水温,pH,溶解氧,电导率,浊度,高猛酸盐指数,化学需氧量,五日生化需氧量,氨氮,总磷,总氮,铜,锌,氟化物,硒,砷,汞,镉,等)
  9. github用户followers分析
  10. 我的专业作文300字计算机,我喜爱的职业300字
  11. 视频搬运专业版-为搬运而生
  12. 科大讯飞语音无限制录音、识别功能的实现:Android studio(一)
  13. JAVA正则表达式,matcher.find()和 matcher.matches()的区别
  14. windows好用的cmd命令
  15. Xilinx_ISE14.7安装包网盘下载
  16. 【区块链技术与应用】(四)
  17. ArcGIS基础实验操作100例--实验49按分区划分栅格图层
  18. snap处理哨兵2数据时报错dataType out of range!
  19. 中本聪是个贪婪的矿工吗?
  20. 广州有哪些好点的软件外包公司或者软件开发公司呀?听说广州碧软还不错,还有其他靠谱的软件外包公司?

热门文章

  1. Lua 之 Lua Window 上的开发环境 SciTE 的安装,并运行第一个 Hello Lua
  2. 富士康的二手iPhone生意再度遭遇危机
  3. shell编程中文件安全性的保证
  4. 旭元数艺:科技创新引领文化潮流
  5. 支付宝应用授权获取会员信息
  6. python3 实现公众号自动发消息
  7. 小米手机MIUI系统MIX4屏下光电指纹解锁时闪屏解决步骤办法
  8. Java分布式全局ID(一)
  9. 机器学习之Matplotlib
  10. IT行业发展前景分析