Đồ án tốt nghiệp khoa công nghệ thông tin. Có đầy đủ file báo cáo và đường dẫn tới source code full. Tốt cho việc nghiên cứu làm đồ án tốt nghiệp. Có đầy đủ mục lục và hình ảnh demo minh họa. Đây là những source code , mình lấy từ: http:doanit.com
Trang 1MỤC LỤC LỜI CẢM ƠN Error! Bookmark not defined LỜI CAM ĐOAN Error! Bookmark not defined.
DANH MỤC HÌNH ẢNH ivDANH MỤC BẢNG BIỂU viDANH MỤC TỪ VIẾT TẮT vii
GIỚI THIỆU Error! Bookmark not defined.
1 LÝ DO CHỌN ĐỀ TÀI Error! Bookmark not defined.
2 MỤC ĐÍCH VÀ Ý NGHĨA Error! Bookmark not defined.
3 NỘI DUNG ĐỀ TÀI Error! Bookmark not defined.
4 PHẠM VI ĐỀ TÀI Error! Bookmark not defined.
5 BỐ CỤC CỦA LUẬN VĂN Error! Bookmark not defined Chương 1 CƠ SỞ LÝ THUYẾT Error! Bookmark not defined.
1 MỘT SỐ VẤN ĐỀ VỀ HỆ ĐIỀU HÀNH ANDROID Error! Bookmark not defined.
1.1 Tổng quan về hệ điều hành Android Error! Bookmark not defined 1.1.1 Lịch sử Android Error! Bookmark not defined 1.1.2 Các phiên bản hệ điều hành Android Error! Bookmark not defined.
1.1.3 Ứng dụng Android và sự phát triển của Android trong tương lai
Error! Bookmark not defined 1.2 Kiến trúc hệ điều hành Android Error! Bookmark not defined 1.2.1 Các thành phần cấu tạo nên Android Error! Bookmark not defined 1.2.2 Các thành phần cấu tạo nên ứng dụng Android Error! Bookmark not defined.
1.3 Lập trình ứng dụng Android Error! Bookmark not defined 1.3.1 Thiết lập môi trường phát triển ứng dụng Error! Bookmark not defined.
Trang 23 GIẢI THUẬT SINH NƯỚC ĐI TRONG TRÒ CHƠI Error! Bookmark not defined.
3.1 Cây trò chơi Error! Bookmark not defined 3.2 Thuật toán MiniMax Error! Bookmark not defined 3.3 Thuật toán MiniMax với độ sâu hạn chế Error! Bookmark not defined 3.3.1 Mô tả Error! Bookmark not defined 3.3.2 Ví dụ Error! Bookmark not defined Chương 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG Error! Bookmark not defined.
1 TRÒ CHƠI Ô ĂN QUAN Error! Bookmark not defined 1.1 Mô tả Error! Bookmark not defined 1.2 Yêu cầu trò chơi Error! Bookmark not defined.
2 BIỂU ĐỒ USE CASE Error! Bookmark not defined 2.1 Biểu đồ Use Case tổng quát Error! Bookmark not defined 2.2 Đặc tả các Use Case Error! Bookmark not defined 2.2.1 Use Case chức năng Chơi mới Error! Bookmark not defined 2.2.2 Use Case chức năng Chọn mức độ chơi Error! Bookmark not defined.
2.2.3 Use Case chức năng Xem điểm cao Error! Bookmark not defined 2.2.4 Use Case chức năng chọn chế độ âm thanh Error! Bookmark not defined.
2.2.5 Use Case chức năng xem trợ giúp Error! Bookmark not defined.
Trang 33 BIỂU ĐỒ TUẦN TỰ Error! Bookmark not defined 3.1 Biểu đồ tuần tự chức năng Chơi mới Error! Bookmark not defined 3.1.1 Chế độ chơi với máy Error! Bookmark not defined 3.1.2 Chế độ 2 người chơi Error! Bookmark not defined 3.2 Biểu đồ tuần tự chức năng Chọn mức độ chơi Error! Bookmark not defined.
3.3 Biểu đồ tuần tự chức năng Xem điểm cao Error! Bookmark not defined 3.4 Biểu đồ tuần tự chức năng Chọn chế độ âm thanh Error! Bookmark not defined.
4 BIỂU ĐỒ CƠ SỞ DỮ LIỆU Error! Bookmark not defined 4.1 Biểu đồ Error! Bookmark not defined 4.2 Mô tả chi tiết biểu đồ CSDL Error! Bookmark not defined 4.2.1 Điểm cao Error! Bookmark not defined 4.2.2 Mức độ chơi Error! Bookmark not defined.
Chương 3 XÂY DỰNG CHƯƠNG TRÌNH 1
1 MÔI TRƯỜNG LẬP TRÌNH 1
2 HỆ THỐNG MENU TRONG TRÒ CHƠI 1
3 THUẬT TOÁN TRONG TRÒ CHƠI 2
3.1 Cấu trúc dữ liệu 2
3.2 Chế độ 2 người chơi 2
3.3 Chế độ chơi với máy 3
3.3.1 Sơ đồ xử lý 3
3.3.2 Sinh nước đi cho máy 4
3.4 Thuật toán di chuyển trong khi chơi 6
3.5 Rải quân 8
4 KẾT QUẢ DEMO 9
KẾT LUẬN Error! Bookmark not defined.
1 KẾT QUẢ ĐẠT ĐƯỢC Error! Bookmark not defined.
Trang 4iv
2 NHỮNG VẤN ĐỀ CHƯA LÀM ĐƯỢC Error! Bookmark not defined.
3 HƯỚNG PHÁT TRIỂN Error! Bookmark not defined TÀI LIỆU THAM KHẢO Error! Bookmark not defined.
Trang 5DANH MỤC HÌNH ẢNH
Hình 1 Một số phiên bản android Error! Bookmark not defined.
Hình 2 Các thành phần cấu tạo nên Android Error! Bookmark not defined.
Hình 3 Activity Lifecycle Error! Bookmark not defined.
Hình 4 Service Lifecycle Error! Bookmark not defined.
Hình 5 Truyền Intent và số liệu sang Activity khác Error! Bookmark not defined.
Hình 6 Tạo mới 1 ứng dụng Android Error! Bookmark not defined.
Hình 7 Cây thư mục Project Android Error! Bookmark not defined.
Hình 8 Bàn chơi Ô Ăn Quan Error! Bookmark not defined.
Hình 9 Trạng thái bàn lúc bắt đầu chơi Error! Bookmark not defined.
Hình 10 Cây trò chơi độ sâu 1 sau khi bên A đi ô 3 hướng sang phải Error! Bookmark not defined.
Hình 11 Biểu đồ Usecase trò chơi Ô Ăn Quan Error! Bookmark not defined.
Hình 12 Biểu đồ tuần tự chơi mới 1 người chơi Error! Bookmark not defined.
Hình 13 Biểu đồ tuần tự chơi mới 2 người chơi Error! Bookmark not defined.
Hình 14 Biểu đồ tuần tự chọn mức độ chơi Error! Bookmark not defined.
Hình 15 Biểu đồ tuần tự xem điểm cao Error! Bookmark not defined.
Hình 16 Biểu đồ tuần tự chọn chế độ âm thanh Error! Bookmark not defined.
Hình 17 Biểu đồ Cơ Sở Dữ Liệu Error! Bookmark not defined.
Hình 18 Hệ thống menu trong trò chơi 1
Hình 19 Sơ đồ xử lí ở chế độ 2 người chơi 3
Hình 20 Sơ đồ xử lý chế độ chơi với máy 4
Hình 21 Sơ đồ máy sinh nước đi 5
Hình 22 Sơ đồ di chuyển quân 7
Hình 23 Sơ đồ kiểm tra rải quân 8
Trang 6vi
Hình 24 Giao diện chính 9
Hình 25 Giao diện chọn chế độ chơi 10
Hình 26 Giao diện nhập tên chế độ một người chơi 10
Hình 27 Giao diện màn hình chơi 11
Hình 28 Giao diện khi chọn ô 11
Hình 29 Giao diện trong lúc di chuyển 12
Hình 30 Giao diện nhập tên chế độ 2 người chơi 13
Hình 31 Giao diện bàn chơi chế độ 2 người 13
Hình 32 Giao diện kết thúc trò chơi 14
Hình 33 Giao diện chọn mức độ chơi 14
Hình 34 Giao diện xem điểm cao 15
Hình 35 Giao diện xem hướng dẫn 15
Trang 7DANH MỤC BẢNG BIỂU Bảng 1: Đặc tả Usecase chơi mới Error! Bookmark not defined Bảng 2: Đặc tả Usecase mức độ chơi Error! Bookmark not defined Bảng 3: Đặc tả Usecase xem điểm cao Error! Bookmark not defined Bảng 4: Đặc tả Use Chọn chế độ âm thanh Error! Bookmark not defined Bảng 5: Đặc tả Usecase xem trợ giúp Error! Bookmark not defined Bảng 6 Cơ sở dữ liệu điểm cao Error! Bookmark not defined Bảng 7 Cơ sở dữ liệu mức độ chơi Error! Bookmark not defined.
Trang 8viii
DANH MỤC TỪ VIẾT TẮT
- Menu: trình đơn
- DVM: Dalvik virtual machine
- JDK: Java Development Kit
- J2ME: Java 2 Micro Edition
- SDK: Software Development Kit
Trang 9Chương 3 XÂY DỰNG CHƯƠNG TRÌNH
1 MÔI TRƯỜNG LẬP TRÌNH
‐ Chương trình được phát triển bằng ngôn ngữ lập trình Java cho Android trên công cụ Eclipse
‐ Công cụ Eclipse chạy trên môi trường Hệ Điều Hành Windows 7
2 HỆ THỐNG MENU TRONG TRÒ CHƠI
Hình 1 Hệ thống menu trong trò chơi
Menu chính chứa các đối tượng để người chơi lựa chọn:
‐ Chơi mới: Chọn để chơi game Sau khi chọn sẽ có 2 lựa chọn là một người chơi và hai người chơi
‐ Một người chơi: Chế độ một người chơi với máy
‐ Hai người chơi: Chế độ chơi giữa 2 người với nhau
‐ Mức độ: Chọn độ khó khi chơi với máy, có ba mức là dễ, thường và khó
‐ Điểm cao: Xem điểm cao của 5 người cao nhất khi chơi với máy
‐ Thoát: Thoát khỏi trò chơi
‐ Hiệu ứng âm thanh: Bật tắt âm thanh khi quân di chuyển và ăn quân
‐ Nhạc nền: Bật tắt nhạc nền
Trang 10Đối với chế độ chơi với máy, khi tính toán các nước đi của máy, chương trình sử dụng các mảng sao chép của ListCell để lưu lại vị trí đầu của bàn cờ hoặc
xử lí các nước di chuyển mà làm thay đổi trạng thái bàn cờ ban đầu Đồng thời, sử dụng các mảng MaxValueLeft[], MinValueLeft[], MaxValueRight[], MinValueRight[] gồm 5 phần tử là các mảng dùng để chứa giá trị Max và Min trong khi tính toán trong lúc sinh nước đi cho máy
3.2 Chế độ 2 người chơi
Hai người chơi thay phiên nhau đi cho đến khi kết thúc trò chơi Sau mỗi lần
di chuyển một quân cập nhật lại trạng thái của các ô chơi Đến lượt đi của mình, người chơi sẽ chọn một ô quân có ít nhất là 1 quân của phe mình rồi chọn hướng trái hoặc phải để đi quân Sau mỗi lượt đi sẽ kiểm tra điều kiện kết thúc trò chơi là 2
ô quan đều trống
Trang 11Hình 2 Sơ đồ xử lí ở chế độ 2 người chơi
3.3 Chế độ chơi với máy
3.3.1 Sơ đồ xử lý
Người và máy thay phiên nhau đi cho tới khi kết thúc trò chơi Sau mỗi lần
di chuyển một quân cập nhật lại trạng thái của các ô chơi Đến lượt đi của mình, người chơi sẽ chọn một ô quân có ít nhất là 1 quân của phe mình rồi chọn hướng trái hoặc phải để đi quân Đến lượt đi của máy, máy sinh ra một lựa chọn hợp lí để
di chuyển sao cho máy thắng Sau mỗi lượt đi sẽ kiểm tra điều kiện kết thúc trò chơi là 2 ô quan đều trống
Trang 124
Hình 3 Sơ đồ xử lý chế độ chơi với máy
3.3.2 Sinh nước đi cho máy
Đến lượt máy đi ta xét toàn bộ các ô có thể di chuyển của phía bên máy (Các
ô từ 1 đến 5 của ListCell mà có số quân lớn hơn 0)
Với mỗi lần di chuyển qua trái hoặc phải tại một nước đi lưu lại kết quả ăn được của nước đi này Nếu ăn xong mà buộc đối phương rải quân thì cộng thêm một số là 3
Sau khi một nước đi của bên máy hoàn thành, máy tiếp tục tính toán xét toàn
bộ các ô phía bên người chơi có thể di chuyển và lưu lại kết quả lớn nhất mà phía bên người chơi có thể ăn (Sau mỗi lần di chuyển, nếu ăn xong mà buộc đối phương rải quân thì cộng thêm một số là 3)
Tìm ra hiệu các giá trị Điểm của máy ăn và Điểm của người có được theo từng cặp Lấy hiệu nào có giá trị lớn nhất và từ đó chọn nước đi cho máy
Sơ đồ thuật toán:
Trang 13Hình 4 Sơ đồ máy sinh nước đi
‐ MaxValueLeft, MaxValueRight: là mảng nguyên gồm 5 phần tử để chứa giá trị tại mỗi nước đi của máy
‐ MinValueLeft, MinValueRight: là mảng nguyên gồm 5 phần tử để chứa giá trị lớn nhất mà người chơi có thể ăn được sau mỗi nước máy di chuyển qua trái hoặc phải
‐ moveRight(), moveLeft(): Đây là các hàm di chuyển của mỗi nước đi Hàm này trả về giá trị ăn được sau mỗi nước đi
‐ Max(AllStepHumanMove): Lấy giá trị lớn nhất mà người chơi ăn được sau khi máy đi một nước nào đó
Trang 146
Xét độ sâu cho thuật toán:
Trong sơ đồ thuật toán trên mới chỉ xét độ sâu là 1 Để thực hiện xét độ sâu lớn hơn, sau mỗi bước phía bên người di chuyển thực hiện đệ quy vòng lặp như trên, giá trị trả về sau mỗi bước lặp là giá trị hiệu lớn nhất của MaxValue và MinValue Sau đó lấy giá trị bước đi trước khi gọi vòng lặp của người trừ đi hiệu
này Như vậy hàm đánh giá MinValue(AllStepHumanMove) sẽ được chuyển thành MinValue(All(StepHumanMove - MiniMax()) Hàm MiniMax() sẽ thực hiện việc
tính các hiệu MaxValue và MinValue rồi trả về giá trị lớn nhất
3.4 Thuật toán di chuyển trong khi chơi
Mỗi lần đến lượt, người chơi chọn một trong các ô phía bên mình và di chuyển Số quân di chuyển ban đầu bằng số quân trong ô chọn Khi đã rải hết số quân này, sẽ có 3 trường hợp xảy ra: hoặc không ăn được quân nào và mất lượt, hoặc ăn quân và đến lượt đối phương, hoặc bốc quân ô tiếp theo và di chuyển
Sơ đồ thuật toán:
Trang 15Hình 5 Sơ đồ di chuyển quân
‐ NumOfMove: Số quân để di chuyển hiện tại đang còn
‐ Choose: Biến chỉ ô chọn để di chuyển ban đầu Có giá trị từ 1 đến 5 đối với người chơi đầu tiên và từ 8 đến 12 đối với người chơi còn lại
‐ RecentCellChoose: Biến chỉ ô đang thao tác trên bàn chơi Biến này di
chuyển trong phạm vi từ 1 đến 12
‐ RecentCellChoose = 6|7 : ô 6 và 7 trên bàn chơi là ô quan Nếu sỏi hết tại vị trí trước ô quan thì việc di chuyển sẽ kết thúc
‐ NextMove(): Đây là hàm để tìm vị trí di chuyển tiếp theo
‐ ListCell[RecentCellChoose]: Ô trên bàn chơi mà hiện tại đang thao tác
Trang 168
3.5 Rải quân
Khi đến lượt đi, nếu các ô của người chơi bị trống hết thì phải rải quân Số quân rải sẽ là 5, lượng quân này sẽ lấy từ quân mà người chơi đã ăn được Để thực hiện rải quân trong chương trình, sau khi một bên kết thúc lượt đi, thực hiện kiểm tra các ô của bên còn lại Nếu trống hết thì rải quân
Sơ đồ thuật toán:
Hình 6 Sơ đồ kiểm tra rải quân
‐ firstCell, lastCell: ô đầu và ô cuối thuộc quyền kiểm soát của người chơi Cụ thể là các cặp (1;5) và (8;12)
‐ Thực hiện rải quân bằng việc bổ sung vào các ô của người chơi mỗi ô một viên sỏi
Trang 174 KẾT QUẢ DEMO
Giao diện chính:
Khởi động chương giao diện màn hình chính như sau:
Hình 7 Giao diện chính
‐ Chơi mới: Để bắt đầu trò chơi
‐ Mức độ: Chọn độ khó khi chơi với máy
‐ Điểm cao: Xem danh sách top 5 người chơi có điểm cao nhất
‐ Thoát: Thoát chương trình
‐ Hướng dẫn: Đưa ra hướng dẫn cho người chơi
Trang 1810
Chọn chế độ chơi:
Sau khi chọn chơi mới, màn hình chọn chế độ chơi sẽ hiện ra như sau:
Hình 8 Giao diện chọn chế độ chơi
‐ 1 người chơi: Chơi với máy
‐ 2 người chơi: 2 người chơi với nhau
Giao diện màn hình 1 người chơi:
Sau khi chọn chế độ chơi một người, màn hình chơi hiện ra như sau:
Hình 9 Giao diện nhập tên chế độ một người chơi
Trang 19Sau khi nhập tên và click OK ta được màn hình:
Hình 10 Giao diện màn hình chơi
Trong bàn chơi ra có các ô để báo điểm người chơi đã ăn được
Giao diện màn hình khi chọn ô:
Hình 11 Giao diện khi chọn ô
Sau khi chọn một ô, click vào phím mũi tên trái hoặc phải để đi quân
Trang 2012
Giao diện lúc di chuyển:
Hình 12 Giao diện trong lúc di chuyển
Trang 21Giao diện màn hình hai người chơi:
Sau khi chọn chế độ chơi hai người, màn hình chơi hiện ra như sau:
Hình 13 Giao diện nhập tên chế độ 2 người chơi
Sau khi nhập tên và click OK giao diện như sau:
Hình 14 Giao diện bàn chơi chế độ 2 người
Trang 2214
Giao diện kết thúc trò chơi:
Sau khi hai bên ô quan đã trống trò chơi kết thúc với giao diện sau:
Hình 15 Giao diện kết thúc trò chơi Giao diện chọn mức độ chơi:
Sau khi click chọn mức độ từ màn hình chính ta đƣợc giao diện nhƣ sau:
Hình 16 Giao diện chọn mức độ chơi
Trang 23Giao diện xem điểm cao:
Sau khi click chọn điểm cao từ màn hình chính ta được giao diện như sau:
Hình 17 Giao diện xem điểm cao Giao diện hướng dẫn:
+ Giao diện xem hướng dẫn
Đây chỉ là mục lục và demo hình ảnh của đồ án, nếu bạn cần file báo cáo full và source code hãy liên hệ qua
mail doanit.com@gmail.com
Trang 2416