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

导火线

2020/3/26 周四的晚上,上完公选课的我跑去打了几局排位,还遇到对面开挂。我心里那个气啊,就差2颗星了,还让不让人玩了。直接举报!
在这里插入图片描述

完了之后。某某人给我发了一条微信,说某某人其实比较喜欢音乐,有时会弹钢琴。

我一脸黑人问号,我的音乐基础那么菜,怎么可能会弹钢琴。。。
在这里插入图片描述
除了平时爱吃炸鸡,爱码些扣脚代码看黑白屏外一无所有。索性还是写一个电子钢琴给她好了。排位掉分的失落感被肾上腺素的爆发所替代,沙雕本质被激活。有了代码还要什么自行车啊?日常肝!
效果图如下:
在这里插入图片描述

结尾

调试完后直接发送过去,等待结果。然后就这样了。
在这里插入图片描述
在这里插入图片描述
是的,就不该心存幻想。乖乖继续码代码多练练吧。单身大义深入人心。(若是脱了我还不至于在这个时间点还没睡,想着发博文。。。)

最后

代码放在问尾,有兴趣的可以试试,有更多功能一起商讨的可以在讨论区提议或者私聊我。当然可以添加一个可以捕捉到按键然后打印在屏幕上的功能,但我没加上去,大佬们可以考虑下。

#include<cstdio>
#include<windows.h>
#include <graphics.h>
#include <stdio.h>
#include<iostream>
#include<conio.h>
int a=523,ab=554,b=578,bc=622,c=659,d=698,de=740,e=784,ef=831,f=880,fg=932,g=988;
int m=200;
void color(int a)
{ 
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);//调用系统颜色,制成一个函数
}
//-------------------------------主函数----------------------------
int main()
{
int i,j,stepx=40,stepy=250;
initgraph(1200, 500); // 初始化图形窗口
SetConsoleTitle("电子琴");
circle(10, 10, 3); // 画圆,圆心(10, 10),半径 
//白色矩形
settextstyle(30,0,"楷体");outtextxy(14, 10, "键盘电子钢琴");//
circle(10, 50, 3); // 画圆,圆心(10, 10),半径 
settextstyle(20,0,"楷体");outtextxy(14, 50, "使用键盘主区与计算器区进行演奏,按o、p键可以调节音调");
//-------------------------------钢琴黑白键----------------------------
//白键
setcolor(15);
for(i=0;i<28;i++){
 fillrectangle(stepx+i*40,stepy,stepx+40+i*40,stepy+210);//矩形的绘制
 bar(stepx+i*40+2,stepy+2,stepx+i*40+40-2,stepy+210-2);}
//黑键
setfillcolor(BLACK);
for(i=0;i<27;i++){
       rectangle(stepx+i*40+30,stepy,stepx+i*40+50,stepy+100);
       bar(stepx+i*40+30+2,stepy+2,stepx+i*40+50-2,stepy+100-2);
    }

第2版块

//-------------------------------调用电脑蜂鸣器发声----------------------------
char p;
    while(i<100)
    {
        p = getch();
        switch(p)
        {
        case '1':
            Beep(a,250);m=0;//Beep(音调,间隔时间单位是毫秒)
            break;
        case '2':
            Beep(b,250);m=1;
            break;
        case '3':
            Beep(c,250);m=2;
            break;
        case '4':
            Beep(d,250);m=3;
            break;
        case '5':
            Beep(e,250);m=4;
            break;
        case '6':
            Beep(f,250);m=5;
            break;
        case '7':
            Beep(g,250);m=6;
            break;
  case 'a':
            Beep(a,250);m=1;
            break;
        case 's':
            Beep(b,250);m=2;
            break;
        case 'd':
            Beep(c,250);m=3;
            break;
        case 'f':
            Beep(d,250);m=4;
            break;
        case 'g':
            Beep(e,250);m=5;
            break;
        case 'h':
            Beep(f,250);m=6;
            break;
        case 'j':
            Beep(g,250);m=7;
            break;
  case 'z':
            Beep(2*a,250);m=8;
            break;
        case 'x':
            Beep(2*b,250);m=9;
            break;
        case 'c':
            Beep(2*c,250);m=10;
            break;
        case 'v':
            Beep(2*d,250);m=11;
            break;
        case 'b':
            Beep(2*e,250);m=12;
            break;
        case 'n':
            Beep(2*f,250);m=13;
            break;
        case 'm':
            Beep(2*g,250);m=14;
            break;
  case 'q':
            Beep(4*a,250);m=15;
            break;
        case 'w':
            Beep(4*b,250);m=16;
            break;
        case 'e':
            Beep(4*c,250);m=17;
            break;
        case 'r':
            Beep(4*d,250);m=18;
            break;
        case 't':
            Beep(4*e,250);m=19;
            break;
        case 'y':
            Beep(4*f,250);m=20;
            break;
        case 'u':
            Beep(4*g,250);m=21;
            break;
        case 'o':
         a*=2;ab*=2;b*=2;bc*=2;c*=2;d*=2;de*=2;e*=2;ef*=2;f*=2;fg*=2;g*=2;
         break;
        case 'p':
         a/=2;ab/=2;b/=2;bc/=2;c/=2;d/=2;de/=2;e/=2;ef/=2;f/=2;fg/=2;g/=2;
         break;
        case ' ':
         return 0;break;
        default:
            break;
        }

第三板块

//--------------------------钢琴键的闪烁-------------------------------------
if(m!=200){
setfillcolor(0x0000FF);fillrectangle(stepx+m*40,stepy,stepx+40+m*40,stepy+210);//第i块钢琴键变为红色
Sleep(1000); 
setfillcolor(0xFFFFFF);fillrectangle(stepx+m*40,stepy,stepx+40+m*40,stepy+210);//第i块钢琴键变为白色
setfillcolor(BLACK);
for(i=0;i<27;i++){//遍历重新打印黑键,覆盖掉表层
       rectangle(stepx+i*40+30,stepy,stepx+i*40+50,stepy+100);
       bar(stepx+i*40+30+2,stepy+2,stepx+i*40+50-2,stepy+100-2);
    }
}
    }
Sleep(100000000000); // 如果不设置延时的话,终端显示会一闪而过
//closegraph(); // 关闭图形界面 
}

结束语

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值