Tải bản đầy đủ (.pdf) (24 trang)

Trò chơi Ô ăn quang

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.15 MB, 24 trang )


i

MỤ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 iv
DANH MỤC BẢNG BIỂU vi
DANH 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.


ii
1.3.2 Các thành phần trong Android Project Error! Bookmark not defined.
1.3.3 Đa luồng trong Android Error! Bookmark not defined.
2. CƠ SỞ DỮ LIỆU Error! Bookmark not defined.
2.1. Giới thiệu về cơ sở dữ liệu Error! Bookmark not defined.
2.2. Hệ quản trị cơ sở dữ liệu Error! Bookmark not defined.
2.3. Hệ quản trị cơ sở dữ liệu SQLite trong Android. Error! Bookmark not
defined.
3. 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.


iii
3. 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.


iv
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.


v

DANH 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

vi
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



vii

DANH 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.


viii

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.

1

Chƣơ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.

2
‐ Hƣớng dẫn: Xem hƣớng dẫn để chơi.
3. THUẬT TOÁN TRONG TRÒ CHƠI
3.1. Cấu trúc dữ liệu
Sử dụng một mảng ListCell[] kiểu nguyên gồm 14 phần tử để chứa số lƣợng
quân và quan. Trong đó các ô quân là vị trí 1 đến 5 và 8 đến 12, ô quan là các cặp
0;7 và 6;13. Vị trí 6 và 7 dùng chứa quân di chuyển vào, vị trí 0 và 13 để chứa
quan.
Đố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.

3

Hì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.

4

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:

5

Hì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 đó.

6
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:

7

Hì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.

8
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.

9

4. 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

10

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

11

Sau 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.

12

Giao diện lúc di chuyển:



Hình 12. Giao diện trong lúc di chuyển


13

Giao 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

14

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

15

Giao 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

16

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×