import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class AnimasiGrafik extends JFrame { final int LEBAR = 900, TINGGI = 650; double kecepatan = .5; final int UP = 0, RIGHT = 1, DOWN = 2, LEFT = 3; int arah = UP; //menentukan koordinat kotak area hijau sekeliling window Rectangle kiri = new Rectangle(0, 0, LEBAR / 9, TINGGI); Rectangle kanan = new Rectangle((LEBAR / 9) * 8, 0, LEBAR / 9, TINGGI); Rectangle atas = new Rectangle(0, 0, LEBAR, TINGGI / 9); Rectangle bawah = new Rectangle(0, (TINGGI / 9) * 8, LEBAR, TINGGI / 9); Rectangle tengah = new Rectangle((int) ((LEBAR / 9) * 2.5), (int) ((TINGGI / 9) * 2.5), (int) ((LEBAR / 9) * 5), (TINGGI / 9) * 4); //menentukan koordinat kotak penghalang Rectangle rintangan1 = new Rectangle(LEBAR / 2, (int) ((TINGGI / 9) * 7), LEBAR / 10, TINGGI / 9); Rectangle rintangan2 = new Rectangle(LEBAR / 3, (int) ((TINGGI / 9) * 5), LEBAR / 10, TINGGI / 4); Rectangle rintangan3 = new Rectangle(2 * (LEBAR / 3), (int) ((TINGGI / 9) * 5), LEBAR / 10, TINGGI / 4); Rectangle rintangan4 = new Rectangle(LEBAR / 3, TINGGI / 9, LEBAR / 30, TINGGI / 9); Rectangle rintangan5 = new Rectangle(LEBAR / 2, (int) ((TINGGI / 9) * 1.5), LEBAR / 30, TINGGI / 4); Rectangle finish = new Rectangle(LEBAR / 9, (TINGGI / 2) - TINGGI / 9, (int) ((LEBAR / 9) * 1.5), TINGGI / 70); Rectangle pemain1 = new Rectangle(LEBAR / 9, TINGGI / 2, LEBAR / 30, LEBAR / 30); public AnimasiGrafik() { super("Balap Mobil Kotak"); setSize(LEBAR, TINGGI); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); GerakPemain1 m1 = new GerakPemain1(); m1.start(); } public void paint(Graphics g) { super.paint(g); //gambar kotak latar g.setColor(Color.DARK_GRAY); g.fillRect(0, 0, LEBAR, TINGGI); //gambar garis g.setColor(Color.GREEN); Rectangle lineO = new Rectangle(LEBAR / 9, TINGGI / 2, (int) ((LEBAR / 9) * 1.5) / 2, TINGGI / 140); Rectangle lineI = new Rectangle(((LEBAR / 9) + ((int) ((LEBAR / 9) * 1.5) / 2)), (TINGGI / 2) + (TINGGI / 10), (int) ((LEBAR / 9) * 1.5) / 2, TINGGI / 140); g.fillRect(kiri.x, kiri.y, kiri.width, kiri.height); g.fillRect(kanan.x, kanan.y, kanan.width, kanan.height); g.fillRect(atas.x, atas.y, atas.width, atas.height); g.fillRect(bawah.x, bawah.y, bawah.width, bawah.height); g.fillRect(tengah.x, tengah.y, tengah.width, tengah.height); g.fillRect(rintangan1.x, rintangan1.y, rintangan1.width, rintangan1.height); g.fillRect(rintangan2.x, rintangan2.y, rintangan2.width, rintangan2.height); g.fillRect(rintangan3.x, rintangan3.y, rintangan3.width, rintangan3.height); g.fillRect(rintangan4.x, rintangan4.y, rintangan3.width, rintangan4.height); g.fillRect(rintangan5.x, rintangan5.y, rintangan5.width, rintangan5.height); //gambar garis start g.setColor(Color.WHITE); g.fillRect(lineO.x, lineO.y, lineO.width, lineO.height); g.fillRect(lineI.x, lineI.y, lineI.width, lineI.height); //gambar garis finish g.setColor(Color.YELLOW); g.fillRect(finish.x, finish.y, finish.width, finish.height); //gambar mobil g.setColor(Color.BLUE); g.fill3DRect(pemain1.x, pemain1.y, pemain1.width, pemain1.height, true); } private class GerakPemain1 extends Thread implements KeyListener { public void run() { addKeyListener(this); while (true) { try { repaint(); if (pemain1.intersects(kiri) || pemain1.intersects(kanan) || pemain1.intersects(atas) || pemain1.intersects(bawah) || pemain1.intersects(rintangan1) || pemain1.intersects(rintangan2) || pemain1.intersects(rintangan4) || pemain1.intersects(rintangan5)) { kecepatan = -4; } if (pemain1.intersects(tengah)) { kecepatan = -2.5; } if (kecepatan <= 5) { kecepatan += .2; } if (arah == UP) { pemain1.y -= (int) kecepatan; } if (arah == DOWN) { pemain1.y += (int) kecepatan; } if (arah == LEFT) { pemain1.x -= (int) kecepatan; } if (arah == RIGHT) { pemain1.x += (int) kecepatan; } Thread.sleep(75); } catch (Exception e) { break; } } } public void keyPressed(KeyEvent event) { } public void keyReleased(KeyEvent event) { } public void keyTyped(KeyEvent event) { if (event.getKeyChar() == 'a') { arah = LEFT; } if (event.getKeyChar() == 's') { arah = DOWN; } if (event.getKeyChar() == 'd') { arah = RIGHT; } if (event.getKeyChar() == 'w') { arah = UP; } } } public static void main(String[] args) { new AnimasiGrafik(); } }
Senin, 31 Oktober 2016
Source Code Balon (Bakal Calon) Game Balap Mobil
Berikut source code program Java untuk bakal calon game balap mobil.
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar