كود لعبة بيانو في جافا مي j2me

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

كود لعبة بيانو في جافا مي j2me

مُساهمة من طرف أيمن الإبراهيم في الثلاثاء فبراير 04, 2014 8:16 pm

اهلا وسهلا بكم في منتدى مصر التقني 
---------------------------------
كود لعبة بيانو في جافا مي j2me  




الرمز:


import javax.microedition.media.*;



import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;



public class PianoMIDlet

    extends MIDlet {

  public void startApp() {

    Displayable d = new PianoCanvas();

    

    d.addCommand(new Command("Exit", Command.EXIT, 0));

    d.setCommandListener(new CommandListener() {

      public void commandAction(Command c, Displayable s) {

        notifyDestroyed();

      }

    });

    

    Display.getDisplay(this).setCurrent(d);

  }

  

  public void pauseApp() {}



  public void destroyApp(boolean unconditional) {}

}



class PianoCanvas extends Canvas {

  private static final int[] kNoteX = {

     0, 11, 16, 29, 32, 48, 59, 64, 76, 80, 93, 96

  };

  

  private static final int[] kNoteWidth = {

    16,  8, 16,  8, 16, 16,  8, 16,  8, 16,  8, 16

  };

  

  private static final int[] kNoteHeight = {

    96, 64, 96, 64, 96, 96, 64, 96, 64, 96, 64, 96

  };

  

  private static final boolean[] kBlack = {

    false, true, false, true, false,

        false, true, false, true, false, true, false

  };

  

  private int mMiddleCX, mMiddleCY;

  

  private int mCurrentNote;

  

  public PianoCanvas() {

    int w = getWidth();

    int h = getHeight();

    

    int fullWidth = kNoteWidth[0] * 8;

    mMiddleCX = (w - fullWidth) / 2;

    mMiddleCY = (h - kNoteHeight[0]) / 2;

    

    mCurrentNote = 60;

  }

  

  public void paint(Graphics g) {

    int w = getWidth();

    int h = getHeight();

    

    g.setColor(0xffffff);

    g.fillRect(0, 0, w, h);

    g.setColor(0x000000);

    

    for (int i = 60; i <= 72; i++)

      drawNote(g, i);

    

    drawSelection(g, mCurrentNote);

  }

  

  private void drawNote(Graphics g, int note) {

    int n = note % 12;

    int octaveOffset = ((note - n) / 12 - 5) * 7 * kNoteWidth[0];

    int x = mMiddleCX + octaveOffset + kNoteX[n];

    int y = mMiddleCY;

    int w = kNoteWidth[n];

    int h = kNoteHeight[n];

    

    if (isBlack(n))

      g.fillRect(x, y, w, h);

    else

      g.drawRect(x, y, w, h);

  }

  

  private void drawSelection(Graphics g, int note) {

    int n = note % 12;

    int octaveOffset = ((note - n) / 12 - 5) * 7 * kNoteWidth[0];

    int x = mMiddleCX + octaveOffset + kNoteX[n];

    int y = mMiddleCY;

    int w = kNoteWidth[n];

    int h = kNoteHeight[n];

    

    int sw = 6;

    int sx = x + (w - sw) / 2;

    int sy = y + h - 8;

    g.setColor(0xffffff);

    g.fillRect(sx, sy, sw, sw);

    g.setColor(0x000000);

    g.drawRect(sx, sy, sw, sw);

    g.drawLine(sx, sy, sx + sw, sy + sw);

    g.drawLine(sx, sy + sw, sx + sw, sy);

  }

  

  private boolean isBlack(int note) {

    return kBlack[note];

  }

  

  public void keyPressed(int keyCode) {

    int action = getGameAction(keyCode);

    switch (action) {

      case LEFT:

        mCurrentNote--;

        if (mCurrentNote < 60)

          mCurrentNote = 60;

        repaint();

        break;

      case RIGHT:

        mCurrentNote++;

        if (mCurrentNote > 72)

          mCurrentNote = 72;

        repaint();

        break;

      case FIRE:

        try { Manager.playTone(mCurrentNote, 1000, 100); }

        catch (MediaException me) {}

        break;

      default:

        break;

    }

  }

}




lمع تمنياتي لجميع بالعزف الرائع وتميز  Very Happy  Very Happy  Very Happy  Very Happy  Very Happy

أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى