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
LỜI CẢM ƠN Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt thời gian từ khi bắt đầu học tập ở giảng đường đại học đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý thầy cô, gia đình và bạn bè. Nhân cơ hội này, em muốn bày tỏ 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ướng dẫ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ệc dướ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ông nghệ 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 D6- Tin trong suốt thời gian học tập tại trường. 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 ghi nhớ đ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 GVHD: ThS. Ngô Ngọc Thành MỤC LỤC GVHD: ThS. Ngô Ngọc Thành DANH MỤC CÁC HÌNH DANH MỤC CÁC BẢNG GVHD: ThS. Ngô Ngọc Thành LỜ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 tinh thầ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ằng nhữ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át triể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 game phụ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 cho ngườ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ơi vừ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. GVHD: ThS. Ngô Ngọc Thành CHƯƠNG 1: TỔNG QUAN VỀ BÀI TOÁN 1.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ũng như 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 gian việ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 Microsoft Windows. 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. 5 Mụ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ười chơ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ăng lê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ụng ngô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ũng nhữ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: • Phạm vi nghiên cứu: tự nghiên cứu. • Phạm vi ứng dụng: cá nhân. 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 Chức năng, công việc Đã làm được 1 Tạo giao diện thân thiện, dễ sử dung. 2 Chọn mức độ dễ, trung bình, khó, tùy chọn(tùy chỉnh số ô và số bom) 3 Tính thời gian và hiển thị số bom 4 Liên hệ trợ giúp 5 Hiển thị thắng và thua cuộc 6 Xếp hạng người chơi 7 Chơi lại 6 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 1.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ài toá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ập trì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. • Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học thông 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. • Với phần mềm đồ họa cực mạnh. • 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ày khô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ập trì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ập và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ởi các công trình Linpack và Eispack. Ngày nay Matlab được phát triển bởi Lapack tạo nên một nghệ thuật phần mềm cho ma trận. 1.4.2.1 Dữ liệu Dữ liệu của Matlab thể hiện dưới dạng ma trận (hoặc mảng – tổng quát), và có các kiểu dữ liệu được liệt kê sau đây: • Kiểu đơn single, kiểu này có lợi về bộ nhớ dữ liệu vì nó đòi hỏi ít byte nhớ hơn, kiểu dữ liệu này không sử dụng trong các phép tính toán học, độ chính xác kém hơ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. • Kiểu Sparse. • Kiểu uint8, uint16, uint64… 7 • Kiểu char ví dụ “Hello” • Kiểu cell • Kiểu Structure. Trong Matlab kiểu dữ liệu double là kiểu mặc định sử dụng trong các phép tính số học. 1.4.2.2 Ứng dụng Matlab tạo điều kiện thuận lợi cho: • Các khóa học về toán học • 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 trong sả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ân tí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: • Mạng noron • Logic mờ. • Simulink 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ện giú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, cosin atan, 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. • Ngôn ngữ Matlab. Đó là các ngôn ngữ cao về ma trận và mảng, với các dò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. 8 • Đồ họa trong Matlab. Bao gồm các câu lệnh thể hiện đồ họa trong mô trường 2D và 3D, tạo các hình ảnh chuyển động, cung cấp các giao diện tươ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ôn gnuwx 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àn hì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ện ngườ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ể coi desktop 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ỏ được quản lý bởi desktop. Hình 2.2 Cửa sổ làm việc của Matlab 1.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ạng lệnh), hoặc các hàm (dạng function) do người dùng lập trình ra trong M-file. 9 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 thi lệ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òng nhậ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ách click 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 10 [...]... • 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 • Không có mìn nhưng 8 ô xung quanh có mìn: Hiện số mìn xung quanh • Không có mìn và xung quanh cũng không có mìn: ... Bảng 4.2 Hướng dẫn chơi 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 Mở một ô bất kỳ: Trường hợp mở đầu tiên mà vào mìn là rất hãn hữu, lúc này game sẽ được khởi tạo và bạn bắt đầu vận dụng trí nhớ và sự suy luận của mình 27 Các luật chơi... được gần như đáp ứng được yêu cầu đề ra Thông qua bài tìm hiểu và xây dựng trò chơi Dò mìn chúng em đã có thêm nhiều kinh nghiệm trong việc lập trình bằng ngôn ngữ Java Thiết kế code và xử lý các sự kiện trong ngôn ngữ này Việc lập trình mới chỉ đạt được các yêu cầu về các chức năng, vẫn còn nhiều thiếu sót do hạn chế về thời gian cũng như kinh nghiệm lập trình Dò mìn là một game ứng dụng cao, mini... Generate the menubar set( fh, 'MenuBar', 'none' ); mb .game = uimenu( 'Parent', fh, 'Label', 'Game' ); mb.new = uimenu( mb .game, 'Label', 'New', 'Accelerator', 'N', 'Callback', @obj.changedifficulty ); mb.beg = uimenu( mb .game, 'Label', 'Beginner', 'Separator', 'on', 'Checked', checked{1}, 'Callback', @obj.changedifficulty ); mb.int = uimenu( mb .game, 'Label', 'Intermediate', 'Checked', checked{2},... mìn là một game ứng dụng cao, mini và khá dễ cài đặt nên có khả năng ứng dụng tốt trong cuộc sống Trong quá trình giảng dạy, nhờ có sự hướng dẫn tận tình của thầy giáo Ngô Ngọc Thành cùng với sự giúp đỡ của các thầy cô trong khoa, chúng em đã hoàn thành được bài tập với đề tài Lập trình game Dò mìn Từ đó chúng em đã thấy được các trình ứng dụng được tạo ra như thế nào, đồng thời giúp chúng em nắm vững... 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ới cá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ác thông tin cần thiết... @obj.changedifficulty ); mb.exp = uimenu( mb .game, 'Label', 'Expert', 'Checked', checked{3}, 'Callback', @obj.changedifficulty ); mb.cus = uimenu( mb .game, 'Label', 'Custom ', 'Checked', checked{4}, 'Callback', {@obj.changedifficulty} ); uimenu( mb .game, 'Label', 'Best Times ', 'Separator', 'on', 'Callback', @obj.leaderboard_show ); 19 uimenu( mb .game, 'Label', 'Exit', 'Separator', 'on', 'Callback',... = im; data.fh = fh; data.ax = ax; data.sm = sm; data.bc = bc; data.tc = tc; data.tm = tm; data.mb = mb; guidata( fh, data ); end 21 1.8.2 Tạo ma trận mìn - Mô tả: Random vị trí mìn trong ma trận cho đến khi đủ số mìn Lưu đồ Hình 3.7 Lưu đồ tạo ma trận mìn - Mã nguồn % Randomly Generate minefield function generate_minefield( obj ) obj.minefield = false( obj.nrows, obj.ncols ); while sum( obj.minefield(:)... việc lật phải ô mìn kết thúc trò 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 1 trong 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... 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ình viế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 . 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ướng dẫ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ệc dưới sự hướng dẫn của thầy 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ông nghệ 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 để. dụng Matlab tạo điều kiện thuận lợi cho: • Các khóa học về toán học • 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 trong sản xuất. 1.4.2.3