منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

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

اذهب الى الأسفل

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

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

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

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


الكود:


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
النقاط : 398
التقيم : 1
الدولة : سوريا
الجنس : ذكر

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

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


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