Dhafiq Sagara adalah orang bodoh yang tidak bisa apa-apa, tapi dia selalu berusaha untuk terus menjadi yang lebih baik. Rasa keingin-tahuannya sangat tinggi, selalu berusaha dan terus berusaha, trial dan error adalah prinsip belajarnya.

1 Des 2010

J2ME - Membuat Background Papan Catur Dengan Animasi Bergerak

Pada postingan sebelumnya tentang membuat background papan catur J2ME hanya menampilkan bentuk papan catur tanpa animasi, kali ini mari kita buat papan catur tersebut bergerak arah ke kanan dan ke kiri. Animasi bergerak ini memanfaatkan fungsi Thread pada java.


Langsung aja ke source code ya gan... cekidot.





===== PapanCatur.java =====
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class PapanCatur extends MIDlet {

    public void startApp() {
        final papancatur pantur = new papancatur();
        pantur.start();
        pantur.addCommand(new Command("Exit", Command.EXIT, 0));
        pantur.setCommandListener(new CommandListener() {

            public void commandAction(Command c, Displayable d) {
                pantur.stop();
                notifyDestroyed();
            }
        });
        Display.getDisplay(this).setCurrent(pantur);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    class papancatur extends Canvas implements Runnable {

        private boolean mTrucking;
        private int mTheta = 0;
        private int mBorder = 10;
        private int mDelay = 1000;
        private int arahGerak = 0;

        public void start() {
            mTrucking = true;
            Thread t = new Thread(this);
            t.start();
        }

        public void stop() {
            mTrucking = false;
        }

        public void paint(Graphics g) {
            int width = getWidth();
            int height = getHeight()-61;
            g.setGrayScale(255);
            g.fillRect(0, 0, width-1, height-1);
            
            g.setColor(99, 154, 49); // set warna hijau pada papan
            for (int i = 0; i < width; i+=30) {
                for (int j = 330; j >= 30; j-=60) {
                    g.fillRect((i+j)-mTheta, i, 30, 30);
                }
            }
            for (int i = 0; i < width; i+=30) {
                for (int j = 30; j <= 330; j+=60) {
                    g.fillRect(i-mTheta, (i+j), 30, 30);
                }
            }

            g.setColor(99, 154, 49);
            for (int k = 0; k <= width; k++) {
                g.fillRect(-k, height-1, width, height);
            }
            g.setColor(255, 255, 255);
            g.drawString("dhafiq-san.blogspot.com", getWidth() / 2, getHeight() - 10, Graphics.BOTTOM | Graphics.HCENTER);
        }

        public void run() {
            while (mTrucking) {
                if(mTheta==0){ 
                    arahGerak=0;
                }else if(mTheta==90){
                    arahGerak=1;
                }
                if(arahGerak==0){
                    mTheta = (mTheta + 5);
                }else if(arahGerak==1){
                    mTheta = (mTheta - 5);
                }
                repaint();
                try {
                    Thread.sleep(mDelay);
                } catch (InterruptedException ie) {
                }
            }
        }
    }
}


Penjelasan pada source code berikut:
                if(mTheta==0){ 
                    arahGerak=0;
                }else if(mTheta==90){
                    arahGerak=1;
                }
                if(arahGerak==0){
                    mTheta = (mTheta + 5);
                }else if(arahGerak==1){
                    mTheta = (mTheta - 5);
                }

Penjelasan singkat:
  • Maka pada kondisi mTheta=0, maka arahGerak di set 0 yang mana pada kondisi arahGerak=0, maka pergerakan mTheta menjadi ditambahkan 5 sehingga g.fillRect((i+j)-mTheta, i, 30, 30); maka posisi koordinat x pada kotak akan di minus 5 sehingga pergerakannya ke arah kiri. 
  • Sedangkan pada mTheta=1, diset arahGerak=1, dan pada kondisi tersebut mTheta dikurangi 5 sehingga arahnya akan berlawanan yaitu ke arah kanan.
  • Adanya pengecekan kondisi mTheta, dapat membuat suatu papan catur bergerak bergantian ke kanan dan ke kiri.
  • Penghitungan mTheta ini akan berbalik arah setelah bergerak 18 kali, karena mTheta akan ditambahkan dan dikurangi dengan nilai 5, sehingga 18*5=90, lihat pada pengecekan mTheta==0 dan mTheta==90.

1 komentar:

  1. pace saya ada buat aplikasi sms.. cuma saya masih bingung cara simpannya ke rms.. mungkin ape bisa bantu ka.. email C1no13i@gmail.com

    BalasHapus