game ô ăn quan sử dụng ngôn ngữ java

10 3.7K 11
game ô ăn quan sử dụng ngôn ngữ java

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

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI GAME Ô ĂN QUAN Sinh viên thực hiện Lê Trọng Quân 20092115 Nguyễn Văn Phú 20092027 Nguyễn Ngọc Quang 20092088 Phạm Đăng Đô 20090749 Vũ Minh Nhật 20091970 Lê Thanh Tùng 20093101 Nhóm 09 Giáo viên hướng dẫn ThS. Phạm Văn Hải Hà Nội, tháng 08 năm 2013 LỜI NÓI ĐẦU Trí tuệ nhân tạo là một học thuyết tìm cách để máy tính có được trí tuệ của một phần não người. Thông qua việc nghiên cứu của ngành khoa học này, khiến cho máy tính có được năng lực suy nghĩ, suy luận. Máy tính có năng lực phán đoán logic cực nhanh và lượng ghi nhớ to lớn. Cùng với sự phát triển của môn trí tuệ nhân tạo này, còn phải làm cho máy tính có được năng lực học tập gần với não người, khiến nó có thể ghi nhớ những bài học, tránh được cái sai lầm lặp lại, từ đó mà có thể hoàn thành trọn vẹn nhiệm vụ mà con người giao cho, và phát huy hết chức năng thần kỳ của nó. Sau khi máy tính có được loại trí tuệ nào đó về một phương diện nào đó, con người vẫn cố gắng khiến nó có được các trí tuệ khác về các phương khác, trí tuệ nhân tạo là một ngành không ngừng phát triển. Sau khi học môn trí tuệ nhân tao, cá nhân em nói riêng và các thành viên trong nhóm nói chung cũng đã hiểu được nhiều điều mới mẻ từ môn học này. Và chúng em đã bắt tay xây dựng game dân gian “Ô ăn quan”để hiểu kỹ hơn về môn học. Trong quá trình làm bài tập lớn, chúng em xin chân thành cảm ơn thầy Phạm Văn Hải đã tận tình hướng dẫn, cảm ơn các bạn đã đóng góp cho những ý kiến bổ ích. Do chưa có kinh nghiệm và kiến thức còn hạn hẹp nên trò chơi chưa được như mong muốn. Mong thầy và các bạn góp ý để game được tốt hơn. Chúng em xin chân thành cảm ơn! 1. Giới thiệu bài toán Trò chơi dân gian “Ô ăn quan”: “Ô ăn quan” là một trò chơi dân gian Việt Nam. Game có thể chơi 2 người, 3 người, hay 4 người. Đề tài thực hiện game 2 người chơi. Trò chơi với 2 người chơi được bố trí: chia bàn chơi thành 2 bên, mỗi bên nắm giữ 5 ô (ao dân), mỗi ô 5 sỏi và được phép rải sỏi (dân) trên 5 ô này theo 1 trong 2 hướng. Ngoài ra còn có 2 quan ở 2 đầu không có sỏi đại diện cho mỗi bên, tùy từng vùng miền mà việc tính toán quan như thế nào, có thể mỗi quan đại diện cho 1 số lượng dân (sỏi) nào đó hoặc không. Ở đây, đề tài xây dựng với quan không đại diện cho dân. Luật chơi của trò chơi như sau: trò chơi chơi theo lượt. Người chơi chọn 1 ô dân không trống trong phần mình kiểm soát và lần lượt rải đều số sỏi (dân) có trong ô này vào các ô liên tiếp theo 1 trong 2 hướng và tìm cách ăn được nhiều sỏi nhất để đưa vào kho của mình. Mỗi người chơi di chuyển số sỏi trong 1 ô dân xảy ra các trường hợp sau: Khi sỏi được rải hết mà ô tiếp theo của ô cuối cùng nhận sỏi rải: - Là quan: dừng và kết thúc lượt đi nhường lượt đi cho người còn lại - Là ô dân còn sỏi thì tiếp tục rải số sỏi trong ô này như bình thường - Là ô dân mà không có sỏi: nếu ô tiếp theo của ô này không có sỏi thì kết thúc lượt đi; nếu ô tiếp theo có sỏi mà là ao dân thì được tính là ăn và xem xét tiếp ô tiếp theo như khi kết thúc lượt đi để ăn; nếu ô tiếp theo có sỏi và là ô quan nếu trống thì kết thúc lượt đi, nếu có sỏi và chưa từng được ăn thì xem xét xem số sỏi trong quan đủ nhiều hơn 5 thì ăn, ít hơn thì kết thúc lượt đi, nếu ô quan có sỏi và đã được ăn thì thực hiện ăn bình thường như ô dân. Trò chơi kết thúc trong các trường hợp sau: - Khi 2 quan đồng thời được ăn hết - Khi các ô thuộc 1 bên nắm giữ hết sỏi mà trong kho của bên đó không đủ 5 sỏi để rải đều 5 ô của mình - Người thắng là người có nhiều sỏi trong kho hơn đối phương 2. Công nghệ sử dụng - Ngôn ngữ lập trình: java - IDE: eclipse 3. Chiến lược tìm kiếm 4.1. Phân tích bài toán Trong lượt đi của mình, người chơi cố gắng tìm nước đi tốt nhất là nước đi để ăn được thật nhiều sỏi và bất lợi cho đối phương nhất, hướng trò chơi đến kết thúc chiến thắng thuộc về mình. Ở chế độ người chơi với máy tính: Máy tính cần tìm ra nước đi tốt nhất để giành chiến thắng khi trò chơi kết thúc. Mỗi nước đi, máy sẽ lựa chọn nước đi có lợi cho mình nhất: ăn được nhiều sỏi nhất còn người chơi ở lượt tiếp theo ăn được ít sỏi nhất. Vấn đề đặt ra là xây dựng một hàm lượng giá để máy tính dựa vào đó tính toán giá trị mỗi nước đi và xây dựng giải thuật tìm kiếm để tìm được nước đi tốt nhất trong số các nước đi với giá trị mỗi nước đã tính được theo hàm lượng giá. 4.2. Cây trò chơi Trong quá trình chơi, trạng thái của bàn cờ được thay đổi liên tục bởi một nước đi của 1 trong 2 bên. Ta có thể biểu diễn các trạng thái này dưới dạng 1 cây tìm kiếm (gọi là cây trò chơi). Trong đó, mỗi nút tương ứng với một trạng thái bàn chơi. 4.3. Giải thuật Minimax Minimax (còn gọi là minmax) là một phương pháp trong lý thuyết quyết định có mục đích là tối thiểu hóa (minimize) tổn thất vốn được dự tính có thể là "tối đa" (maximize). Có thể hiểu ngược lại là, nó nhằm tối đa hóa lợi ích vốn được dự tính là tối thiểu (maximin). Nó bắt nguồn từ trò chơi có tổng bằng không. Nó cũng được mở rộng cho nhiều trò chơi phức tạp hơn và giúp đưa ra các quyết định chung khi có sự hiện diện của sự không chắc chắn. Minimax thường dùng để giải quyết những trò chơi có tính chất đối kháng. Trong trò chơi đối kháng, một bên được coi là Max, một bên được coi là Min. Max có mục tiêu làm cho tối đa lợi thế của mình, Min có mục tiêu là tối thiểu lợi thế của Max. Chiến lược lựa chọn của Max bị ảnh hưởng vào các nước đi của Min và ngược lại. Do đó Max cần chọn một chiến lược giúp cực đại hóa giá trị hàm mục tiêu – với giả định Min sẽ chọn được nước đi tối ưu. Chiến lược này được xác định bằng việc xét giá trị Minimax đối với mỗi nút trong cây biểu diễn trò chơi. Hình 1: Cây trò chơi Min-max Max chọn nước đi ứng với giá trị Minimax cực đại (để đạt được giá trị cực đại của hàm mục tiêu). Min chọn nước đi ứng với giá trị Minimax cực tiểu (để đạt được giá trị cực tiểu của hàm mục tiêu). Các nút lá được gán các giá trị đã được lượng giá. Giá trị tại các nut nhận được dựa trên giải thuật Minimax. Giải thuật Minimax Hình 2: Giải thuật Minimax Minimax có thể chọn được nước đi tốt nhất theo hàm mục tiêu nếu hàm lượng giá là tốt nhất. Tuy nhiên, Minimax gặp phải một vấn đề đó là không gian tìm kiếm bùng nổ với hàm mũ khi độ sâu tăng dần bởi với Minimax ta cần thực hiện chiến lược tìm kiếm vét cạn. Để giải quyết vấn đề này cần tìm kiếm phương pháp cắt bớt các nhánh tìm kiếm không cải thiện được kết quả. 4.4. Giải thuật cắt tỉa Alpha – Beta Ý tưởng: nếu một nhánh tìm kiếm nào đó không thể cải thiện giá trị của hàm tiện ích mà chúng ta đã có thì không cần xét đến nhánh tìm kiếm đó nữa. Việc cắt tỉa nhánh tìm kiếm tồi không ảnh hưởng tới kết quả cuối cùng của hàm tiện ích. Giải thuật cắt tỉa: Hình 3: Giải thuật cắt tỉa Alpha – beta Ví dụ: Hình 4: Alpha-beta cắt tỉa Giải thuật cắt tỉa Alpha – beta giảm được nhiều nhánh tìm kiếm tồi , giúp tăng tốc tìm kiếm và tăng độ sâu tìm kiếm, từ đó giá trị của hàm tiện ích. Trong đó: - Alpha là nước đi được hàm tiện ích đánh giá là tốt nhất đối với MAX (giá trị tối đa) tính tới hiện tại với nhánh tìm kiếm. Nếu v là nước đi tồi (không cải thiện) thì MAX sẽ bỏ qua nước đi tương ứng đối với v. - Beta được định nghĩa tương tự đối với v. Đối với không gian trò chơi lớn thì phương pháp cắt tỉa Alpha – beta vẫn không phù hợp vì sau cắt tỉa các nhánh tìm kiếm vẫn lớn với độ sâu tăng dần. Để cải thiện tốt nhất hàm tiềm kiếm cần sử dụng tri thức bổ sung đóng vai trò tương tự hàm ước lượng trong tìm kiếm với A* 4. Kĩ thuật lượng giá Hàm lượng giá là quan trọng nhất đối với giải thuật Minimax nói chung và giải thuật cắt tỉa Alpha – beta nói riêng. Lượng giá tốt thì giá trị hàm tiện ích trả về càng chuẩn, việc cắt tỉa được thực hiện sớm giúp giảm được nhiều chi phí tìm kiếm. Trong trò chơi “Ô ăn quan” mấu chốt của chiến thắng là việc bên nào ăn được nhiều sỏi hơn. Hàm lượng giá được xây dựng sẽ bám theo hướng đi này: Sau mỗi nước đi thử, xác định xem bên nào có lợi hơn bằng việc xác định số sỏi ăn được của mình và đối phương tại mỗi lượt đi. Vậy hàm lượng giá sẽ xác định như sau: • Utility(n) = Eval-Max(n) – Eval-Min(n). Trong đó:  Utility(n) là giá trị hàm tiện ích trả về với lựa chọn n, độ sâu tìm kiếm m.  Eval-Max(n): số sỏi thu được của MAX sau m bước  Eval-Min(n): số sỏi thu được của MIN sau m bước Cụ thể hàm lượng giá tính như sau: - Số sỏi ăn được của MAX sau mỗi lượt đi được đưa vào Eval-Max(n). - Số sỏi ăn được của MIN sau mỗi lượt đi của MIN được đưa vào Eval-Min(n). - Sau khi kết thúc m nước đi, tính giá trị Utility(n) của lựa chọn n là hiệu số giá trị Eval-Max(n) và Eval-Min(n). Tùy theo độ sâu cụ thể mà giá trị của Utility(n) nhận được sẽ tốt tới mức nào bởi lẽ những nước đi trước đó MAX ăn được nhiều hơn MIN nhưng không chắc rằng sau nước đi ở độ sâu cuối cùng được duyệt MIN có ăn được nhiều hơn MAX hay không và ngược lại. Do đó, độ sâu càng lớn thì giá trị hàm tiện ích càng tốt. 5. Khó khăn gặp phải Khi xây dựng trò chơi “Ô ăn quan” có những vướng mắc cả về khách quan và chủ quan không tránh khỏi. Thời gian xây dựng chương trình ít chưa đủ để đi sâu tìm ra những cách lượng giá tốt hơn cho trò chơi. Về mặt giao diện: trò chơi chưa có được giao diện tốt phục vụ đưa sản phẩm thành sản phẩm kinh doanh và phục vụ người dùng. 6. Hướng cải tiến và phát triển - Xây dựng trò chơi đa dạng về luật chơi hơn, phù hợp với từng vùng miền. - Cải tiến hàm lượng giá giúp nâng cao sự thông minh của máy - Đưa sản phẩm thành sản phẩm thương mại hóa 7. Tài liệu tham khảo 1. Slide bài giảng thầy Phạm Văn Hải 2. Slide bài giảng thầy Nguyễn Nhật Quang 3. Computer Science Game Trees - http://www.ocf.berkeley.edu/~yosenl/extras/alphabeta/alphabeta.html 8. Hướng dẫn cài đặt code và sử dụng ở file read . CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI GAME Ô ĂN QUAN Sinh viên thực hiện Lê Trọng Quân 20092115 Nguyễn Văn Phú 20092027 Nguyễn Ngọc Quang. trong kho của bên đó không đủ 5 sỏi để rải đều 5 ô của mình - Người thắng là người có nhiều sỏi trong kho hơn đối phương 2. Công nghệ sử dụng - Ngôn ngữ lập trình: java - IDE: eclipse 3. Chiến. không có sỏi: nếu ô tiếp theo của ô này không có sỏi thì kết thúc lượt đi; nếu ô tiếp theo có sỏi mà là ao dân thì được tính là ăn và xem xét tiếp ô tiếp theo như khi kết thúc lượt đi để ăn;

Ngày đăng: 23/10/2014, 23:54

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan