การเขียนโปรแกรม
coding
ประกาศ ตัวแปร ข้างใต้ บรรทัด
Windows Form Designer generated code
Public
MovedTimes As Int32
Public
WinTimes As Int32
โค้ดตอน โหลดฟอร์มขึ้นมา
Private
Sub Form1_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load
MovedTimes
= 0
LbMovedTimes.Text
= MovedTimes
setBtnEnabled(False)
End Sub
สร้างโปรแกรมย่อย
Sub NewGame เพื่อทำการสุ่ม ตัวเลขบนปุ่ม และให้แสดงตัวเลข
ออกมา บนปุ่ม
Public Sub NewGame()
Dim
i As Int16
Dim
k As Int16
For
k = 1 To 500
'
ทำการวนลูปเพื่อสุมตัวเลข ให้แสดงบนปุ่มต่าง ๆ
Application.DoEvents()
i
= Int(Microsoft.VisualBasic.Rnd * 16) + 1
b1.Text
= Math.Abs((i + 1) Mod 16)
b15.Text
= Math.Abs((i + 2) Mod 16)
b13.Text
= Math.Abs((i + 3) Mod 16)
b14.Text
= Math.Abs((i + 4) Mod 16)
b10.Text
= Math.Abs((i + 5) Mod 16)
b6.Text
= Math.Abs((i + 6) Mod 16)
b9.Text
= Math.Abs((i + 7) Mod 16)
b8.Text
= Math.Abs((i + 8) Mod 16)
b2.Text
= Math.Abs((i + 9) Mod 16)
b4.Text
= Math.Abs((i + 10) Mod 16)
b7.Text
= Math.Abs((i + 11) Mod 16)
b5.Text
= Math.Abs((i + 12) Mod 16)
b12.Text
= Math.Abs((i + 13) Mod 16)
b11.Text
= Math.Abs((i + 14) Mod 16)
b3.Text
= Math.Abs((i + 15) Mod 16)
b16.Text
= Math.Abs((i + 16) Mod 16)
'ถ้า
หาก ปุ่มใหนเป็น เลขศูนย์ ให้เปลี่ยนเป็น ช่องว่างแทน
Select
Case True
Case
b1.Text = 0
b1.Text
= ""
Case
b2.Text = 0
b2.Text
= ""
Case
b3.Text = 0
b3.Text
= ""
Case
b1.Text = 0
b4.Text
= ""
Case
b5.Text = 0
b5.Text
= ""
Case
b6.Text = 0
b6.Text
= ""
Case
b7.Text = 0
b7.Text
= ""
Case
b8.Text = 0
b8.Text
= ""
Case
b9.Text = 0
b9.Text
= ""
Case
b10.Text = 0
b10.Text
= ""
Case
b12.Text = 0
b12.Text
= ""
Case
b13.Text = 0
b13.Text
= ""
Case
b14.Text = 0
b14.Text
= ""
Case
b15.Text = 0
b15.Text
= ""
Case
b16.Text = 0
b16.Text
= ""
End
Select
Next
k
End Sub
'สร้างโปรแกรมย่อย
Sub setBtnEnabled เพื่อทำการสั่งให้ปุ่ม ทั้งหมด ทำงานได้หรือไม่ได้
(Enabeld หรือ Disabled)
Public
Sub setBtnEnabled(ByVal flag As Boolean)
b1.Enabled = flag
b2.Enabled = flag
b3.Enabled = flag
b4.Enabled = flag
b5.Enabled = flag
b6.Enabled = flag
b7.Enabled = flag
b8.Enabled = flag
b9.Enabled = flag
b10.Enabled = flag
b11.Enabled = flag
b12.Enabled = flag
b13.Enabled = flag
b14.Enabled = flag
b15.Enabled = flag
b16.Enabled = flag
End Sub
'สร้างฟังก์ชัน
Function GameOver เพื่อทำการตรวจสอบว่า มีการจบเกมหรือไม่
( ถ้า ทุกปุ่มเรียงลำดับแล้วแสดงว่า จบเกมส์ )
Public Function GameOver()
As Boolean
If
b1.Text = "1" And b2.Text = "2"
And b3.Text = "3" And b4.Text = "4"
And _
b5.Text
= "5" And b6.Text = "6" And b7.Text
= "7" And b8.Text = "8" And _
b9.Text
= "9" And b10.Text = "10" And b11.Text
= "11" And b12.Text = "12" And
_
b13.Text
= "13" And b14.Text = "14" And b15.Text
= "15" And b16.Text = "" Then
Return
True
setBtnEnabled(False)
WinTimes
+= 1
LbWin.Text
= WinTimes
Else
Return
False
End
If
End Function
คำสั่งในเมนู NewGame
-
สั่งให้ทุกปุ่มทำงานได้
-
สั่งให้เริ่มสุ่มตัวเล
-
กำหนดให้ Movetimes เป็น 0
Private
Sub MenuItem2_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MenuItem2.Click
setBtnEnabled(True)
NewGame()
MovedTimes
= 0
LbMovedTimes.Text
= 0
End Sub
'คำสั่งใน
ปุ่ม ที่ 1 16 หลักการคือ ตรวจดู ว่า รอบ ข้าง ๆ ของปุ่ม
นั้นเป็นค่า ว่า หรือไม่ ถ้าเป็นค่าว่า ก็ ให้ สลับ กับตัวมันเอง
ดังตัวอย่าง โค้ดในปุ่ม ที่ 1 ถ้าเป็น ปุ่ม อื่น ๆ ก็เขียนแบบเดียวกัน
เพียงแต่ บางปุ่ม ก็ ตรวจสอบ น้อยกว่า หรือมากกว่าก็แล้วแต่
ตำแหน่งของปุ่ม
คำสั่งใน ปุ่ม ที่ 1 16 หลักการคือ ตรวจดู ว่า รอบ ข้าง
ๆ ของปุ่ม นั้นเป็นค่า ว่า หรือไม่ ถ้าเป็นค่าว่า ก็ ให้
สลับ กับตัวมันเอง ดังตัวอย่าง โค้ดในปุ่ม ที่ 1
Private Sub b1_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles b1.Click
Dim tmp As String
If GameOver() Then
MsgBox("Congratulation ,You win !!!")
Else
MovedTimes += 1
LbMovedTimes.Text = MovedTimes
If b2.Text = "" Then
tmp = b1.Text
b2.Text = tmp
b1.Text = ""
ElseIf b5.Text = "" Then
tmp = b1.Text
b5.Text = tmp
b1.Text = ""
End If
End If
End Sub
'คำสั่งใน
ปุ่ม ที่ 6 หลักการคือ ตรวจดู ว่า รอบ ข้าง ๆ ของปุ่มที่
6 นั้นเป็นค่า ว่า หรือไม่ ถ้าเป็นค่าว่า ก็ ให้ สลับ
กับตัวมันเอง ดังตัวอย่าง โค้ดในปุ่ม ที่ 6
Private Sub b6_Click(ByVal sender
As System.Object, ByVal e As System.EventArgs) Handles
b6.Click
Dim tmp As String
If GameOver() Then
MsgBox("Congratulation ,You win !!!")
Else
MovedTimes += 1
LbMovedTimes.Text = MovedTimes
If b2.Text = "" Then
tmp = b6.Text
b2.Text = tmp
b6.Text = ""
ElseIf b5.Text = "" Then
tmp = b6.Text
b5.Text = tmp
b6.Text = ""
ElseIf b7.Text = "" Then
tmp = b6.Text
b7.Text = tmp
b6.Text = ""
ElseIf b10.Text = "" Then
tmp = b6.Text
b10.Text = tmp
b6.Text = ""
End If
End
If
End Sub
คำสั่งใน
เมนู Exit จบ เกมส์
Private Sub MenuItem3_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles MenuItem3.Click
End
End Sub
|