Thursday 17 January 2013

cara membuat game dengan java

buat clas "pesawat jagoan"


import java.awt.Image;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import java.util.ArrayList;
import java.awt.Rectangle;

public class PesawatJagoan {
private String pswtJagoan = "pesawatJagoan.png";
private int dx;
private int dy;
private int x;
private int y;
private Image gambar;
private ArrayList arrRoket;
private final int PANJANG_PSWT = 63;
private final int TINGGI_PSWT = 29;
private int lebar;
private int tinggi;
private boolean kelihatan;

public PesawatJagoan() {
ImageIcon fileGambar = new
ImageIcon(this.getClass().getResource(pswtJagoan));
gambar = fileGambar.getImage();
lebar = gambar.getWidth(null);
tinggi = gambar.getHeight(null);
arrRoket = new ArrayList();
kelihatan = true;
x = 40;
y = 60;
}
public void pindahPosisi() {
x += dx;
y += dy;
if (x < 1) { x = 1; }
if (y < 1) { y = 1; }
}
public int posisiX() { return x; }
public int posisiY() { return y; }
public Image ambilGambar() { return gambar; }
public ArrayList ambilRoket() { return arrRoket; }
public void setKelihatan(boolean visible) { this.kelihatan = visible; }
public boolean apaKelihatan() { return kelihatan; }
public Rectangle batas() { return new Rectangle(x, y, lebar, tinggi); }

public void tembak() {
arrRoket.add(new Roket(x + PANJANG_PSWT, y + TINGGI_PSWT / 2));
}

public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE) { tembak(); }
if (key == KeyEvent.VK_LEFT) { dx = -1; }
if (key == KeyEvent.VK_RIGHT) { dx = 1; }
if (key == KeyEvent.VK_UP) { dy = -1; }
if (key == KeyEvent.VK_DOWN) { dy = 1; }
}

public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) { dx = 0; }
if (key == KeyEvent.VK_RIGHT) { dx = 0; }
if (key == KeyEvent.VK_UP) { dy = 0; }
if (key == KeyEvent.VK_DOWN) { dy = 0; }
}
}
-------------------------------------------------------------------------------------
buat clas "pesawat musuh"

import java.awt.Image;
import java.awt.Rectangle;
import javax.swing.ImageIcon;

public class PesawatMusuh {
private String pswtMusuh = "pesawatMusuh.png";
private int x;
private int y;
private int lebar;
private int tinggi;
private boolean kelihatan;
private Image gambar;
public PesawatMusuh(int x, int y) {
ImageIcon fileGambar = new ImageIcon(this.getClass().getResource(pswtMusuh));
gambar = fileGambar.getImage();
lebar = gambar.getWidth(null);
tinggi = gambar.getHeight(null);
kelihatan = true;
this.x = x;
this.y = y;
}

public void pindahPosisi() {
if (x < 0)
x = 400;
x -= 1;
}

public int posisiX() { return x; }
public int posisiY() { return y; }
public boolean apaKelihatan() { return kelihatan; }
public void setKelihatan(Boolean visible) { this.kelihatan = visible; }
public Image ambilGambar() { return gambar; }
public Rectangle batas() { return new Rectangle(x, y, lebar, tinggi); }
}
------------------------------------------------------------------------------------
buat clas "roket"

import java.awt.Image;
import javax.swing.ImageIcon;
import java.awt.Rectangle;

public class Roket {
private int x, y;
private Image gambar;
boolean kelihatan;
private final int LEBAR_TEMPAT_MAIN = 390;
private final int KECEPATAN_ROKET = 2;
private int lebar, tinggi;

public Roket(int x, int y) {
ImageIcon fileGambar = new
ImageIcon(this.getClass().getResource("roket.png"));
gambar = fileGambar.getImage();
kelihatan = true;
lebar = gambar.getWidth(null);
tinggi = gambar.getHeight(null);
this.x = x;
this.y = y;
}

public Image ambilGambar() { return gambar; }
public int posisiX() { return x; }
public int posisiY() { return y; }
public boolean apaKelihatan() { return kelihatan; }
public void setKelihatan(Boolean visible) { this.kelihatan = visible; }
public Rectangle batas() { return new Rectangle(x, y, lebar, tinggi); }

public void pindahPosisi() {
x += KECEPATAN_ROKET;
if (x > LEBAR_TEMPAT_MAIN) {
kelihatan = false;
}
}
}
-----------------------------------------------------------------------------------
buat clas "starwar" untuk sebagai constrakter

import javax.swing.JFrame;

public class StarWar extends JFrame {
//konstruktor
public StarWar() {
add(new TempatMain());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
setTitle("StarWar");
setResizable(false);
setVisible(true);
}
//main method
public static void main(String[] args) {
StarWar x = new StarWar();
}
}
-----------------------------------------------------------------------------------
buat clas "tempatmain" sebagai framnya


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JPanel;
import javax.swing.Timer;
import java.util.ArrayList;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Rectangle;
import javax.swing.JFrame;

public class TempatMain extends JPanel implements ActionListener {
private Timer pencacahWaktu;
private PesawatJagoan pswtJagoan;
private ArrayList musuhMusuh;
private boolean lagiMain, pswtAncur;
private int LEBAR_TEMPAT_MAIN;
private int TINGGI_TEMPAT_MAIN;
private int[][] posisiMusuh = {
{2380, 29}, {2500, 59}, {1380, 89},
{780, 109}, {580, 139}, {680, 239},
{790, 259}, {760, 50}, {790, 150},
{980, 209}, {560, 45}, {510, 70},
{930, 159}, {590, 80}, {530, 60},
{940, 59}, {990, 30}, {920, 200},
{900, 259}, {660, 50}, {540, 90},
{810, 220}, {860, 20}, {740, 180},
{820, 128}, {490, 170}, {700, 30}
};


public TempatMain() {
addKeyListener(new AdapterTombolKeyboard());
setFocusable(true);
setBackground(Color.BLACK);
setDoubleBuffered(true);
lagiMain = true;
pswtAncur = false;
setSize(400, 300);
pswtJagoan = new PesawatJagoan();
bikinMusuh();
pencacahWaktu = new Timer(5, this);
pencacahWaktu.start();
}

@Override
public void addNotify() {
super.addNotify();
LEBAR_TEMPAT_MAIN = getWidth();
TINGGI_TEMPAT_MAIN = getHeight();
}

public void bikinMusuh() {
musuhMusuh = new ArrayList();
for (int i = 0; i < posisiMusuh.length; i++) {
musuhMusuh.add(new PesawatMusuh(posisiMusuh[i][0], posisiMusuh[i][1]));
}
}

@Override
public void paint(Graphics g) {
super.paint(g);
if (lagiMain) {
Graphics2D g2d = (Graphics2D) g;
if (pswtJagoan.apaKelihatan()) {
g2d.drawImage(pswtJagoan.ambilGambar(), pswtJagoan.posisiX(),
pswtJagoan.posisiY(), this);
}
ArrayList roketRoket = pswtJagoan.ambilRoket();
for (int i = 0; i < roketRoket.size(); i++) {
Roket rokt = (Roket) roketRoket.get(i);
g2d.drawImage(rokt.ambilGambar(), rokt.posisiX(), rokt.posisiY(),
this);
}

for (int i = 0; i < musuhMusuh.size(); i++) {
PesawatMusuh pMusuh = (PesawatMusuh) musuhMusuh.get(i);
if (pMusuh.apaKelihatan()) {
g2d.drawImage(pMusuh.ambilGambar(), pMusuh.posisiX(),
pMusuh.posisiY(), this);
}
}

g2d.setColor(Color.WHITE);
g2d.drawString("Sisa alien: " + musuhMusuh.size(), 5, 15);
} else {
String pesan = "";
if (pswtAncur) { pesan = "Pesawat ancur! "; } else { pesan = "Menang! ";
}
pesan += "Kelar dah!";
Font fontKecil = new Font("Helvetica", Font.BOLD, 14);
FontMetrics metr = this.getFontMetrics(fontKecil);
g.setColor(Color.white);
g.setFont(fontKecil);
g.drawString(pesan, (LEBAR_TEMPAT_MAIN - metr.stringWidth(pesan)) / 2,
TINGGI_TEMPAT_MAIN / 2);
}

Toolkit.getDefaultToolkit().sync();
g.dispose();
}

public void actionPerformed(ActionEvent e) {
if (musuhMusuh.size() == 0) {
lagiMain = false;
}

ArrayList ms = pswtJagoan.ambilRoket();
for (int i = 0; i < ms.size(); i++) {
Roket m = (Roket) ms.get(i);
if (m.apaKelihatan()) {
m.pindahPosisi();
} else {
ms.remove(i);
}
}

for (int i = 0; i < musuhMusuh.size(); i++) {
PesawatMusuh pMusuh = (PesawatMusuh) musuhMusuh.get(i);
if (pMusuh.apaKelihatan()) {
pMusuh.pindahPosisi();
} else {
musuhMusuh.remove(i);
}
}

pswtJagoan.pindahPosisi();
cekTabrakan();
repaint();
}

public void cekTabrakan() {

Rectangle batasPJagoan = pswtJagoan.batas();
for (int j = 0; j < musuhMusuh.size(); j++) {
PesawatMusuh pMusuh = (PesawatMusuh) musuhMusuh.get(j);
Rectangle batasPMusuh = pMusuh.batas();
if (batasPJagoan.intersects(batasPMusuh)) {
pswtJagoan.setKelihatan(false);
pMusuh.setKelihatan(false);
lagiMain = false;
pswtAncur = true;
}
}

ArrayList roketRoket = pswtJagoan.ambilRoket();
for (int i = 0; i < roketRoket.size(); i++) {
Roket rokt = (Roket) roketRoket.get(i);
Rectangle batasRoket = rokt.batas();
for (int j = 0; j < musuhMusuh.size(); j++) {
PesawatMusuh pMusuh = (PesawatMusuh) musuhMusuh.get(j);
Rectangle batasPMusuh = pMusuh.batas();
if (batasRoket.intersects(batasPMusuh)) {
rokt.setKelihatan(false);
pMusuh.setKelihatan(false);
}
}
}
}

private class AdapterTombolKeyboard extends KeyAdapter {
@Override
public void keyReleased(KeyEvent e) {
pswtJagoan.keyReleased(e);
}

@Override
public void keyPressed(KeyEvent e) {
pswtJagoan.keyPressed(e);
}
}
}
---------------------------------------------------------------------------------
masukan gambar untuk
* pesawat jagoan
* pesawat musuh
* roket

setelah semuanya telah dilakukan. selamat menikmati

game ini saya copy dari dosen saya " Sony rudi S.kom"
alamat blognya jika ingin belajar lebih lanjut bisa mengunjungi
"ilmubiner.blogspot.com"

TSS vol 2 sub indo