Apa itu Struktur Data Binary Tree ?


Tree artinya pohon.Mengacu pada pohon pada dunia nyata yang di mana memiliki akar daun dan ranting

Istilah-istilah yang penting pada Tree :

  • Node paling atas (tidak punya predecessor) disebut Root
  • Node yang berada di atas node tertentu = Predecessor
  • Node yang berada di bawah node tertentu = Successor
  • Predecessor satu level = Parent
  • Sucessor satu level = Child
  • Seluruh Node sebelum node tertentu dan berada pada jalur yang sama = Ancestor
  • Seluruh Node setelah node tertentu dan berada pada jalur yang sama = Descendants
  • Node-node yang memiliki parent yang sama = Sibling
  • Bagian dari tree beserta descendants nya = Subtree
  • Node yang tidak punya successor = Leaf
  • Jumlah node dalam suatu tree = Size
  • Jumlah tingkatan tree = Height
  • Banyaknya child yang dimiliki suatu node = Degree
Contoh paling simple penerapan tree adalah direktori dalam komputer di dalam direktori ada folder kemudian di dalam ada subfolder dst.

Sebenarnya ini sudah dikenalkan saat sd dulu pada pelajaran matematika di mana untuk membuat faktorisasi prima dari suatu bilangan kita bisa memakai pohon faktor.Seperti ini contoh pohon faktor

contoh pohon faktor


Dalam pohon faktor di atas,

  • 120 adalah Root
  • 2,3,5 adalah Leaf karena mereka tidak bercabang
  • 60 dan 2,30 dan 2, 15 dan 2,3 dan 5  descendants dari 120
  • 30 dan 2,15 dan 2,3 dan 5 descendants dari 60
  • 15 dan 2,3 dan 5 descendants dari 30
  • 3 dan 5 descendats dari 15
Kali ini kita akan membahas jenis tree yang lebih spesifik yaitu Binary Tree.Binary Tree merupakan tree di mana setiap node hanya boleh memiliki maksimal 2 child

Contoh Binary Tree :

contoh binary tree

Implementasi Binary Tree Pada Python :

Kita memakai Python saja yang paling mudah implementasinya

Kodenya sebagai berikut

class Node:
    def __init__(self,data):
        self.left = None
        self.right = None
        self.data = data
    def PrintTree(self):
        if self.left:
            self.left.PrintTree()
        print( self.data),
        if self.right:
            self.right.PrintTree()
            
root = Node(2)#root
root.left = Node(3) #child kiri dari root
root.right = Node(5) #child kanan dari root
root.left.left = Node(7) #child kiri dari 3
root.left.right = Node(9) #child kanan dari 3
root.right.left = Node(11) #child kiri dari 5
root.right.right = Node(13) #child kanan dari 5
root.PrintTree()

Hasil output kode di atas :

tes implementasi tree python
Traversal Pada Binary Tree

Traversal merupakan proses mengunjungi seluruh node pada sebuah tree.Semua node saling terhubung dan dimulai dari root.Karena itulah,kita tidak bisa sembarangan mengakses suatu node.Ada 3 cara untuk traversal yaitu :

1) In-Order Traversal

Urutan kunjungan --> subtreee kiri - root - subtree kanan

Contoh program Python untuk in order traversal

class Node:
    def __init__(self,data):
        self.left = None
        self.right = None
        self.data = data
    def PrintTree(self):
        if self.left:
            self.left.PrintTree()
        print( self.data),
        if self.right:
            self.right.PrintTree()
    def inorderTraversal(self, root):
        res = []
        if root:
            res = self.inorderTraversal(root.left)
            res.append(root.data)
            res = res + self.inorderTraversal(root.right)
        return res
            
root = Node(2)#root
root.left = Node(3) #child kiri dari root
root.right = Node(5) #child kanan dari root
root.left.left = Node(7) #child kiri dari 3
root.left.right = Node(9) #child kanan dari 3
root.right.left = Node(11) #child kiri dari 5
root.right.right = Node(13) #child kanan dari 5
print(root.inorderTraversal(root))

Hasil output :

tes in-order traversal

2) Pre-Order Traversal

Urutan kunjungan --> root - subtree kiri - subtree kanan

class Node:
def __init__(self,data):
self.left = None
self.right = None
self.data = data
def PrintTree(self):
if self.left:
self.left.PrintTree()
print( self.data),
if self.right:
self.right.PrintTree()
def PreorderTraversal(self, root):
res = []
if root:
res.append(root.data)
res = res + self.PreorderTraversal(root.left)
res = res + self.PreorderTraversal(root.right)
return res
root = Node(2)#root
root.left = Node(3) #child kiri dari root
root.right = Node(5) #child kanan dari root
root.left.left = Node(7) #child kiri dari 3
root.left.right = Node(9) #child kanan dari 3
root.right.left = Node(11) #child kiri dari 5
root.right.right = Node(13) #child kanan dari 5
print(root.PreorderTraversal(root))
Hasil output :

tes pre-order traversal
3) Post-Order Traversal

Urutan kunjungan --> subtree kiri - subtree kanan - root

class Node:
    def __init__(self,data):
        self.left = None
        self.right = None
        self.data = data
    def PrintTree(self):
        if self.left:
            self.left.PrintTree()
        print( self.data),
        if self.right:
            self.right.PrintTree()
    def PostorderTraversal(self, root):
        res = []
        if root:
            res = self.PostorderTraversal(root.left)
            res = res + self.PostorderTraversal(root.right)
            res.append(root.data)
        return res
            
root = Node(2)#root
root.left = Node(3) #child kiri dari root
root.right = Node(5) #child kanan dari root
root.left.left = Node(7) #child kiri dari 3
root.left.right = Node(9) #child kanan dari 3
root.right.left = Node(11) #child kiri dari 5
root.right.right = Node(13) #child kanan dari 5
print(root.PostorderTraversal(root))

Hasil output :

tes post order traversal

Memasukkan Node ke Dalam Binary Tree

Misal saya punya binary tree seperti ini

binary tree sebelum insert

Kemudian saya ingin memasukkan node 12 di samping node 8 maka akhirnya akan jadi seperti ini binary tree nya

binary tree sesudah insert


Insertion (memasukkan node) hanya bisa dilakukan kalau ada ruas yang kosong dikasus di atas node 9 pada awalnya hanya memiliki satu child yaitu 8 di bagian kiri.Nah,karena 9 tidak memiliki child kanan maka kita memasukkan node 12 sebagai child kanan dari 9

Implementasi Insert Dengan Python

class Node:
    def __init__(self,data):
        self.left = None
        self.right = None
        self.data = data
    def PrintTree(self):
        if self.left:
            self.left.PrintTree()
        print( self.data),
        if self.right:
            self.right.PrintTree()
    def inorder(self, root):
        res = []
        if root:
            res = self.inorder(root.left)
            res.append(root.data)
            res = res + self.inorder(root.right)
        return res
    
    def insert(temp,data): 
        q = []  
        q.append(temp)  
        #level order traversal sampai menemukan tempat yang kosong  
        while (len(q)):  
            temp = q[0]  
            q.pop(0)  
            if (not temp.left): 
                temp.left = Node(data)  
                break
            else: 
                q.append(temp.left)  
  
            if (not temp.right): 
                temp.right = Node(data)  
                break
            else: 
                q.append(temp.right)  
            
root = Node(5)#root
root.left = Node(7) 
root.right = Node(9) 
root.left.left = Node(6) 
root.left.right = Node(10) 
root.right.left = Node(8) 
print("Sebelum memasukkan node",end = " ")
print(root.inorder(root))
data = 12
root.insert(data)
print()
print("Setelah memasukkan node",end = " ")
print(root.inorder(root))

Hasil output dari kode di atas


Dalam inorder Traversal, Node 12 berhasil dimasukkan dan menjadi child kanan dari 9





Mungkin itu saja dulu tentang binary tree kalau ada tambahan poin lagi akan saya update..





Apa itu Struktur Data Queue ?


Queue secara bahasa artinya adalah antrian/giliran.Queue mengacu pada konsep antrian yang sebenarnya pada dunia nyata.Kalau anda mengerti sistem antrian di dunia nyata,insya allah anda bisa dengan mudah memahami tipe data Queue ini

Kita ambil contoh dunia nyata saja supaya mudah dipahami.Misalnya anda antri untuk membayar di sebuah toko.Nah,kalau anda datang pertama kali maka anda juga yang akan keluar pertama kali setelah dilayani begitu juga sebaliknya kalau anda datang paling akhir maka anda juga yang akan keluar paling akhir

Tidak seperti stack yang hanya memiliki satu titik akhir (bagian paling atas/ belakang),Queue ini memiliki dua titik akhir,satu untuk memasukkan elemen (bagian paling atas/belakang) dan satu lagi untuk menghapus/mengambil elemen (bagian paling bawah/depan).Queue mengacu pada metodologi FIFO (First In First Out) yang masuk lebih dulu juga akan keluar lebih dulu

Operasi Pada Queue

Ada beberapa operasi dasar pada queue yaitu :

  • enqueue(),memasukkan data ke dalam Queue
  • dequeue(),mengeluarkan data dari dalam Queue
  • peek(),mengetahui elemen paling depan dari Queue tanpa menghapusnya
  • isEmpty(),mengecek Queue kosong atau tidak
Implementasi Queue dan Operasinya

Kita memakai Python lagi saja yang lebih simple

class Queue(object):
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return len(self)==0
    def __len__(self):
        return len(self.items)
    def enqueue(self,data):
        self.items.append(data)
        return self.items
    def dequeue(self):
        assert not self.isEmpty(),"Antrian sedang kosong."
        return self.items.pop(0)
Kita coba mengetes implementasi queue yang kita buat menggunakan kode di atas

Tes implementasi Queue
Lihat sendiri kan kalau data yang dimasukkan lebih dulu juga akan dikeluarkan terlebih dahulu

PriorityQueue

PriorityQueue merupakan tipe data yang lebih spesifik dari pada Queue yang umum.PriorityQueue menambahkan adanya "prioritas" di sini.

Kalau implementasi dunia nyata sih kerap kali kita mengizinkan orang lain untuk mendahului antrian kita karena kita tahu kalau dia lebih membutuhkan kaya orang tua, anak-anak, orang yang berkepentingan dll

Elemen dengan angka prioritas kecil maka dia akan berada di depan sedanhkan elemen dengan angka prioritas besar akan berada di belakang

Untuk urusan masuk atau keluarnya juga tergantung dari prioritas ini.Yang memiliki prioritas kecil akan masuk dan keluar terlebih dahulu begitu juga sebaliknya.

Kalau ada elemen yang memiliki prioritas sama,maka baru urutan masuk yang diperhitungkan

Langsung saja ke implementasinya biar gak bingung

Implementasi PriorityQueue

class PriorityQueue():
    def __init__(self):
        self.qlist = []
    def __len__(self):
        return len(self.qlist)
    def is_empty(self):
        return len(self) == 0
    def enqueue(self, data, priority):
        entry = _PriorityQEntry(data, priority)
        self.qlist.append(entry)
    def dequeue(self):
        A = []
        for i in self.qlist:
            A.append(i)
        s = 0
        for i in range(1, len(self.qlist)):
            if A[i].priority < A[s].priority:
                s = i
        hasil = self.qlist.pop(s)
        return hasil.item
class _PriorityQEntry():
    def __init__(self, data, priority):
        self.item = data
        self.priority = priority
Kita tes implementasi PriorityQueue yang kita buat dengan kode di atas

Tes implementasi PriorityQueue

Lihat dari dequeue kita mengeluarkan data berdasarkan prioritas nya.data yang prioritasnya kecil dikeluarkan dahulu

Mungkin itu saja mengenai tipe data Queue semoga bisa bermanfaat amiin..






Apa itu Struktur Data Stack ?


Stack secara bahasa artinya tumpukan.Stack dalam bahasa pemrograman ini mengacu kepada tumpukan di dunia nyata seperti tumpukan buku,tumpukan piring.tumpukan ban,dll.Mungkin sampai sini anda sudah punya Stack itu seperti apa

Misalkan kita punya tumpukan piring dan kita ingin menambahkan piring lagi ke tumpukan itu.Kemana kita akan menempatkannya ? Tentu saja di paling atas bukan yang mudah penempatannya.Nah,operasi menambahkan elemen ke bagian atas ini disebut dengan Push 

Sekarang sebaliknya kalau kita ingin mengambil piring,piring mana yang akan kita ambil ? Tentu saja piring paling atas bukan ? Karena kalau kita mengambil piring yang tidak berada paling atas ,maka piring disekitarnya akan jatuh dan menimbulkan bunyi atau bahkan kasus paling parahnya bisa-bisa piringnya ada yang pecah.Nah,operasi mengambil elemen dari bagian atas disebut dengan Pop

Dalam stack dikenal algoritma LIFO (Last In First Out) maksudnya yang terakhir masuk akan dikeluarkan pertama kali,Untuk contohnya sudah saya contohkan seperti di atas



Operasi Pada Stack

Operasi dasar pada Stack adalah sebagai berikut :

  • push(),menambahkan elemen ke dalam stack 
  • pop(),mengambil elemen dari dalam stack
  • peek(),mendapatkan elemen teratas stack tanpa menghapusnya
  • isEmpty(),mengecek apakah stack kosong
Implementasi Stack dan Operasinya

Kita memakai bahasa Python saja yang lebih simple contoh kodenya sebagai berikut

class Stack(object):
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return len(self)==0
    
    def __len__(self):
        return len(self.items)
    
    def peek(self):
        assert not self.isEmpty(),"Stack sedang kosong"
        return self.items[-1]
    
    def pop(self):
        assert not self.isEmpty(),"Stack sedang kosong"
        return self.items.pop()

    def push(self,data):
        self.items.append(data)
        return self.items
        
    Kita tes dengan menjalankan kode tersebut

Tes stack Python

Kalau untuk bahasa yang lain kurang lebih sama saja tinggal dirubah-rubah sedikit sesuai dengan bahasa pemrograman nya

Mungkin itu saja ya postingan tentang tipe data Stack.Mudah-mudahan anda paham karena Stack ini bukan hal yang berat untuk dipahami.Semoga bisa bermanfaat bagi anda dan bye..





Membuat GUI dengan Java Swing Part 5 (JTextArea)




Lanjut kita ke part 5.Mungkin untuk postingan selanjutnya tidak mengenai java swing dulu tapi postingan yang lain.Tapi,insya allah kapan-kapan kita lanjutin ini java swing.Ok,kali ini kita akan membahas tentang JTextArea.JTextArea mempunyai fungsi yang sama dengan JTextField hanya saja JTextField hanya bisa menginput data untuk satu baris saja sedangkan kalau JTextArea bisa menginput data lebih dari satu baris (kaya catatan)



Contoh kode untuk membuat JTextArea

package mainclass;
import javax.swing.*;
class Contoh {
    
 
public static void main (String[]args) {
  JFrame frame = new JFrame();
   JTextArea ta = new JTextArea("Selamat datang di AoiDroid");
   frame.setSize(300, 400);
   frame.setLayout(null);
   ta.setBounds(10,30,200,200);
   frame.setTitle("Contoh GUI");
   frame.setVisible(true);
   frame.add(ta);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
    
 
}
Harusnya kita akan mendapatkan hasil sebagai berikut



Konstruktor Yang Bisa Anda Pakai

Untuk membuat obyek JTextArea anda bisa memakai konstruktor-konstruktor sebagai berikut



Konstruktor Deskripsi
JTextArea() membuat jtextarea tanpa teks awal
JTextArea(String s) membuat jtextarea dengan teks awal
JTextArea(int baris,int kolom) membuat jtextarea dengan jumlah dan baris kolom yang ditentukan
JTextArea(String s,int baris,int kolom) membuat jtextarea dengan teks,jumlah kolom dan baris yang ditentukan

Penggunaan JTextArea dengan Action Listener

Misalnya saya akan membuat program penghitung kata di sini.Jadi,kira-kira kita akan membutuhkan 4 Label, 1 Button dan 1 TextArea

Contoh kodenya untuk aplikasi penghitung kata

package mainclass;
import javax.swing.*;
import java.awt.event.*;
class Contoh implements ActionListener{
    JFrame frame;
    JTextArea ta;
    JButton b1;
    JLabel l1,l2,l3,l4;
    Contoh(){
         frame = new JFrame();
         ta = new JTextArea("Masukkan kata di sini");
         b1 = new JButton("Hitung kata");
         l1 = new JLabel("Karakter :");
         l2 = new JLabel("0");
         l3 = new JLabel("Kata :");
         l4 = new JLabel("0");
         frame.setSize(300, 450);
   frame.setLayout(null);
   ta.setBounds(20,30,250,250);
   b1.setBounds(50,350,100,40);
   l1.setBounds(20,320,75,20);
   l2.setBounds(100,320,30,20);
   l3.setBounds(145,320,40,20);
   l4.setBounds(190,320,40,20);
   b1.addActionListener(this);
   frame.setTitle("Menghitung Kata");
   frame.setVisible(true);
   frame.add(ta); frame.add(b1);
   frame.add(l1); frame.add(l2);
   frame.add(l3); frame.add(l4);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
 
 
public static void main (String[]args) {
  Contoh c1 = new Contoh();
  
}
    
 public void actionPerformed(ActionEvent e){
   String karakter = ta.getText();
   String kata[] = karakter.split("\\s");\\mensplit berdasarkan spasi
   l2.setText(String.valueOf(karakter.length()));\\tampilkan jml karakter
   l4.setText(String.valueOf(kata.length));\\tampilkan jml kata
 }
}
Harusnya kita akan mendapatkan output seperti ini untuk aplikasi penghitung kata sederhana yang kita buat





Membuat GUI dengan Java Swing Part 4 (JTextField)



Lanjut lagi part ke 4 yaitu tentang JTextField.JTextField merupakan tempat di mana kita bisa menuliskan/menyimpan karakter namun hanya satu baris.



Contoh kode dalam membuatnya :

package mainclass;
import javax.swing.*;
class Contoh{ 
public static void main (String[]args){
   JFrame frame = new JFrame();
   JTextField tf1 = new JTextField("Selamat Malam");//membuat jtextfield langsung dengan tulisannya
   JTextField tf2 = new JTextField("Konbanwa");
   frame.setSize(300, 400);
   frame.setLayout(null);
   tf1.setBounds(150,100, 100, 30);
   tf2.setBounds(150,150, 100, 30);
   frame.setTitle("Contoh GUI");
   frame.setVisible(true);
   frame.add(tf1); frame.add(tf2);//menambahkan jtextfield ke jframe
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

Kode tersebut akan menghasilkan output gui dengan JTextField seperti ini 


Konstruktor dalam membuat obyek JTextField :


Konstruktor Deskripsi
JTextField() membuat jtextfield kosong
JTextField(String s) membuat jtextfield langsung dengan teksnya
JTextField(int kolom) membuat jtextfield dengan jumlah kolom yang ditentukan
JTextField(String s,int kolom) membuat jtextfield dengan teks dan jumlah kolom yang ditentukan

Penggunaan Action Listener Pada JTextField :

Misalnya kita akan membuat aplikasi penjumlahan dan pengurangan sederhana menggunakan button dan textfield.Akan ada 3 textfield (bil pertama,kedua dan hasil) dan 2 button (penjumlahan dan pengurangan)

package mainclass;
import javax.swing.*;
import java.awt.event.*;
class Contoh implements ActionListener{
    JFrame frame;
    JTextField tf1,tf2,tf3;
    JButton b1,b2;
    Contoh(){
         frame = new JFrame();
         tf1 = new JTextField("Bil 1");
         tf2 = new JTextField("Bil 2");
         tf3 = new JTextField();
         b1 = new JButton("+");
         b2 = new JButton("-");
         frame.setSize(300, 400);
   frame.setLayout(null);
   tf1.setBounds(150,100, 100, 30);
   tf2.setBounds(150,150, 100, 30);
   tf3.setBounds(150,200, 100, 30);
   tf3.setEditable(false);//supaya hasil tidak bisa diedit
   b1.setBounds(150,250,50,20);
   b2.setBounds(220,250,50,20);
   b1.addActionListener(this);
   b2.addActionListener(this);
   frame.setTitle("Contoh GUI");
   frame.setVisible(true);
   frame.add(tf1); frame.add(tf2); frame.add(tf3);
   frame.add(b1); frame.add(b2);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
 
 
public static void main (String[]args) {
  Contoh c1 = new Contoh();
  
}
    
 public void actionPerformed(ActionEvent e){
   String bil1 = tf1.getText();//mendapatkan teks bilangan pertama
   String bil2 = tf2.getText();//mendapatkan teks bilangan kedua
   int a = Integer.parseInt(bil1);//convert ke integer
   int b = Integer.parseInt(bil2); 
   int c = 0;
   if(e.getSource() == b1){//jika tombol + yang diklik
       c = a+b;
   }else if(e.getSource() == b2){//jika tombol - yang diklik
       c = a-b;
   }
   String hasil = String.valueOf(c);//convert kembali ke string
   tf3.setText(hasil);tampilkan ke textfield ketiga
 }
}
Cukup panjang yah kodenya.Hasil yang akan kita dapat adalah sebagai berikut



Mungkin itu saja postingannya ya semoga bisa bermanfaat amiin...


Membuat GUI dengan Java Swing Part 3 (JLabel)



JLabel merupakan area persegi panjang yang bisa kita isi dengan tulisan.Untuk contoh cara membuatnya bisa simak di bawah ini



Contoh Kode Java Swing JLabel

package mainclass;
import javax.swing.*;
class Contoh{ 
public static void main (String[]args){
   JFrame frame = new JFrame();
   JLabel label = new JLabel();
   label.setText("Halo");
   frame.setSize(300, 400);
   frame.setLayout(null);
   frame.setTitle("Contoh GUI");
   frame.setVisible(true);
   label.setBounds(40, 30, 100, 300);
   frame.add(label);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

Kalau kode tersebut dilarikan,kita akan mendapatkan tampilan seperti ini pada gui nya



Penggunaan Action Listener Pada JLabel

Kita akan membuat suatu aplikasi di mana saat kita menekan Button maka itu akan mengubah teks JLabel menjadi "Selamat datang di AoiDroid".Ini kodenya (Di sini kita mengimpor java.awt.event)

package mainclass;

import javax.swing.*;
import java.awt.event.*;
class Contoh{ 
public static void main (String[]args){
   JFrame frame = new JFrame();
   JLabel label = new JLabel();
   JButton button = new JButton();
   label.setText("Halo");
   button.setText("Klik");
   button.setBounds(100,200,100,30);
   button.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e){
               label.setText("Selamat datang di AoiDroid");
       }
   });
   frame.setSize(300, 400);
   frame.setLayout(null);
   frame.setTitle("Contoh GUI");
   frame.setVisible(true);
   label.setBounds(100, 250, 190, 40);
   frame.add(label); frame.add(button);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}


Hasil output gui dari kode tersebut







Membuat GUI dengan Java Swing Part 2 (JButton)




Part 2 dalam membuat gui menggunakan java swing adalah kita mencoba memberikan JButton (Tombol) ke frame yang kita telah buat sebelumnya.



Untuk contoh cara membuatnya adalah dengan kode berikut 

package mainclass;

import javax.swing.*;

class Contoh{ 
public static void main (String[]args){
   JFrame frame = new JFrame();
   JButton button = new JButton("Klik");//buat obyek jbutton dan title nya
   frame.setSize(300, 400);//panjang dan lebar frame
   button.setBounds(100, 200, 100, 40);//letak x y,panjang dan lebar buttonn
   frame.setLayout(null);
   frame.setTitle("Contoh GUI");
   frame.setVisible(true);
   frame.add(button);//menambahkan button ke frame
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
	
} 
Kalau tidak ada kesalahan anda bisa melihat output seperti ini 



Membuat GUI dengan Java Swing Part 1 (JFrame)


Bahasa pemrograman java memungkinkan kita untuk membuat GUI (Graphical User Interface) yang menggunakan window untuk pengoperasiannya.Untuk membuat nya kita bisa menggunakan Java Swing (javax.swing.*)

Part selanjutnya :  GUI Java Swing Part 2 (JButton)

Langsung saja ya ke cara membuat gui nya nanti saya terangkan

Untuk part 1 ini kita mulai dari yang paling dasar dulu yaitu JFrame (jendela utamanya)

kode untuk membuatnya adalah sebagai berikut

package mainclass;

import javax.swing.*;//import classnya

class Contoh{ 
public static void main (String[]args){
   JFrame frame = new JFrame();
   frame.setSize(300, 400);//atur panjang dan lebar
   frame.setLayout(null);//nggak pake layout manager
   frame.setTitle("Contoh GUI");//judul frame
   frame.setVisible(true);//biar frame keliatan
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//biar saat di close langsung keluar
}
	
} 
Kalau tidak ada kesalahan,harusnya kode tersebut akan menghasilkan output sebagai berikut kalau di run


Mungkin itu saja part 1 membuat gui menggunakan java silahkan tunggu part ke 2 nya ok







Tips dan Trik Bermain Magic Chess Mobile Legends Bagi Pemula




Lelah bermain ranked tapi gak naik-naik karena anda player solo ? Bosen ketemu random yang mainnya gak jelas ? Kalau begitu anda bisa menyampingkan ranked sejenak dan mencoba mode yang masih terbilang baru di mobile legends yaitu Magic Chess.Magic Chess merupakan mode auto chess yang di mana anda melawan 7 pemain lainnya untuk merebutkan posisi pertama !.Tidak seperti di ranked yang kemenangan itu tergantung dari kerja sama tim, di sini anda sendirilah yang menentukan kemenangan anda !

Di sini yang akan menjadi bidaknya adalah hero-hero dan akan bertarung melawan hero-hero yang dimiliki oleh pemain lawan.Apakah mode ini seru ? Ya,lumayan seru sih dan mode ini bisa menguji kepintaran anda dalam mengatur sinergi,gold maupun slot yang anda miliki.Mode ini juga memiliki rank seperti mode rank pada umumnya yaitu dari Warrior sampai Mythic.dan di sini gak pake bintang ya pakenya poin.Poin di dapat dari posisi finish dalam setiap game.Posisi pertama sampai keempat akan mendapatkan poin plus (poin nambah) sedangkan posisi kelima sampai terakhir (kedelapan) akan mendapatkan poin minus (poin berkurang).

Anda sudah pernah mencoba bermain Magic Chess tapi masih bingung ? Jangan khawatir saya akan mengajari trik-trik dasar dalam bermain Magic Chesss ini.Apa sajakah itu ? Mari kita simak 

1) Tentukan Sinergi Yang Mau Digunakan

Setiap hero memiliki faction nya sendiri-sendiri seperti Weapon Master,Marksman,Mage,Elementalist dll.Jika digabungkan dengan jumlah tertentu maka akan membentuk sinergi yang punya efek tertentu.Misalnya Weapon Master butuh 3/6 untuk mengaktifkan sinerginya,Cyborg 2/4 untuk aktif dll.

Kalau bisa dari awal anda sudah tahu sinergi apa yang anda gunakan.Karena akan sangat susah untuk mengubah sinergi di game ini karena ini bergantung pada hero-hero yang diberikan di shop.Kamu fokus saja dulu pada satu sinergi.Kalau sudah,kamu bisa mencoba membuat sinergi yang lain

2) Perhatikan Interest

Apa sih itu Interest ? Interest merupakan jumlah bintang yang ada di pojok kanan Magic Chess.Interest ini akan memberikan gold tambahan pada akhir setiap ronde.10-20 gold akan memberikan 2 bintang interest dan 20 gold lebih akan memberikan 4 bintang interest.Untuk di awal sih,saya sarankan kalian nabung aja.Pastikan di akhir setiap ronde anda punya minimal 10 gold sehingga anda mendapatkan gold tambahan dari interest

Tapi itu untuk early- mid game ya kalian menabung interest.Kalau sudah late game,kalian jangan peduli lagi dengan yang namanya interest.Bentuklah formasi kalian sebaik mungkin karena blunder sedikit saja di late game bisa menyebabkan player lain untuk comeback

3) Atur Posisi Hero Sebaik Mungkin

Hero-hero melee seperti Weapon Master,Wrestler,Targemen sebaiknya ditempatkan di depan sebagai tahan badan.Hero-hero range seperti mage,mm sebaiknya ditempatkan di belakang supaya mereka bisa free skill/hit.

Posisi hero anda sebaiknya menyesuaikan dari formasi lawan.Contohnya,musuh ada Aurora,Gatotkaca/Odette yang skillnya area jadi formasi nya jangan ngumpul/agak renggang supaya yang mengurangi kemungkinan skill mereka kena/Musuhnya banyak Assassin jadi hero range bisa ditaruh diposisi yang sulit dijangkau karena biasanya Assassin akan melompat ke barisan belakang untuk membunuh backline nya

4) Beli Hero Sesuai Sinergi

Jangan menghabiskan gold anda untuk membeli hero yang gak ada hubungannya dengan sinergi yang mau anda pake

5) Upgrade Level Hero

Kalau saya sih dari pada mengejar bintang 3 yang gak jelas,mending saya ratakan saja semua hero level 2 tapi kalau bisa bintang 3 itu lebih bagus

6) Jangan Panik/Tetap Sabar

Ini sekedar tambahan saja yaitu jangan panik dan tetap fokus dalam permainan.Barangkali anda masih sering kaya hp anda di posisi terbawah terus anda jadi panik dan mainnya jadi gak karuan.Ya,di game ini kita juga bergantung dengan hoki (hero yang diberikan dari shop dan refresh) jadi kita gak bisa gitu menjamin kita akan menang terus di early game.

Pokoknya jangan nyerah karena selama hp anda belum habis anda masih punya kesempatan untuk jadi nomor 1 atau setidaknya posisi 4 supaya poin anda gak minus.
Gak seperti di ranked,yang comeback itu sangat sulit dilakukan, di mode ini kita bisa comeback asalkan sinergi kita banyak yang aktif dan level hero kita udah tinggi-tinggi.Intinya jangan nyerah sampe hp commander anda belum habis

Mungkin itu saja tips yang bisa saya berikan bagi kalian yang baru bermain Magic Chess.semoga bermanfaat dan semangat ya puasanya...