Selasa, 13 November 2012

LATIHAN KONTROL DASAR ( LISTBOX ) VISUAL BASIC 2010

Standard
Keberadaan listbox pada sebuah form dirasa sangat penting mengingat tool ini merupakan tool yang masuk kedalam katagori tool yang sering digunakan, sehingga kita harus menguasai teknik dasarnya. Lagsung saja ke latihan. Buatlah sebuah form dengan desain sebagai berikut :


Terdapat satu textbox yang berguna untuk menginputkan data. Selain textbox juga ada komponen penting yaitu listbox, ada dua listbox yang akan kita gunakan untuk menanmpung data. Selain itu ada juga tombol tombol yang akan digunakan untuk control program. Setelah membuat dan menambahkan elemen - elemen diatas pada form,kemudian beri coding. Berikut coding beserta penjelasan singkat pada bagian komentar :

Tombol tambahkan :
 If TextBox1.Text = "" Then    'Digunakan untuk mendeteksi textbox1 kosong
            MsgBox("Mohon Isikan inputan") 'perintah yang akan dilakukan jika textbox masih kosong dan tombol tambakan ditekan
        End If
        ListBox1.Items.Add(TextBox1.Text) ' menambahkan item dari textbox1 ke listbox1
        TextBox1.Text = "" ' mengosongkan kembali textbox1 setelah item dipindahkan ke listbox

Tombol Pindah :
ListBox2.Items.Add(ListBox1.SelectedItem) ' memindah kan item terpilih dari listbox1 ke listbox2


Tombol Pindah semua :
For Each item In ListBox1.Items
            ListBox2.Items.Add(item)   ' menggunakan perulangan untuk menambah semua item ke list box 2 dari listbox1


Tombol Hapus :
ListBox1.Items.Remove(ListBox1.SelectedItem) 'menghapus item terpilih pada listbox1


Tombol Hapus (Lstbx2) :
ListBox2.Items.Remove(ListBox2.SelectedItem) 'menghapus item

Tombol Hapus Semua :
ListBox2.Items.Clear() ' menghapus semua item pada listbox2

Tombol keluar : 
Me.Dispose() ' keluar



gb Hasil akhir


Demikan semoga berguna bagi pembaca sekalian.

Minggu, 04 November 2012

Tugas III Modifikasi Dan Pembuatan Game Puzzle Sederhana

Standard
Modifikasi Program Penjualan


Pada soal ini mengharuskan saya untuk meng enable  tombol clear dan seluruh inputan ketika tombol isi data ditekan , bersamaan dengan itu tombol isi data dan tutup di nonaktifkan.






















Kejadian yang ke 2 adalah ketika tombol clear ditekan, semua inputan di nonaktifkan sedangkan tombol isi data dan tutup diaktifkan kembali.
   Sebenarnya hanya dengan memakai metode enable= (true/false) sudah cukup untuk menyelesaikan permasalahan diatas, tetapi  tantangannya tidak semudah itu. Metode yang digunakan adalah menggunakan perulangan khususnya for each.
Untuk tobmol isi data saya isi codingnya sebagai berikut :

Dim Control As Windows.Forms.Control
        For Each Control In Me.Controls
            Control.Enabled = Not setatus
        Next ' perulangan untuk control di dalam grup box

        Bttutup.Enabled = setatus   
        Btisi.Enabled = setatus     
        setatus = Not setatus        




       Dimana perulangan digunakan untuk mengaktifkan kontrol form yaitu enabled (pengaktifan) yang bergantung pada nilai boolean dari variabel status yang nilai awalnya “false/0”
kemudian ditambahkan pembalik nilai setatus dengan coding NOT.
              
Pada tombol clear ditambahkan coding :

 Pada tombol clear ditambahkan coding :


Btclear.Enabled = Not setatus
        Btisi.Enabled = setatus
        Bttutup.Enabled = setatus
        Gb1.Enabled = Not setatus    
        setatus = Not setatus 

     Coding tersebut sebenarnaya berfungsi kebalikan dari tombol isi data. Di akhir juga terdapat pembalik nilai ketika tombol ini ditekan.

Proses lengkapnya adalah sebagai berikut : 

coding
Nila status
efek
 start
False (nilai awal)

 ==========================
Bt isi ditekan
=======================
Dim Control As Windows.Forms.Control
        For Each Control In Me.Controls
            Control.Enabled = Not setatus
        Next
 False dalam perulangan mjd true

< setatus = NOT  setatus >
Inputan ( grup box ) diaktifkan
 Bttutup.Enabled = setatus   
Masih bernilai awal (false)
 Tombol tutup dinonaktifkan
Btisi.Enabled = setatus    
Masih bernilai awal (false)
Tombol isi juga dinonaktifkan
setatus = Not setatus
 False menjadi true
Nilai setatus berubah
=======================
 Bt clear ditekan
======================
Btclear.Enabled = Not setatus

True karna di notkan menjadi false
Bt clear di nonaktifkan
Btisi.Enabled = setatus
 true
Bt isi diaktikan
 Bttutup.Enabled = setatus

true
Bt tutup diaktifkan
 Gb1.Enabled = Not setatus    

True mnjadi false (NOT)
Gb1(grupbox) di nonaktifkan
  setatus = Not setatus

false
Setatus direset ke false



Membuat Game Sederhana



Tugas praktikum tiga ini cukup menggelitik, tapi sayangnya saya tidak bisa menyelesaikan tantangan di lab yang berhadiah tiket VVIP  UTS, mmm don’t cry  guys. Okeh, setelah otak atik sana sini ketemu juga algoritma.
Langsung saja, syarat dan ketentuanya sebagai berikut :
       ·         Pada saat pertama program dilalanjakan puzzle siap dengan posisi tertentu.
     ·        Ketika di tekan tombol acak, nomor dari puzzle tersebut mengacak tak karuan sampai ditekan      kembali tombol acak yang berfungsi pula sebagai tombol stop.
      ·         Walaupun acak tetapi tidak diijinkan ada dua atau lebih tombol  yang berangka sama.
      ·         Ketika di tekan tombol yang berdekatan dengan tombol kosong maka tombol tersebut bertukar dengan tombol kosong.
     ·         Aturan pertukarannya adalah vertikal dan horisontal tidak diperbolehkan diagonal maupun melompati kotak lain.
 Penyelesaian :

Acak tombol



 Dengan memasang timer dan sebuah tombol acak dengan coding :
  

Timer dan pengacak :

Selama nilai run true, pengacak akan mengacak sampai nilai run = false.
Rumus acakan saya buat sendiri yaitu 2 dengan 4, 4 dengan 6, 6 dengan 8, 8 saya tukar dengan 1, 1 ditukar dengan 3, 3 ditukar dengan 5, 5 ditukar dengan 7, 7 ditukar dengan 9, kemudian 9 di tukar dengan tombol 2 kembali dengan variabel bantu “ cadangan” terlebih dahulu tentunya.
Cara kerjanya sebagai berikut
Run bertipe boolean yang  diberi nilai awal “false” , run sendiri di not kan agar bisa membalik kondisi awalnya menjadi belawanan.
Ketika tombol acak ditekan timer bekerja dan proses looping ( yang sekaligus mengendalikan proses pengacakan) bekerja serta mengubah properti tombol menjadi “Henti”.
Ketika tombol acak (stop/Henti) ditekan nilai run berubah menjadi false, proses looping berhenti, properti tombol (text) diset menjadi  “acak” kembali sementara tombol puzzle telah teracak tidak karuan, entah bagaimana merapikanya kembali.

Pertukaran :

Dengan mengacu pada tata tertib  diatas dapat kita ambil logika sebagai berikut :
Ketika sebuah tombol ditekan :
  Jika tombol disebelah kiri/kanan/atas/bwah itu kosong (“ ”) maka properti text tombol yang ditekan saya tukar dengan tombol kosong tersebut. Jika tidak ada tombol kosong maka tidak ada instruksi dijalankan.
berikut flowchartnya : 

Logika diatas di tuliskan di setiap tombol dengan jumlah conditional if  yang berbeda, tergantung posisi tombol tersebut. Sebagai comtoh tombol yang di pojok akan memiliki  conditional if yang lebih sedikit dibadingkan yang  berada tengah – tengah kerumunan tombol.
Untuk mendeteksi bahwa puzzle sudah tertata rapi saya tambahakan codding : 
If Bt1.Text = "1" And Bt2.Text = "2" And Bt3.Text = "3" And Bt4.Text = "4" And
             Bt5.Text = "5" And Bt6.Text = "6" And Bt7.Text = "7" And Bt8.Text = "8" And
             Bt9.Text = "" Then
            MsgBox("Selamat anda menang")   
     End If


Coding tersebut saya tanamkan pada tombol terakhir ( tombol  9) mengapa hanya ditombol ini?
Ya tentu saja tombol ini pasti yang terakhir ditekan bukan? Gak percaya mainin aja puzzlenya ‘-.- . Dalam coding tersebut terdapat logika and yang akan bernilai true jika semua syarat terpenuhi, untuk statement yang saya tampilkan hanya " Selamat anda menang" pada message box.

                       
Sebagai tambahan saya tambahkan tombol level mudah dan lumayan sebagai pelengkap.
Coding nya sangat sederhana yaitu hanya menset properti tombol tombol dengan formasi tertentu.

        Tombol ini sangat membantu ketika pengujian program(game) ini, bayangkan kalau tidak ada tombol level mudah, saya harus menyelesaikan game ini sampai merasa bego baru kemudian saya bisa menganalisa apakah game brjalan dengan baik atau tidak dari awal sampai akhir . Selain itu tombol ini juga menarik untuk dicoba, karena level acak selain membuat bosan juga sangat melelahkan tentunya. 
Lepas dari keanehan diatas saya tambahkan pula tombol alternatif menggunakan alt+tombol yang akan dieksekusi untuk variasi codding hanya dengan menambah simbol “&”. Pengubahan properti  ini juga harus diimbangi dengan pengubahan coding pendeteksi puzle selesai, karena atribut text yang dideteki sekarang bartambah karakter "&".

Demikian semoga dapat bermanfaat bagi pembaca. Terima kasih


Coba aja gamenya disini.


coding lengkapnya :


Public Class Form1
    '====================
    'Puzzle challange
    '31 okt 2012
    'by IS1D 2487
    '====================

    Dim run As Boolean = False ' jika di isi true kita harus pencet tombol acak 2x dulu
    Dim acak As Integer
    Dim tampung As String

    Private Sub Bt8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt8.Click
  If Bt9.Text = "" then
            tampung = Bt9.Text
            Bt9.Text = Bt8.Text
            Bt8.Text = tampung
        End If
        If Bt5.Text = "" Then
            tampung = Bt5.Text
            Bt5.Text = Bt8.Text
            Bt8.Text = tampung
        End If
        If Bt7.Text = "" Then
            tampung = Bt7.Text
            Bt7.Text = Bt8.Text
            Bt8.Text = tampung
        End If

     End Sub

    Private Sub Bt9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt9.Click

        If Bt6.Text = "" Then
            tampung = Bt6.Text
            Bt6.Text = Bt9.Text
            Bt9.Text = tampung

        End If
        If Bt8.Text = "" Then
            tampung = Bt8.Text
            Bt8.Text = Bt9.Text
            Bt9.Text = tampung
        End If

        If Bt1.Text = "&1" And Bt2.Text = "&2" And Bt3.Text = "&3" And Bt4.Text = "&4" And
             Bt5.Text = "&5" And Bt6.Text = "&6" And Bt7.Text = "&7" And Bt8.Text = "&8" And
             Bt9.Text = "" Then
            MsgBox("Selamat anda menang") ' tombol 9 pasti yang terakhir di tekan sehingga bisa dimanfaatkan untuk menampilkan message box
        End If

    End Sub


    Private Sub Bt6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt6.Click

        If Bt9.Text = "" Then
            tampung = Bt9.Text
            Bt9.Text = Bt6.Text
            Bt6.Text = tampung
        End If
        If Bt3.Text = "" Then
            tampung = Bt3.Text
            Bt3.Text = Bt6.Text
            Bt6.Text = tampung
        End If
        If Bt5.Text = "" Then
            tampung = Bt5.Text
            Bt5.Text = Bt6.Text
            Bt6.Text = tampung
        End If
       
    End Sub

    Private Sub Bt5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt5.Click

        If Bt6.Text = "" Then
            tampung = Bt6.Text
            Bt6.Text = Bt5.Text
            Bt5.Text = tampung
        End If

        If Bt8.Text = "" Then
            tampung = Bt8.Text
            Bt8.Text = Bt5.Text
            Bt5.Text = tampung
        End If

        If Bt4.Text = "" Then
            tampung = Bt4.Text
            Bt4.Text = Bt5.Text
            Bt5.Text = tampung
        End If

        If Bt2.Text = "" Then
            tampung = Bt2.Text
            Bt2.Text = Bt5.Text
            Bt5.Text = tampung
        End If
       
    End Sub

    Private Sub Bt7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt7.Click

        If Bt8.Text = "" Then
            tampung = Bt8.Text
            Bt8.Text = Bt7.Text
            Bt7.Text = tampung
        End If

        If Bt4.Text = "" Then
            tampung = Bt4.Text
            Bt4.Text = Bt7.Text
            Bt7.Text = tampung
        End If
       
    End Sub

    Private Sub Bt4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt4.Click

        If Bt1.Text = "" Then
            tampung = Bt1.Text
            Bt1.Text = Bt4.Text
            Bt4.Text = tampung
        End If

        If Bt5.Text = "" Then
            tampung = Bt5.Text
            Bt5.Text = Bt4.Text
            Bt4.Text = tampung
        End If

        If Bt7.Text = "" Then
            tampung = Bt7.Text
            Bt7.Text = Bt4.Text
            Bt4.Text = tampung
        End If
       
    End Sub

    Private Sub Bt1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt1.Click

        If Bt2.Text = "" Then
            tampung = Bt2.Text
            Bt2.Text = Bt1.Text
            Bt1.Text = tampung
        End If

        If Bt4.Text = "" Then
            tampung = Bt4.Text
            Bt4.Text = Bt1.Text
            Bt1.Text = tampung
        End If
      
    End Sub

    Private Sub Bt2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt2.Click

        If Bt1.Text = "" Then
            tampung = Bt1.Text
            Bt1.Text = Bt2.Text
            Bt2.Text = tampung
        End If

        If Bt5.Text = "" Then
            tampung = Bt5.Text
            Bt5.Text = Bt2.Text
            Bt2.Text = tampung
        End If

        If Bt3.Text = "" Then
            tampung = Bt3.Text
            Bt3.Text = Bt2.Text
            Bt2.Text = tampung
        End If
      
    End Sub

    Private Sub Bt3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt3.Click

        If Bt2.Text = "" Then
            tampung = Bt2.Text
            Bt2.Text = Bt3.Text
            Bt3.Text = tampung
        End If

        If Bt6.Text = "" Then
            tampung = Bt6.Text
            Bt6.Text = Bt3.Text
            Bt3.Text = tampung
        End If
      
       
    End Sub

    Private Sub btacak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btacak.Click

        run = Not run

        Timer1.Enabled = run
        If run = False Then
            btacak.Text = "Acak"
        Else
            btacak.Text = "Henti"
        End If
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Dim cadangan As String
        Do
            run = Not run
            cadangan = Bt2.Text ' encript random = genap ditukar ke genab baru ganjil ke ganjil
            Bt2.Text = Bt4.Text
            Bt4.Text = Bt6.Text
            Bt6.Text = Bt8.Text
            Bt8.Text = Bt1.Text
            Bt1.Text = Bt3.Text
            Bt3.Text = Bt5.Text
            Bt5.Text = Bt7.Text
            Bt7.Text = Bt9.Text      ' IS1D
            Bt9.Text = cadangan
        Loop Until run = True
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btmudah.Click
        Bt1.Text = "&1"
        Bt2.Text = "&2"
        Bt3.Text = "&3"
        Bt4.Text = "&4"
        Bt5.Text = "&5"
        Bt6.Text = "&6"
        Bt7.Text = ""
        Bt8.Text = "&7"
        Bt9.Text = "&8"
    

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btlumayan.Click
        Bt1.Text = ""
        Bt2.Text = "&1"
        Bt3.Text = "&3"
        Bt4.Text = "&4"
        Bt5.Text = "&2"
        Bt6.Text = "&6"
        Bt7.Text = "&7"
        Bt8.Text = "&5"
        Bt9.Text = "&8"

    End Sub
End Class