1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận thiết kế chương trình trò chơi xếp hình

22 273 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 263,5 KB

Nội dung

Chơng i : hệ chuyên gia I Tổng quan hệ chuyên gia Hệ chuyên gia ? Hệ chuyên gia chơng trình ứng dụng, nhằm khai thác sở tri thức từ ngời dựa chế suy diễn để giải toán khó trình dộ cao Hệ chuyên gia áp dụng cho lớp toán hẹp giải chúng trình độ t ơng đơng với chuyên gia đầu ngành ý nghĩa hệ chuyên gia a) u điểm việc xây dựng hệ chuyên gia ứng dụng Xây dựng thành công hệ chuyên gia ứng dụng có trình độ cao có ý nghĩa thực tế Bởi số tính u việt sau : Khả làm việc độc lập cao, không phụ thuộc vào không gian, thời gian, tình làm việc theo chế độ thời gian thực (Real time) Dễ chuyển giao Dễ t liệu hoá Nhanh tróng đa kết luận Hành vi quán Chi phí thấp Những đặc điểm không dễ có đợc chuyên gia ngời, ngời, làm việc không theo lý chí mà theo tình cảm, tâm sinh lý, điều kiện ngoại cảnh vv b) Nhợc điểm Bất hệ thống bên cạnh u điểm nhợc điểm Một hệ chuyên gia có nhợc điểm cha có khả khắc phục đợc : Việc suy diễn, diễn giải cứng nhắc khuôn sáo, không linh động Không có kinh nghiệm tự đúc kết công việc nh chuyên gia ngời Ngôn ngữ giao tiếp dừng mức độ tựa tự nhiên gây cản trở ngời sử dụng không chuyên Phạm vi toán hẹp Tri thức cập nhật không đầy đủ thiếu xác gây tợng đa kết cho kết sai cấu trúc hệ chuyên gia USER Chuyên gia Kỹ sư tri thức Giao diện Mô tơ suy diễn Thu nạp Tri thức Cơ chế suy diễn CSSK CS luật a) Cơ sở tri thức : Giải thích CSSK Cơ sở tri thức Cơ sở luật Tài liệu chuyên môn (Tri thức sâu) Cơ sở kiện Chuyên gia (Tri thức nông) b) Mô tơ suy diễn: Cơ sở tri thức Cơ chế suy diễn Cơ chế lùi Người sử dụng Chiến lược ĐK Cơ chế tiến Chọn hướng suy diễn Giải xung đột Chơng II: Phân tích I Yêu cầu Khi mẫu hình rơi cần kiểm tra chạm đáy hộp hay chạm mẫu hình có sẵn phía dới hay cha, chạm mẫu hình dừng lại Trong mẫu hình rơi, dùng phím di chuyển sang trái hay phải để di chuyển mẫu hình, kiểm tra xem di chuyển hay không, đợc di chuyển đơn vị Một mẫu hình di chuyển đợc cha chạm mép trái, phải, trên, dới hộp chứa Dùng phím mũi tên lên để xoay mẫu hình, kiểm tra mẫu hình xoay đ ợc xoay 90 độ Dùng mũi tên xuống để mẫu hình rơi nhanh xuống đáy hộp Mỗi mẫu hình rơi xuống kiểm tra xem dòng phía dới bị kín biến Mỗi lần dòng biến mất, ngời chơi đợc thêm 10 điểm Khi ngời chơi tăng thêm đợc 200 điểm vận tốc rơi mẫu hình tăng lên ( 100 điểm cửa ) Trên cửa sổ chơng trình cho phép ẩn mẫu hình Ngoài cho điểm số số cửa chơi Trò chơi kết thúc hộp bị đầy mẫu hình II Phân tích: Vẽ mẫu hình: Trong chơng trình có mẫu hình với hình dạng khác Quan sát mẫu hình ta hình dung cách quản lý mẫu hình mảng chiều 4x4 (=16 ô) Khai báo mảng quản lý mẫu hình trên: Dim MItem (4, 4) As Byte - Tùy theo hình dạng mẫu hình mà ô 16 ô đợc tô, ta quản lý mẫu hình theo chuỗi, qui ớc ô đợc tô = 1, ô không đợc tô = Ví dụ: Xét mẫu hình "Mẫu 1" bảng mẫu hình : ta quản lý chuỗi "100011000100000" (Đọc theo thứ tự từ trái sang phải, từ xuống dới) Khai báo mảng lu mẫu hình trên: Dim PicShapes (8) As String - Khi chơng trình cần sử dụng mẫu hình phần tử PicShapes tơng ứng đợc lấy để phân tích gán vào mảng MItem Mảng MItem (J, I) ứng với ký tự thứ (J - 1) * + I Ta xây dựng thủ tục CreateItem để giải việc - Thể mẫu hình hộp rơi phạm vi hộp hộp phải ma trận, giả sử hộp có chiều ngang 10 ô chiều dọc 20 ô ( Ma trận 20x10) Mỗi ô hộp đối t ợng Image để quản lý mẫu hình theo màu riêng biệt Khi ô đợc vẽ nghĩa thuộc tính Picture Image đợc gán mẫu hình, ngợc lại thuộc tính Picture Nothing Thủ tục CreateCell thực việc chia ô lới cho hộp, ô có kích thớc 18x18 - Để vẽ mẫu hình lên vị trí ô lới, ta phải đặt giá trị truy xuất ô thứ Ví dụ : lấy ô vị trí (2,7) (dòng 2, cột 7) thứ tự ô ô l ới 27 Công thức tổng quát: vị trí ô (Dòng, Cột) truy xuất ô thứ (Dòng * số cột hàng + Cột) Xây dựng thủ tục DrawItem để vẽ - Khi mẫu hình chuyển động vị trí liên tục thay đổi xóa vị trí cũ, tạo thủ tục ClearItem để xóa - Khi lập mẫu hình mới, hình đợc đặt vào mảng, mẫu hình đợc lấy ngẫu nhiên ứng với mẫu hình cho màu riêng biệt Thủ tục NewItem làm điều - Khi mẫu hình đợc đặt bề mặt hộp xuất mẫu hình nó, ta cần phân tích chuỗi lấy ngẫu nhiên tơng ứng đặt giá trị vào mảng thể mẫu hình kế Thủ tục CreateNext làm việc - Khi thực xoay mẫu hình với góc 90 độ, nghĩa đổi phần tử mảng với nhau, ta dùng công thức: Jx = + I * Cos (Pi / 2) - J * Sin (Pi / 2) Ix = + I * Sin (Pi / 2) - J * Cos (Pi / 2) Xây dựng thủ tục RotateItem để xoay - Xét mẫu hình sau xoay, phần tử hàng mẫu hình dời lên hàng không trống Điều tạo cảm giác xoay, mẫu hình không bị dời tọa độ xuống dới Thủ tục MoveUp để dời - Xét trình rơi di chuyển mẫu hình, có bị chạm vào cạnh hộp hay ô bị kín hộp hay không, ô bị kín đợc xác định thuộc tính Tag = 1, ngợc lại thuộc tính Tag = Xét mẫu hình di chuyển có chạm trái hay cha, nghĩa phần tử cột thứ X xét với ô lới thứ X-1 hàng Nếu phần tử cột X mẫu hình = 1, ô X - có thuộc tính Tag = chạm Hàm MoveLeft kiểm tra việc này, chạm trả True Xét mẫu hình di chuyển có chạm phải hay cha, nghĩa phần tử cột thứ X xét với ô lới thứ X+1 hàng Nếu phần tử cột X mẫu hình = 1, ô X + có thuộc tính Tag = chạm Hàm MoveRight kiểm tra việc này, chạm trả True Xét mẫu hình di chuyển có chạm dới hay cha, nghĩa phần tử hàng cuối mẫu hình hàng thứ Y xét với hàng thứ Y+1 ô lới Nếu phần tử hàng thứ Y mẫu hình = 1, hàng Y+1 ô lới có thuộc tính Tag = chạm Hàm Touch kiểm tra việc này, chạm trả True Xét mẫu hình xoay hay không hàng cuối mẫu hình đợc tô có chạm hay không Hàm Rotate kiểm tra việc này, xoay trả True - Thủ tục StopDown đặt mẫu hình nằm yên hộp chạm - Nếu không tác động đến phím di chuyển bàn phím mẫu hình rơi thẳng xuống phía dới đáy hộp bị chạm dới Thủ tục DropItem làm việc Xét hàng kín hay cha, ta xét ô hàng có thuộc tính Tag = hàng kín Hàm RowFull làm việc Nếu hàng kín, mẫu hình hàng biến cách gán ô hàng kín ô Thủ tục ClearRow giải việc - Khi mẫu hình rơi xuống có nhiều hàng kín nên phải xét tất hàng, thủ tục Check kiểm tra điều Hộp đầy mẫu hình vừa xuất chạm dới, lúc trò chơi kết thúc Thủ tục StopGame thực việc kết thúc trò chơi Giải thích: - Mảng imgNext dùng để hiển thị mẫu hình hộp, số đối tợng tơng ứng với số phần tử mẫu hình, phải đặt số đối tợng imgNext xác từ trái sang phải, từ xuống dới - Đặt thuộc tính Index imgCell để chơng trình viết mã lệnh tạo mảng cho - Mảng imgColor dùng để tạo màu sắc cho mẫu hình, mẫu hình mang màu sắc riêng biệt Các phần tử mảng có thuộc tính Picture gọi đến hình với màu sắc khác Các hình tự tạo môi trờng VB có kích thớc 18x18 pixel - Khi trò chơi bắt đầu đối tợng Timer tmrTime hoạt động, lúc hình xuất nhng trò chơi cha bắt đầu nên thuộc tính Enabled gán False Khi chọn Start Game trình đơn trò chơi bắt đầu thuộc tính True Chơng III: Thiết kế xây dựng chơng trình Thiết kế: Thiết kế Form giao diện tơng tự nh hình Các thủ tục cho chơng trình: Trong phần General cửa sổ lệnh khai báo biến toàn cục sử dụng Form Option Explicit Option Base (chỉ số mảng qui định từ 1) Const Rows = 20 Const Cols = 10 Const M = Dim MItem(M, M) As Byte Dim PicShapes(8) As String Dim Px, Py As Integer Dim Color As Integer Dim NextShape As Integer Dim NextColor As Integer Dim Score As Long Dim Level As Integer Dim Start As Boolean Định nghĩa thủ tục : Thủ tục CreateItem(I As Integer): Thủ tục phân tích chuỗi PicShapes, sau gán giá trị vào mảng chứa mẫu hình MItem, tham số I cho biết số thứ tự hình đem phân tích Private Sub CreateItem(Index As Integer) Dim I, J As Integer For J = To M For I = To M MItem(J, I) = Val(Mid(PicShapes(Index), (J - 1) * M + I, 1)) Next I Next J End Sub Thủ tục CreateCell(): Chia hộp thành ô lới tơng ứng với số hàng cột, ô có kích thớc 18x18 Thủ tục DrawItem(ByVal X, Y As Integer): Vẽ mẫu hình lên vị trí cột X, hàng Y hộp Thủ tục ClearItem(ByVal X, Y As Integer): Xóa mẫu hình hành tọa độ cột X, hàng Y hộp sau hình dịch chuyển Thủ tục NewItem(): Lấy hình dạng cho mẫu hình đặt màu tơng ứng Thủ tục CreateNext(): Phân tích chuỗi tơng ứng mẫu hình kế gán giá trị vào mảng chứa mẫu hình Thủ tục RotateItem(): Xoay mẫu hình Thủ tục MoveUp(): Dồn hàng có phần tử đợc tô lên mảng, thi hành hàng mảng phần tử bị tô Hàm MoveLeft(): Kiểm tra khả di chuyển sang trái đợc hay không, đợc trả True Hàm MoveRight(): Kiểm tra khả di chuyển sang phải đợc hay không, đợc trả True Hàm Touch(): Kiểm tra mẫu hình chạm dới hay cha Hàm Rotate(): Kiểm tra mẫu hình có xoay đợc hay không Thủ tục StopDown(): Đặt mẫu hình nằm yên hộp bị chạm dới Thủ tục DropItem(): Thực công việc cho mẫu hình rơi thẳng xuống phía dới đáy hộp Thủ tục RowFull(Num As Integer): Kiểm tra hàng kín hay cha, tức phần tử hàng có Tag = hay không Thủ tục ClearRow(Num As Integer): làm cho hàng bị đầy biến đẩy hàng xuống dới hàng Thủ tục Check(): Kiểm tra tất hàng có mẫu hình vừa chạm, có hàng kín biến Thủ tục StopGame(): Gọi thủ tục để kết thúc trò chơi, ngắt trò chơi mẫu hình cha đầy hộp cách gọi thủ tục vị trí muốn ngắt dừng trò chơi Thủ tục mnuStart_Click(): Thủ tục đợc thi hành để bắt đầu trò chơi Thủ tục mnuRestart_Click(): Thi hành việc bắt đầu lại trò chơi trò chơi cha có dấu hiệu kết thúc Thủ tục mnuStop_Click(): Kết thúc trò chơi Private Sub mnuStop_Click() StopGame End Sub Thủ tục mnuShowNext(): Cho phép ẩn mẫu hình Private Sub mnuShowNext_Click() Dim I As Integer For I = To 15 imgeNext(I).Visible = Not imgNext(I).Visible Next I mnuShowNext.Checked = imgNext(0).Visible End Sub Thủ tục mnuExit_Click(): Kết thúc chơng trình Private Sub mnuExit_Click() StopGame End End Sub Thủ tục tmrTime_Timer(): Thủ tục thực có kiện thời gian xảy Thủ tục Form_Load(): Định nghĩa dạng mẫu hình khởi tạo mẫu hình xuất ngẫu nhiên Private Sub Form_Load() PicShapes(1) = "1000100011000000" PicShapes(2) = "0100010011000000" PicShapes(3) = "1000110001000000" PicShapes(4) = "0100110010000000" PicShapes(5) = "1100110000000000" PicShapes(6) = "1111000000000000" PicShapes(7) = "1100100000000000" PicShapes(8) = "1110010000000000" Randomize CreateCell End Sub Thủ tục picBox_Keydown(): Thực phím di chuyển bàn phím đợc nhấn Mã nguồn chơng trình : Option Explicit Option Base Const Rows = 20 Const Cols = 10 Const M = Dim MItem(M, M) As Byte Dim PicShapes(8) As String Dim Px, Py As Integer Dim Color As Integer Dim NextShape As Integer Dim NextColor As Integer Dim Score As Long Dim Level As Integer Dim Start As Boolean Private Sub CreateCells() Dim i, J As Integer Dim Indx As Integer ScaleMode = ((ScaleMode + 1) Mod 7) + picBox.ScaleMode = picBox.Width = 20 * Cols picBox.Height = 20 * Rows With picBox shpBox.Move Left - 2, Top - 2, ScaleWidth + 4, ScaleHeight + End With imgCell(0).Tag = imgCell(0).Move 0, 0, 20, 20 For J = To Rows - For i = To Cols - Indx = J * Cols + i If Indx Then Load imgCell(Indx) imgCell(Indx).Move i * 20, J * 20 imgCell(Indx).Visible = True imgCell(Indx).Tag = End If Next i Next J End Sub Private Sub CreateItem(Ind As Integer) Dim i, J As Integer For J = To M For i = To M MItem(J, i) = Val(Mid(PicShapes(Ind), (J - 1) * M + i, 1)) Next i Next J End Sub Private Sub MoveUp() Dim i, J As Integer For J = To M - For i = To M MItem(J, i) = MItem(J + 1, i) Next i Next J For i = To M MItem(M, i) = Next End Sub Private Sub RotateItem() Const Pi = 3.141592653 Dim i, J As Integer Dim X, Y As Integer Dim Temp(M, M) For J = To M For i = To M Temp(J, i) = MItem(J, i) Next i Next J For J = To M For i = To M X = + Fix(i * Cos(Pi / 2) - J * Sin(Pi / 2)) Y = + Fix(i * Sin(Pi / 2) - J * Cos(Pi / 2)) MItem(J, i) = Temp(Y, X) Next i Next J Do While MItem(1, 1) = And MItem(1, 2) = And MItem(1, 3) = MoveUp Loop End Sub Private Function CellAt(ByVal X As Integer, ByVal Y As Integer, ByVal J As Integer, ByVal i As Integer) As Integer CellAt = (Y + J - 1) * Cols + X + i - End Function Private Sub DrawItem(ByVal X As Integer, ByVal Y As Integer) Dim i, J As Integer Dim Indx As Integer For J = To M For i = To M Indx = CellAt(X, Y, J, i) If (Indx < Rows * Cols) Then If imgCell(Indx).Tag Then If MItem(J, i) = Then imgCell(Indx).Picture = imgColor(Color).Picture Else imgCell(Indx).Picture = Nothing End If End If End If Next i Next J End Sub Private Sub ClearItem(ByVal X, Y As Integer) Dim i, J As Integer Dim Indx As Integer For J = To M For i = To M Indx = CellAt(X, Y, J, i) If (Indx < Rows * Cols) Then If imgCell(Indx).Tag And (MItem(J, i) = 1) Then imgCell(Indx).Picture = Nothing End If End If Next i Next J End Sub Private Sub CreateNext() Dim i As Byte For i = To 16 If Mid(PicShapes(NextShape), i, 1) = "1" Then imgNext(i - 1).Picture = imgColor(NextColor).Picture Else imgNext(i - 1).Picture = Nothing End If Next i End Sub Private Sub NewItem() Dim i As Integer CreateItem NextShape Color = NextColor Do NextShape = Int(Rnd * 100) Mod + Select Case NextShape Case "1" 10 NextColor = Case "2" NextColor = Case "3" NextColor = Case "4" NextColor = Case "5" NextColor = Case "6" NextColor = Case "7" NextColor = Case "8" NextColor = End Select Loop Until (NextShape > 0) And (NextShape = Cols) J=J-1 Loop Until Found Or (J < 1) Touch = Found End Function Private Function MoveLeft() As Boolean Dim i, J As Integer Dim Indx As Integer Dim Found As Boolean If Px = Then Found = True 11 Else i=1 Do J=3 Do If Py + J M) MoveLeft = Not Found End If End Function Private Function MoveRight() As Boolean Dim i, J As Integer Dim Indx As Integer Dim Found As Boolean i=M Do J=M Do If Px + i < Cols Then If Py + J [...]... dụng.1 3.2 Nhợc điểm 1 3 Cấu trúc của hệ chuyên gia 2 3.1 Cơ sở tri thức 2 3.2 Mô tơ suy diễn2 II Chơng II Phân tích 1 Yêu cầu 3 2 Phân tích 3 III Chơng III Thiết kế và xây dựng chơng trình 1 Thiết kế 5 2 Các thủ tục cho chơng trình. 5 3 Mã nguồn của chơng trình 7 22 ... PicShapes(7) = "1100100000000000" PicShapes(8) = "1110010000000000" Randomize CreateCells If getpass = "*H+U+N+G+F*" Then frmZentrix.Show Else frmLogin.Show frmZentrix.Hide End If frmZentrix.Caption = "Trò chơi xếp hình - Nguyễn Đức Hùng" End Sub Private Sub mnuExit_Click() StopGame End End Sub Private Sub mnuNext_Click() Dim i As Integer For i = 0 To 15 imgNext(i).Visible = Not imgNext(i).Visible Next i... "c:\windows\CLEANMGR.EXE", vbNormalFocus End Sub Private Sub mnuclock_Click() MsgBox "Chơng trình cha hoàn thiện bạn phải chờ thời gian nữa !", vbInformation, "Thông Báo" End Sub Private Sub mnuDefrag_Click() Shell "c:\windows\DEFRAG.EXE", vbNormalFocus End Sub Private Sub mnudemo_Click() MsgBox "Chơng trình cha hoàn thiện bạn phải chờ thời gian nữa !", vbInformation, "Thông Báo" End Sub Private... vbNormalFocus End Sub Private Sub mnumucdo_Click() MsgBox "Chơng trình cha hoàn thiện bạn phải chờ thời gian nữa !", vbInformation, "Thông Báo" End Sub Private Sub mnuNOTEPAD_Click() Shell "c:\windows\notepad.exe", vbNormalFocus End Sub Private Sub mnupassword_Click() Frmpassword.Show End Sub Private Sub mnuprogram_Click() MsgBox "Chơng trình cha hoàn thiện bạn phải chờ thời gian nữa !", vbInformation,

Ngày đăng: 17/11/2016, 20:44

TỪ KHÓA LIÊN QUAN

w