Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.applet.AudioClip;
- import java.awt.Color;
- import java.awt.event.KeyEvent;
- import acm.graphics.GRect;
- import acm.program.GraphicsProgram;
- import acm.util.MediaTools;
- public class Piano extends GraphicsProgram {
- //defines size of window:
- public static final int APPLICATION_WIDTH = 1000;
- public static final int APPLICATION_HEIGHT = 500;
- //defines dimensions of keys:
- public static final int KEY_WIDTH = 100;
- public static final int KEY_HEIGHT = 200;
- //defines the distance of the keys form the bottom:
- public static final int KEY_Y_OFFSET = 255;
- public static final int BLACK_KEY_Y_OFFSET = 45;
- //offset form the side:
- public static final int KEY_X_OFFSET = 45;
- public static final int BLACK_KEY_X_OFFSET = 100;
- //defines the space between the keys:
- public static final int KEY_SEP_Y = 10;
- //defines the space sideways between keys:
- public static final int KEY_SEP_X = 15;
- AudioClip lowC = MediaTools.loadAudioClip("Low C.wav");
- AudioClip cSharp = MediaTools.loadAudioClip("cSharp.wav");
- AudioClip d = MediaTools.loadAudioClip("D.wav");
- AudioClip dSharp = MediaTools.loadAudioClip("dSharp.wav");
- AudioClip e = MediaTools.loadAudioClip("E.wav");
- AudioClip f = MediaTools.loadAudioClip("F.wav");
- AudioClip fSharp = MediaTools.loadAudioClip("fSharp.wav");
- AudioClip g = MediaTools.loadAudioClip("G.wav");
- AudioClip gSharp = MediaTools.loadAudioClip("gSharp.wav");
- AudioClip a = MediaTools.loadAudioClip("A.wav");
- AudioClip aSharp = MediaTools.loadAudioClip("aSharp.wav");
- AudioClip b = MediaTools.loadAudioClip("B.wav");
- AudioClip highC = MediaTools.loadAudioClip("High C.wav");
- public static void main(String[] args) {
- new Piano().start(args);
- }
- public void run() {
- getGCanvas().setBackground(Color.BLACK);
- setUpWhiteKeys();
- setUpBlackKeys();
- addKeyListeners();
- }
- //this sets up the white keys on the keyboard
- public void setUpWhiteKeys() {
- for(int i = 0; i < 8; i++) {
- Color color = getColorForWhiteKey(i);
- addWhiteKey(KEY_X_OFFSET + i*(KEY_WIDTH + KEY_SEP_X),KEY_Y_OFFSET, color);
- }
- }
- //this assigns color to the white keys on the keyboard
- private Color getColorForWhiteKey(int keyIndex) {
- Color color;
- switch(keyIndex) {
- case 0: color = Color.blue; break;
- case 1: color = Color.green; break;
- case 2: color = Color.RED; break;
- case 3: color = Color.YELLOW; break;
- case 4: color = Color.ORANGE; break;
- case 5: color = Color.MAGENTA; break;
- case 6: color = Color.pink; break;
- case 7: color = Color.blue; break;
- default: color = Color.black; break;
- }
- return color;
- }
- //this creates specs for the white keys
- public void addWhiteKey(int whiteKeyX, int whiteRowY, Color color) {
- GRect key = new GRect (whiteKeyX, whiteRowY, KEY_WIDTH, KEY_HEIGHT);
- key.setFilled(true);
- key.setColor(color);
- key.setFillColor(color);
- add(key);
- }
- //creates the black keys
- public void setUpBlackKeys() {
- for(int i = 0; i < 6; i++) {
- Color color = getColorForBlackKey(i);
- addBlackKey(BLACK_KEY_X_OFFSET + i*(KEY_WIDTH + KEY_SEP_X), BLACK_KEY_Y_OFFSET, color);
- }
- }
- //colors black keys
- private Color getColorForBlackKey(int keyIndex) {
- Color color;
- switch(keyIndex) {
- case 0: color = Color.MAGENTA; break;
- case 1: color = Color.ORANGE; break;
- case 2: color = Color.black; break;
- case 3: color = Color.red; break;
- case 4: color = Color.YELLOW; break;
- case 5: color = Color.green; break;
- case 6: color = Color.blue; break;
- default: color = Color.black; break;
- }
- return color;
- }
- //specs for black keys
- public void addBlackKey(int blackKeyX, int blackRowY, Color color) {
- GRect blackKey = new GRect (blackKeyX, blackRowY, KEY_WIDTH, KEY_HEIGHT);
- blackKey.setFilled(true);
- blackKey.setColor(color);
- blackKey.setFillColor(color);
- add(blackKey);
- }
- public void keyPressed(KeyEvent p) {
- int key = p.getKeyCode();
- if(key == KeyEvent.VK_A) {
- lowC.play();
- getElementAt(45,255).setLocation(45,265);
- }
- if(key == KeyEvent.VK_W) {
- cSharp.play();
- getElementAt(100,45).setLocation(100,55);
- }
- if(key == KeyEvent.VK_S) {
- d.play();
- getElementAt(160,255).setLocation(160,265);
- }
- if(key == KeyEvent.VK_E) {
- dSharp.play();
- getElementAt(215,45).setLocation(215,55);
- }
- if(key == KeyEvent.VK_D) {
- e.play();
- getElementAt(275,255).setLocation(275,265);
- }
- if(key == KeyEvent.VK_F) {
- f.play();
- getElementAt(390,255).setLocation(390,265);
- }
- if(key == KeyEvent.VK_T) {
- fSharp.play();
- getElementAt(445,45).setLocation(445,55);
- }
- if(key == KeyEvent.VK_G) {
- gSharp.play();
- getElementAt(505,255).setLocation(505,265);
- }
- if(key == KeyEvent.VK_Y) {
- g.play();
- getElementAt(560,45).setLocation(560,55);
- }
- if(key == KeyEvent.VK_H) {
- a.play();
- getElementAt(620,255).setLocation(620,265);
- }
- if(key == KeyEvent.VK_U) {
- aSharp.play();
- getElementAt(675,45).setLocation(675,55);
- }
- if(key == KeyEvent.VK_J) {
- b.play();
- getElementAt(735,255).setLocation(735,265);
- }
- if(key == KeyEvent.VK_K) {
- highC.play();
- getElementAt(850,255).setLocation(850,265);
- }
- }
- public void keyReleased(KeyEvent p) {
- int key = p.getKeyCode();
- if(key == KeyEvent.VK_A) {
- getElementAt(45,265).setLocation(45,255);
- }
- if(key == KeyEvent.VK_W) {
- getElementAt(100,55).setLocation(100,45);
- }
- if(key == KeyEvent.VK_S) {
- getElementAt(160,265).setLocation(160,255);
- }
- if(key == KeyEvent.VK_E) {
- getElementAt(215,55).setLocation(215,45);
- }
- if(key == KeyEvent.VK_D) {
- getElementAt(275,265).setLocation(275,255);
- }
- if(key == KeyEvent.VK_F) {
- getElementAt(390,265).setLocation(390,255);
- }
- if(key == KeyEvent.VK_T) {
- getElementAt(445,55).setLocation(445,45);
- }
- if(key == KeyEvent.VK_G) {
- getElementAt(505,265).setLocation(505,255);
- }
- if(key == KeyEvent.VK_Y) {
- getElementAt(560,55).setLocation(560,45);
- }
- if(key == KeyEvent.VK_H) {
- getElementAt(620,265).setLocation(620,255);
- }
- if(key == KeyEvent.VK_U) {
- getElementAt(675,55).setLocation(675,45);
- }
- if(key == KeyEvent.VK_J) {
- getElementAt(735,265).setLocation(735,255);
- }
- if(key == KeyEvent.VK_K) {
- getElementAt(850,265).setLocation(850,255);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement