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