Tuesday, November 29, 2011

CATUR SEDERHANA dengan JAVA (TUGAS 3 DDP)

package Chess;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
*
* @author Resika Arthana, Samuel Louvan
*/
public class CForm extends JFrame implements MouseListener {

public static PanelChess[][] panel = new PanelChess[8][8];
PanelChess PanelTemp; //menampung panel yang diklik sebelumnya
Piece pieceTemp; //menampung piece yang diklik sebeluumnya
Color cBackgroundJP; //menyimpan warna panel yang diklik

public static void main(String args[]) {
CForm cf = new CForm();
cf.createMainBoard();
}

public void createMainBoard() {
JFrame mainBoard = new JFrame();
mainBoard.setResizable(false);
mainBoard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainBoard.setLayout(new BorderLayout());
mainBoard.add(createMenuPanel(), BorderLayout.NORTH);
mainBoard.add(createChessBoard(), BorderLayout.CENTER);
mainBoard.setSize(600, 700);
mainBoard.setVisible(true);
}

public JPanel createMenuPanel() {
JPanel panelMenu = new JPanel();


return panelMenu;
}

public JPanel createChessBoard() {
JPanel jf = new JPanel();
jf.setLayout(new GridLayout(8, 8)); //gunakan layout grid 8 x 8
jf.setSize(600, 600);
//PanelChess sebagai panel untuk menampung piece
/*
* Selanjutnya mengatur warna panel menjadi hitam dan putih
*/
boolean isBlack = true;

for (int i = 0; i < 8; i++) {
isBlack = (i % 2 == 0 ? true : false);
for (int j = 0; j < 8; j++) {
panel[i][j] = new PanelChess();
panel[i][j].setPosition(i, j);
/* TODO IMPLEMENTASI ANDA*/
if (isBlack) {
panel[i][j].setBackground(Color.BLACK);
} else {
panel[i][j].setBackground(Color.WHITE);
}
isBlack = !isBlack;
panel[i][j].addMouseListener(this); //menambah listener
jf.add(panel[i][j]);
}
}

/*
* Selanjutnya menambah piece pada panel
*/
for (int x = 0; x < 8; x++) {
panel[6][x].add(new Pawn());
}
panel[7][1].add(new Knight());
panel[7][6].add(new Knight());
panel[7][0].add(new Rook());
panel[7][7].add(new Rook());
panel[7][2].add(new Bishop());
panel[7][5].add(new Bishop());
panel[7][4].add(new King());
panel[7][3].add(new Queen());

/* TODO IMPLEMENTASI ANDA
Tambahkan piece catur yang lain ke dalam panel
yaitu Rook, Knight, Bishop, King Queen */


jf.setVisible(true);

return jf;
}

public void mouseClicked(MouseEvent e) {
PanelChess panelChess = (PanelChess) e.getComponent();
/* jika tidak ada piece yang diklik sebelumnya (pieceTemp kosong) maka
* jika panelChess yang diklik terdapat piece maka ambil piece tersebut
* simpan piecetemp, panel juga disimpan
* Jika ada piece yang diklik selanjutnya maka
* jika panelChess yang diklik saat ini kosong maka taruh piece yang ada pada piecetemp
* jika ternyata pada panelchess sudah ada piece maka anggap piece tersebut yang akan dipindah
*/
if (pieceTemp == null) {
if (panelChess.getComponentCount() != 0) {
Piece piece = (Piece) panelChess.getComponents()[0];
PanelTemp = panelChess;
pieceTemp = piece;
cBackgroundJP = panelChess.getBackground();
panelChess.setBackground(Color.GREEN);
panelChess.updateUI();
pieceTemp.updateUI();
}
} else {
PanelTemp.setBackground(cBackgroundJP);
if (panelChess.getComponentCount() == 0) {
/* KASUS VALID*/
if (pieceTemp.isValidMove(PanelTemp.getRowPosition(), PanelTemp.getColPosition(), panelChess.getRowPosition(), panelChess.getColPosition())) {
panelChess.add(pieceTemp);
PanelTemp.removeAll();
PanelTemp.updateUI();
panelChess.updateUI();
pieceTemp.updateUI();
pieceTemp = null;
} else {
/* KASUS TIDAK VALID
TODO IMPLEMENTASI ANDA
.....*/
PanelTemp.setBackground(Color.RED);
JOptionPane.showMessageDialog(null, "Langkah Anda tidak benar /n Silahkan coba lagi ^_^");

}

} else {
Piece piece = (Piece) panelChess.getComponents()[0];
PanelTemp = panelChess;
pieceTemp = piece;
cBackgroundJP = panelChess.getBackground();
panelChess.setBackground(Color.GREEN);
panelChess.updateUI();
pieceTemp.updateUI();
}

}
}

public void mousePressed(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}

public void mouseReleased(MouseEvent e) {
//throw new UnsupportedOperationException("Not supported yet.");
}

public void mouseEntered(MouseEvent e) {
//throw new UnsupportedOperationException("Not supported yet.");
}

public void mouseExited(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
}



+++++++++++++++++++++++++++++++++++++++++++++++++

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Chess;

/**
*
* @author amin
*/
public class Bishop extends Piece {

public Bishop(){

super("/Chess/resource/bishop.png");
}
public boolean isValidMove(int oldRow, int oldCol, int newRow, int newCol) {
boolean validMove = (Math.abs(oldRow-newRow)==Math.abs(oldCol-newCol));
boolean noPawn=true;

int y = oldRow;
int x = oldCol;

for (int i=0; inewCol){
if(oldRow>newRow){
x--;
y--;
}else{
x--;
y++;
}
}else{
if(oldRow>newRow){
x++;
y--;
}else{
x++;
y++;
}
}

if(CForm.panel[y][x].getComponentCount()!=0){
noPawn = false;
break;
}


}

return validMove && noPawn;
}



}


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Chess;

/**
*
* @author amin
*/
public class King extends Piece {

public King(){

super("/Chess/resource/king.png");
}
public boolean isValidMove(int oldRow, int oldCol, int newRow, int newCol) {
return ((oldCol==newCol)&&( Math.abs(oldRow-newRow)==1)||(Math.abs(oldCol-newCol)==1)&&( oldRow==newRow)||(Math.abs(oldCol-newCol)==1)&&Math.abs( oldRow-newRow)==1);
}



}


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Chess;

/**
*
* @author amin
*/
public class Knight extends Piece {

public Knight(){

super("/Chess/resource/knight.png");
}
public boolean isValidMove(int oldRow, int oldCol, int newRow, int newCol) {

return ((Math.abs(oldRow-newRow)==1 &&Math.abs(oldCol-newCol)==2)|| (Math.abs(oldRow-newRow)==2&&Math.abs(oldCol-newCol)==1));

}
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

package Chess;
import javax.swing.JPanel;
/**
*
* @author Resika Arthana
*/
public class PanelChess extends JPanel {
private int rowPosition=0;
private int colPosition=0;

public void setPosition(int rowPosition, int colPosition){
this.rowPosition=rowPosition;
this.colPosition=colPosition;
}
public int getRowPosition(){
return rowPosition;
}
public int getColPosition(){
return colPosition;
}

}
+++++++++++++++++++++++++++++++++++++++++++++++++


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package Chess;
/**
*
* @author Resika Arthana, Samuel Louvan
*/
public class Pawn extends Piece {

public Pawn(){

super("/Chess/resource/pawn.png");
}
public boolean isValidMove(int oldRow, int oldCol, int newRow, int newCol) {
return ((oldCol==newCol && oldRow-newRow==1) || ((oldCol==newCol) && (oldRow==6) && (oldRow-newRow==2) && (CForm.panel[5][oldCol].getComponentCount()==0)));
}



}


++++++++++++++++++++++++++++++++++++++++++++++++++++++++

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package Chess;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

/**
*
* @author Resika Arthana, Samuel Louvan
*/
public abstract class Piece extends JLabel {
abstract public boolean isValidMove(int oldRow, int oldCol, int newRow, int newCol);
public Piece(String str) {
this.setIcon(new ImageIcon(getClass().getResource(str)));
}
}


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Chess;

/**
*
* @author amin
*/
public class Queen extends Piece {

public Queen(){

super("/Chess/resource/queen.png");
}
public boolean isValidMove(int oldRow, int oldCol, int newRow, int newCol) {
boolean validMove = ((Math.abs(oldRow-newRow)==Math.abs(oldCol-newCol))||((oldRow==newRow)||(oldCol==newCol)));
boolean noPawn=true;
int start = 0;
int end = 0;

if (oldCol==newCol){
if (oldRow>newRow)
{
start = newRow;
end=oldRow;
}else{
start = oldRow;
end=newRow;
}
for(int i = start+1; inewCol)
{
start = newCol;
end=oldCol;
}else{
start = oldCol;
end=newCol;
}
for(int i = start+1; inewCol){
if(oldRow>newRow){
x--;
y--;
}else{
x--;
y++;
}
}else{
if(oldRow>newRow){
x++;
y--;
}else{
x++;
y++;
}
}

if(CForm.panel[y][x].getComponentCount()!=0){
noPawn = false;
break;
}


}



return validMove && noPawn;
}



}




+++++++++++++++++++++++++++++++++++++++++


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Chess;

/**
*
* @author amin
*/
public class Rook extends Piece {

public Rook(){

super("/Chess/resource/rook.png");
}
public boolean isValidMove(int oldRow, int oldCol, int newRow, int newCol) {
boolean validMove = (oldRow==newRow)||(oldCol==newCol);
boolean noPawn = true;

int start = 0;
int end = 0;

if (oldCol==newCol){
if (oldRow>newRow)
{
start = newRow;
end=oldRow;
}else{
start = oldRow;
end=newRow;
}
for(int i = start+1; inewCol)
{
start = newCol;
end=oldCol;
}else{
start = oldCol;
end=newCol;
}
for(int i = start+1; i
Facebook

Wednesday, November 23, 2011

Membalik Kata dengan Rekursif dangan Java

Dalam algoritma membalik kata ini apabila panjang string input adalah 0 maka tidak memberikan hasil apapun, dan jika panjang stringnya adalah satu maka akan memberikan hasil sesuai dengan string tersebut.
Ketika input adalah kata yang memiliki huruf lebih dari satu maka huruf pertama akan di taruh di belakang sendiri, kemudian sisanya akan dilakukan proses kembali melalui fungsi yang sama dengan huruf pertama ditaruh dibelakang lagi, begitu seterusnya sampai dengan sisa satu huruf dimana jika satu huruf saja maka akan di berikan nilai huruf tersebut dan ditempatkan didalam nilai.
Contoh Kata: input adalah Makan Malam
· Balik(akan Malam) + M
· Balik(kan Malam) + aM
· Balik(an Malam) + kaM
· Balik(n Malam) + akaM
· Balik( Malam) + nakaM
· Balik(Malam) + nakaM
· Balik(alam) + M nakaM
· Balik(lam) + aM nakaM
· Balik(am) + laM nakaM
· Balik(m) + alaM nakaM
· malaM nakaM

2. Java Program untuk membalik kata

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package latihanjavac;

import java.util.Scanner;

public class BalikKata {

public static void main(String args[]) {

Scanner input = new Scanner(System.in);

System.out.println("Masukkan Kata yang akan di Balik :");

String kata = input.nextLine();

System.out.println(BalikKata(kata));

}

static public String BalikKata(String s) {

if(s.length() == 0){

return "Kata tidak ada";

}else if (s.length() == 1) {

return s;

} else {

char c = s.charAt(0);

return BalikKata(s.substring(1)) + c;

}

}

}

Facebook

Tuesday, November 22, 2011

Java Palindrome Source Code with Recursive Algorithm

//copyrighted by topsourcecode.com

import javax.swing.JOptionPane;

public class polindrome2
{
public static void main(String[]args)
{

String testWord=JOptionPane.showInputDialog("Enter Word minimum 2 letters");
boolean result=testpalindrome(testWord);

if (result==true){
System.out.println("\n**THIS WORD IS PALINDROME**");
}
else{
System.out.println("\n**THIS WORD IS NOT PALINDROME**");
}
}
//END OF MAIN METHOD
//Palindrome check method
public static boolean testpalindrome(String input)
{
int length=input.length();

if (input.charAt(0)==input.charAt(length-1)){
String newWord=input.substring(1,(length-1));

//Checking whether the input character is a odd character word
if(newWord.length()==1){
return true;
}
//Checking whether the input String is a even character word
if (newWord.length()==0){
return true;
}
//calling the recursive method
testpalindrome(newWord);
return true;
}
else{
return false;
}
}
}
Facebook

Tuesday, November 15, 2011

Saya orang yang sedikit pengalaman dan ga tau apa-apa

Hari ini saya bangun jam 7. Saya tidur lagi habis subuh. Biasalah , mahasiswa kalau masuknya agak siang , bangunnya juga kesiangan. Hari ini jam pertama adalah matematika diskrit. Saya merasa senang mengikuti makul ini dengan senang hati. karena pada kesempatan kali ini Pak Bayu akan menerangkan tentang induksi matematika. Malamnya dan hari sebelumnya saya sudah mencoba baca- baca materi tersebut dari slide yang telah diberikan beberapa hari yang lalu. Mata kuliah favorit saya adalah matdis. Di samping dosennya asyik materi materinya pun sangat menarik untuk dipelajari.

Hari ini juga Pak Bayu akan membagikan hasil ujian 1 matdis. Awalnya saya benar-benar yakin bahwa saya akan dapat nilai 90 ke atas. Karena waktu itu saya merasa saya bisa mengerjakan dengan lancar. Tapi apa daya manusia yang tugasnya cuma berusaha. Semua keyakinanku gugursaat Pak Bayu memanggil namaku dan memberikan saya lembar kerja. Beliau menekuk kertas tersebut supaya orang lain tidak ada yang tau nilai saya.
Tapi apa daya, nilai saya cuman segitu. Ya sudahlah disyukuri saja.

Yang saya kagetkan, teman saya Qodri yang kelihatannya sih cuman tidur di kelas saat pelajaran, main pingpong, ngegame/ ee malah dapet 91. Sumpah keren amat nie bocah -_-" . Oya, ternyata yang dapat angka 98 itu adalah Felik. Dia orangnya sangat sangat sangat hebat. pokoknya dia mantab abis dah. Kemampuannya sangat luar biasa. Sumpah, untuk mengejarnya itu sesuai yang sangat mustahil bagi saya. Dia sudah punya banyak pengalaman diberbagai bidang. Yang lebih saya salutkan lagi, saya belum pernah melihat dia makan di kantin fasilkom. Saya pun belum pernah liat dia makan sesuatu. keren amat pokoknya dah, ngga nyesel dah saya dapet temen sama dia. Bisa jadi motivasi saya,


setelah kuliah selesai, saya pergi ke perpus fasilkom untuk berusaha mempelajari Artifial Intellegence atau kecerdasan buatan. Karena hari ini saya akan mengikuti test TRUI. Saya terus baca dan membaca. browsing internet cari cari materi , nyoba ngerjakan soal soal online , dsb. Saya ga peduli lolos apa tidak, saya ga peduli materi itu bisa masuk tidak ke otak saya, yang penting tetap semangat berusaha. Hari ini saya berencaca akan menghabiskan waktu untuk belajar kecerdasan buatan. Sampai sampai saya meninggal tugas pmb saya yaitu mencari tanda tangan, Padahal hari ini deadlinenya. Ah, ga peduli ah, saya mau belajar tentang AI, saya pengen berusaha supaya bisa lolos TRUI. Toh, kemarin saya sudah cari tanda tangan sampai malem jam 10, Saya ga peduli berapa pun hasilnya , yang penting saya bisa kenalan sama kakaknya. Ada banyak sekali teman yang menanyakan "sudah dapat berapa, min? sudah 80 belum?" saya menjawab "baru dikit". Sebenernya yang saya cari saya bisa kenalan dengan senior. sharing2, dan bisa saling menyapa apabila ketemu, bukan jumlah banyaknya tanda tangan. Kebanyakan yang tanda tangan nya masih kurang dia nyari target kakak kelas asal asalan saja, yang penting dapet tanda tangan, dia tidak ikhlas apabila di ajak ngobrol lama-lama. Pengennya cuma dapet tangan, cari lagi, dapet tanda tangan, cari lagi. Bagi saya , walaupun tanda tangan sedikit, yang penting saya dapat esensi kenalan itu dengan benar, tidak cuma nanya nama, no,hp , dll. Saya bisa sharing2, saling menyapa di jalan, dsb.


jam pukul 11.29 saya membuka sms dari mbak arifiana, saya hampir lupa bahwa hari ini saya harus ke perpus pusat untuk membahas tugas ceds.
Saya sangat menyesal membuat mereka menunggu lama, Dan disana pun saya ke habisan baterai. Terpaksa saya harus menyalurkan dengan flashdish.
Teman saya satunnya ternyata dia sudah memulai berbisnis kecil kecilan sejak dulu. dia menjual barang barangnya lewat kaskus, saya ditunjukkan contoh threadnya. Saya kagum terhadap dia. gila keren amat, dia sudah memulai berwirausaha.

Setelah habis solat dzuhur, saya masuk kelas mpkt , di dalam kelas saya curi curi waktu untuk belajar AI. Sampai-sampai saya disuruh menjawab soal dan disuruh presentasi pun saya gabut, ga ngerti apa apa, Namun setelah waktunya maju ke depan , saya percaya diri saja, Dan akhirnya berjalan lancar juga,


Setelah mpkt saya kembali ke perpus dan melanjutkan belajar Ai sampai magrib. Di perpus fasilkom saya bertemu dengan dewa dewa Wilgos dan Febry, Sehabis solat magrib saya pergi ke kantin untuk makan. Kemudian saya pergi bersama wilgos, febry, kandito menuju EC di teknik untuk mengikuti tes. Kami tes di lantai 6, kami ke atas naik lif, LIF di EC itu seperti di monas , kanyak ada kacanya. Stelah nyampe atas kami di tunjunkan di mana letak ruangnya, Kami masuk ke kelas. Ternya ta disan sudah banyak yang masuk. Saya duduk berdampingan dengan wilgos. Walaupun berdampingan dengan dewa, saya tidak punya hasrat untuk menyontek. saya ingin berusaha dengan kerja saya sendiri. Soal soal nya sih mirip saya OSK, OSP, tapi tetep juga saya tidak bisa mengerjakan. Hanya sebagian saja mungkin. Samping kiri kanan saya kanyaknya pada bisa mengerjakan semua , kepala mereka tertunduk konsentrasi peduh. Saat saya melihat soal esay nya, Saya cuma bisa diam , ga punya pikiran apa2. Yaudah, dari pada kosong mending saya tulis soalnya kemudian jawabannya saya jawab ngawur dan sekaligus asal asalan. Yang penting penuh -_-?


Waktu tes pun berakhir, teman teman saya keluar dengan muka ceria , mereka saling membahas soal soal tes tadi , mereka saling bertukar jawaban. Sedangkan saya cuma bisa diam. ga ngerti apa- apa, ga pernah kepikiran sejauh itu seperti apa yang mereka pikirkan. Saat itu juga, saya berdoa , kuatkan saya hidup di sini , mereka semua hebat hebat.


Saat itu pula saya sadar bahwa saya ini sedikit pengalaman, kemampuan minim, ide ide kurang, dan paing goblok di antara mereka. Tapi saya berjanji dalam hati saya yakin dengan bantuan Allah SWT saya bisa bertahan di sini sampai akhir nanti. sesungguhnya hidupku hanya untuk Allah semata
Facebook