Minggu, 19 April 2015

Membuat Game Sederhana Menggunakan Bahasa Pemrograman Java

Pertama - tama saya disini menggunakan Net Bean 7.4 untuk membuat game sederhana ini. Saya asumsikan net bean sudah terinstal dilaptop atau komputer kalian. Lets code
Create Project dengan klik menu file kemudian pilih new project.

Lalu pada categories pilih java dan pada project pilih java application kemudian klik next. Kemudian pada nama project silahkan isikan nama project kalian. Destinasi tempat menyimpan file project dapat kalian ubah. Lalu klik finish.

Project telah berhasil dibuat. Lalu klik tanda tambah yang ada disamping nama_project kalian, kemudian klik tanda tambah pada source packages kemudian klik tanda tambah lagi disamping nama_project kalian, akan muncul nama_project.java. Klik kanan pada nama_project.java lalu pilih refactor, kemudian pilih safely delete.
Next step klik kanan pada nama_project yang terdapat simbol kotak disampingnya, kemudian pilih new, lalu pilih Java Class. Berikan nama class sesuai keinginan kalian. Kemudian klik finish. Class yang dibuat ini digunakan untuk handle bola yang akan dibuat.

Kemudian copy coding ini pada class yang baru saja kalian buat.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;

Letakkan code tersebut dibawah nama_project kalian. Lalu pada void nama_class letakkan coding sebagai berikut
//Variabel-variabel
public int posX;
public int posY;
public int kecepatanX;
public int kecepatanY;
public int diameter;
public Rectangle rectBola;

lalu buat konstruktor dari bolanya
//Konstruktor
public Bola(int x, int y, int kX, int kY, int d)
{
this.posX = x;
this.posY = y;
this.kecepatanX = kX;
this.kecepatanY = kY;
this.diameter = d;
rectBola = new Rectangle(x, y, d, d);
}
kemudian buat logic untuk bola itu sendiri
//Update logic bola
public void updateBola()
{
posX += kecepatanX;
posY += kecepatanY;
rectBola.setLocation(posX, posY);
}
Last of this class yaitu menggambar bolanya
//Menggambar bola
public void paintBola(Graphics g)
{
g.setColor(Color.RED);
g.fillOval(posX, posY, diameter, diameter);
}

Secara keseluruhan coding yang ada dalam class bola yang dibuat adalah sebagai berikut
package gameprogramming;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;

public class Bola {
/**
*
* @author Dreamers
*/

//Variabel-variabel
public int posX;
public int posY;
public int kecepatanX;
public int kecepatanY;
public int diameter;
public Rectangle rectBola;

//Konstruktor
public Bola(int x, int y, int kX, int kY, int d)
{
this.posX = x;
this.posY = y;
this.kecepatanX = kX;
this.kecepatanY = kY;
this.diameter = d;
rectBola = new Rectangle(x, y, d, d);
}

//Update logic bola
public void updateBola()
{
posX += kecepatanX;
posY += kecepatanY;
rectBola.setLocation(posX, posY);
}

//Menggambar bola
public void paintBola(Graphics g)
{
g.setColor(Color.RED);
g.fillOval(posX, posY, diameter, diameter);
}
}


Next Step adalah membuat papan yang digunakan dalam permainan. Caranya sama dengan cara create class untuk bola tadi. Buat nama class sesuai keinginan kalian and lets make code
Pertama tama lakukan import library terlebih dahulu
import java.awt.*;
letakkan code tersebut dibawah package nama_project. Saya menggunakan tanda * untuk menggunakan semua library java.awt.
kemudian kita membuat variabel variabel yang mungkin digunakan pada class ini. Code berikut letakkan dibawah nama class yang kalian buat
public int posX;
public int posY;
public int kecepatanY;
public int lebar;
public int tinggi;
public Rectangle rectPapan;
code tersebut harus masih di dalam public class nama_class, masih didalam tanda kurung yang menjadi penanda class.

Kemudian kita membuat konstruktor papan. Code ini juga masih dalam public class nama_class.
public papan(int x, int y, int ky, int l, int t)
{
//konstruktor
this.posX = x;
this.posY = y;
this.kecepatanY = ky;
this.lebar = l;
this.tinggi = t;
rectPapan = new Rectangle(x, y, l, t);
}

Kemudian kita membuat update logic untuk papan yang ingin dibuat, dan masih di dalam public class nama_class.
public void updatePapan()
{
//update logic papan
posY += kecepatanY;
rectPapan.setLocation(posX, posY);
}

And the end of this class is to painting. Disini kita membuat koding untuk menggambar papan.
public void paintPapan(Graphics g)
{
//menggambar papan
g.setColor(Color.BLUE);
g.fillRect(posX, posY, lebar, tinggi);
}

Berikut adalah coding keseluruhan dalam class papan
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package gameprogramming;

import java.awt.*;

/**
*
* @author Dreamers
*/
public class papan {
//Variabel variabel
public int posX;
public int posY;
public int kecepatanY;
public int lebar;
public int tinggi;
public Rectangle rectPapan;

public papan(int x, int y, int ky, int l, int t)
{
//konstruktor
this.posX = x;
this.posY = y;
this.kecepatanY = ky;
this.lebar = l;
this.tinggi = t;
rectPapan = new Rectangle(x, y, l, t);
}

public void updatePapan()
{
//update logic papan
posY += kecepatanY;
rectPapan.setLocation(posX, posY);
}

public void paintPapan(Graphics g)
{
//menggambar papan
g.setColor(Color.BLUE);
g.fillRect(posX, posY, lebar, tinggi);
}

}

So we already make 2 class, lets make the frame now.
Cara membuat frame adalah sama dengan membuat class tadi hanya saja ketika pilih new kita tidak memilih java class melainkan JFrame Form. Silahkan memberikan nama JFrame Form sesuai keinginan. Berikut adalah coding secara keseluruhan dari JFrame Form yang kalian buat
package gameprogramming;
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;

//Layar Utama Game
public class LayarUtama extends javax.swing.JFrame {

//Variabel-variabel
Timer tmr;
Bola bolaku;
papan papan1;
papan papan2;


//Konstruktor
public LayarUtama() {
initComponents();
bolaku = new Bola(200, 100, 3, 3, 30);
papan1 = new papan(10, 100, 0, 10, 100);
papan2 = new papan(670, 100, 0, 10, 100);
//Timer digunakan untuk me-looping game
tmr = new Timer(10, new ActionListener() {
public void actionPerformed(ActionEvent e) {
updateLogic();
repaint();
}
});
tmr.start();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
formKeyPressed(evt);
}
public void keyReleased(java.awt.event.KeyEvent evt) {
formKeyReleased(evt);
}
});

org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 675, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 356, Short.MAX_VALUE)
);

pack();
}//


private void formKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_Q)
papan1.kecepatanY = -10;
if (evt.getKeyCode() == KeyEvent.VK_A)
papan1.kecepatanY = 10;

if (evt.getKeyCode() == KeyEvent.VK_P)
papan2.kecepatanY = -10;
if (evt.getKeyCode() == KeyEvent.VK_L)
papan2.kecepatanY = 10;// TODO add your handling code here:
}

private void formKeyReleased(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_Q)
papan1.kecepatanY = 0;
if (evt.getKeyCode() == KeyEvent.VK_A)
papan1.kecepatanY = 0;

if (evt.getKeyCode() == KeyEvent.VK_P)
papan2.kecepatanY = 0;
if (evt.getKeyCode() == KeyEvent.VK_L)
papan2.kecepatanY = 0;// TODO add your handling code here:
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LayarUtama().setVisible(true);
}
});
}

@Override
public void paint(Graphics g)
{
super.paint(g);
bolaku.paintBola(g);
papan1.paintPapan(g);
papan2.paintPapan(g);
}

public void updateLogic()
{
bolaku.updateBola();
papan1.updatePapan();
papan2.updatePapan();
//Jika bola menyentuh tepi form, maka pantulkan bola
if (bolaku.posX > this.getX() + this.getWidth() - bolaku.diameter || bolaku.posX < this.getX()) //if (bolaku.posX > this.getX() + this.getWidth() - bolaku.diameter)
{
bolaku.kecepatanX *= -1;
}
if (bolaku.posY > this.getY() + this.getHeight() - bolaku.diameter || bolaku.posY < this.getY()) //if (bolaku.posY > this.getY() + this.getHeight() - bolaku.diameter)
{
bolaku.kecepatanY *= -1;
}
if (papan1.posY < this.getY()) papan1.posY = this.getY(); if (papan1.posY > this.getY()+
this.getHeight() - papan1.tinggi)
papan1.posY = this.getY() +
this.getHeight() - papan1.tinggi;
if (bolaku.rectBola.intersects(papan1.rectPapan))
{
bolaku.kecepatanX *= -1;
}

if (papan2.posY < this.getY()) papan2.posY = this.getY(); if (papan2.posY > this.getY()+
this.getHeight() - papan2.tinggi)
papan2.posY = this.getY() +
this.getHeight() - papan2.tinggi;
if (bolaku.rectBola.intersects(papan2.rectPapan))
{
bolaku.kecepatanX *= -1;
}
}

// Variables declaration - do not modify
// End of variables declaration

}

Berikut adalah hasil ketika project di run


Okay its done already. Semoga bisa membantu bagi yang ingin belajar.
So see you in the next post. Keep reading my blog and enjoy reading.
Lets learn together.

Selasa, 17 Maret 2015

Untuk Kesekian Kalinya..................

Entah sudah berapa kali aku mengatakan ingin move on, tapi selalu tidak berhasil. Pertanyaan dikepala selalu terdengar seperti hantu yang terus menurus bertanya, kapan move on? Segitu beratkah?
Iya sangat berat bagiku. Begitu biasanya jawabanku. Tapi pertanyaan tersebut tetap muncul dikepalaku dan selalu menanyakan hal yang sama. Entah kapan aku bisa benar benar move on. Wanita itu selalu susah aku lupakan, bagaimanapun juga, dia yang selalu ada disampingku sejak lama, kami memang tidak pacaran, seperti sahabatan bisa dibilang. Tapi dari sahabatan itulah menjadi cinta. Terdengar seperti disinetron y? :D
Tapi kali ini mudah mudahan adalah starting point buatku untuk benar benar melangkah kedepan. Seperti novel karya Raditya Dika dengan judul Koala Kumal yang aku baca beberapa hari ini, istilah untuk orang yang pernah merasakan bagaimana rasanya patah hati adalah dewasa. Dan terkadang orang akan berubah cara pandangnya terhadap cinta ketika mengalami patah hati, terutama patah hati yang hebat. Mungkin pandanganku tentang cinta belum berubah, setidaknya itu yang aku sadari, karena tidak menutup kemungkinan juga jika sebenarnya pandanganku akan cinta sudah berubah tanpa aku sadari. Terkadang memang kita tidak bisa merasakan perubahan dalam diri kita, tidak sebelum ada yang memberi tahu kita bahwa kita telah berubah.
Ya mungkin aku ada pilihan untuk terus berjuang seperti yang dilakukan bule dalam novel tersebut bahwa meskipun dia tahu bahwa dia dimanfaatkan oleh wanita thailand itu tapi dia memilih untuk berjuang, meski dia tahu sejak awal bahwa dia akan patah hati tapi dia tetap berjuang. Mau tahu kenapa? Karena resikonya sepadan. Tapi sepertinya aku lebih baik mulai menata hidupku kembali karena ketika dipikir kembali, hidupku sudah cukup berantakan akhir akhir ini dan aku tidak ingin hidupku lebih berantakan lagi. Maka dari itu aku harus move on dan mengembalikan semangatku yang dulu, semangat yang membuatku merasa dunia itu tidak sempit, bahwa dengan terus berusaha maka aku akan mendapatkan banyak warna dalam hidupku. Yang membuatku menyadari bahwa hidup itu indah, meski disaat terpuruk pun, hidup masih terasa indah. Karena adalah pilihan untuk tersenyum atau menangis, tapi penderitaan adalah mutlak.

Oke ini sudah terlalu panjang. sekian dulu, dan mudah mudahan postinganku selanjutnya bukan curhatan tentang cinta lagi.
Sayonara..........

Kamis, 05 Februari 2015

Entah Bagaimana Menjelaskannya

Hari ini terasa sangat menyedihkan bagiku. Bukan karena cinta, bukan karena kuliah(meski agak sedikit nyambung sih), bukan juga karena teman. Tapi karena aku sendiri merasa seperti tidak berguna dan benar benar hanya bisa memberikan impian demi impian yang entah kapan bisa terealisasi. Aku seperti mengatakan omong kosong belaka. Entah bagaimana caranya aku bisa memperbaikinya, tapi jujur ini sangat menggangguku. Setidaknya aku ingin sedikit meringankan, dan jika bisa aku ingin berkontribusi juga.
Ah.....aku benar benar anak durhaka jika terus terusan seperti ini. Benar benar emergency changing ini, jika tidak maka aku akan dihantui perasaan bersalah, perasaan malu, perasaan kecewa, marah, dan banyak lagi perasaan yang lainnya. Let's see how I can handle and solve this.

Rabu, 28 Januari 2015

Change tears into smile

There's a book that inspired me now. The book title is Montase, written by Windry Ramadhina. The main character name is Rayi and he falling in love with japanese girl, Haru. Everything going good until he knows that Haru have leukimia and she have not much time in this world. He try his best to make that girl happy. But that girl left him after all. He got depressed.
After 3 years Haru's dead, Rayi has a letter from Tokyo, Haru is from Tokyo. He think that there's a chance that Haru still alive. But he wrong. After he arrived at Haru's home, he meet Haru's parents. He got letter and video from Haru that it written and recorded before she died. Haru says, "When your tears has been changed into smile,come back to visit me again and we can see cherry blossoms together".

I think I must do like what Haru says, for my guardian that already go to the heaven. I must keep walking, keep smiling, keep strong and face every difficult. Life must go on.

Jumat, 16 Januari 2015

Hanya 1 Mata Kuliah

Hari ini aku sedikit kecewa dengan apa yang terjadi. Di kampusku ada sistem barter mata kuliah, dan yang bisa aku barter cuma 1 mata kuliah saja. Sangat mengecewakan memang, tapi tidak ada yang bisa aku perbuat. Tapi ada sisi positifnya, yaitu aku bisa dapat mengambil mata kuliah dan mendapatkan ilmu yang baru lagi. It's good way to choose an positive thinking right? So, let's fight for busy semester on next semester.