⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 piano.java

📁 模拟钢琴小游戏,java编的
💻 JAVA
字号:
import java.applet.*;import java.awt.*;import java.awt.event.*;public class Piano extends Applet implements MouseListener,KeyListener,MouseMotionListener{    Image m_ImgUp;//键盘、鼠标松开时显示的键盘图片    Image m_ImgDown;//键盘、鼠标按下时显色。示的键盘图片    AudioClip[] m_AudioClip=new AudioClip[14];    int[] m_nState=new int[14];    int m_nOldDownCount=-1;    final int IMG_WIDTH=17;    final int IMG_HEIGHT=85;    final int STATE_UP=0;    final int STATE_DOWN=1;    public void init()    {        for(int i=0;i<14;i++)        {            m_nState[i]=0;        }//        m_nState[2]=1;        m_ImgUp=getImage(getDocumentBase(),"img/up.gif");        m_ImgDown=getImage(getDocumentBase(),"img/down.gif");        MediaTracker mediaTracker=new MediaTracker(this);        mediaTracker.addImage(m_ImgUp,0);        mediaTracker.addImage(m_ImgDown,1);        try        {            mediaTracker.waitForID(0);        }        catch(Exception e)        {            System.out.println("m_ImgUp is not loaded right");        }        try        {            mediaTracker.waitForID(1);        }        catch(Exception e)        {            System.out.println("m_ImgDown is not loaded right");        }        for(int i=0;i<14;i++)        {            String sUrl=new String("au/"+i+".au");            m_AudioClip[i]=getAudioClip(getCodeBase(),sUrl);        }        addKeyListener(this);        addMouseListener(this);        addMouseMotionListener(this);    }    public void paint(Graphics g)    {        for(int i=0;i<14;i++)        {            switch(m_nState[i])            {                case STATE_UP:                    g.drawImage(m_ImgUp,i*IMG_WIDTH,0,this);//                    System.out.println("0");                    break;                case STATE_DOWN:                    g.drawImage(m_ImgDown,i*IMG_WIDTH,0,this);//                    System.out.println("1");                    break;            }        }    }    public static void main(String[] args)    {        Frame frame=new Frame();        Piano piano=new Piano();        frame.add(piano);        Dimension dimension=new Dimension(40,200);        frame.setSize(dimension);        frame.addWindowListener(new WindowAdapter()        {            public void windowClosing(WindowEvent e)            {                       System.exit(0);            }    	});        frame.setVisible(true);        frame.repaint() ;    }    void showSound(int nCount)    {        m_AudioClip[nCount].play();    }/** * 实现MouseListener里的方法 */    public void mouseClicked(MouseEvent e)    {    //Invoked when the mouse has been clicked on a component.            int nMouseCount=e.getClickCount();//            System.out.println("你触发了"+nMouseCount+"击事件");    }    public void mouseEntered(MouseEvent e)    {    //Invoked when the mouse enters a component.    }    public void mouseExited(MouseEvent e)    {    //Invoked when the mouse exits a component.        if(m_nOldDownCount!=-1)m_nState[m_nOldDownCount]=STATE_UP;        m_nOldDownCount=-1;    }    public void mousePressed(MouseEvent e)    {    //Invoked when a mouse button has been pressed on a component.//        System.out.println("你的鼠标已被按下");        int nX=e.getX();        int nY=e.getY();//        System.out.println("你的鼠标时在坐标:"+nX+","+nY+"处按下");//        System.out.println(nX);        int nCount=nX/IMG_WIDTH;        m_nState[nCount]=STATE_DOWN;        showSound(nCount);        m_nOldDownCount=nCount;        Graphics g=getGraphics();//        g.fillRect(nCount*IMG_WIDTH,0,IMG_WIDTH,IMG_HEIGHT);        g.drawImage(m_ImgDown,nCount*IMG_WIDTH,0,this);//        repaint();    }    public void mouseReleased(MouseEvent e)    {    //Invoked when a mouse button has been released on a component.//        System.out.println("你的鼠标已被松开");        int nX=e.getX();        int nY=e.getY();//        System.out.println("你的鼠标时在坐标:"+nX+","+nY+"处松开");        int nCount=nX/IMG_WIDTH;        m_nState[nCount]=STATE_UP;        m_nOldDownCount=-1;        Graphics g=getGraphics();        g.drawImage(m_ImgUp,nCount*IMG_WIDTH,0,this);//        repaint();    }/** * 实现KeyListener里的方法 */    public void keyPressed(KeyEvent e)    {//        System.out.println("你的键盘已经按下");        int nKeyCode=e.getKeyCode();//        System.out.println("现在按下的键值是"+nKeyCode);        String sKeyName=e.getKeyText(nKeyCode);//        System.out.println("现在按下的键名是"+sKeyName);//        System.out.println("KeyEvent的VK_8常量是"+KeyEvent.VK_8);        boolean bControlDown=e.isControlDown();//	    if(bControlDown)System.out.println("Ctrl键按下");//	    else System.out.println("Ctrl键没有被按下");        int nCount=-1;        switch(nKeyCode)        {            case KeyEvent.VK_1:                nCount=0;                break;            case KeyEvent.VK_2:                nCount=1;                break;            case KeyEvent.VK_3:                nCount=2;                break;            case KeyEvent.VK_4:                nCount=3;                break;            case KeyEvent.VK_5:                nCount=4;                break;            case KeyEvent.VK_6:                nCount=5;                break;            case KeyEvent.VK_7:                nCount=6;                break;            default:                return;        }        if(bControlDown)nCount=nCount+7;        setPianoKeyDown(nCount);        showSound(nCount);        Graphics g=getGraphics();        g.drawImage(m_ImgDown,nCount*IMG_WIDTH,0,this);//        repaint();    //Invoked when a key has been pressed.    }    public void keyReleased(KeyEvent e)    {    //Invoked when a key has been released.//        System.out.println("你的键盘已经松开");        int nKeyCode=e.getKeyCode();//        System.out.println("现在松开的键值是"+nKeyCode);        String sKeyName=e.getKeyText(nKeyCode);//        System.out.println("现在松开的键名是"+sKeyName);//        System.out.println("KeyEvent的VK_8常量是"+KeyEvent.VK_8);        boolean bControlDown=e.isControlDown();        int nCount=-1;        switch(nKeyCode)        {            case KeyEvent.VK_1:                nCount=0;                break;            case KeyEvent.VK_2:                nCount=1;                break;            case KeyEvent.VK_3:                nCount=2;                break;            case KeyEvent.VK_4:                nCount=3;                break;            case KeyEvent.VK_5:                nCount=4;                break;            case KeyEvent.VK_6:                nCount=5;                break;            case KeyEvent.VK_7:                nCount=6;                break;            default:                return;        }        if(bControlDown)nCount=nCount+7;        m_nState[nCount]=STATE_UP;        Graphics g=getGraphics();        g.drawImage(m_ImgUp,nCount*IMG_WIDTH,0,this);//        repaint();    }    public void keyTyped(KeyEvent e)    {    //Invoked when a key has been typed.    }    void setPianoKeyDown(int nCount)    {        for(int i=0;i<14;i++)        {            m_nState[i]=STATE_UP;        }        m_nState[nCount]=STATE_DOWN;    }    void setAllPianoKeyUp()    {        for(int i=0;i<14;i++)        {            m_nState[i]=STATE_UP;        }    }    /**     * 实现MouseMotionListener里的方法     */    public void mouseDragged(MouseEvent e)    {    //Invoked when a mouse button is pressed on a component and then dragged.        int nX=e.getX();        int nY=e.getY();        System.out.println("鼠标拖动到:x="+nX+"   y="+nY);        int m_nTempCount=nX/IMG_WIDTH;        if(m_nTempCount==m_nOldDownCount)return;        m_nState[m_nTempCount]=STATE_DOWN;        m_nState[m_nOldDownCount]=STATE_UP;        showSound(m_nTempCount);        Graphics g=getGraphics();        g.drawImage(m_ImgDown,m_nTempCount*IMG_WIDTH,0,this);        g.drawImage(m_ImgUp,m_nOldDownCount*IMG_WIDTH,0,this);        m_nOldDownCount=m_nTempCount;    }    public void mouseMoved(MouseEvent e)    {    //Invoked when the mouse button has been moved on a component (with no buttons no down)        int nX=e.getX();        int nY=e.getY();        System.out.println("鼠标移动到:x="+nX+"   y="+nY);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -