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