Khóa luận Áp dụng lý thuyết Game xây dựng một số trò chơi

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

doc40 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2427 | Lượt tải: 1download
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. - L­u 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 l­u ®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 l­u 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Ý ch­a 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 ch­a, 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, nh­ng ®«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 ®Ó l­u 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 ch­a, 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 ch­a. 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 l­u ®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 ' L­u ®iÓm cña ng­êi ch¬i 1 Dim d2 As Integer ' L­u ®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 ch­a: 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Ï l­u 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Ï l­u 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Ï l­u tªn cña ¶nh ®­îc ®Æt vµo lµm ¶nh nÒn. C¸c dßng tiÕp theo sÏ l­u 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 ®Ó l­u 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 ®Ó l­u 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 ®Ó l­u ®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 « ch­a 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 ch­a ®Æ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ò nh­ng 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 ch­a 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Þ nh­ng 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 nh­ng 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

Các file đính kèm theo tài liệu này:

  • docBao cao luan van.doc
  • docBao cao luan van2.doc
  • rarDinh nThuan Nho.rar