<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="windows-874" %> http://www.siam2dev.com >> ชุมชนนักพัฒนาซอฟต์แวร์ของไทยแห่งใหม่
เข้าสู่ระบบ ::    
http://www.siam2dev.com >> ชุมชนนักพัฒนาซอฟต์แวร์แห่งใหม่
Home   
News   
Articles   
Programming Zone   
DownLoad   
Contact US   
Links   
Webboard   
ฯลฯ   
 
     สวัสดีครับทุกท่าน ผมพัฒนาเว็บนี้ขึ้นมาโดยมีวัตถุประสงค์ ที่จะเห็นโปรแกรมเมอร์ของไทย ได้มีการคิดค้นและพัฒนาซอฟต์แวร์ ของคนไทย กันมากขึ้น เพื่อเป็นการช่วยชาตของเราให้เจริญยิ่งขึ้นไป (จะได้ไม่ต้องทะเลาะกันอย่างทุกวันนี้ 555 อย่าเครียดครับ ) เนื่องจากเว็บนี้ยังเพิ่งเริ่มต้นนะครับอาจมีเนื้อหาบางงส่วนที่ยังไม่สมบูรณ์จึงขออภัยมา ณ โอกาส นี้ด้วยครับ
 
 
   VB.NET Programming
     สร้างเกมส์ Puzzle Number แบบง่าย ด้วย VB.NET

     Contents ขั้นตอนการสร้างเกมส์
          1. ออกแบบหน้าจอ ดังรูป
          2. กำหนด คุณสมบัติ ต่าง ๆ ของ ออบเจ็กต์
          3. เขียนโปรแกรม (Code)
          3.รันโปรแกรม (RUN)

     - ออกแบบหน้าจอ
          ออกหน้าจอ ดังรูปข้างล่างนี้

          
     - กำหนดคุณสมบัติของ ออบเจ็กต์ต่าง ๆ
          กำหนดคุณสมบัติของคอนโทรลต่าง ๆ ดังนี้

ลำดับ
Object
Property
Value
1
Project
Name
PuzzleNumber
2

Form

Name
Frm PuzzleNumber
BackColor
เลือกสีที่ต้องการ
Text
โปรแกรมเกม PuzzleNumber
    FrmborderStyle FixedDiaglog
3

MainMenu

Name
MainMenu1
4
ประกอบด้วยเมนูต่าง ๆ ดังนี้

File
  - NewGame
  - Exit
Tool
Help

Name

MNewGame
MExit
MTool
MHelp

Text
File
  NewGame
  Exit
Tool
Help
5

GroubBox 1 - GroubBox 3

Name
GroubBox 1 - GroubBox 3 ตามลำดับ
7
Button1 – Button16
Name
b1 – b16 ตามลำดับ
Text
1-15
8
ใน GroubBox 1 ประกอบไปด้วย
LbMovedTimes
LbWin
Lbtime
Name
LbMovedTimes
LbWin
Lbtime
ตามลำดับ
 
     การเขียนโปรแกรม 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


     ผลการรันโปรแกรม



 
:: http://www.siam2dev.com ::
e-mail :: xnattapong@hotmail.com , songneam@gmail.com