Lời nói đầu
Cùng với sự phát triển của các lĩnh vực kinh tế, xã hội, nhu cầu ứng dụng công nghệ thông tin ngày càng cao và không ngừng biến đổi. Khi một hệ thống càng phát triển, càng phức tạp thì các phương thức cổ điển truyền thống sẽ trở nên cồng kềnh và khó có thể áp dụng được yêu cầu ngày càng cao của hệ thống. Để xử lý các thông tin một cách nhanh chóng, chính xác, thuận tiện và hiệu quả, đòi hỏi phải có sự hỗ trợ của một công cụ hiện đại, đó chính là công nghệ thông tin.
Sự phát triển nhảy vọt của công nghệ thông tin đã tác động mạnh mẽ đến các hoạt động xã hội, làm thay đổi một cách sâu sắc đến phong cách làm việc của một xã hội. Công nghệ thông tin đã trở thành trụ cột chính của nền kinh tế tri thức. ứng dụng công nghệ thông tin vào các hoạt động giải trí của xã hội được nhiều người quan tâm. Phạm vi ứng dụng của công nghệ thông tin ngày càng mở rộng trên nhiều lĩnh vực: quản lý các hoạt động của con người và xã hội, tự động hóa, truyền thông, giải trí . .
Đời sống của con người ngày càng được nâng cao. Bên cạnh đó nhu cầu về vui chơi giải trí của con người ngày càng được đòi hỏi. Các trò chơi được thiết kế bằng máy tính đã ra đời và đang trên đà phát triển để đáp ứng những nhu cầu đòi hỏi đó của con người. Vì lý do đó tôi đã mạnh dạn chọn đề tài: “áp dụng lý thuyết Game xây dựng một số trò chơi” làm khoá luận tốt nghiệp đại học.
Mục tiêu của chương trình là xây dựng một số trò chơi đơn giản nhằm giúp cho người chơi thư giản sau những giờ học tập, làm việc căng thẳng. Chương trình được tổ chức dưới dạng một chương trình quản lý các trò chơi, do đó người chơi có thể chơi các trò chơi khác nhau, ở các mức độ khác nhau. Sau khi tìm hiểu ngôn ngữ Visual Basic 6.0, cùng bộ công cụ “Bảo Minh UniToolBox", tôi đã xây dựng chương trình quản lý các trò chơi áp dụng lý thuyết Game gồm 4 chương cấu trúc như sau:
Lời nói đầu
Chương I: Giao diện chính chương trình quản lý một số trò chơi.
Chương II: Các trò chơi có bước đi may rủi.
Chương III: Các trò chơi đối kháng.
Chương IV: Các trò chơi khéo léo.
Kết luận
40 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2427 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Khóa luận Áp dụng lý thuyết Game xây dựng một số trò chơi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lêi nãi ®Çu
Chóng ta ®ang sèng trong thêi ®¹i míi, thêi ®¹i cña ngµnh c«ng nghÖ th«ng tin ®ang trªn ®µ ph¸t triÓn. Cã thÓ nãi c«ng nghÖ th«ng tin ®· ®ãng mét vai trß quan träng trong ®êi sèng cña chóng ta. X· héi cµng ph¸t triÓn th× ®ßi hái sù ®ãng gãp cña ngµnh c«ng nghÖ th«ng tin cµng cao. Ngµnh c«ng nghÖ th«ng tin ®· ®ãng gãp rÊt lín vµo c¸c ngµnh kinh tÕ, khoa häc, gi¸o dôc,…. Nh»m gióp con ngêi ngµy cµng chinh phôc ®îc ®Ønh cao cña thÕ giíi.
Chóng ta ®ang sèng trong thêi ®¹i cña nÒn kinh tÕ c«ng nghiÖp ho¸ - hiÖn ®¹i ho¸. §êi sèng cña con ngêi ngµy cµng ®îc n©ng cao. Bªn c¹nh ®ã nhu cÇu vÒ vui ch¬i gi¶i trÝ cña con ngêi ngµy cµng ®îc ®ßi hái. C¸c trß ch¬i ®îc thiÕt kÕ b»ng m¸y tÝnh ®· ra ®êi vµ ®ang trªn ®µ ph¸t triÓn ®Ó ®¸p øng nh÷ng nhu cÇu ®ßi hái ®ã cña con ngêi. V× lý do ®ã t«i ®· m¹nh d¹n chän ®Ò tµi: “¸p dông lý thuyÕt Game trong mét sè trß ch¬i” lµm kho¸ luËn tèt nghiÖp ®¹i häc.
Ch¬ng tr×nh ®îc x©y dùng trªn ng«n ng÷ Visual Basic, lµ ng«n ng÷ t¬ng ®èi míi ë ViÖt nam cïng bé c«ng cô “B¶o Minh UniToolBox", dÔ sö dông, giao diÖn th©n thiÖn vµ ®îc rÊt nhiÒu ngêi biÕt ®Õn.
Em xin ch©n thµnh c¶m ¬n tiÕn sü Phan Lª Na ®· híng dÉn vµ gióp ®ì tËn t×nh em trong thêi gian qua. Qua ®©y em còng xin göi lêi c¶m ¬n c¸c thÇy gi¸o, c« gi¸o trong Khoa C«ng NghÖ Th«ng vµ c¸c b¹n trong líp 43B2 ®· gãp nhiÒu ý kiÕn cho ch¬ng tr×nh nµy.
Víi thêi gian cho phÐp em ®· hoµn thµnh ®Ò tµi. Song trong qu¸ tr×nh thiÕt kÕ vµ ph©n tÝch ch¬ng tr×nh kh«ng tr¸nh khái mét sè h¹n chÕ v× vËy em rÊt mong ®îc sù gãp ý gióp ®ì cña c¸c thÇy c« gi¸o, c¸c b¹n ®Ó ch¬ng tr×nh ®îc hoµn thiÖn h¬n.
Sinh viªn thùc hiÖn
§inh ThuÇn Nho
Lý do chän ®Ò tµi:
Trong trêng §¹i häc chóng ta chØ ®îc häc c¬ b¶n vÒ mét sè ng«n ng÷ lËp tr×nh mang tÝnh lý thuyÕt nhiÒu h¬n lµ øng dông nh Pascal, C, Assembly,...Trong cuéc sèng nhiÒu bµi to¸n qu¶n lý, tÝnh to¸n ®ßi hái ngoµi sù chÝnh x¸c, tÝnh ®óng ®¾n cßn cÇn ph¶i cã tÝnh thÈm mü cao, ch¬ng tr×nh dÔ sö dông. §Ó ®¸p øng ®îc ®iÒu ®ã, em thÊy m×nh cÇn t×m hiÓu thªm mét sè ng«n ng÷ lËp tr×nh trong m«i trêng Windows mµ chóng hç trî rÊt nhiÒu trong qu¸ tr×nh thiÕt kÕ giao diÖn ch¬ng tr×nh. Visual Basic lµ mét trong sè c¸c ng«n ng÷ ®ã.
Visual Basic lµ mét ng«n ng÷ kh¸ míi, hç trî rÊt m¹nh cho ngêi lËp tr×nh, nã cã thÓ hç trî, kÕt nèi ®îc víi nhiÒu ng«n ng÷ kh¸c. Ngoµi phÇn chÝnh lµ lËp tr×nh víi c¬ së d÷ liÖu, c¸c tÝnh n¨ng ®å häa trong Visual Basic còng ®îc øng dông rÊt réng r·i.
Bªn c¹nh ®ã, em cßn sö dông bé c«ng cô “B¶o Minh UniToolBox", víi mét sè tÝnh n¨ng næi tréi sau:
- Lµ ngêi lËp tr×nh, b¹n sÏ quan t©m ®Õn UniCode, nÕu b¹n chän mét m«i trêng ®Ó ph¸t triÓn nµo ®ã hç trî UniCode, ch¼ng h¹n Microsoft.Net. Tuy nhiªn nÕu chóng ta dïng Visual Basic6, mµ vÉn muèn dïng nã, th× chóng ta ph¶i lµm sao?
- Microsoft hç trî cho cóng ta c¸c Activex trong Microsoft Form 2.0: TextBox, Label, ListBox,... Víi c¸c Control nµy ®· cã thÓ xö lý ®îc d÷ liÖu ®¬n gi¶n trªn Unicode. Tuy nhiªn gi÷a c¸c Control chuÈn cña Windows vµ MS Form 2.0 cã nh÷ng nÐt kh«ng gièng nhau, g©y khã kh¨n khi xö lý.
- MÆt kh¸c, ch¾c ch¾n ngêi lËp tr×nh sÏ quan t©m ®Õn giao diÖn cña s¶n phÈm do m×nh viÕt ra: h×nh thøc tr×nh bµy, giao tiÕp víi ngêi dïng, tÝnh hîp lý, dÔ sö dông... nãi c¸ch kh¸c, tÝnh “Th©n thiÖn víi ngêi sö dông”.
§Ó thÓ hiÖn mét phÇn kiÕn thøc nghiªn cøu ®îc, em cµi ®Æt mét ch¬ng tr×nh thÓ hiÖn mét sè trß ch¬i ®¬n gi¶n.
Ch¬ng tr×nh Mét sè trß ch¬i ¸p dông lý thuyÕt Game hy väng nã sÏ gióp Ých phÇn nhá ®Ó th gi¶n sau nh÷ng giê häc tËp hay lµm viÖc c¨ng th¼ng.
Ch¬ng I: C¸c trß ch¬i cã bíc ®i may rñi
I. Trß ch¬i “Bóa - KÐo - GiÊy”
ý tëng thuËt to¸n:
- Chóng ta thêng thÊy c¸c em nhá cã trß ch¬i O¾n tï t×, trß ch¬i cÇn cã 2 ngêi hoÆc 2 ®éi tham gia ®Ó ph©n th¾ng b¹i dµnh quyÒn ®i tríc cho mét trß ch¬i nµo ®ã tiÕp theo, hoÆc chØ ®Ó thö may m¾n cña 2 ngêi. Tuy nhiªn nÕu chØ cã mét ngêi, l¹i ®ang ngåi lµm viÖc bªn m¸y tÝnh, còng muèn thö may rñi cña m×nh? Do ®ã em x©y dùng trß ch¬i nµy, vµ xem m¸y tÝnh nh ngêi ch¬i cßn l¹i.
- Ngêi ch¬i cã thÓ chän 1 trong 3 lùa chän lµ: Bóa, KÐo hoÆc GiÊy.
- Khi ngêi ch¬i ®· lùa chän ph¬ng ¸n cho m×nh, m¸y tÝnh sÏ chän ngÉu nhiªn 1 trong 3 lùa chän ®ã.
- Sau ®ã sÏ kiÓm tra c¸c trêng hîp x¶y ra lµ: M¸y tÝnh th¾ng, ngêi ch¬i th¾ng hoÆc trß ch¬i hßa. Víi c¸c quy t¾c:
+ Bóa th¾ng kÐo
+ KÐo th¾ng giÊy
+ GiÊy th¾ng bóa
+ NÕu m¸y tÝnh vµ ngêi ch¬i cïng chän 1 lùa chän th× trß ch¬i hßa.
- Lu sè lÇn th¾ng cña mçi bªn trong mçi lÇn ch¬i.
Giao diÖn ch¬ng tr×nh:
I_May (Image)
I_Ban
(Image)
cmdBua
cmdGiay
Giao diÖn gåm cã:
- 3 bmBotton: cmdBua, cmdKeo, cmdGiay: lµ 3 lùa chän cña ngêi ch¬i.
- 2 Image: I_Ban, I_May: hiÓn thÞ lùa chän cña ngêi ch¬i vµ cña m¸y tÝnh.
- 2 bmLabel ®Ó ghi ®iÓm ngêi ch¬i: Diem1, Diem2.
- Timer1: ®iÒu khiÓn trß ch¬i: lÊy gi¸ trÞ ngÉu nhiªn cho lùa chän cña m¸y, kiÓm tra c¸c trêng hîp th¾ng, thua.
- Timer2: ®iÒu khiÓn ®iÓm ch¬i.
Code cña ch¬ng tr×nh:
- BiÕn lu ®iÓm cña 2 ngêi ch¬i:
Dim d1 As Integer
Dim d2 As Integer
- Khi ngêi ch¬i lùa chän 1 ph¬ng ¸n, ch¼ng h¹n ngêi ch¬i chän lµ KÐo, th× sÏ ®Æt h×nh KÐo vµo I_Ban, ®ång thêi Timer1 ho¹t ®éng:
Private Sub cmdKeo_Click()
Let I_Ban.Picture = cmdKeo.Picture
Timer1.Enabled = True
End Sub
- Private Sub Timer1_Timer()
Let Timer1.Interval = Timer1.Interval + 5
Randomize Timer
1 X = Int(Rnd * 2) + 1 'Lay ngau nhien cac so >=0 va <1 roi +1, Rnd tra ve 0<gia tri<1
If X = 1 And cmdBua.Picture I_May.Picture Then Let I_May.Picture = cmdBua.Picture Else If X = 1 Then GoTo 1
If X = 2 And cmdKeo.Picture I_May.Picture Then Let I_May.Picture = cmdKeo.Picture Else If X = 2 Then GoTo 1
If X = 3 And cmdGiay.Picture I_May.Picture Then Let I_May.Picture = cmdGiay.Picture Else If X = 3 Then GoTo 1
If Timer1.Interval = 66 Then ' Interval la mot so chia cho 5 du 1
Let Timer1.Enabled = False
Let Timer1.Interval = 1
' Cac truong hop hoa
If I_Ban.Picture = cmdBua.Picture And I_May.Picture = cmdBua.Picture Then MsgBox " KÕt qu¶ hoµ ! ", vbOKOnly + vbInformation, "Hoµ..."
If I_Ban.Picture = cmdKeo.Picture And I_May.Picture = cmdKeo.Picture Then MsgBox " KÕt qu¶ hoµ ! ", vbOKOnly + vbInformation, "Hoµ..."
If I_Ban.Picture = cmdGiay.Picture And I_May.Picture = cmdGiay.Picture Then MsgBox " KÕt qu¶ hoµ ! ", vbOKOnly + vbInformation, "Hoµ..."
' Cac truong hop thang, thua
If I_Ban.Picture = cmdKeo.Picture And I_May.Picture = cmdBua.Picture Then
MsgBox "Bóa th¾ng kÐo! B¹n thua! ", vbOKOnly + vbInformation, "B¹n thua!"
d2 = d2 + 1
End If
If I_Ban.Picture = cmdBua.Picture And I_May.Picture = cmdKeo.Picture Then
MsgBox "Bóa th¾ng kÐo! B¹n th¾ng! ", vbOKOnly + vbInformation, "B¹n th¾ng!"
d1 = d1 + 1
End If
If I_Ban.Picture = cmdBua.Picture And I_May.Picture = cmdGiay.Picture Then
MsgBox "GiÊy th¾ng bóa! M¸y th¾ng! ", vbOKOnly + vbInformation, "B¹n thua!"
d2 = d2 + 1
End If
If I_Ban.Picture = cmdGiay.Picture And I_May.Picture = cmdBua.Picture Then
MsgBox "GiÊy th¾ng bóa! B¹n th¾ng! ", vbOKOnly + vbInformation, "B¹n th¾ng! "
d1 = d1 + 1
End If
If I_Ban.Picture = cmdGiay.Picture And I_May.Picture = cmdKeo.Picture Then
MsgBox "KÐo th¾ng giÊy! B¹n thua! ", vbOKOnly + vbInformation, "B¹n thua!"
d2 = d2 + 1
End If
If I_Ban.Picture = cmdKeo.Picture And I_May.Picture = cmdGiay.Picture Then
MsgBox "KÐo th¾ng giÊy! B¹n th¾ng! ", vbOKOnly + vbInformation, "B¹n th¾ng!"
d1 = d1 + 1
End If
End If
End Sub
- Sau khi kÕt thóc lÇn ch¬i, cÇn lµm tr¾ng ®iÓm cña ngêi ch¬i vµ cña m¸y tÝnh.
Function LamTrang()
Diem1.Visible = False
Diem2.Visible = False
End Function
- Khi kÕt thóc trß ch¬i, lµm tr¾ng ®iÓm:
Private Sub Form_Unload(Cancel As Integer)
LamTrang
End Sub
II. Trß ch¬i “ Vßng vßng - Vã vã”:
ý tëng thuËt to¸n:
- Chóng ta thÊy trß ch¬i d©n gian: Mét vËt nhá ®îc bÝ mËt bá vµo mét trong hai tay cña mét ngêi, vµ ngêi nµy sÏ quay vßng 2 tay, råi ch×a tay ra ®è 1 ngêi kh¸c lùa chän ®îc tay nµo cã vËt nhá n»m trong ®ã.
- ë trß ch¬i nµy, m¸y tÝnh sÏ ®ãng vai trß cña ngêi ®è.
- Khi thùc hiÖn Vßng vã cña c¸c tay, th× vËt sÏ ®îc Èn ®i, vµ lÊy hai gi¸ trÞ ngÉu nhiªn cho vËt t¬ng øng víi vËt ë tay ph¶i hoÆc tay tr¸i.
- øng víi mçi gi¸ trÞ sÏ t¬ng øng víi tõng trêng hîp: lùa chän lµ ®óng hoÆc sai.
Giao diÖn ch¬ng tr×nh:
Sau khi thùc hiÖn Vßng vã:
Ngêi ch¬i nghÜ tay nµo sÏ cã vËt trong ®ã th× sÏ nhÊn vµo tay ®ã, m¸y tÝnh sÏ th«ng b¸o kÕt qu¶ cña lùa chän ®ã.
Giao diÖn gåm cã:
+ 2 Image lµ mét m¶ng: Image(0), Image(1)
+ 2 bmButton: cmdVongVo, cmdThoat
+ 1 Shape: dïng ®Ó vÏ vËt ®îc dÊu vµo tay: Vat
+ 1 bmLabel: dïng ®Ó ®a ra c¸c th«ng b¸o.
Code cña ch¬ng tr×nh:
- BiÕn lu gi¸ trÞ ngÉu nhiªn cho vËt:
Dim Bong As Integer
- Khi click vµo nót cmdVongvo:
Private Sub cmdVongvo_Click()
Vat.Top = 720
Vat.Visible = True
For X = 1 To 20
Vat.Top = Vat.Top + 10
Next X
Vat.Visible = False
cmdVongvo.Enabled = False
For t = 1 To 10
For X = 1 To 20
Image1(0).Left = Image1(0).Left + 150
Image1(1).Left = Image1(1).Left - 150
Next X
For X = 1 To 20
Image1(0).Left = Image1(0).Left - 150
Image1(1).Left = Image1(1).Left + 150
Next X
Next t
Image1(0).Left = 120
Image1(1).Left = 2520
bong = Int(Rnd * 2) + 1 ' LÊy ngÉu nhiªn gi¸ trÞ cho biÕn bong la 1 hoÆc 2
bmLabel1.Caption = " H·y chän tay mµ b¹n nghÜ r»ng qu¶ bãng n»m trong ®ã..."
End Sub
- Khi ngêi ch¬i lùa chän vµo tay mµ m×nh nghÜ se cã vËt n»m trong ®ã:
Private Sub image1_Click(Index As Integer)
If bong = 1 Then bmLabel1.Caption = "Chóc mõng ! B¹n ®· chän ®óng! "
If bong = 2 Then bmLabel1.Caption = " KÐm qu¸, b¹n ®· chän sai!"
Vat.Top = 720
Vat.Visible = True 'Tra bong ve
cmdVongvo.Enabled = True
End Sub
Ch¬ng II: C¸c trß ch¬i ®èi kh¸ng
I. Trß ch¬i Caro:
I.1. Hai ngêi ch¬i víi nhau:
ý tëng gi¶i thuËt:
- ë trß ch¬i nµy chØ giíi h¹n ch¬i víi 3x3 «.
- §Æt t¹i mçi vÞ trÝ 1 Image
- Ngêi ch¬i thø 1 sÏ ®i qu©n X, chän vÞ trÝ ®Æt qu©n, khi ®Õn lît qu©n X ®i th× ¶nh cña Image chÝnh lµ ¶nh cña qu©n X.
- Ngêi ch¬i thø 2 ®i qu©n O, chØ ®îc ®i vµo vÞ trÝ cha cã qu©n nµo ë ®ã.
- C¸c vÞ trÝ ®îc ®Æt vµo ®ã 2 Image t¬ng øng víi c¸c h×nh cña X vµ cña O chång lªn nhau, khi ®Õn lît ngêi ch¬i X hay O click ®Ó ®Æt qu©n lªn ®ã th× qu©n cña m×nh sÏ hiÖn lªn.
- Sau mçi lÇn ®i sÏ kiÓm tra th¾ng. NÕu ®· cã 1 ngêi ch¬i th¾ng th× v¸n ch¬i sÏ dõng l¹i, t¨ng sè ®iÓm cña ngêi ch¬i th¾ng lªn, vµ xãa s¹ch c¸c « ®Ó b¾t ®Çu mét v¸n ch¬i míi.
Giao diÖn ch¬ng tr×nh:
Giao diÖn gåm cã:
- 9 Image ®îc ®Æt t¹i c¸c vÞ trÝ cã qu©n: Image1, ... . Image9
- 9 Image øng víi c¸c ¶nh cña X: X1,X2,... X9
- 9 Image øng víi c¸c ¶nh cña O: O1, O2, ... O9
- 2 bmLabel hiÓn thÞ sè lît th¾ng cña ngêi ch¬i X vµ ngêi ch¬i O: DiemX, DiemO
- 2 bmBotton: + Reset: xãa s¹ch c¸c « ®Ó ch¬i míi
+ Tho¸t: Thãat khái trß ch¬i.
- Timer1: KiÓm tra ngêi ch¬i nµo ®· th¾ng sau mçi lÇn ngêi kh¸c ®i
- Timer2: CËp nhËt ®Øªm cña ngêi ch¬i
- Timer3: §iÒu khiÓn trá chuét cho mçi ngêi ch¬i.
Code ch¬ng tr×nh:
- C¸c biÕn:
Dim ng1 As Boolean 'BiÕn ngêi ch¬i 1
Dim ng2 As Boolean ' BiÕn ngêi ch¬i 2
Dim Diem1 As Integer '§iÓm ngêi ch¬i 1
Dim Diem2 As Integer '§iÓm ngêi ch¬i 2
- Form Load: Lµm Èn c¸c ¶nh cña X vµ O
Private Sub Form_Load()
ng1 = True ' Thiet dat nguoi 1 choi truoc
ng2 = False
X1.Visible = False
X2.Visible = False
X3.Visible = False
X4.Visible = False
X5.Visible = False
X6.Visible = False
X7.Visible = False
X8.Visible = False
X9.Visible = False
O1.Visible = False
O2.Visible = False
O3.Visible = False
O4.Visible = False
O5.Visible = False
O6.Visible = False
O7.Visible = False
O8.Visible = False
O9.Visible = False
End Sub
- Khi mét vÞ trÝ (Image) ®îc Click vµo: nÕu ngêi ch¬i Click vÞ trÝ « ch¬i th× qu©n cña m×nh hiÖn lªn: VÝ dô click vµo Image1
Private Sub image1_Click()
If ng1 = True And O1.Visible = False Then 'Nguoi choi truoc se di quan X
X1.Visible = True
ng2 = True
ng1 = False
Exit Sub
End If
' §Õn lît ngêi ch¬i 2 ®i vµ ®i qu©n O
If ng2 = True And X1.Visible = False Then
O1.Visible = True
ng1 = True
ng2 = False
Exit Sub
End If
End Sub
- Thao t¸c Click vµo 9 Image lµ t¬ng tù nhau, chØ kh¸c tªn cña c¸c « nµy.
- KiÓm tra ngêi ch¬i ®· th¾ng hay cha, nÕu th¾ng th× t¨ng sè ®iÓm lªn, ®ång thêi ph¶i lµm s¹ch c¸c « ®Ó chuÈn bÞ cho v¸n ch¬i míi. KiÓm tra th¾ng th× cÇn kiÓm tra xem cã 3 « nµo cïng X hoÆc cïng O n»m trªn cïng 1 hµng, 1 cét hoÆc ®êng chÐo kh«ng? VÝ dô, ®Ó kiÓm tra qu©n X cã cïng n»m trªn 1 hµng trªn cïng kh«ng?
Private Sub Timer1_Timer()
' Kiem tra xem Nguoi choi X da thang chua?
' Kiem tra xem X co o cac vi tri 1,2,3?
If X1.Visible = True And X2.Visible = True And X3.Visible = True Then
MsgBox "Ngêi ch¬i X ®· th¾ng!", vbOKOnly, " KÕt thóc v¸n ch¬i !"
Timer1.Enabled = False
LamTrang
Diem1 = Diem1 + 1
Timer1.Enabled = True
End If
. . . . . . . .
Trong ®ã, hµm LamTrang sÏ lµm cho c¸c vÞ trÝ trèng, kh«ng cã qu©n cê xuÊt hiÖn ë ®ã:
Function LamTrang()
'Ham lam cho tat ca cac o deu trang
O1.Visible = False
O2.Visible = False
O3.Visible = False
O4.Visible = False
O5.Visible = False
O6.Visible = False
O7.Visible = False
O8.Visible = False
O9.Visible = False
X1.Visible = False
X2.Visible = False
X3.Visible = False
X4.Visible = False
X5.Visible = False
X6.Visible = False
X7.Visible = False
X8.Visible = False
X9.Visible = False
End Function
- Timer 2 sÏ cËp nhËt sè ®iÓm cña tõng ngêi ch¬i:
Private Sub Timer2_Timer()
'Cap nhat diem cua cac nguoi choi
DiemX.Caption = Diem1
DiemO.Caption = Diem2
End Sub
I.2. Ch¬i víi m¸y:
ý tëng gi¶i thuËt:
- Lµ trß ch¬i ®èi kh¸ng, nhng ®«i lóc chØ cã 1 ngêi ch¬i, do ®ã m¸y tÝnh sÏ ®ãng vai trß cña ngêi ch¬i cßn l¹i.
- KÎ 3x3 «, trong c¸c « ®ã ®Æt mét m¶ng c¸c nh·n (Label).
- Dïng mét biÕn ®Ó lu lît ch¬i cã kiÓu Boolean.
- NÕu ban ®Çu chän qu©n cña ngêi ch¬i lµ X th× bíc ®i ®Çu tiªn sÏ g¸n Label cña « ®îc click vµo lµ X. Sau khi ngêi ch¬i ®i, sÏ gäi hµm MayDi.
- Hµm MayDi: KiÓm tra xem ngêi ch¬i ®· cã 2 qu©n nµo n»m trªn 1 hµng, 1 cét hoÆc ®êng chÐo cha, nÕu ®· cã th× bíc ®i cña m¸y tÝnh sÏ chÆn tr¹ng th¸i th¾ng cña ngêi ch¬i. Ngîc l¹i, m¸y tÝnh sÏ ®i 1 bíc ®i ngÉu nhiªn.
- Sau mçi bíc ®i sÏ kiÓm tra xem ngêi ch¬i hay m¸y tÝnh ®· th¾ng hay cha. KiÓm tra th¾ng theo nguyªn t¾c nÕu cã 3 qu©n cïng lµ X hoÆc cïng lµ O n»m trªn hµng ngang, cét däc hoÆc ®êng chÐo lµ th¾ng. NÕu qu©n X hoÆc qu©n O th¾ng th× sÏ t¨ng sè ®iÓm lªn, sau ®ã sÏ gäi hµm ChoiLai: lµm tr¾ng c¸c «, g¸n biÕn LuotChoi=False.
Giao diÖn ch¬ng tr×nh:
Giao diÖn gåm cã:
- M¶ng 9 Label: lblNhan(0), lblNhan(1),. . . , lblNhan(8)
- 2 bmOption: Dïng ®Ó x¸c ®Þnh ngêi ch¬i chän qu©n X hay qu©n O: OptX, OptO.
- 2 bmLabel lu ®iÓm cña ngêi ch¬i vµ cña m¸y tÝnh: DiemX, DiemO.
- bmBotton: cmdChoi: x©y dùng 1 trß ch¬i míi, tøc lµm cho c¸c o trèng.
- bmBotton: cmdThoat: tho¸t khái trß ch¬i.
- Timer1: §iÒu khiÓn ®iÓm cña ngêi ch¬i.
- Timer2: §iÒu khiÓn kiÓu trá chuét cña ngêi ch¬i.
Code ch¬ng tr×nh:
- C¸c biÕn cña ch¬ng tr×nh:
Option Explicit
Private LuotChoi As Boolean
Dim d1 As Integer ' Lu ®iÓm cña ngêi ch¬i 1
Dim d2 As Integer ' Lu ®iÓm cña ngêi ch¬i 2
- Form_Load
Private Sub Form_Load()
Randomize Timer ' LÊy thêi gian nh mét ®¹i lîng ngÉu nhiªn
Call ChoiLai ' Lµm trèng c¸c « cho trß ch¬i míi
End Sub
- Hµm ChoiLai:
Sub ChoiLai()
Dim i As Byte
LuotChoi = False
cmdChoi.Caption = "Ch¬i"
optX.Enabled = True
optO.Enabled = True
For i = 0 To 8
lblNhan(i).ForeColor = &HC0FFC0
lblNhan(i) = Str(i) 'Tra ve 1 thay doi xau bieu dien cua mot so
Next
End Sub
- Khi ngêi ch¬i chän bíc ®i cña m×nh:
Private Sub lblNhan_Click(Index As Integer)
If Not LuotChoi Then Exit Sub
If optX.Value = False And lblNhan(Index).Caption "X" And lblNhan(Index).Caption "O" Then
lblNhan(Index).Caption = "O"
lblNhan(Index).ForeColor = vbRed
Call MayTinhDi
ElseIf optO.Value = False And lblNhan(Index).Caption "X" And lblNhan(Index).Caption "O" Then
lblNhan(Index).Caption = "X"
lblNhan(Index).ForeColor = vbRed
Call MayTinhDi
End If
End Sub
- Thñ tôc MayTinhDi:
Sub MayTinhDi()
Dim MTinh As Byte
Dim Index As Byte
If KTThang = True Then Exit Sub
MTinh = 255
If lblNhan(0).Caption = lblNhan(3).Caption And lblNhan(3).Caption lblNhan(6).Caption And lblNhan(6).Caption "X" And lblNhan(6).Caption "O" Then
MTinh = 6
GoTo DiChuyen
ElseIf lblNhan(3).Caption = lblNhan(6).Caption And lblNhan(3).Caption lblNhan(0).Caption And lblNhan(0).Caption "X" And lblNhan(0).Caption "O" Then
MTinh = 0
GoTo DiChuyen
ElseIf lblNhan(1).Caption = lblNhan(4).Caption And lblNhan(4).Caption lblNhan(7).Caption And lblNhan(7).Caption "X" And lblNhan(7).Caption "O" Then
MTinh = 7
GoTo DiChuyen
ElseIf lblNhan(4).Caption = lblNhan(7).Caption And lblNhan(4).Caption lblNhan(1).Caption And lblNhan(1).Caption "X" And lblNhan(1).Caption "O" Then
MTinh = 1
GoTo DiChuyen
ElseIf lblNhan(2).Caption = lblNhan(5).Caption And lblNhan(5).Caption lblNhan(8).Caption And lblNhan(8).Caption "X" And lblNhan(8).Caption "O" Then
MTinh = 8
GoTo DiChuyen
ElseIf lblNhan(5).Caption = lblNhan(8).Caption And lblNhan(5).Caption lblNhan(2).Caption And lblNhan(2).Caption "X" And lblNhan(2).Caption "O" Then
MTinh = 2
GoTo DiChuyen
ElseIf lblNhan(0).Caption = lblNhan(1).Caption And lblNhan(1).Caption lblNhan(2).Caption And lblNhan(2).Caption "X" And lblNhan(2).Caption "O" Then
MTinh = 2
GoTo DiChuyen
ElseIf lblNhan(1).Caption = lblNhan(2).Caption And lblNhan(1).Caption lblNhan(0).Caption And lblNhan(0).Caption "X" And lblNhan(0).Caption "O" Then
MTinh = 0
GoTo DiChuyen
ElseIf lblNhan(3).Caption = lblNhan(4).Caption And lblNhan(4).Caption lblNhan(5).Caption And lblNhan(5).Caption "X" And lblNhan(5).Caption "O" Then
MTinh = 5
GoTo DiChuyen
ElseIf lblNhan(4).Caption = lblNhan(5).Caption And lblNhan(4).Caption lblNhan(3).Caption And lblNhan(3).Caption "X" And lblNhan(3).Caption "O" Then
MTinh = 3
GoTo DiChuyen
ElseIf lblNhan(6).Caption = lblNhan(7).Caption And lblNhan(7).Caption lblNhan(8).Caption And lblNhan(8).Caption "X" And lblNhan(8).Caption "O" Then
MTinh = 8
GoTo DiChuyen
ElseIf lblNhan(7).Caption = lblNhan(8).Caption And lblNhan(7).Caption lblNhan(6).Caption And lblNhan(6).Caption "X" And lblNhan(6).Caption "O" Then
MTinh = 6
GoTo DiChuyen
ElseIf lblNhan(0).Caption = lblNhan(4).Caption And lblNhan(4).Caption lblNhan(8).Caption And lblNhan(8).Caption "X" And lblNhan(8).Caption "O" Then
MTinh = 8
GoTo DiChuyen
ElseIf lblNhan(4).Caption = lblNhan(8).Caption And lblNhan(4).Caption lblNhan(0).Caption And lblNhan(0).Caption "X" And lblNhan(0).Caption "O" Then
MTinh = 0
GoTo DiChuyen
ElseIf lblNhan(6).Caption = lblNhan(4).Caption And lblNhan(4).Caption lblNhan(2).Caption And lblNhan(2).Caption "X" And lblNhan(2).Caption "O" Then
MTinh = 2
GoTo DiChuyen
ElseIf lblNhan(2).Caption = lblNhan(4).Caption And lblNhan(4).Caption lblNhan(6).Caption And lblNhan(6).Caption "X" And lblNhan(6).Caption "O" Then
MTinh = 6
GoTo DiChuyen
End If
DiChuyen:
If MTinh = 255 Then
For Index = 0 To 9
MTinh = Round(Rnd * 8, 0)
If lblNhan(MTinh).Caption "X" And lblNhan(MTinh).Caption "O" Then Exit For
If Index = 9 Then
MsgBox "V¸n ch¬i nµy ®· hoµ!", vbInformation, ".::Hoµ::."
Exit Sub
End If
Next
End If
If optX.Value = True Then
lblNhan(MTinh).Caption = "O"
ElseIf optO.Value = True Then
lblNhan(MTinh).Caption = "X"
End If
lblNhan(MTinh).ForeColor = vbRed
Call KTThang
End Sub
- Hµm kiÓm tra ngêi ch¬i hay m¸y tÝnh ®· th¾ng cha:
Function KTThang() As Boolean
Dim NguoiThang As String * 1
If lblNhan(0).Caption = lblNhan(3).Caption And lblNhan(3).Caption = lblNhan(6).Caption Then NguoiThang = lblNhan(0).Caption
If lblNhan(1).Caption = lblNhan(4).Caption And lblNhan(4).Caption = lblNhan(7).Caption Then NguoiThang = lblNhan(1).Caption
If lblNhan(2).Caption = lblNhan(5).Caption And lblNhan(5).Caption = lblNhan(8).Caption Then NguoiThang = lblNhan(2).Caption
If lblNhan(0).Caption = lblNhan(1).Caption And lblNhan(1).Caption = lblNhan(2).Caption Then NguoiThang = lblNhan(0).Caption
If lblNhan(3).Caption = lblNhan(4).Caption And lblNhan(4).Caption = lblNhan(5).Caption Then NguoiThang = lblNhan(3).Caption
If lblNhan(6).Caption = lblNhan(7).Caption And lblNhan(7).Caption = lblNhan(8).Caption Then NguoiThang = lblNhan(6).Caption
If lblNhan(0).Caption = lblNhan(4).Caption And lblNhan(4).Caption = lblNhan(8).Caption Then NguoiThang = lblNhan(0).Caption
If lblNhan(2).Caption = lblNhan(4).Caption And lblNhan(4).Caption = lblNhan(6).Caption Then NguoiThang = lblNhan(2).Caption
If NguoiThang = "X" Then
MsgBox "X ®· chiÕn th¾ng!!!", vbInformation, "Ngêi th¾ng..."
d1 = d1 + 1
Call ChoiLai: KTThang = True
ElseIf NguoiThang = "O" Then
MsgBox "O ®· chiÕn th¾ng!!!", vbInformation, "Ngêi th¾ng..."
d2 = d2 + 1
Call ChoiLai: KTThang = True
End If
End Function
II. Trß ch¬i gieo Xóc x¾c:
ý thëng thuËt to¸n:
- Trong thùc tÕ chóng ta thÊy trß ch¬i gieo qu©n xóc x¾c cã 6 mÆt t¬ng øng víi 6 gi¸ trÞ tõ 1 ®Õn 6, cã thÓ 2 hoÆc 4 ngêi ch¬i. Mçi ngêi ch¬i gieo ®îc gi¸ trÞ bao nhiªu th× qu©n cña ngêi ®ã ®îc ®i sè bíc b»ng sè nèt trªn con xóc x¾c. Qu©n cña ngêi nµo vÒ ®Ých tríc th× sÏ chiÕn th¾ng.
- Dùa trªn ý tëng ®ã, ë ch¬ng tr×nh nµy em x©y dùng cho 2 ngêi ch¬i.
- Mét bµn cê 10x10 « ®îc vÏ ra, t¬ng øng trong mçi « sÏ lµ c¸c Image. Do ®ã sÏ lu 1 m¶ng 100 Image.
- Mçi ngêi ch¬i t¬ng øng víi 1 qu©n xanh hoÆc qu©n ®á, ban ®Çu cïng ®øng ë vÞ trÝ xuÊt ph¸t. Mçi qu©n gieo con xóc x¾c, sÏ ®îc di chuyÓn sè « t¬ng øng víi sè nèt mµ m×nh gieo ®îc. Qu©n nµo ®Õn ®Ých tríc sÏ chiÕn th¾ng.
- Tuy nhiªn ®Ó t¨ng thªm ®é khã vµ ®é may rñi cho trß ch¬i, em ®Æt vµo trong bµn cê h×nh c¸c thang vµ c¸c con vËt víi quy luËt: NÕu qu©n cña ngêi ch¬i ®Õn ®îc ®óng vÞ trÝ ch©n cÇu thang th× ®îc lªn « trªn ®Ønh cña cÇu thang. Cßn nÕu qu©n cê cña ngêi ch¬i ®Õn ®óng ®Çu cña con vËt th× sÏ bÞ r¬i xuèng « ë vÞ trÝ ch©n cña con vËt ®ã.
- §Õ gi¶i quyÕt ®îc vÊn ®Ò nµy, sÏ lu c¸c tr¹ng th¸i, hay c¸c vÞ trÝ thø tù ®i vµo 1 tÖp SoDo.TXT. Dßng ®Çu tiªn cña tÖp ®ã sÏ lu tªn cña ¶nh ®îc ®Æt vµo lµm ¶nh nÒn. C¸c dßng tiÕp theo sÏ lu thø tù c¸c bíc ®i. C¸c « b¾t ®Çu tõ sè 0. Ch¼ng h¹n ta ®Æt 1 chiÕc cÇu thang cã vÞ trÝ ch©n cÇu thang lµ 2, ngän cÇu thang ë vÞ trÝ 23. Th× ®Çu vµo cña tÖp Sodo.txt sÏ cã d¹ng:
- TÖp DocAnh.txt dïng ®Ó lu tªn c¸c qu©n ®á, qu©n ®en cña ngêi ch¬i.
- Gieo con xóc x¾c lµ mét ®¹i lîng ngÉu nhiªn, cã gi¸ trÞ tõ 1 ®Õn 6.
Giao diÖn ch¬ng tr×nh:
- Image1: ¶nh bao xung quanh c¸c ¶nh nhá, Image nµy lÊy ¶nh Sodo.bmp lµm ¶nh nÒn.
- M¶ng 100 Image ®îc ®Æt t¬ng øng víi c¸c « vu«ng cña bµn cê, Ovuong(i)
- M¶ng 6 Image ®Ó lu c¸c gi¸ trÞ cña con xóc x¾c: imgThui(i)
- 1 Image ®Ó hiÓn thÞ gi¸ trÞ cña con xóc x¾c khi ®îc gieo: imgGieo
- 2 Image t¬ng øng víi 2 ngêi ch¬i: Nguoi1, Nguoi2
- C¸c textbox ®Ó nhËp tªn ngêi ch¬i, c¸c label ®Ó lu ®iÓm ngêi ch¬i.
- Timer1: ®Ó ®iÒu khiÓn qu¸ tr×nh ch¬i
Code ch¬ng tr×nh:
- C¸c biÕn trong Modul:
Public SoNot As Integer
Public SoONguoi1 As Integer
Public SoONguoi2 As Integer
- C¸c biÕn trong Form:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Dim HinhVuong(99) As Integer
Dim NguoiDi As Integer
Dim XLGame As Boolean
Dim Not1 As Integer
- Form_Load:
Private Sub Form_Load()
SoNot = 1
Dim a As Integer
On Error GoTo 1
Open "Sodo.txt" For Input As #1
Input #1, TenTep
For a = 0 To 99
Input #1, HinhVuong(a)
Next a
Close #1
On Error GoTo 2
Open "docanh.txt" For Input As #1
Input #1, qDo
Input #1, qDen
Close #1
On Error GoTo 0
Let Nguoi1.Picture = LoadPicture(qDo)
Let Nguoi2.Picture = LoadPicture(qDen)
Image1.Picture = LoadPicture(TenTep)
GoTo 3
1 MsgBox "Kh«ng t×m thÊy tÖp Sodo.txt hoÆc kh«ng ®äc ®îc", vbOKOnly + vbInformation, "Th«ng b¸o"
End
2 MsgBox "Kh«ng t×m thÊy tÖp DocAnh.txt hoÆc kh«ng ®äc ®îc", vbOKOnly + vbInformation, "Th«ng b¸o"
End
3
End Sub
- Khi b¾t ®Çu 1 trß ch¬i míi:
Private Sub cmdChoimoi_Click()
Dim d As Integer
If XLGame = True Then
d = MsgBox(" Trß ch¬i ®ang diªnc ra, b¹n co muèn ch¬i l¹i? ", vbYesNo + vbQuestion, "Th«ng b¸o!")
If d = vbYes Then
SoONguoi1 = 0
SoONguoi2 = 0
End If
If d = vbNo Then
Exit Sub
End If
End If
If txtTen1.Text = "" Or txtTen2.Text = "" Then
MsgBox "B¹n ph¶i nhËp tªn 2 ngêi ch¬i!", vbOKOnly + vbInformation, "Th«ng b¸o!"
txtTen1.SetFocus
Exit Sub
End If
txtTen1.Locked = True
txtTen2.Locked = True
MsgBox "Trß ch¬i míi ®· b¾t ®Çu! ", vbOKOnly + vbInformation, "Mêi b¹n ®i"
NguoiDi = 1
Nguoi1.Left = OVuong(0).Left
Nguoi1.Top = OVuong(0).Top
Nguoi2.Left = OVuong(0) - 5
Nguoi2.Top = OVuong(0).Top
Nguoi1.Visible = True
Nguoi2.Visible = True
XLGame = True
End Sub
- Khi thùc hiÖn gieo con xóc x¾c:
Private Sub cmdGieo_Click()
If XLGame = False Then Exit Sub
If Timer1.Enabled = True Then Exit Sub
Randomize Timer
Not1 = Int(Rnd * 6) + 1
imgGieo.Picture = imgThui(Not1 - 1)
Timer1.Enabled = True
End Sub
- Timer1:
Private Sub Timer1_Timer()
If Not1 = 0 Then
Timer1.Enabled = False
If NguoiDi = 1 Then Let NguoiDi = 2 Else NguoiDi = 1
Exit Sub
End If
If NguoiDi = 1 Then
If SoONguoi1 = 99 Then
MsgBox "Ngêi ch¬i 1 chiÕn th¾ng! ", vbOKOnly + vbInformation, "Chóc mõng! "
Timer1.Enabled = False
XLGame = False
SoONguoi1 = 0
SoONguoi2 = 0
Exit Sub
End If
SoONguoi1 = SoONguoi1 + 1
Nguoi1.Left = OVuong(SoONguoi1).Left
Nguoi1.Top = OVuong(SoONguoi1).Top
Not1 = Not1 - 1
If Not1 = 0 Then
If SoONguoi1 = 99 Then
MsgBox "Ngêi ch¬i 1 ®· chiÕn th¾ng! ", vbOKOnly + vbInformation, "Chóc mõng! "
Timer1.Enabled = False
XLGame = False
SoONguoi1 = 0
SoONguoi2 = 0
Exit Sub
End If
SoONguoi1 = HinhVuong(SoONguoi1)
Nguoi1.Left = OVuong(SoONguoi1).Left
Nguoi1.Top = OVuong(SoONguoi1).Top
XucXac.Caption = " Ngêi ®i : " & txtTen1.Text
lblSo1.Caption = "Sè « ®· ®i: " & SoONguoi1
Exit Sub
End If
End If
If NguoiDi = 2 Then
If SoONguoi2 = 99 Then
MsgBox "Ngêi ch¬i 2 ®· chiÕn th¾ng! ", vbOKOnly + vbInformation, "Chóc mõng! "
Timer1.Enabled = False
XLGame = False
SoONguoi1 = 0
SoONguoi2 = 0
Exit Sub
End If
SoONguoi2 = SoONguoi2 + 1
Nguoi2.Left = OVuong(SoONguoi2).Left
Nguoi2.Top = OVuong(SoONguoi2).Top
Not1 = Not1 - 1
If Not1 = 0 Then
If SoONguoi2 = 99 Then
MsgBox "Ngêi ch¬i 2 ®· chiÕn th¾ng! ", vbOKOnly + vbInformation, "Chóc mõng! "
Timer1.Enabled = False
XLGame = False
SoONguoi1 = 0
SoONguoi2 = 0
Exit Sub
End If
SoONguoi2 = HinhVuong(SoONguoi2)
Nguoi2.Left = OVuong(SoONguoi2).Left
Nguoi2.Top = OVuong(SoONguoi2).Top
XucXac.Caption = " Ngêi ®i : " & txtTen2.Text
lblSo2.Caption = "Sè « ®· ®i: " & SoONguoi2
Exit Sub
End If
End If
End Sub
Ch¬ng III: C¸c trß ch¬i khÐo lÐo
I. Trß ch¬i “ T¸m qu©n cê”
ý tëng thuËt to¸n:
- Mét bµn cê gåm 8x8 «. Cã 8 qu©n cê, ngêi ch¬i ph¶i lµm sao ®Ó ®Æt hÕt 8 qu©n cê vµo bµn cê víi quy t¾c: khi 1 qu©n cê ®îc ®Æt th× c¸c « n»m trªn hµng ngang, cét däc, ®êng chÐo sÏ bÞ b«i mµu kh¸c do ®ã kh«ng ®Æt ®îc qu©n cê tiÕp theo vµo ®ã.
- §Ó ®Æt 1 qu©n cê vµo bµn cê th× ngêi ch¬i gi÷ chuét vµo qu©n cê vµ kÐo ®Æt vµo « muèn ®Æt.
- NÕu qu©n cê ®· ®Æt th× cã thÓ ®Æt l¹i b»ng c¸ch nh¸y ®óp vµo qu©n cê ®ã.
- C¸c « cña bµn cê lµ mét m¶ng 64 PictureBox.
- CÇn x©y dùng c¸c thñ tôc ®Ó ®Æt qu©n cê, ®ång thêi sau khi ®Æt 1 qu©n cê vµo bµn cê th× cÇn pha mµu kh¸c cho c¸c « n»m trªn hµng, cét vµ ®êng chÐo cña « ®ã.
- CÇn kiÓm tra c¸c vÞ trÝ cã thÓ ®Æt ®îc qu©n cê, ®ã lµ c¸c « cha cã qu©n nµo ë ®ã c¶, kiÓm tra nÕu ngêi ch¬i ®Æt hÕt ®îc 8 qu©n cê vµo bµn cê.
Giao diÖn trß ch¬i:
Giao diÖn gåm cã:
- 3 bmButton: + cmdMoi: B¾t ®Çu trß ch¬i míi
+ cmdHDan: Híng dÉn quy t¾c cho ngêi ch¬i.
+ cmdThoat: Tho¸t khái trß ch¬i.
- 1 bmLabel: dïng hiÓn thÞ sè qu©n cßn l¹i cha ®Æt vµo bµn cê.
- 1 PictureBox: HiÓn thÞ qu©n cê ®Ó ngêi ch¬i kÐo vµ ®Æt vµo bµn cê.
- M¶ng 64 PictureBox: ®Æt vµo 64 « cña bµn cê.
Code ch¬ng tr×nh:
- C¸c biÕn chung cña ch¬ng tr×nh:
Option Explicit
Dim a(64) As Integer
Dim Co As Integer
- X©y dùng hµm ®Ó phau mµu cho c¸c « trong c¸c trêng hîp:
+ NÕu ®Æt 1 qu©n vµo th× mµu c¸c « ë hµng ngang, cét däc, ®êng chÐo sÏ chuyÓn thµnh mµu ®á.
+ NÕu gë bá 1 qu©n ra th× c¸c « liªn quan sÏ chuyÓn thµnh mµu tr¾ng.
+ Khi mét trß ch¬i míi ®îc b¾t ®Çu th× c¸c « cña bµn cê còng lµ mµu tr¾ng:
Function PhaMau()
Dim i As Integer
lblSoquan.Caption = CStr(Co)
For i = 0 To 63
Pic(i).Picture = LoadPicture()
If a(i) = 1 Then 'a(i) = 1 se duoc pha mau do
Pic(i).BackColor = QBColor(12)
ElseIf a(i) = 2 Then ' a(i) = 2 thi quan co duoc dat vao
Pic(i).Picture = Quanco.Picture
Else ' Con lai thi de nen mau trang
Pic(i).BackColor = QBColor(15)
End If
Next i
End Function
- Khi b¾t ®Çu mét trß ch¬i míi, cÇn khëi t¹o sè qu©n cê, pha mµu cho bµn cê:
Private Sub cmdMoi_Click()
Dim i As Integer
Co = 8 'Khoi tao 8 quan co
For i = 0 To 63
a(i) = 0
Next i
PhaMau
End Sub
- Hµm ®Ó kiÓm tra xem khi mét qu©n cê ®îc ®Æt th× c¸c « nµo sÏ ®îc chuyÓn thµnh mµu ®á:
Function KiemTra()
Dim i As Integer
Dim j As Integer
Dim cot As Integer
Dim dong As Integer
Dim coti As Integer
Dim dongi As Integer
For j = 0 To 63
If a(j) = 2 Then
dong = Int(j / 8)
cot = j Mod 8
For i = 0 To 63
If i j Then
dongi = Int(i / 8)
coti = i Mod 8
If dongi = dong Or coti = cot Or dongi - coti = dong - cot Or dongi + coti = dong + cot Then
a(i) = 1
End If
End If
Next i
End If
Next j
End Function
- Thñ tôc ®Ó ®Æt 1 qu©n cê vµo bµn cê, cÇn kiÓm tra xem « ®Æt vµo cã ®îc ®Æt kh«ng, nÕu ®îc phÐp ®Æt th× gi¶m sè qu©n cê ®i 1. NÕu ®Æt hÕt th× th«ng b¸o trß ch¬i ®· chiÕn th¾ng.
Private Sub Pic_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single)
If a(Index) 0 Then
MsgBox "B¹n kh«ng thÓ ®Æt qu©n cê ë ®©y!", vbCritical
Exit Sub
End If
a(Index) = 2
KiemTra
Co = Co - 1
If Co = 0 Then
PhaMau
MsgBox "B¹n ®· chiÕn th¾ng !", vbExclamation
Exit Sub
End If
PhaMau
End Sub
- §Ó gì 1 qu©n cê ra khái bµn cê:
Private Sub Pic_DblClick(Index As Integer) ' Click dup de di chuyen quan co lai
Dim i As Integer
Dim dong As Integer
Dim cot As Integer
Dim dongi As Integer
Dim coti As Integer
If a(Index) 2 Then
MsgBox "Kh«ng cã qu©n cê nµo ®Ó chuyÓn l¹i", vbCritical
Exit Sub
End If
dong = Int(Index / 8) 'int chuyen 8.4 thanh 9
cot = Index Mod 8
For i = 0 To 63 ' O thu i va cac o nam tren duong cheo, hang ngang, doc thi gan a(i)=0
dongi = Int(i / 8)
coti = i Mod 8
If dongi = dong Or coti = cot Or dongi - coti = dong - cot Or dongi + coti = dong + cot Then
a(i) = 0
End If
Next i
KiemTra
Co = Co + 1
PhaMau
End Sub
II. Trß ch¬i “Zic – Zac “:
ý thëng thuËt to¸n:
- Mét h×nh ®îc vÏ ra h×nh dung nh 1 con r¾n ®ang ®i s¨n måi, 1 h×nh kh¸c lµm måi cho con r¾n ®ã. C¸i måi sÏ xuÊt hiÖn ngÉu nhiªn ë 1 vÞ trÝ nµo ®ã trªn Form. Ngêi ch¬i sÏ ®iÒu khiÓn con r¾n ®Ó b¾t con måi. NÕu con r¾n ch¹m vµo con måi th× ngêi con r¾n sÏ dµi ra. Mçi lÇn ¨n ®îc 1 måi t¬ng øng víi 1 ®iÓm. Khi ®· ¨n ®îc mét måi th× måi sÏ xuÊt hiÖn ngÉu nhiªn t¹i 1 trÝ kh¸c. Con r¾n mçi lóc mét dµi ra. NÕu ngêi ch¬i ®iÒu khiÓn con r¾n kh«ng khÐo lÐo ®i ra khái kh«ng gian trß ch¬i th× trß ch¬i kÕt thóc.
- §Ó mçi lÇn con r¾n ¨n ®îc måi, con r¾n sÏ dµi thªm ra. Do ®ã, sÏ x©y dùng con r¾n lµ mét m¶ng c¸c Shape, h×nh vu«ng. Ban ®Çu m¶ng nµy cã 1 phÇn tö, cø mçi lÇn s¨n ®îc måi th× sè phÇn tö cña m¶ng nµy t¨ng lªn.
Giao diÖn ch¬ng tr×nh:
Giao diÖn gåm cã:
- 1 bmButton: cmdBatdau: B¾t ®Çu trß ch¬i, khi trß ch¬i b¾t ®Çu th× Nót nµy ph¶i Èn ®i
- 1 Shape lµm con måi
- 1 m¶ng c¸c Shape lµm con r¾n.
- 1 Image (Èn) ®Ó cho con måi chuyÓn ®éng ngÉu nhiªn cïng Image nµy
- 1 Timer: ®Ó ®iÒu khiÓn trß ch¬i.
Code ch¬ng tr×nh:
- Thñ tôc ®Ó b¾t c¸c phÝm mòi tªn ®Ó ®iÒu khiÓn con r¾n ®i s¨n måi.
- Timer1: ®iÒu khiÓn c¸c trêng hîp s¨n ®îc måi ( Tõ 4 phÝa cña con måi)
III. Trß ch¬i N2 - 1 sè (N = 4):
ý tëng thuËt to¸n:
- Cã 16 « vu«ng, cã 15 ch÷ sè tõ 1 ®Õn 15 n»m trªn c¸c « vu«ng, cã 1 « trèng. Sau ®ã x¸o trén c¸c « nµy, ngêi ch¬i ph¶i s¾p xÕp l¹i sao cho ®óng víi trËt tù ban ®Çu. Víi quy t¾c s¾p xÕp nh sau: ¤ trèng cã thÓ dÞch lªn, xuèng, tr¸i, ph¶i. Khi dÞch th× gi¸ trÞ con sè cña « ®ã vµ « trèng ®æi chç cho nhau.
- §Ó dÞch 1 « c¹nh « trèng th× ta nh¸y vµo « ®ã, gi¸ trÞ « nµy vµ « trèng ®æi chç cho nhau. Ta cÇn kiÓm tra c¸c vÞ trÝ nµo trong c¸c « cã thÓ dÞch lªn, dÞch xuèng, tr¸i, ph¶i.
- Trß ch¬i kÕt thóc khi ngêi ch¬i s¾p xÕp l¹i ®óng theo trËt tù ban ®Çu.
Giao diÖn ch¬ng tr×nh:
Giao diÖn gåm cã:
- 16 bmButton: C1. . . C16
- 2 bmButton: + cmdXaoTron: Thùc hiÖn viÖc x¸o trén c¸c sè khi b¾t ®Çu trß ch¬i.
+ cmdThoat: Tho¸t khái ch¬ng tr×nh.
- 1 bmLabel: HiÓn thÞ thêi gian ch¬i cña ngêi ch¬i.
- 1 Timer: §iÒu khiÓn thêi gian.
Code ch¬ng tr×nh:
- Thñ tôc thùc hiÖn viÖc x¸o trén ngÉu nhiªn.
- X©y dùng c¸c sù kiÖn khi nh¸y vµo tõng « mét c¹nh « trèng.
KiÓm tra th¾ng.
IV. Trß ch¬i nÐm bom:
ý tëng thuËt to¸n:
- Dïng c¸c Shape h×nh ch÷ nhËt vÏ nªn c¸c thµnh phè víi c¸c tßa nhµ cã ®é cao kh¸c nhau. Mét m¸y bay chuyÓn ®éng ngang, hÕt mçi lÇn bay l¹i quay vÒ vÞ trÝ cò nhng h¹ thÊp h¬n. Lóc ®ang bay cã thÓ th¶ bom xuèng c¸c tßa nhµ, mçi tßa nhµ bÞ tróng bom sÏ bÞ sôp ®i 1 ®é cao bao nhiªu ®ã. NÕu khi m¸y bay nÐm bom cha hÕt mµ h¹ xuèng ch¹m vµo nãc c¸c tßa nhµ th× m¸y bay sÏ bÞ ch¸y vµ trß ch¬i kÕt thóc. NÕu c¸c tßa nhµ ®Òu bÞ sôp c¶ th× ngêi ch¬i ®· chiÕn th¾ng. Trong qu¸ tr×nh ch¬i sÏ tÝnh ®iÓm cho ngêi ch¬i.
- Ngêi ch¬i cã thÓ chän møc ®é khã cña trß ch¬i, møc ®é cµng khã th× tèc ®é cña m¸y bay bay cµng nhanh. Ngoµi ra tríc lóc ch¬i, ngêi ch¬i cã thÓ lùa chän c¸c thµnh phè kh¸c nhau víi c¸c ®é cao kh¸c nhau.
Giao diÖn ch¬ng tr×nh:
Giao diÖn gåm cã:
- C¸c Shape ®îc dïng lµm c¸c tßa nhµ.
- C¸c Timer: ®iÒu khiÓn m¸y bay, ®iÒu khiÓn bom, ®iÒu khiÓn tuyÕt r¬i, ®iÒu khiÓn m¸y bay bÞ ch¸y th× xuÊt hiÖn cïng ®¸m khãi, ®iÒu khiÓn c¸c tßa nhµ bÞ nÐm bom.
V. Trß ch¬i “GhÐp sè”:
ý tëng thuËt to¸n:
- Mét m¶ng 152 Image ®îc xÕp chång lªn nhau theo thø tù ( Nh giao diÖn). SÏ sinh ra ngÉu nhiªn c¸c Image nµy lµ c¸c ¶nh sè tõ 1 ®Õn 10, nÕu ngêi ch¬i thÊy cã 2 ¶nh nµo cïng gi¸ trÞ nhng nh×n thÊy nhau (Kh«ng bÞ che) th× nhÊn chuét vµo 2 ¶nh nµo th× 2 ¶nh nµy sÏ mÊt khái trß ch¬i. NÕu ngêi ch¬i chän ®îc hÕt c¸c Image nµy th× sÏ chiÕn th¾ng. Cßn nÕu ®Ó nh÷ng ¶nh cßn l¹i mµ ë thÕ bÞ che mµ kh«ng gì ®îc th× trß ch¬i sÏ thua.
- Khi sinh ngÉu nhiªn c¸c ¶nh sè nµy th× ph¶i ®¶m b¶o cã ch½n c¸c sè b»ng nhau th× míi cã thÓ gì ®îc hÕt.
Giao diÖn ch¬ng tr×nh:
KÕt luËn
§Ò tµi nµy cã thÓ ®îc ®ãng gãi vµ ®a vµo thùc tÕ bëi nã gän nhÑ.
Qua qu¸ tr×nh t×m hiÓu lý thuyÕt vµ thùc tÕ ®· ®a ra ®îc mét sè trß ch¬i cã tÝnh may m¾n, mét sè trß ch¬i dùa trªn ý tëng trß ch¬i d©n gian vµ mét sè trß ch¬i ®ßi hái sù khÐo lÐo cña ngêi ch¬i.
* Híng nghiªn cøu:
Ngoµi c¸c trß ch¬i ®¬n gi¶n cÇn x©y dùng c¸c trß ch¬i cã chiÒu s©u h¬n, trß ch¬i mang nhiÒu “thuËt to¸n” h¬n.
MÆc dï ®· hÕt søc cè g¾ng nhng do lÇn ®Çu tiªn ®i theo lÜnh vùc trß ch¬i, tµi liÖu lý thuyÕt trß ch¬i l¹i kh«ng cã nhiÒu, do ®ã kh«ng thÓ tr¸nh khái nh÷ng sai sãt rÊt mong ®îc sù gãp ý cña c¸c thÇy c« gi¸o cïng toµn thÓ c¸c b¹n sinh viªn.
Vµ cuèi cïng em xin ch©n thµnh c¶m ¬n c¸c thÇy c« gi¸o trong khoa C«ng nghÖ th«ng tin, c¸c b¹n sinh viªn trong líp 43B vµ nhÊt lµ TiÕn sü Phan Lª Na ®· tËn t×nh gióp ®ì em hoµn thµnh luËn v¨n tèt nghiÖp nµy.
Tµi liÖu tham kh¶o
[1] Phan Lª Na, Chuyªn ®Ò lý thuyÕt Game, Khoa C«ng nghÖ th«ng tin, §¹i häc Vinh.
[2] Hoµng H÷u ViÖt, Bµi gi¶ng Visual Basic 6.0, Khoa C«ng nghÖ th«ng tin, §¹i häc Vinh
[3] NguyÔn ThÞ Ngäc Mai, Microsoft Visual Basic 6.0, Nhµ xuÊt b¶n Gi¸o dôc.
[4] Ph¹m H÷u Khang, Kû x¶o lËp tr×nh VB 6.0, Nhµ xuÊt b¶n Lao ®éng, 2003
Môc lôc
Lêi nãi ®Çu ...................................................................................................……..1
Lý do chän ®Ò tµi .......................................................................................... ……..2
Ch¬ng I. C¸c trß ch¬i cã bíc ®i may rñi.........…………….....................4
I. Trß ch¬i “Bóa KÐo GiÊy” ..........................................................……4
II. Trß ch¬i “Vßng vßng- Vã vã”...........................................................7
Ch¬ng II. C¸c trß ch¬i ®èi kh¸ng............……………………….............10
I. Trß ch¬i CaRo..........…………………................................…..........10
II. Trß ch¬i gieo xóc x¾c..........................................................….........20
Ch¬ng III. C¸c Trß ch¬i khÐo lÐo…………………………….. ...............28
I. Trß ch¬i t¸m qu©n cê .....................................………….................28
II. Trß ch¬i “ Zic – Zac”... .............................................………..........33
III. Trß ch¬i N2-1 sè...........................................................................…35
Trß ch¬i nÐm bom ………………………............................................36
Trß ch¬i ghÐp sè ………………………………………………….37
KÕt luËn .............................................................................................................39
Môc lôc ..............................................................................................................40
Tµi liÖu tham kh¶o .............................................................................................41