Báo cáo tin học ứng dung Matlab Game dò mìn Chọn level : Có 3 level sắp xếp theo thứ tự tăng dần về độ khó beginner, intermediate và expert. Riêng chế độ custom cho phép tùy chỉnh kích thước và số mìn nhưng kết quả chơi sẽ không được lưu lại
Trang 1tỏ lòng biết ơn sâu sắc của em tới họ.
Đầu tiên, em muốn cảm ơn người hướng dẫn của em, thầy Lê Hoàn vì sự hướngdẫn tận tình và khoa học Đó là một cơ hội lớn cho em để được nghiên cứu và làm việcdưới sự hướng dẫn của thầy Cảm ơn rất nhiều tới thầy vì sự hướng dẫn em và cách đặt
ra các câu hỏi nghiên cứu giúp em tìm hiểu các vấn đề
Em xin gửi lời cảm ơn chân thành đến các cán bộ, giảng viên trong khoa Côngnghệ thông tin – Trường Đại học Điện Lực đã cùng với tri thức và tâm huyết của mình
để truyền đạt vốn kiến thức quý báu cho chúng em – những thành viên trong lớp Tin trong suốt thời gian học tập tại trường
D6-Em muốn cảm ơn những thành viên lớp D6-Tin – Trường Đại học Điện Lực.Những người bạn luôn chia sẻ và cổ vũ em trong những lúc khó khăn và em luôn ghinhớ điều đó
Cuối cùng, em xin bày tỏ lòng biết ơn vô hạn đối với cha mẹ và gia đình đã luônủng hộ, giúp đỡ em
Hà Nội, tháng 06 năm 2015
Sinh viên thực hiện
Trang 2MỤC LỤC
CHƯƠNG 1: TỔNG QUAN VỀ BÀI TOÁN 1
1.1 Tổng quan: 1
1.2 Phạm vi nghiên cứu và phạm vi ứng dụng: 2
1.3 Chức năng công việc đã làm được: 2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 3
2.1 Công cụ và ngôn ngữ 3
2.1.1 Khái niệm Về Matlab 3
2.1.2 Tổng quan về cấu trúc dữ liệu của Matlab, các ứng dụng 3
2.1.3 Hệ thống Matlab 4
2.1.4 Làm quen với Matlab 5
2.1.5 Các cửa sổ làm việc của Matlab 6
2.2 Mô hình tổng quát 9
2.2.1 Người dùng chọn chế độ chơi: 10
2.2.2 Người chơi chơi: 10
2.2.3 Kết thúc trò chơi: 10
2.3 Phân tích chương trình: 11
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH 12
3.1 Ý tưởng 12
3.2 Thực hiện 13
3.2.1 Tạo giao diện Guide 13
3.2.2 Tạo ma trận mìn 18
3.2.3 Tính số lượng mìn xung quanh 19
3.2.4 Thay đổi level 20
3.2.5 Chạy thời gian chơi 22
CHƯƠNG 4: KẾT QUẢ ĐẠT ĐƯỢC 23
4.1 Hướng dẫn sử dụng 23
Trang 34.2 Một số hình ảnh của chương trình 25 KẾT LUẬN 27 TÀI LIỆU THAM KHẢO 28
Trang 4DANH MỤC CÁC HÌNH
Hình 1.1 Giao diện trò chơi dò mìn 1
Hình 2.1 Cửa sổ làm việc của Matlab 5
Hình 2.2 Cửa sổ Command History 7
Hình 2.3 Cửa sổ Workspace 7
Hình 2.4 Cửa sổ Variable Editor 8
Hình 3.1 Lưu đồ tạo giao diện GUI 13
Hình 3.2 Lưu đồ tạo ma trận mìn 18
Hình 3.3 Lưu đồ tính số lượng mìn xung quanh 1 vị trí 19
Hình 3.4 Lưu đồ thay đổi level 20
Hình 3.5 Lưu đồ chạy thời gian chơi 22
DANH MỤC CÁC BẢNG Bảng 1.1 Chức năng công việc đã làm được 2
Bảng 4.1 Hướng dẫn chơi game dò mìn 23
Bảng 4.2 Kích thước của trò chơi ở các level khác nhau 25
Trang 5LỜI MỞ ĐẦU
Hiện nay, khi cuộc sống vật chất của con người trở lên đầy đủ hơn, con người ta
sẽ có nhu cầu về tinh thần cũng cao hơn Có rất nhiều cách để đáp ứng nhu cầu tinhthần của con người như nghe nhạc, đọc sách báo, xem phim, du lịch, ăn uống… nhưng
có một lĩnh vực mà chắc hẳn ai cũng đam mê và quan tâm đó chính là giải trí bằngnhững trò chơi Cùng với sự phát triển của công nghệ thông tin, trí tuệ con người pháttriển cao, hàng loạt các trò chơi ra đời phục vụ nhu cầu giải trí của con người
Xuất phát từ lý do đó nhóm chúng em đã quyết định thực hiện làm game “DòMìn” làm báo cáo môn học Lập Trình Matlab đồng thời mục đích cũng là làm ra gamephục vụ nhu cầu của con người
Game Dò mìn là một game có giao diện đơn giản, có nhiều mức độ chơi chongười chơi chọn lựa Game đòi hỏi người chơi có một chút suy luận Vì vậy trò chơivừa giúp giải trí vừa có thể luyện khả năng tư duy logic Tuy nhiên khi chơi quen tròchơi trở nên khá là nhẹ nhàng
Do kinh nghiệm, kiến thức và thời gian hạn chế nên chắc chắn bài tập này còn cónhiều thiếu sót, mong được sự góp ý của các bạn Và đặc biệt em rất mong được nghe
ý kiến đánh giá và chỉ bảo của thầy giáo Ngô Ngọc Thành, người nhiệt tình giảng dạy
và trực tiếp hướng dẫn nhóm làm bài tập Xin chân thành cảm ơn thầy!
Nội dung bài báo cáo gồm 4 chương:
Chương 1: Tổng quan về bài toán
Chương 2: Cơ sở lý thuyết
Chương 3: Xây dựng chương trình
Chương 4: Kết quả đạt được
Trang 6CHƯƠNG 1: TỔNG QUAN VỀ BÀI TOÁN1.1 Tổng quan:
Khi rảnh rỗi hoặc sau một giờ làm việc căng thẳng thì mỗi người trong chúng tađều muốn tìm cho mình một trò chơi hoặc một hoạt động để giảm căng thẳng cũngnhư lấy lại tinh thần Có thể đó là các hoạt động thể thao, hoặc cũng có thể là các tròchơi giải trí tùy thuộc vào quỹ thời gian của từng người Với những ai có ít thời gianviệc tình đến những trò chơi giải trí trên điện thoại máy tính là rất phù hợp Một trong
những trò chơi điện tử đáp ứng được nhu cầu này là game dò mìn Một trò chơi rất
quen thuộc với những người sử dụng máy tính
Dò mìn hay gỡ mìn là một trò chơi trên máy tính dành cho một người chơi Tròchơi được xây dựng như một chương trình giải trí cài đặt trên hệ điều hành MicrosoftWindows Hiện nay trò chơi Dò mìn rất phổ biến
Hình 1.1 Giao diện trò chơi dò mìn.
Trang 7Mục tiêu chính của trò chơi là giúp người chơi tăng tính suy luận logic, nhạy bén
và cảm thấy thoải mái tinh thần sau khi đã chinh phục được trò chơi
Trò chơi có 3 mức chơi: dễ, trung bình và khó Tùy theo khả năng của mỗi ngườichơi mà lựa chọn mức độ khó khác nhau Với mỗi cấp độ khó giao diện của trò chơi sẽthay đổi, cụ thể là độ rộng của bảng dò mìn sẽ tăng lên đồng thời số bom cũng sẽ tănglên
Đồ án nêu ra chi tiết các bước thực hiện xây dựng trò chơi “Dò mìn” sử dụngngôn ngữ Matlab và các cách tiếp cận để giải quyết các vấn đề trong trò chơi cũngnhững kết quả đã đạt được dựa trên một số những ví dụ thử nghiệm trong khi lập trình
1.2 Phạm vi nghiên cứu và phạm vi ứng dụng:
1.3 Chức năng công việc đã làm được:
Bảng 1.1 Chức năng công việc đã làm được.
ST
T
2 Chọn mức độ dễ, trung bình, khó, tùy chọn(tùy
Trang 8CHƯƠNG 2: CƠ SỞ LÝ THUYẾT1.4 Công cụ và ngôn ngữ
1.4.1 Khái niệm Về Matlab
Matlab là một ngôn ngữ lập trình thực hành bậc cao được sử dụng để giải các bàitoán về kỹ thuật Matlab tích hợp đc việc tính toán, thể hiện kết quả, cho phép lậptrình, giao diện làm việc rất dễ dàng cho người sử dụng Dữ liệu cùng với thư việnđược lập trình sẵn cho phép người sử dụng có thể có được những ứng dụng sau đây
thường
Cho phép lập trình tạo ra những ứng dụng mới
Cho phép mô phỏng các mô hình thực tế
Phân tích, khảo sát và hiển thị dữ liệu
Cho phép phát triển, giao tiếp với một số phần mềm khác như C++,Fortran
1.4.2 Tổng quan về cấu trúc dữ liệu của Matlab, các ứng dụng.
Matlab là một hệ thống tương giao, các phần tử dữ liệu là một mảng (mảng nàykhông đòi hỏi về kích thước) Chúng cho phép giải quyết các vấn đề liên quan đến lậptrình bằng máy tính, đặc biệt sử dụng các phép tính về ma trận hay vecto và có thể sửdụng ngôn ngữ C học Fortran lập trình rồi thực hiện ứng dụng lập trình đó bằng các
câu lệnh gọi từ Matlab Matlab được viết tắt từ chữ “MATrix LABoratory” tức là thư
viện về ma trận, từ đó phần mềm Matlab được viết nhằm cung cấp cho việc truy cậpvào phần mềm ma trận một cách dễ dàng, phần mềm ma trận này được phát triển bởicác công trình Linpack và Eispack Ngày nay Matlab được phát triển bởi Lapack tạonên một nghệ thuật phần mềm cho ma trận
Kiểu double: kiểu này là kiểu thông dụng nhất của các biến trong Matlab
Trang 9 Kiểu uint8, uint16, uint64…
Kiểu char ví dụ “Hello”
Các kỹ sư, các nhà nghiên cứu khoa học
Dùng Matlab để tính toán nghiên cứu tạo ra các sản phẩm tốt nhất trongsản xuất
1.4.2.3 Toolbox là một công cụ quan trọng trong Matlab
Công cụ này được Matlab cung cấp cho phép bạn ứng dụng các kỹ thuật để phântích, thiết kế, mô phỏng các mô hình
Ta có thể tìm thấy toolbox ở trong môi trường làm việc của:
1.4.3 Hệ thống Matlab
Hệ thống giao diện của Matlab được chia thành 5 phần:
Môi trường phát triển: Đây là nơi đặt các thanh công cụ, các phương tiệngiúp chúng ta sử dụng các lệnh và các file, ta có thể liệt kê một số nhưsau:
o Desktop
o Command Window
o Command History
o Browsers for viewinghelp
Thư viện, các hàm toán học bao gồm các cấu trúc như tính tổng, sin, cosinatan, atan2 …, các phép tính đơn giản đến các phép tính phức tạp như tính
ma trận nghịch đảo, trị riêng, chuyển đổi fourier, laplace, symbolic library
Trang 10 Ngôn ngữ Matlab Đó là các ngôn ngữ cao về ma trận và mảng, với cácdòng lệnh, các hàm, cấu trúc dữ liệu vào, có thể lập trình hướng đối tượng.
trường 2D và 3D, tạo các hình ảnh chuyển động, cung cấp các giao diệntương tác giữa người sử dụng và máy tính
Giao diện với các ngôn ngữ khác Matlab cho phép tương tác với các ngôngnuwx khác như C, Fortran…
1.4.4 Làm quen với Matlab
Trước tiên để khởi động Matlab click vào biểu tượng file Matlab.exe, trên mànhình xuất hiện cửa sổ như hình 2.1 Cửa sổ đó chứa các thanh công cụ (giao diệnngười và máy) cần thiết cho việc quản lý các files, các biến, cửa sổ lệnh, có thể coidesktop là các panel gòm các ô, vùng, quản lý và tác dụng của từng cửa sổ nhỏ đượcquản lý bởi desktop
Hình 2.2 Cửa sổ làm việc của Matlab
Trang 111.4.5 Các cửa sổ làm việc của Matlab
1.4.5.1 Cửa sổ Command Window
Là cửa sổ giao tiếp chính của Matlab bởi đây là nơi nhập giá trị các biến, hiển thịgiá trị, tính toán giá trị của biểu thức, thực thi các hàm có sẵn trong thư viện (dạnglệnh), hoặc các hàm (dạng function) do người dùng lập trình ra trong M-file
Các lệnh được nhập sau dấu nhắc “>>”, và nếu có sai sót trong quá trình gõ(nhập) lệnh thì hãy nhấn phím Enter cho đến khi nhận được dấu nhắc “>>” Thực thilệnh bằng nhấn phím Enter Gõ các lệnh sau:
>>A=pi/2;
>>B=sin(A)
B=
1
Hoặc chương trình soạn thảo trong M-file dưới đây:
% Chuong trinh trong M-file
X= 0: pi/6:2*pi;
Y=sin(x) ;
Plot(x,y) ;
% chuong trinh duoc luu voi ten file la “ve_sin.m”
1.4.5.2 Cửa sổ Command History
Các dòng nhập vào trong cửa sổ Command Window (các dòng này cí thể là dòngnhập biến, hoặc có thể là dòng lệnh thực hiện hàm nào đó) được giữ lại trong cửa sổCommand History, và cửa sổ này cho phép ta sử dụng lại những lệnh đó bằng cáchclick chuột lên các lệnh đó hoặc các biến, nếu muốn sử dụng lại biến đó Xem hình 1.2
Trang 12Hình 2.3 Cửa sổ Command History.
1.4.5.3 Cửa sổ WorkSpace
Là cửa sổ thể hiện tên các biến bạn sử dụng cùng với kích thước vùng nhớ (sốbytes), kiểu dữ liệu (lớp), các biến được giải phóng sau mỗi lần tắt chương trình
Hình 2.4 Cửa sổ Workspace
Trang 13Ngoài ra nó cho phép thay đổi giá trị, cũng như kích thước của biến bằng cáchclick chuột lên các biến Hoawcnj click vào nút bên trái ngay cạnh nút save Ví dụ :Khi chọn biến (giả sử là biến b) rồi click (hoặc click chuột vào nút cạnh nút save) tađược cửa sổ sau gọi là Variable Editor
Hình 2.5 Cửa sổ Variable Editor
Tiêu đề là tên biến b, định dang dữ liệu ở ô có tên là: Numeric format, mặc định
là dạng short, kích thước size là 1 by 3 (tức là một hàng và 3 cột) ta có thể thay đổikích thước này bằng cách thay đổi giá trị có trong ô kích thước size Dùng cửa sổ này
để lưu các biến ở dưới là dữ liệu của biến b, ta có thể thay đổi chúng bằng cách thayđổi giá trị trong các ô đó Tất cả các biến đều được lưu trong Workspace trong đó thểhiện cả kích thước (Size), số Bytes và kiểu dữ liệu (class) (8 bytes cho mỗi phần tử dữliệu kiểu double cụ thể là 24 bytes dành cho b và 8 bytes dành cho a)
1.4.5.4 Cửa sổ M-file
Là cửa sổ dùng để soạn thảo chương trình ứng dụng, để thực thi chương trìnhviết trong M-file bằng cách gõ tên của file chứa chương trình đó trong cửa sổCommandwindow Khi một chương trình viết trong M-file, thì tùy theo ứng dụng cụthể, tùy theo người lập trình mà chương trình có thể viết dưới dạng sau :
Dạng Script file : Tức là chương trình gồm tập hợp các câu lệnh viết dướidạng liệt kê, không có biến dữ liệu vào và biến lấy giá trị ra
Dạng hàm function : có biến dữ liệu vào và biến ra
Trang 151.5.1 Người dùng chọn chế độ chơi:
Ở giai đoạn này, các công việc xử lý bao gồm:
Thiết kế giao diện lựa chọn chế độ chơi: Ở đây trò chơi được thiết kế sao chongười dùng có thể dễ dàng chọn lựa chế độ chơi thích hợp dễ trung bình, khó hoặc tùychọn.Với chế độ tùy chọn, người chơi có thể tủy chỉnh số ô vuông và số mìn trong tròchơi
Xử lý chọn lựa trò chơi: Xử lý các sự kiên khi người chơi lật ô, sự kiện đối vớicác thao tác lật ô, đánh cờ và nhấn vào ô trống
Truyền các biến cần thiết: Các biến được truyền vào và được lưu lai sử dụng
1.5.2 Người chơi chơi:
Các công việc trong giai đoạn này bao gồm:
Thiết kế giao diện để khởi tạo và thông báo các thông tin khi chơi trò chơi, cácthông tin cần thiết tùy theo giao diện của từng mức độ chơi mà người chơi đã lựa chọn
Xử lý các sự kiện khi chơi: Nắm bắt được các sự kiện khi người chơi lật các ô, sựkiện loang khi người chơi lật được các ô trống, ô số hoặc việc lật phải ô mìn kết thúctrò chơi
Tính toán thời gian chơi: Trò chơi kết thúc được tính theo việc người chơi đãlật hết các ô số hoặc lật phải các ô mìn, thời gian sẽ dừng lại và kết quả được lưu khi 1trong 2 sự kiên trên xảy ra và trò chơi kết thúc
1.5.3 Kết thúc trò chơi:
Khi người chơi chơi xong một màn chơi, trò chơi sẽ kết thúc, chúng ta phải tínhđược thời gian chơi và thông tin về việc người chơi thắng hay thua để hiển thị chongười chơi sau đó xếp hạng người chơi trong vị trí của bảng xếp hạng
Trang 161.6 Phân tích chương trình:
Yêu c u: ầu:
Chương trình phải có giao diện thân thiện, dễ sử dụng Đảm bảo đủ cácchức năng cần thiết như chơi lại, chọn mức độ khó, tính thời gian, xếp hạngngười chơi…
Chương trình này được xây dựng gồm một menubar chứa các chức năngcủa trò chơi, một panel để hiển thị số mìn, tính thời gian chơi, nút chức năng chơilại và một panel chính chứa các ô vuông cho người chơi click
Thanh menubar nằm ở trên cùng, tiếp theo đến 1 panel bao gồm nút chứcnăng chơi lại, 1 textbox tính thời gian chơi và 1 textbox tính số mìn, cuối cùng làpanel chứa các ô vuông để người chơi lật
Trong thanh menubar bao gồm các Jmenu là Trò chơi và Trợ giúp TrongJmenu Trò chơi bao gồm các các checkbox để chọn chế độ chơi, tiếp theo là cácmenuitem để xem bảng xếp hạng và thoát trò chơi Trong Jmenu Trợ giúp cóJmenu Trợ giúp để trợ giuso người chơi
M c tiêu: ục tiêu:
Chương trình phải đảm bảo các chức năng như chơi mới, xếp hạng ngườichơi, trợ giúp, chọn chế độ chơi,
Trang 17CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH1.7 Ý tưởng
- Tạo ma trận button để hiển thị giao diện trò chơi
- Tạo 1 ma trận đánh dấu để quản lý ma trận button
- Trạng thái của một ô:
Có mìn: Được đặt ngẫu nhiên lúc khởi tạo
Đã mở: Khi người dùng nhấn chuột trái vào ô
Được cắm cờ: Khi người dùng chuột phải vào ô
Bình thường: Không có tất cả các trạng thái trên
- Khi mở một ô nào đó, có 3 trường hợp xảy ra:
Có mìn: Hiện lên tất cả mìn trong bảng và game over
quanh đến khi gặp 2 trường hợp trên
- Bảng điểm: Lưu điểm cao nhất của người chơi
Người chơi chiến thắng thời gian thấp hơn bảng điểm thì sẽ cập nhật điểmcao mới
Khi nhấn reset bảng điểm thì bảng điểm sẽ trở về trạng thái mặc định banđầu là 999
Trang 181.8 Thực hiện
1.8.1 Tạo giao diện Guide
- Mô tả: Xây dựng giao diện chương trình
- Lưu đồ
Hình 3.6 Lưu đồ tạo giao diện GUI
Trang 19- Mã nguồn
% Build the GUI
function fh = build_gui_image( obj )
% Create the figure and the axis
fh = figure( 'Color' , obj.sprite_tc(30,9,:), .
'Position' , [ 0 0 obj.ncols*16+19 obj.nrows*16+30+32 ], .
% Change the icon
warning( 'off' , 'MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame' );
jframe=get(fh, 'javaframe' );
jIcon=javax.swing.ImageIcon( 'minesweeper_icon.jpg' );
jframe.setFigureIcon(jIcon);