Pembahasan hari ini merupakan jawaban kuis 5 nomor 1 dan 2. Kedua nomor tersebut sengaja digabung, bahkan diperluas sehingga posisi meriam dapat dengan leluasa dipindahkan sesuai dengan slider yang ada di bawah jScrollPane. Pada saat menjalankan program yang sudah jadi, coba geser slidernya dengan menggunakan mouse yang di tekan (tombol kirinya). Setelah itu coba mouse masuk kembali ke jScrollPane. Amati apa yang terjadi.
Supaya user tidak bingung menentukan bagian depan atau belakang dari meriam, maka sengaja pada bagian depan diletakkan peluru yang diam relatif terhadap bagian depan meriam tersebut.
Program lengkap dapat di download melalui link ini. Namun demikian, bagian terpenting dari program tersebut juga disajikan di sini.
Berikut ini adalah class Meriam:
package noFrame;
import javax.swing.*;
import java.awt.*;
public class Meriam extends JPanel{
private int xPorosMeriam, yPorosMeriam, xMouse, yMouse;
private int[] xUjungMeriam, yUjungMeriam;
public Meriam(int xPorosMeriam, int yPorosMeriam,
int xMouse, int yMouse){
this.xPorosMeriam = xPorosMeriam;
this.yPorosMeriam = yPorosMeriam;
this.xMouse = xMouse;
this.yMouse = yMouse;
}
public void paintComponent(Graphics g){
xUjungMeriam = new int[4];
yUjungMeriam = new int[4];
double rusuk = Math.min(getWidth(), getHeight()) * 0.1;
double theta = Math.atan2(yMouse-yPorosMeriam,
xMouse-xPorosMeriam);
//Meriam
Polygon p = new Polygon();
for(int index=0; index<4;>
xUjungMeriam[index] = (int)(xPorosMeriam +
rusuk * Math.cos(Math.PI*(1+2*index)/4 + theta));
yUjungMeriam[index] = (int)(yPorosMeriam +
rusuk * Math.sin(Math.PI*(1+2*index)/4 + theta));
p.addPoint(xUjungMeriam[index], yUjungMeriam[index]);
}
g.setColor(Color.yellow);
g.fillPolygon(p);
g.setColor(Color.magenta);
g.drawPolygon(p);
//Peluru Diam Di UjungMeriam (ikut berputar bersama meriam)
int xPeluruDiUjungMeriam = (int)(xPorosMeriam +rusuk*Math.cos(theta));
int yPeluruDiUjungMeriam = (int)(yPorosMeriam +rusuk*Math.sin(theta));
g.setColor(Color.pink);
g.fillOval((int)(xPeluruDiUjungMeriam-rusuk/2),
(int)(yPeluruDiUjungMeriam-rusuk/2),
(int)rusuk, (int)rusuk);
}
}
Class Meriam tersebut perlu dipanggil dari
private void jScrollPane1MouseMoved(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
int xMeriam = jSlider1.getValue()*jScrollPane1.getWidth()/100;
int yMeriam = jScrollPane1.getHeight()*3/4;
Meriam belina = new Meriam(xMeriam, yMeriam, evt.getX(), evt.getY());
jScrollPane1.add(belina);
jScrollPane1.setViewportView(belina);
repaint();
}
Ada komentar / pertanyaan ? Mantab to ????????? Apakah anda jadi penasaran ingin melanjutkan melepas peluru yang diam itu dengan meng-klik mouse ?? Kalau ya, bisakah anda melanjutkan pemrogramannya ??
Showing posts with label mouse. Show all posts
Showing posts with label mouse. Show all posts
Thursday, November 19, 2009
Wednesday, November 18, 2009
Kuis 5 untuk 19 November 2009
Kerjakan satu diantara dua soal berikut (sesuai dengan instruksi yang akan diberikan di ruang laboratorium komputer). Jika tidak selesai (sesuai soal berikut) dalam 60 menit, maka nilainya adalah 40.
- Buat program visual sederhana untuk menampilkan sebuah meriam berupa persegi panjang yang dapat berputar pada poros putaran di ujung kanan meriam. Meriam tersebut berada di kanan bawah jScrollPane (nilai sampai sini 70). Arah meriam disesuaikan dengan posisi mouse sehingga meriam selalu mengarah ke mouse. Gunakan mouseMoved yang dibuat melalui properties, untuk mengambil posisi dari mouse tersebut (nilai sampai sini 100).
- Serupa dengan soal 1, namun meriam berada di kiri bawah.
Labels:
jscrollpane,
meriam,
mouse,
move
Thursday, November 5, 2009
Jawaban Kuis 4 nomor 2
Silahkan pelajari jawaban kuis 4 nomor 2 agar anda bisa menjawab kuis 4 nomor 1. Silahkan di download , di unzip lalu di buka projeknya dan di run. Kalau tidak bisa menjalankan projeknya melalui netbeans, paling tidak pelajari listing programnya. Prosedur pembuatannya memang panjang. Tapi intinya adalah beberapa gambar perlu di implementasikan lebih dari sekali. Misalnya untuk menggambar target: target perlu ada sebelum ada moncong meriam yang timbul karena gerakan mouse di dalam jSrollPane. Ada pertanyaan ? Siapa yang sudah berhasil mengerjakan kuis 4 soal 1 ?
Labels:
java,
jscrollpane,
kuis,
mouse
Wednesday, October 28, 2009
Kuis 3 untuk 29 Oktober 2009
Berikut ini adalah soal kuis hari kamis 29 oktober 2009. Kerjakan satu diantara empat soal berikut (sesuai dengan instruksi yang akan diberikan di ruang laboratorium komputer). Jika tidak selesai (sesuai soal berikut) dalam 60 menit, maka nilainya adalah 40.
- Buat program visual sederhana dengan untuk menampilkan sebuah elips (lonjongan) yang bergerak dalam JScrollPane dari kanan ke kiri setelah mouse di pressed (nilai sampai sini 60). Elips baru dengan ukuran dan warna yang sama akan muncul dari kanan ketika persegi panjang lama menghilang di kiri (nilai sampai sini 90).
- Buat program visual sederhana dengan untuk menampilkan sebuah persegi panjang yang berdiri dan bergerak dalam JScrollPane dari kanan ke kiri setelah mouse di pressed (nilai sampai sini 60). Persegi panjang baru dengan ukuran dan warna yang sama akan muncul dari kanan ketika persegi panjang lama sudah mencapai sepersepuluh lebar JScrollPane (nilai sampai sini 90).
- Seperti nomor 1, tapi selalu muncul elips baru dari kanan, ketika elis lama menghilang di kiri (nilai sampai sini 100).
- Seperti nomor 2, tapi selalu muncul persegi panjang baru dari kanan ketika persegi panjang yang terakhir muncul sudah mencapai sepersepuluh lebar JScrollPane. Proses ini terus berlangsung walaupun sudah ada persegi panjang lama yang sudah keluar. Yang terlihat adalah seperti pagar yang berjalan dari kanan kekiri (nilai sampai sini 100).
Labels:
elips,
java,
jscrollpane,
kuis,
mouse,
pagar,
persegi-panjang
Subscribe to:
Posts (Atom)