As the title says, I am having trouble getting the black keys space evenly without hard coding it. If anyone could help it would be greatly apreciated.
Here is my code :
public class Piano extends World
{
private String[] whiteKeys =
{ "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "\\" };
private String[] whiteNotes =
{ "3c", "3d", "3e", "3f", "3g", "3a", "3b", "4c", "4d", "4e", "4f", "4g" };
private String [] blackKeys =
{ "w", "e", "", "t", "y", "u", "", "o", "p", "", "]" } ;
private String [] blackNotes =
{ "3c#", "3d#", "", "3f#", "3g#", "3a#", "", "4c#", "4d#", "", "4f#" };
/**
* Make the piano. This means mostly, apart from defining the size,
* making the keys and placing them into the world.
*/
public Piano()
{
super(800, 340, 1);
makeKeys();
createMessage();
}
/**
* Create the piano keys and place them in the world.
*/
private void makeKeys()
{
for(int i = 0; i < whiteKeys.length; i++) {
Key key = new Key(whiteKeys[i], whiteNotes[i]+".wav", "white-key.png", "white-key-down.png");
addObject(key, i *key.getImage().getWidth() + key.getImage().getWidth(), key.getImage().getHeight() / 2);
}
for(int i = 0; i < whiteKeys.length-1; i++) {
if( ! blackKeys[i].equals("") ) {
Key key = new Key(blackKeys[i], blackNotes[i]+".wav", "black-key.png", "black-key-down.png");
addObject(key, i *key.getImage().getWidth() + key.getImage().getWidth() * 2, key.getImage().getHeight() / 2);
}
}
}
public void createMessage()
{
GreenfootImage bg = getBackground();
bg.drawString("Use keys 'a' to ':' and keys 'q', 'e', 't', 'y', 'u', 'o', 'p', ] to play the piano", 225, 300);
}
}
