Khi người chơi Nhấn chuột trái vào một ô, có ba trường hợp xảy ra: + Nếu 8 ô xung quanh ô đó không có mìn thì 8 ô xung quanh nó được lật ra. Nếu những ô xung quanh của ô vừa được lật ra lại không có mìn nó lại tiếp tục lật 8 ô xung quanh ô đó. + Nếu 8 ô xung quanh ô đó có ít nhất một ô có mìn thì chỉ ô đó được lật ra và khi lật ra ô đó sẽ hiện ra một con số thông báo số mìn có xung quanh ô đó. + Nếu ô đó là ô có mìn, mìn nổ đồng thời tất cả các ô có mìn được lật ra. Người chơi thua cuộc, khi đó những ô được đánh dấu là có mìn (những ô mà người chơi nhấn chuột phải) được giữ nguyên. Trong đó, những ô có mìn vẫn hiện nguyên lá cờ màu đỏ, còn những ô không có mìn hiện lên lá cờ màu đen.
Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro NỘI DUNG I. Thiết kế trò chơi 1. Giao diện của trò chơi như sau: 2. Cách chơi: Nhấn vào nút bắt đầu - Khi người chơi Nhấn chuột trái vào một ô, có ba trường hợp xảy ra: + Nếu 8 ô xung quanh ô đó không có mìn thì 8 ô xung quanh nó được lật ra. Nếu những ô xung quanh của ô vừa được lật ra lại không có mìn nó lại tiếp tục lật 8 ô xung quanh ô đó. + Nếu 8 ô xung quanh ô đó có ít nhất một ô có mìn thì chỉ ô đó được lật ra và khi lật ra ô đó sẽ hiện ra một con số thông báo số mìn có xung quanh ô đó. + Nếu ô đó là ô có mìn, mìn nổ đồng thời tất cả các ô có mìn được lật ra. Người chơi thua cuộc, khi đó những ô được đánh dấu là có mìn (những ô mà người chơi nhấn chuột phải) được giữ nguyên. Trong đó, những ô có mìn vẫn hiện nguyên lá cờ màu đỏ, còn những ô không có mìn hiện lên lá cờ màu đen. - Khi người chơi dự đoán có mìn ở ô nào thì nhấn chuột phải vào ô đó, ô đó hiện lên một lá cờ. Lúc này hiện lên số mìn còn lại chưa được đánh dấu. Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 3 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro - Nếu tất cả các ô không có mìn đều được lật thì người chơi thắng cuộc. II. Phương pháp giải quyết Để xây dựng trò chơi dò mìn, em đã tiến hành thực hiện những công việc cụ thể như sau: 1) Tạo một đối tượng Form làm giao diện chính của chương trình 2) Tạo một đối tượng Class bao gồm hai Container: a) Một Container chứa ô mìn đáp ứng hai sự kiện khi người sử dụng nhấn trái và phải chuột vào ô mìn b) Một Container để tạo ra một bãi mìn chứa các ô mìn và đáp ứng các sự kiện khi người sử dụng thực hiện trò chơi. 3) Tạo một Menu và một chương trình để thực thi trò chơi 4) Để viết các chương trình cần sử dụng các kiến thức về lập trình như: mảng 2 chiều, thuật toán loang, thuật toán bit, tạo số ngẫu nhiên, III. Các thuật toán chủ yếu Để thực hiện chương trình này em đã sử dụng 4 thuật toán cơ bản sau đây: 1)Thuật toán Loang Thuật toán này được sử dụng để giải quyết vấn đề khi người sử dụng nhấn chuột trái vào 1 ô, nếu ô đó không có mìn nó sẽ loang ra các ô xung quanh không có mìn. Nội dung của thuật toán này như sau: - Thuật toán Loang xuất phát từ một ô (x, y) có số mìn bằng 0 (tức là 8 ô xung quanh nó không có quả mìn nào). Khi người sử dụng nhấn chuột trái vào ô đó, 8 ô xung quanh nó được lật nắp và trong 8 ô vừa được lật, nếu xung quanh ô nào đó lại có số mìn bằng 0 nó lại tiếp tục lật 8 ô xung quanh nó, - Để thực hiện được điều này, khi lật được một ô nếu nó lại không có mìn ta cho nó vào một ngăn xếp (Stack) để đến bước tiếp theo ta lấy nó ra để loang tiếp. - Để tránh vòng lặp vô hạn, mỗi khi đưa một ô vào ngăn xếp (Stack) ta kiểm tra xem nó đã được loang chưa bằng cách kiểm tra giá trị mảng Da_loang (đã loang) và đã có trong ngăn xếp (Stack) chưa nhờ hàm ASCAN( ). 2) Thuật toán Bit Trong chương trình này chúng ta lưu trữ vào một mảng số mìn gồm 16 dòng, 16 cột và trong số 256 ô có chứa ngẫu nhiên 40 quả mìn. Thuật toán Bit sẽ giải quyết được các vấn đề sau: - Xác định số mìn có xung quanh ô(i,j). - Xác định ô(i,j) có mìn hay không có mìn. - Xác định xem người sử dụng đã cắm cờ vào ô(i,j) hay chưa. Để giải quyết được vấn đề này, ta sử dụng mảng so_min(16, 16) có các phần tử là số nguyên nhỏ hơn 128 lưu trữ chung các dữ liệu về các ô như sau: Giả sử so_min(i,j) = k. Trong đó, k có biểu diễn nhị phân k = k 5 k 4 k 3 k 2 k 1 k 0 . Khi đó, ta xác định như sau: + 4 bit cuối bên phải k 3 k 2 k 1 k 0 của số k là số mìn có xung quanh ô(i,j). Số này dễ dàng tính được bằng phép toán Mod(k, 16). + Bít k 4 bằng 1 nếu ô(i,j) có mìn và bằng 0 nếu ô này không có mìn. Bit k 4 bằng 0 khi và chỉ khi Bitand(k,16) = 0. Để thay đổi bit k 4 của k từ 0 thành 1 ta cộng k với 16, để thay đổi từ 1 thành 0 ta lấy k trừ đi 16 hoặc lấy k Mod 16. Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 4 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro + Bit k 5 bằng 1 nếu người sử dụng đánh dấu bằng chuột phải (cắm cờ) vào ô này, là 0 nếu chưa cắm cờ. Bit k 5 bằng 0 khi và chỉ khi Bitand(k, 32) = 0. Để thay đổi bit k 5 của k từ 0 thành 1 ta cộng k với 32, để thay đổi từ 1 thành 0 ta lấy k trừ đi 32 hoặc lấy k Mod 32. 3) Thuật toán sinh số ngẫu nhiên Chọn ngẫu nhiên một tổ hợp bằng tổng số mìn trong các ô của bãi mìn gồm n ô bằng số dòng nhân với số cột sau đó rải mìn một cách ngẫu nhiên vào bãi mìn. 4) Thuật toán sử dụng mảng 2 chiều Thuật toán này được sử dụng để tính số mìn nằm xung quanh mỗi ô kết hợp với hiển thị số mìn vào các ô mìn. Số mìn được tính như sau: - Nếu mỗi ô(i,j) không nằm trên đường biên có 8 ô xung quanh nó là: (i-1,j-1), (i-1,j), (i- 1,j+1), (i,j-1), (i,j+1), (i+1,j-1), (i+1,j), (i+1,j+1). - Nếu mỗi ô(i,j) nằm ở góc chỉ có 3 ô xung quanh nó - Nếu mỗi ô(i,j) nằm trên một cạnh nhưng không ở góc sẽ có 5 ô xung quanh nó. IV. Các bước tiến hành thiết kế Bước 1: Tạo một Form làm giao diện của trò chơi bao gồm: 1) Tạo một Container với Name = Bang. Trong đó có chứa a) 3 Label thể hiện các thông tin về trò chơi. b) 1 TextBox có Name = txtso_min_con (Hiển thị số mìn còn lại chưa đánh dấu) c) 4 Command với Name lần lượt là: CmdNew (Bài mới), CmdMo (Mở nắp), CmdDong (Đóng nắp), CmdThoat (Thoát). 2) Tạo một Container thứ hai với Name = Khung hiển thị thông tin người thiết kế trò chơi. Trong đó có chứa 2 label, và 1 Image. 3) Đặt vào Form 3 đối tượng Timer để tạo chữ chuyển động và hiển thị thời gian trên Caption của Form. 4) Ngoài ra còn một số thuộc tính khác được bổ xung vào Form các thuộc tính và phương thức sau: a) Một Method (phương thức) có tên là tao_bai_min. b) 4 Property (tính chất) là i 1 , i 2 , st, st 1 là các biến tạo ra chữ chuyển động. Bước 2: Tạo một đối tượng Class có Name = “do_min” bao gồm: 1) Class o_min từ Class cơ sở Container với các Property (Bổ xung vào 2 tính chất dg, cot) cơ bản như sau: Width=20 Height=20 Name=“o_min” BackStyle=0 dg = 1 cot = 1 Thêm vào 3 đối tượng: 1 label có name = “Nen”, 1 Command có Name = “Nap” và 1 Image có Name = “Tranh”. 2) Class Bai_min được tạo từ Class cơ sở Container. Ta bổ xung thêm các tính chất sau cho Class Bai_min: So_dg =1 So_cot =1 Unit = 20 So_min[16,16] Tg_so_min=40 So_min_con=.0. Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 5 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro Bước 3: Viết chương trình cho các đối tượng 1) Chương trình tạo giao diện trò chơi: a) Thủ tục Init của Form DO gmenu.prg WITH this && Gọi Menu SET CLASSLIB TO do_min && Khởi tạo Class do_min WITH thisform .tao_bai_min(10,10,25) && Khởi tạo bãi mìn .Timer1.Timer() .Timer2.Timer() .bang.CmdNew.caption="Bắt đầu" ENDWITH b) Thủ tụcTao_bai_min của Form: Sắp xếp Container Baimin vào Form LPARAMETERS so_dg,so_cot,tg_so_min thisform.LockScreen =.T. IF TYPE("thisform.baimin1")="O" thisform.RemoveObject("baimin1") ENDIF WITH thisform SET class to do_min.vcx && Tạo giao diện cho bãi mìn .AddObject("baimin1","baimin",so_dg,so_cot,tg_so_min) &&Thêm đối tượng cho “baimin1” .baimin1.top=.bang.Top+.bang.Height+5 .baimin1.visible=.F. &&Giấu bãi mìn để tạo giao diện Help .baimin1.left=5 .baimin1.bordercolor=RGB(255,255,0) .baimin1.borderwidth=3 .Height =.baimin1.Height +.baimin1.top+5 .Width =.baimin1.Width +10 .AutoCenter =.T. .bang.setFocus .bang.txtso_min_con.value=.baimin1.so_min_con ENDWITH thisform.LockScreen =.F. c) Thủ tục CreatMap của bãi mìn: Bố trí các ô mìn vào bãi mìn DIMENSION This.so_min(this.so_dg, this.so_cot) SET Class To do_min.vcx && Thiết lập thư viện Class “do_min” FOR i=1 To This.so_dg FOR j=1 To This.so_cot cName="O"+Padl(i,2,'0')+Padl(j,2,'0') lCname = "This." + cName IF Type(cName)<>"O" this.AddObject(cName,"o_Min") ENDIF WITH this.&cName .Visible=.T. .nap.visible=.T. .nap.enabled = .T. .nap.Caption = "" .tranh.visible=.F. Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 6 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro .Top=3+(i-1)*this.unit .Left=3+(j-1)*this.unit .Width= this.unit .Height= this.unit .dg=i .Cot=j ENDWITH NEXT NEXT WITH this .Height= this.unit *.so_dg+6 .Width= this.unit *.so_cot+6 ENDWITH d) Thủ tục Combinrandom của Bãi mìn: Rải mìn ngẫu nhiên vào các ô của bãi mìn s=This.so_dg*This.so_cot && s = 256 this.so_min=0 DIMENSION so(s) FOR i=1 To s && Chạy từ 1 đến 256 so(i)=i NEXT FOR k=1 To this.tg_so_min && Chạy từ 1 đến 40 p=Int(Rand()*s)+1 && Tạo số ngẫu nhiên p this.so_min(so(p))=This.so_min(so(p))+16 &&ô nào có mìn sẽ cộng thêm 16 FOR j=p To s-1 so(j)=so(j+1) NEXT s=s-1 && Mỗi lần hết 1 vòng trừ bớt đi một ô NEXT e) Thủ tục Tinh_so_min của Bãi mìn: Đếm số mìn kết hợp với việc hiển thị số mìn có xung quanh mỗi ô không có mìn With This &&Trả số mìn về 0 For i=1 To .so_dg For j=1 To .so_cot .so_min(i,j)= .so_min(i,j)-Mod(.so_min(i,j),16) Next Next &&Đếm theo từng ô có mìn For i=1 To .so_dg For j=1 To .so_cot If Bitand(.so_min(i,j),16) <>0 If i>1 And j>1 .so_min(i-1,j-1)=.so_min(i-1,j-1)+1 Endif If i>1 .so_min(i-1,j)=.so_min(i-1,j)+1 Endif If i>1 And j<.so_cot .so_min(i-1,j+1)=.so_min(i-1,j+1)+1 Endif If j>1 .so_min(i,j-1)=.so_min(i,j-1)+1 Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 7 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro Endif If j<.so_cot .so_min(i,j+1)=.so_min(i,j+1)+1 Endif If i<.so_dg And j>1 .so_min(i+1,j-1)=.so_min(i+1,j-1)+1 Endif If i<.so_dg .so_min(i+1,j)=.so_min(i+1,j)+1 Endif If i<.so_dg And j<.so_cot .so_min(i+1,j+1)=.so_min(i+1,j+1)+1 Endif Endif Next Next For i=1 To .so_dg For j=1 To .so_cot cName="O"+Padl(i,2,'0')+Padl(j,2,'0') With .&cName .nap.Visible=.T. .nap.Caption="" .tranh.Visible=.F. If Bitand(This.so_min(i,j),16) =0 &&Nếu không có mìn ở ô(i,j) .nen.FontBold =.T. so=Mod(This.so_min(i,j),16) .nen.Caption=Alltrim(Str(so)) && Chọn màu cho các ô Do Case Case so=0 .nen.Caption="" mau= .Parent.BackColor Case so=1 mau=16711680 Case so=2 mau = Rgb(0,128,64) Case so=3 mau = Rgb(128,64,0) Case so=4 mau= Rgb(255,0,0) Case so=5 mau= Rgb(0,128,0) Case so=6 mau= Rgb(64,0,0) Case so=7 mau= Rgb(128,128,128) Case so=8 mau= Rgb(128,128,128) Otherwise mau= .Parent.BackColor Endcase .nen.ForeColor =mau .tranh.Visible=.F. .nen.Visible=.T. .nen.FontName = "Tahoma" Else && Có mìn Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 8 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro .tranh.Visible=.T. .nen.Visible=.F. Endif Endwith Next Next Endwith g) Thủ tục rai_min của Bãi mìn: Rải mìn vào các ô của bãi mìn With This .combinrandom .so_min_con = .tg_so_min Thisform.bang.txtso_min_con.value=.so_min_con .tinh_so_min Endwith 2) Chương trình đáp ứng các sự kiện của người sử dụng a) Thủ tục Nap_Click của O_min: Đáp ứng sự kiện người dùng Click chuột trái vào mỗi ô của bãi mìn With This.Parent.Parent x1=This.Parent.dg y1=This.Parent.Cot If Bitand(.so_min(x1,y1),16)=0 && Nếu nhấn vào ô không có mìn This.Visible =.F. Thisform.bang.cmdNew.SetFocus .loang(x1,y1) Else && Nếu nhấn vào ô có mìn .No_min Messagebox ("Ban da thua roi. Nhan nut Bai moi de tiep tuc. Chuc ban may man!","THONG BAO") && Hiển thị bảng thông báo là người chơi đã thua cuộc. Endif Endwith b) Thủ tục Nap_Mousedown của O_min: Đáp ứng sự kiện người dùng Click chuột phải vào mỗi ô của bãi mìn LPARAMETERS nButton, nShift, nXCoord, nYCoord IF nButton =2 WITH This.Parent x1=.dg y1=.Cot IF Bitand(.Parent.so_min(x1,y1),32)=0 && ô chưa nhấn chuột phải .Parent.so_min(x1,y1)=.Parent.so_min(x1,y1)+32 &&đổi bit k 5 từ 0 về 1 ELSE && Nếu nhấn chuột phải vào ô .Parent.so_min(x1,y1)=Mod(.Parent.so_min(x1,y1),32) && đổi k 5 về 0 ENDIF IF Bitand(.Parent.so_min(x1,y1),32)<>0 && Khi nhấn chuột phải This.fontBold=.T. this.Caption="O" && Hiện lá cờ .Parent.so_min_con=.Parent.so_min_con-1 ELSE this.Caption="" Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 9 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro .Parent.so_min_con=.parent.so_min_con+1 ENDIF thisform.bang.txtSo_min_con.Value=.parent.so_min_con thisform.bang.cmdnew.SetFocus ENDWITH ENDIF c) Thủ tục Loang của bãi mìn: Đáp ứng sự kiện người dùng Click vào một ô mà xung quanh ô đó không có mìn. LPARAMETERS x1,y1 IF Mod(This.So_min(x1,y1),16)=0 &&Nếu không có mìn ở xung quanh ô này DIMENSION stack(256),da_loang(this.so_dg,this.so_cot) &&Khởi tạo Stack(),da_loang() s=1 stack(s)=(x1-1)*this.so_cot + y1-1 DO While s>0 x = Int(stack(s)/this.so_cot)+1 Y = mod(stack(s),this.so_cot) +1 da_loang(x,y)=.T. s=s-1 FOR i = x-1 to x+1 FOR j = y-1 to y+1 IF i >0 and j > 0 and i<= this.so_dg and j<= this.so_cot cName = "This.O" + Padl(i,2,'0') + Padl(j,2,'0') &cName nap.Visible =.F. IF BitAnd(this.So_min(i,j),32)<>0 &&ô đã nhấn chuột phải this.so_min_con=this.so_min_con+1 thisform.bang.txtSo_min_con.Value=this.so_min_con ENDIF Z=(i-1)*this.so_cot+j-1 w=ascan(stack,Z) IF mod(this.So_min(i,j),16)=0 And Not da_loang(i,j) And w=0 s= s+1 stack(s)=Z ENDIF ENDIF NEXT NEXT ENDDO ENDIF d) Thủ tục No_min của bãi mìn: Đáp ứng sự kiện người dùng Click chuột vào ô có mìn For i=1 To This.so_dg For j=1 To This.so_cot cName="O"+Padl(i,2,'0')+Padl(j,2,'0') If Bitand(This.so_min(i,j),32)=0 && Nếu người sử dụng chưa cắm cờ vào ô If Bitand(This.so_min(i,j),16)<>0 && Nếu ô này có mìn This.&cName nap.Visible=.F. This.&cName nen.Visible=.F. This.&cName tranh.Visible=.T. && hình ảnh quả mìn Else && Nếu ô không có mìn This.&cName nen.Visible=.T. Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 10 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro This.&cName tranh.Visible=.F. Endif Else && nếu người sử dụng đã cắm cờ vào những ô này If Bitand(This.so_min(i,j),16)=0 && Nếu ô này không có mìn This.&cName nap.Visible=.T. This.&cName nap.Forecolor=RGB(0,0,0) && Chuyển lá cờ về màu đen This.&cName nap.Caption="O" This.&cName nen.Visible=.T. This.&cName tranh.Visible=.F. ELSE && Nếu ô có mìn This.&cName nap.Visible=.T. This.&cName nen.Visible=.F. This.&cName tranh.Visible=.T. Endif Endif Next Next This.Enabled=.F. Bước 4: Viết chương trình tạo Menu và chương trình khởi động của trò chơi 1) Thủ tục Start : Tạo chương trình khởi động Set Talk Off &&Không ghi các kết quả trung gian ra màn hình Set date Italian &&Ngày tháng năm kiểu Italia Set Century on &&/năm có 4 chữ số AppPath=Sys(16) AppPath=Left(AppPath, Rat("\", AppPath)-1) AppPath=Substr(AppPath, At(":", AppPath)-1) Application.Visible = .F. &&Giấu màn hình chính của Visual Foxpro Do Form do_min Read Event &&Chờ tác động cúa người sử dụng, dùng để dịch sang *.exe 2) Thủ tục Destroy của Form (Kết thúc trò chơi) Set Talk On Clear Event Application.Visible = .T. Cancel 3) Thủ tục Gmenu: Tạo Menu cho chương trình Lparameters oFormRef Define Menu cMenuName In (m.oFormRef.Name) Bar Font ".vnarian",9 Define Pad Pad1 Of cMenuName Prompt "\<Game" Key Alt+G, "" Define Pad Pad2 Of cMenuName Prompt "\<About" Key Alt+A, "" On Pad Pad1 Of cMenuName Activate Popup Game On Pad Pad2 Of cMenuName Activate Popup About Define Popup Game Relative Shadow Font ".vnarian",9 Define Bar 1 Of Game Prompt "\<Choi tiep" Define Bar 2 Of Game Prompt "\<Mo nap" Define Bar 3 Of Game Prompt "\<Dong nap" Define Bar 4 Of Game Prompt "\<Thoat" On Selection Bar 1 Of Game Do Baimoi In gmenu Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 11 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro On Selection Bar 2 Of GameDo Monap In gmenu On Selection Bar 3 Of GameDo Dongnap In gmenu On Selection Bar 4 Of GameDo Thoat In gmenu Define Popup About Relative Shadow Font ".vnarian",9 Define Bar 1 Of About Prompt "\<Gioi thieu" Define Bar 2 Of About Prompt "\<Tac gia" Define Bar 3 Of About Prompt "\<Tiep tuc" On Selection Bar 1 Of About ; MESSAGEBOX("Tro choi do min thiet ke bang Visual Foxpro"+CHR(10)+; " Chuc cac ban luon vui ve voi tro choi nay!","GIOI THIEU TRO CHOI") Activate Menu cMenuName Nowait On Selection Bar 2 Of AboutDo Tacgia In gmenu On Selection Bar 3 Of AboutDo tieptuc In gmenu Procedure Baimoi With Do_min.baimin1 .rai_min .Enabled =.T. .Visible =.T. Endwith Procedure Monap With do_min.baimin1 For i=1 To .so_dg For j=1 To .so_cot Cname="O"+Padl(i,2,'0')+Padl(j,2,'0') .&Cname nap.Visible=.F. Next Next Endwith Procedure Dongnap With do_min.baimin1 For i=1 To .so_dg For j=1 To .so_cot Cname="O"+Padl(i,2,'0')+Padl(j,2,'0') .&Cname nap.Visible=.T. Next Next Endwith Procedure Thoat With Do_min .Hide .Release Endwith PROCEDURE tacgia WITH do_min.baimin1 .visible=.F. ENDWITH PROCEDURE tieptuc WITH do_min.baimin1 .visible=.T. Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 12 [...]...Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro ENDWITH Bước 5: Viết một số chương trình tạo giao diện và các Command 1) Chương trình của các Command a) Thủ tục CmdNew_Click() With Do_min.baimin1 rai_min Enabled... nap.visible=.T NEXT NEXT ENDWITH d) Thủ tục CmdThoat_Click() With Do_min Hide Release Người thực hiện: Đỗ Trung Thành Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 13 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro Endwith 2) Chương trình chạy chữ a)Thủ tục Form_Load(): Khởi tạo chuỗi ký tự With Thisform st = "Bµi tËp øng dông: X©y dùng trß ch¬i dß m×n" st1=" Đỗ Trung Thành"... + Padl(Month(Date()),2,'0')+; " / "+ Str(Year(Date()),4)+" Bay gio la: " + Time() Người thực hiện: Đỗ Trung Thành Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 14 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro Người thực hiện: Đỗ Trung Thành Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 15 ... Endwith b) Thủ tục Timer1_Timer() && Dòng chữ chạy từ phải qua trái trong bảng With Thisform.bang s=.label2.Caption s1=Left(s,1) s2=Right(s,Len(s)-1) label2.Caption=s2+s1 Endwith &&Dòng chữ xuất hiện từ trái qua phải trong khung With Thisform If i2 . Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro NỘI DUNG I. Thiết kế trò chơi 1. Giao diện của trò chơi như sau: 2. Cách chơi: Nhấn vào nút bắt. Dung Trang 5 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro Bước 3: Viết chương trình cho các đối tượng 1) Chương trình tạo giao diện trò chơi: a) Thủ tục Init. số mìn còn lại chưa được đánh dấu. Người thực hiện: Đỗ Trung Thành. Hướng dẫn: Thầy giáo Nguyễn Hữu Dung Trang 3 Chuyên đề lập trình hướng đối tượng: Thiết kế trò chơi dò mìn trong Visual Foxpro