hai guyyssss, kali ini laras bakalan bahas tentang komunikasi ethernet, contohnya kirim sms atau chat guys.
Komunikasi Ethernet merupakan salah satu jenis komunikasi yang paling sering ditemui saat ini. Penggunaannya juga beragam, bisa digunakan untuk komunikasi antar PC, PC dengan mikrokontroller, PC dengan PLC, PLC dengan PLC dan sebagainya. Komunikasi Ethernet dapat menggunakan media berupa kabel maupun nirkabel. Media kabel yang digunakan biasanya berupa kabel UTP yang ditiap ujungnya terdapat konektor RJ45, sedangkan yang nirkabel biasanya memanfaatkan router wireless. Untuk mengenali tujuan pengiriman data, komunikasi ini menggunakan IP address dan port. IP Address dianalogikan sebagai kompleks perumahan, dan port dianalogikan sebagai nomor rumah. Jika IP Address dan port yang digunakan asal-asalan, maka paket data yang dikirimkan juga tidak akan pernah sampai ke device tujuan. Pada komunikasi Ethernet terdapat 2 jenis protocol pengiriman data, yaitu TCP dan UDP. Kedua protocol tersebut memiliki kelebihan dan kekurangan masing-masing. Pada praktikum kali ini, kita akan membuat sebuah aplikasi chatting teks sederhana menggunakan protocol UDP.
okey, sekarang lanjut yowww ke praktikumnya
1. Buka Visual studio 2012, pilih new project dan pilih windows form.
2. Susun Form seperti dibawah ini:
3. tambahkan program dibawah ini.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Laras_Komunikasi_Ethernet
{
public partial class Form1 : Form
{
delegate void AddMessage(string message);
string name;
int port = 11000;
const string broadcastAddress= "192.168.0.255"; // IP address tujuan
UdpClient receivingClient = new UdpClient(11000); //port yg digunakan
Assalamualaikum Wr. Wb
hai gaesss, kita coba pengaplikasian dari transmit data yg sudah laras buat sebelumnya yaaa. contohnya ya ini, menyalakan 3 LED dalma arduino (aplikasinya saja)
pertama-tama siapkan visual studio 2012 hehe, habis itu siapkan aplikasi arduino atau HTERM
1. Buka Visual Studio 2012 , pilih new project habis itu namai project anda
2. Susun Form- form seperti punya saya
3. Atur timer 1 di interval properties nya, menjadi 500. lalu, simpan picture sbg LED nya, kalau punya saya memakai warna hitam dan merah. hitam artinya OFF, merah artinya ON
5. Lalu jalankan aplikasi HTERM seperti ini, lalu setting COM berlawanan dengan COM yang terdapat pada visual studio dan setting baud nya menjadi 9600 lalu kemudian klik connect.
hai gaesss, kali ini kita bakaan bahas seperti postingan yang komunikasi serial chapter 1 tapi ini mengirim data. misalkan, aplikasinya itu ada di SMS, pasti sering dong sms-an????? nah itu salah satu contohnya gaess. mau tau gimana caranya?? ayow laras kasih tau:)
Pengiriman data melalui serial port sangat sederhana, cukup menggunakan method Write dengan parameter berupa string yang ingin dikirim, gaesss. Tujuan praktikum ini membuat aplikasi chating antara dua komputer menggunakan port serial.
ikutin ya langkah-langkah nya:
1. Buka solution baru di visual studio 2012 pilih windows form application.
2. Susun Form seperti dibawah ini
3. Komponen Timer ada di Windows Form toolbar. Sedangkan komponen SerialPort ada di Components toolbar. Jangan lupa, setting properties Enabled di komponen Timer menjadi true. Kemudian properties Interval di-setting menjadi 500 ms.
4. Double click tombol (button) dengan text “kirim”. Ketikkan statemen di bawah ini di dalam fungsi ButtonClick :
serialPort1.Write(textBox1.Text);
Kode di atas tujuannya adalah untuk menuliskan isi dari textBox1 ke port serial. Sebelumnya kita harus membuka port dulu dengan statemen :
serialPort1.Open();
Double click untuk timer. Ketikkan statemen di bawah ini di dalam fungsi TimerTick :
if (serialPort1.BytesToRead != 0){
textBox2.Text = serialPort1.ReadExisting();
}
5. Kode di atas tujuannya adalah untuk membaca data yang ada di buffer serial port. Compile dan jalankan program.
6. Buka hyperterminal, kemudian amati data yang tampil pada hyperterminal saat anda mengirim data.
7. Buka Arduino.exe.
8. Ketikkan program dibawah ini pada Arduino IDE.
9. Koneksikan Arduino ke computer, pilih port dan tipe Arduino terlebih dahulu. Kemudian upload program tersebut dengan cara mengeklik tanda .
10. Tunggu sampai ada tulisan “Done Uploading” pada Arduino IDE.
11. Jalankan aplikasi anda, dengan mengatur port serial sesuai dengan port Arduino yang terdeteksi pada computer.
Assalamualaikum Wr. Wb
hai, gaesssss first of all thank you for visiting my beauty blog hehe.
okay, sekarang laras akan memberikan sebuah tutorial mengenai komunikasi serial untuk menerima data. hmm, secara umum sih pengaplikasiannya untuk memonitoring sesuatu, misalnya memonitoring ikan, tumbuhan dan masih banyak lagi pengaplikasiannya.
Secara teorinya mulai dr serial portnya yaaaa, Port merupakan kumpulan jalur elektronik untuk menyalurkan data. Port ada yang untuk input saja, output saja atau input/output. Port dipakai untuk komunikasi antara CPU dengan monitor, keyboard,mouse dll.
Proses pengiriman data dapat langsung sekaligus secara paralel dengan menggunakan beberapa kabel, atau satu-persatu secara berurutan (serial) dengan menggunakan sepasang kabel. Contoh transmisi data secara paralel adalah komunikasi harddisk IDE dengan
CPU, komunikasi printer dengan komputer. Contoh transmisi data secara serial adalah komunikasi harddisk SATA dengan CPU, komunikasi USB dll.
Mikrokontroller umumnya menggunakan standar komunikasi serial RS232 untuk koneksi dengan perangkat lain. Komputer juga memiliki port standar serialport, paralelport, USB, VGA dan PS/2. Pada praktikum ini kita akan mempelajari penggunaan serial port.
sekarang, langsung saja ya ke praktikum nya gaess.
1. Buka visual studio 2012, pilih windows form application, jangan lupa diberi nama filenya gaes
2. Tujuan praktikum ini adalah untuk menerima data dari mikrokontroller melalui port serial. Data yang dikirim oleh mikrokontroller adalah kondisi dari potensiometer. Nilai analog
tegangan akan dikonversi oleh mikro ke nilai digital dalam range 0 - 1023. Kemudian nilai digital ini yang dikirim ke komputer melalui port serial. Program pada mikro (kita akan menggunakan arduino) cukup sederhana:
void setup()
{
Serial.begin(9600);
}
void loop()
{
int sensorValue = analogRead(A1);
delay(500);
Serial.println(sensorValue, DEC);
}
3. Buat solution baru. Susun form dengan control-control seperti terlihat pada gambar:
4. Atur properties "Series" seperti dibawah ini, dan Anda bisa mengubah jenis grafik dengan mengubah ChartType nya.
5. Komponen SerialPort ada di Components toolbar, sedangkan komponen Chart ada di data.
6. Tambahkan program berikut untuk control button1:
if (button1.Text == "Connect") {
button1.Text = "Disconnect";
serialPort1.Open();
richTextBox1.text="";
a=0; (Inisialisai dahulu variabel global)
}
else {
button1.Text = "Connect";
serialPort1.Close();
}
7. Tambahkan program berikut ke event DataReceived-nya serial:
klik serialPort1 > klik event > double klik data received > tambahkan programnya
rxString = serialPort1.ReadLine();
this.Invoke(new EventHandler(DisplayText));
Kita menggunakan method Invoke karena thread untuk receive serial berbeda dengan thread program utama. Padahal object RichTextBox atau Label, tempat kita untuk menampilkan data
serial, terletak di thread utama. Invoke membuat kita dapat melakukan cross-thread. Program di atas akan membuat event DataReceived memanggil event handler baru yang terletak di thread utama, yaitu DisplayText.
8. Untuk method DisplayText, tambahkan program berikut:
Pada postingan
sebelumnya telah laras sharing
tentang karakteristik dasar diode, sebuah piranti dua terminal
(karenanya disebut di-ode)
beserta aplikasinya. Pada bagian
ini akan laras posting karakteristik
piranti tiga terminal atau
lebih dikenal sebagai “transistor”.
Pertama-tama membahas transistor
bipolar atau BJT (Bipolar Junction Transistor). Berikutnya akan kita bahas
transistor unipolar seperti misalnya FET (field-effect transistor).
Dibandingkan dengan
FET, BJT dapat memberikan penguatan
yang jauh lebih besar
dan tanggapan frekuensi
yang lebih baik. Pada
BJT baik pembawa muatan mayoritas maupun pembawa muatan
minoritas mempunyai peranan
yang sama pentingnya.
Gambar 1 Diagram BJT :
a) Jenis n-p-n dan b) Jenis p-n-p
Terdapat dua jenis kontruksi dasar BJT, yaitu jenis n-p-n dan jenis p-n-p. Untuk jenis n-p-n, BJT
terbuat dari lapisan tipis semi konduktor tipe-p
dengan tingkat doping yang
relatif rendah, yang
diapit oleh dua lapisan
semikonduktor tipe-n.
Karena alasan sejarah pembuatannya, bagian di tengah disebut “basis” (base), salah
satu bagian tipe-n (biasanya mempunyai
dimensi yang kecil)
disebut “emitor” (emitter) dan
yang lainya sebagai “kolektor” (collector). Secara skematik kedua jenis
transistor diperlihatkan pada gambar diagram BJT diatas.
Tanda panah
pada gambar 1 menunjukkan
kaki emitor dan
titik dari material tipe-pke
material tipe-n. Perhatikan bahwa untuk jenis n-p-n,
transistor terdiri dari
dua sambungan p-n yang berperilaku
seperti diode. Setiap diode
dapat diberi panjar
maju atau berpanjar mundur, sehingga transistor dapat memiliki empat
modus pengoperasian. Salah satu modus
yang banyak digunakan
disebut “modus normal”,
yaitu sambungan emitor-basis berpanjar
maju dan sambungan kolektor-basis berpanjar
mundur. Modus ini juga sering disebut
sebagai pengoperasian transistor pada “daerah aktif”.
2.Pabrikasi BJT
Pabrikasi BJT dapat dilakukan dengan dua teknik,
yaitu struktur transistor-alloy melalui difusi
dan struktur transistor
planar. Gambar 2.a) diatas
menunjukkan struktur transistor
alloyn-p-n. Kolektor terbuat
dari chip semikonduktor tipe-n dengan ketebalan kurang dari 1 . Daerah basis
dibuat dengan proses difusi kemudian dibuat kontak
logam untuk dihubungkan dengan kaki
basis. Daerah emitor
dibuat dengan teknik alloy
pada daerah basis. Sebagai
hasilnya berupa sebuah
pasangan sambungan p-n
yang dipisahkan oleh daerah basis kira-kira setebal kertas.
Untuk struktur planar (gambar 2.b)), suatu lapisan tipe-n dengan tingkat
doping rendah ditumbuhkan di atas substrat
(tanda +
menunjukkan tingkat doping
sangat tinggi). Setelah melalui
proses oksidasi pada
permukaan, sebuah jendela
(window) dibuka dengan proses
penggerusan (etching) dan suatu pengotor (p) dimasukkan ke kristal dengan proses
difusi untuk membentuk
sambungan (junction). Sekali lagi setelah
melalui reoksidasi, sebuah jendela kecil dibuka untuk proses difusi pembentukan
daerah emitor (n).
Gambar 2 Transistor :
a) Sumber alloy , b) Sumber planar dan c) Simbol rangkaian
Secara
konvensional simbol
transistor n-p-n diperlihatkan pada
gambar 2-c dilengkapi dengan tanda
panah pada emitor yang
menunjukkan aliran muatan positif. Walaupun sebuah
transistor n-p-n akan bekerja
dengan kedua daerah
n dapat
berfungsi sebagai emitor, namun karena kedua
daerah mempunyai tingkat doping dan
geometri yang berbeda, maka daerah n
yang dimaksud harus diberi label.
3.Pengoperasian Transistor
Pada gambar 3-a diperlihatkan keping horizontal transistor jenis n-p-n.
Pengoperasian transistor
dapat diterangkan secara
kualitatif dalam hal
distribusi potensial pada sambungan (gambar
3-b). Sambungan emitor
berpanjar maju, dengan
efek dari tegangan panjar terjadi
penurunan tegangan penghalang
pada sambungan emitor
dan memberi kesempatan pada elektron melakukan injeksi ke basis dimana pada daerah ini miskin
elektron (minoritas).
Sambungan kolektor
berpanjar mundur; sebagai
efek dari pemasangan tegangan panjar akan
menaikkan potensial
penghalang pada sambungan kolektor. Karena daerah
basis sangat tipis, hampir semua
elektron yang terinjeksi
pada basis tersapu ke kolektor dimana
mereka melakukan rekombinasi
dengan lubang yang
“disediakan” dengan pemasangan baterai luar. (Sebenarnya terjadi pengambilan
elektron oleh baterai eksternal,
meninggalkan lubang untuk proses rekombinasi).
Sebagai
hasilnya terjadi transfer arus
dari rangkaian emitor ke
rangkaian kolektor yang besarnya
hampir tidak tergantung
pada tegangan
kolektor-basis. Seperti akan kita lihat,
transfer tersebut memungkinkan pemasangan hambatan
beban yang besar untuk mendapatkan
penguatan tegangan.
Gambar 3 Pengoperasian transistor n-p-n
Gambar 4 Skema pergerakan pembawa muatan pada
pengoperasian transistor n-p-n.
4.Karakteristik DC
Karakteristik DC
dari BJT dapat
diprediksi dengan melihat
aliran pembawa muatan melewati sambungan dan
ke basis. Dengan
sambungan emitor berpanjar
maju dan sambungan kolektor
berpanjar mundur (biasa disebut
operasi normal, pengoperasian di daerah aktif),
gerakan pembawa muatan pada transistor
n-p-n seperti diskemakan pada gambar 4 Komponen terbesar
dari arus emitor (Ï’) terdiri atas
elektron yang mengalir melewati penurunan
tegangan potensial ()
ke
sambungan emitor-basis. Efisiensi emitor (γ)
berharga mendekati satu sehingga
arus hampir terdiri atas
semua elektron yang terinjeksi
dari emitor. Komponen
lain adalah aliran
lubang dari basis yang
juga difasilitasi oleh penurunan tegangan
penghalang tersebut. Daerah basis memiliki tingkat doping yang
lebih rendah dibandingkan
daerah emitor, sehingga arus lubang relatif lebih
rendah. Kedua jenis muatan mengalir
melalui proses difusi.
Elektron
yang “terinjeksi” dari
emitor ke basis
dapat mengalir melalui
sambungan emitor-basis secara bebas karena beberapa
sebab:
i)Tidak ada
tegangan yang melawannya,
ii)Hanya terdapat
jarak yang pendek pada daerah basis (tipis) dan
iii)Hanya
terdapat jumlah lubang yang
relatif rendah sehingga tidak banyak elektron yang
tertangkap lubang dan hilang,
yaitu dengan proses rekombinasi.
Dengan proses pabrikasi transistor yang benar,
kurang lebih 99 - 99,9% electron yang
terinjeksi berhasil mencapai sambungan basis-kolektor (faktor α
biasanya berharga sekitar 0,98).
Elektron tersebut tidak mengalami
kesulitan akibat penurunan tegangan penghalang.
Arus elektron
mendominasi
besarnya arus kolektor. Komponen
lain dari arus kolektor berupa
arus drift melewati
sambungan kolektor-basis
dari pembawa muatan minoritas
hasil generasi termal. Jika
kita memasang tegaangan pada sambungan
emitor-basis, kita
menginjeksi arus yang
diberikan oleh persamaan arus diode
hai temen-temen..udah lama nih gak posting lagi. dan sekarang laras ada tugas lagi nih tentang game yeeeey :D
kali ini laras mau membuat game tic tac toe sederhana guys!! pada tau kan tic tac toe?? itu loh permainan waktu di SD dan SMP yang namanya SOS, kadang-kadang juga ada di SMA/K (kalau lagi bosen aja) hihihi
game ini asik loh guys! ada player1 dan player 2 guys, kalau dulu kan seringnya mainnya di kertas yakan nah sekarang laras buat di komputer nih :D
program ini memakai banyak kemungkinan, jadi laras memakai beberapa case disini.
begini langkah-langkahnya :
1. Buka new project di Visual Studio 2012, jangan lupa diberi nama dan pilih windows application
2. Pilih Label, Button, Picture Box dan Menu Script di toolbox kemudian susun sesuai keinginan anda.
untuk memakai menu strip kita harus mengubah event click semuanya, mulai dari file sampai help. seperti dibawah ini.
3. Kemudian tambahkan gambar X dan O untuk permainannya di resource. seperti ini :
4. Masukkan Codingannya, pertama-tama inisialisasi dahulu variabel globalnya. //Inisialisasi Variabel Global
Image pictureX = Properties.Resources.Capture; // lokasi gambar X
Image pictureO = Properties.Resources.fg; // lokasi gambar O
Image pctr; int count = 0;
Boolean checkX = false, checkO = false, easy = false;
public int pict1 = 0, pict5 = 0, pict9 = 0,
pict2 = 0, pict6 = 0,
pict3 = 0, pict7 = 0,
pict4 = 0, pict8 = 0;
5. Buat fungsi reset untuk mereset aplikasinya.
private void reset()
{
pict1 = pict2 = pict3 = pict4 = pict5 = pict6 = pict7 = pict8 = pict9 = count = 0; //mereset nilai int pict1-pict9
easy = checkX = checkO = false;
// mengembalikan ke gambar awal picture box / kosong
pictureBox1.BackgroundImage = pictureBox2.BackgroundImage =
pictureBox3.BackgroundImage = pictureBox4.BackgroundImage =
pictureBox5.BackgroundImage = pictureBox6.BackgroundImage =
pictureBox7.BackgroundImage = pictureBox8.BackgroundImage =
pictureBox9.BackgroundImage = null;
label1.Text = label2.Text = "0";
// enable semua picture box
List<PictureBox> pctlist = new List<PictureBox>();
foreach (PictureBox pct in this.Controls.OfType<PictureBox>())
{
pctlist.Add(pct);
pct.Enabled = true;
}
}
6. Nonaktifkan atau disable semua picture box ketika hasil score tampil
private void disablepicturebox()
{
List<PictureBox> pctList = new List<PictureBox>();
foreach (PictureBox pct in this.Controls.OfType<PictureBox>())
{
pctList.Add(pct);
pct.Enabled = false;
}
}
7. Nonaktifkan atau disable picture box yang sudah diclick agar player yang lain tidak dapat menggunakan picture box yang sudah dipakai.
private void wasclickedbefore(int pic)
{
switch (pic)
{
case 1: { if (pict1 == 1) pict1++; break; }
case 2: { if (pict2 == 1) pict2++; break; }
case 3: { if (pict3 == 1) pict3++; break; }
case 4: { if (pict4 == 1) pict4++; break; }
case 5: { if (pict5 == 1) pict5++; break; }
case 6: { if (pict6 == 1) pict6++; break; }
case 7: { if (pict7 == 1) pict7++; break; }
case 8: { if (pict8 == 1) pict8++; break; }
case 9: { if (pict9 == 1) pict9++; break; }
default: break;
}
if (easyToolStripMenuItem.Checked == true)
easycomputer_play(pic);
else if (normalToolStripMenuItem.Checked == true && easy == false)
normalcomputer_play(pic);
else if (normalToolStripMenuItem.Checked == true && easy == true)
easycomputer_play(pic);
}
8. Jika memilih level easy seperti ini logika fungsi easy modenya
private void easycomputer_play(int pic)
{
if (pict1 == 0) { pictureBox1.BackgroundImage = pictureO; pict1 = 2; }
else if (pict2 == 0) { pictureBox2.BackgroundImage = pictureO; pict2 = 2; }
else if (pict3 == 0) { pictureBox3.BackgroundImage = pictureO; pict3 = 2; }
else if (pict4 == 0) { pictureBox4.BackgroundImage = pictureO; pict4 = 2; }
else if (pict5 == 0) { pictureBox5.BackgroundImage = pictureO; pict5 = 2; }
else if (pict6 == 0) { pictureBox6.BackgroundImage = pictureO; pict6 = 2; }
else if (pict7 == 0) { pictureBox7.BackgroundImage = pictureO; pict7 = 2; }
else if (pict8 == 0) { pictureBox8.BackgroundImage = pictureO; pict8 = 2; }
else if (pict9 == 0) { pictureBox9.BackgroundImage = pictureO; pict9 = 2; }
}
if (pict1 == 0) pictureBox1.BackgroundImage = pictureO;
pict1 = 2; break;
}
case 2:
{
if (pict3 == 0) pictureBox3.BackgroundImage = pictureO;
pict3 = 2; break;
}
case 3:
{
if (pict7 == 0) pictureBox7.BackgroundImage = pictureO;
pict7 = 2; break;
}
case 4:
{
if (pict9 == 0) pictureBox9.BackgroundImage = pictureO;
pict9 = 2; break;
}
default: break;
}
easy = true;
}
}
10. Kemungkinan Player 1 atau X menang, beginilah fungsi memeriksa ketika User (X) menang:
private void result()
{
if (pictureBox1.BackgroundImage == pictureX &&
pictureBox2.BackgroundImage == pictureX &&
pictureBox3.BackgroundImage == pictureX)
{
MessageBox.Show("X (You) has WON !!!", "Congratulation"); checkX = true;
}
else if (pictureBox4.BackgroundImage == pictureX &&
pictureBox5.BackgroundImage == pictureX &&
pictureBox6.BackgroundImage == pictureX)
{
MessageBox.Show("X (You) has WON !!!", "Congratulation"); checkX = true;
}
else if (pictureBox7.BackgroundImage == pictureX &&
pictureBox8.BackgroundImage == pictureX &&
pictureBox9.BackgroundImage == pictureX)
{
MessageBox.Show("X (You) has WON !!!", "Congratulation"); checkX = true;
}
else if (pictureBox1.BackgroundImage == pictureX &&
pictureBox4.BackgroundImage == pictureX &&
pictureBox7.BackgroundImage == pictureX)
{
MessageBox.Show("X (You) has WON !!!", "Congratulation"); checkX = true;
}
else if (pictureBox2.BackgroundImage == pictureX &&
pictureBox5.BackgroundImage == pictureX &&
pictureBox8.BackgroundImage == pictureX)
{
MessageBox.Show("X (You) has WON !!!", "Congratulation"); checkX = true;
}
else if (pictureBox3.BackgroundImage == pictureX &&
pictureBox6.BackgroundImage == pictureX &&
pictureBox9.BackgroundImage == pictureX)
{
MessageBox.Show("X (You) has WON !!!", "Congratulation"); checkX = true;
}
else if (pictureBox3.BackgroundImage == pictureX &&
pictureBox5.BackgroundImage == pictureX &&
pictureBox7.BackgroundImage == pictureX)
{
MessageBox.Show("X (You) has WON !!!", "Congratulation"); checkX = true;
}
else if (pictureBox1.BackgroundImage == pictureX &&
pictureBox5.BackgroundImage == pictureX &&
pictureBox9.BackgroundImage == pictureX)
{
MessageBox.Show("X (You) has WON !!!", "Congratulation"); checkX = true;
}
else resultO();
}
11. Begitu juga dengan fungsi memeriksa ketika computer (O) menang
private void resultO()
{
if (pictureBox1.BackgroundImage == pictureO &&
pictureBox2.BackgroundImage == pictureO &&
pictureBox3.BackgroundImage == pictureO)
{
MessageBox.Show("O (Computer) has WON !!!", "Congratulation"); checkO =
true;
}
else if (pictureBox4.BackgroundImage == pictureO &&
pictureBox5.BackgroundImage == pictureO &&
pictureBox6.BackgroundImage == pictureO)
{
MessageBox.Show("O (Computer) has WON !!!", "Congratulation"); checkO =
true;
}
else if (pictureBox7.BackgroundImage == pictureO &&
pictureBox8.BackgroundImage == pictureO &&
pictureBox9.BackgroundImage == pictureO)
{
MessageBox.Show("O (Computer) has WON !!!", "Congratulation"); checkO =
true;
}
else if (pictureBox1.BackgroundImage == pictureO &&
pictureBox4.BackgroundImage == pictureO &&
pictureBox7.BackgroundImage == pictureO)
{
MessageBox.Show("O (Computer) has WON !!!", "Congratulation"); checkO =
true;
}
else if (pictureBox2.BackgroundImage == pictureO &&
pictureBox5.BackgroundImage == pictureO &&
pictureBox8.BackgroundImage == pictureO)
{
MessageBox.Show("O (Computer) has WON !!!", "Congratulation"); checkO =
true;
}
else if (pictureBox3.BackgroundImage == pictureO &&
pictureBox6.BackgroundImage == pictureO &&
pictureBox9.BackgroundImage == pictureO)
{
MessageBox.Show("O (Computer) has WON !!!", "Congratulation"); checkO =
true;
}
else if (pictureBox3.BackgroundImage == pictureO &&
pictureBox5.BackgroundImage == pictureO &&
pictureBox7.BackgroundImage == pictureO)
{
MessageBox.Show("O (Computer) has WON !!!", "Congratulation"); checkO =
true;
}
else if (pictureBox1.BackgroundImage == pictureO &&
pictureBox5.BackgroundImage == pictureO &&
pictureBox9.BackgroundImage == pictureO)
{
MessageBox.Show("O (Computer) has WON !!!", "Congratulation"); checkO =
true;
}
checkdraw();
}
12. Kemungkinan ketika game seri. beginilah fungsi memeriksa ketika game seri:
private void checkdraw()
{
if (pictureBox1.BackgroundImage != null && pictureBox2.BackgroundImage != null
&&
pictureBox3.BackgroundImage != null && pictureBox4.BackgroundImage != null
&&
pictureBox5.BackgroundImage != null && pictureBox6.BackgroundImage != null
&&
pictureBox7.BackgroundImage != null && pictureBox8.BackgroundImage != null
&&
pictureBox9.BackgroundImage != null)
MessageBox.Show("Game is DRAW !!!", "Congratulation");
}
13. Buat fungsi score untuk menampilkan score pada label 1 dan 2:
private void score()
{
if (checkX)
{
disablepicturebox();
label1.Text = (int.Parse(label1.Text) + 1).ToString();
}
else if (checkO)
{
disablepicturebox();
label2.Text = (int.Parse(label2.Text) + 1).ToString();
}
}
14. Inilah inti permainannya, event ketika picture box diklik.
private void Picture_Click(object sender, EventArgs e)
{
PictureBox piCTure = (PictureBox)sender;
int pic = Convert.ToInt32((piCTure.Name).Substring(10, 1));
count++;
// switch kondisi masing-masing picture box
switch (pic)
{
case 1:
{
if (pict1 == 0) { pict1++; pictureBox1.BackgroundImage = pctr; }
else if (pict1 == 2) { pictureBox1.Enabled = false; } break;
}
case 2:
{
if (pict2 == 0) { pict2++; pictureBox2.BackgroundImage = pctr; }
else if (pict2 == 2) { pictureBox2.Enabled = false; } break;
}
case 3:
{
if (pict3 == 0) { pict3++; pictureBox3.BackgroundImage = pctr; }
else if (pict3 == 2) { pictureBox3.Enabled = false; } break;
}
case 4:
{
if (pict4 == 0) { pict4++; pictureBox4.BackgroundImage = pctr; }
else if (pict4 == 2) { pictureBox4.Enabled = false; } break;
}
case 5:
{
if (pict5 == 0) { pict5++; pictureBox5.BackgroundImage = pctr; }
else if (pict5 == 2) { pictureBox5.Enabled = false; } break;
}
case 6:
{
if (pict6 == 0) { pict6++; pictureBox6.BackgroundImage = pctr; }
else if (pict6 == 2) { pictureBox6.Enabled = false; } break;
}
case 7:
{
if (pict7 == 0) { pict7++; pictureBox7.BackgroundImage = pctr; }
else if (pict7 == 2) { pictureBox7.Enabled = false; } break;
}
case 8:
{
if (pict8 == 0) { pict1++; pictureBox8.BackgroundImage = pctr; }
else if (pict8 == 2) { pictureBox8.Enabled = false; } break;
}
case 9:
{
if (pict9 == 0) { pict9++; pictureBox9.BackgroundImage = pctr; }
else if (pict9 == 2) { pictureBox9.Enabled = false; } break;
}
default: break;
}
result(); score();
if (easyToolStripMenuItem.Checked == true || normalToolStripMenuItem.Checked
== true)
{
pctr = pictureX;
if (checkX == false && checkO == false) wasclickedbefore(pic);
}
}
15. Ketika user memilih new game pada menu strip, begini programnya:
private void newGameToolStripMenuItem_Click(object sender, EventArgs e)
{
reset(); label1.Text = label2.Text = "0";
}