我们是基于java开发,所以大家请注意自己是否有java的环境配置
我们需要认识几个关于robot的方法
Robot robot = new Robot(); //首先new一个Robot类,方便后续讲解 robot.keyPress(KeyEvent.VK_A); //这个函数表示按下键盘的A键 robot.keyRelease(KeyEvent.VK_A); //这个函数表示抬起键盘的A键 robot.delay(3000);//这个函数表示延迟多少毫秒 , 类似于Tread.sleep();
然后我们来了解一下一个好玩的网站
自由钢琴 - AutoPiano | 在线钢琴,键盘钢琴,模拟钢琴,多种乐器选择,好听又好玩
链接放这了↑
我们需要去键位中,选择第二种模式,如箭头所示;主要是这个键位比较方便编程; 既然通过键盘就可以完成钢琴演奏了,那我们是不是可以通过robot来控制完成演奏呢?(虽然机器人莫得感情) 那我们下面就一起来尝试一下。
代码:
public static void main(String[] args) throws AWTException {
Robot robot = new Robot();
//小星星
//String s = new String("1155665-4433221-5544332-5544332-1155665-4433221-");
//菊花台
//String s = new String("3323-35323-112353-2212-");
//送别
String s = new String("538-685-51322-5387685-52411--");
char[] c = s.toCharArray();
robot.delay(3000);
int delayOfOne = 800;
for(int i = 0 ; i < c.length ; i++){
char get = c[i];
switch (get){
case '1' :
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
robot.delay(delayOfOne);
break;
case '2' :
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_S);
robot.delay(delayOfOne);
break;
case '3' :
robot.keyPress(KeyEvent.VK_D);
robot.keyRelease(KeyEvent.VK_D);
robot.delay(delayOfOne);
break;
case '4' :
robot.keyPress(KeyEvent.VK_F);
robot.keyRelease(KeyEvent.VK_F);
robot.delay(delayOfOne);
break;
case '5' :
robot.keyPress(KeyEvent.VK_G);
robot.keyRelease(KeyEvent.VK_G);
robot.delay(delayOfOne);
break;
case '6' :
robot.keyPress(KeyEvent.VK_H);
robot.keyRelease(KeyEvent.VK_H);
robot.delay(delayOfOne);
break;
case '7' :
robot.keyPress(KeyEvent.VK_J);
robot.keyRelease(KeyEvent.VK_J);
robot.delay(delayOfOne);
break;
case '8' : //注意这里的8是升1
robot.keyPress(KeyEvent.VK_Q);
robot.keyRelease(KeyEvent.VK_Q);
robot.delay(delayOfOne);
break;
case '-' :
robot.delay(delayOfOne);
break;
}
}
}
思路很简单,去找一个简谱,把音给抄下来,我们只需要控制按键,就可以完成钢琴演奏。注意我这里的延迟时间是已经都写死了,所以听起来会有点怪,大家如果想尝试二分之一音符或者其他高难度的玩法,可以自己尝试,多写几个case总能搞定的(doge)。
注意:代码开始按键控制的延迟我给了3秒,需要在3秒内将界面和光标切换到那个钢琴网站。
最后求个点赞,谢谢~~~~~~