Lý do chọn đề tài Trong bối cảnh hiện nay, việc phát triển các thuật toán trí tuệ nhân tạo AI để ứng dụngtrong các trò chơi không chỉ đóng vai trò quan trọng trong nghiên cứu khoa học m
Trang 1HỌC VIỆN HÀNG KHÔNG VIỆT NAM
KHOA CÔNG NGHỆ THÔNG TIN
HỌC KỲ 3 – NĂM HỌC: 2023-2024
MÃ LỚP HỌC PHẦN: 010100085803
TP HCM, tháng 7 năm 2024
Giảng viên hướng dẫn: TS Trần Nguyên Bảo
Nguyễn Ngọc Diệu MSSV: 2254810027
Phạm Tấn Khiêm MSSV: 2254810036
Lê Thiên Hoài Thương MSSV: 2254810002
BÁO CÁO TIỂU LUẬN TRÍ TUỆ NHÂN TẠO
ỨNG DỤNG THUẬT TOÁN MINIMAX XÂY DỰNG TRÒ CHƠI
TIC TAC TOE
Trang 2NHẬN XÉT VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
Trang 3
MỤC LỤC
(Mục lục Nội dung, tạo mục lục tự động)
Trang 4DANH MỤC HÌNH ẢNH
(Danh mục hình ảnh trong Đề tài)
Trang 5DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT
(Danh mục các thuật ngữ và từ viết tắt trong Đề tài nếu có)
Trang 6LỜI NÓI ĐẦU
Trang 7CHƯƠNG 1 GIỚI THIỆU
1.1 Lý do chọn đề tài
Trong bối cảnh hiện nay, việc phát triển các thuật toán trí tuệ nhân tạo (AI) để ứng dụngtrong các trò chơi không chỉ đóng vai trò quan trọng trong nghiên cứu khoa học mà cònmang lại những bước tiến vượt bậc trong ngành công nghiệp giải trí Trò chơi Tic Tac Toe,mặc dù có luật chơi đơn giản, nhưng lại cung cấp một môi trường lý tưởng để triển khai vàthử nghiệm các thuật toán AI cơ bản
Thuật toán Minimax được biết đến là một trong những phương pháp hiệu quả để xây dựng
AI chơi các trò chơi hai người có tính đối kháng Bằng cách ứng dụng thuật toán Minimaxtrong xây dựng trò chơi Tic Tac Toe, đề tài này không chỉ giúp làm rõ cách thức hoạt độngcủa thuật toán trong việc dự đoán và tối ưu hóa nước đi mà còn tạo cơ hội cho việc nghiêncứu và phát triển AI trong các trò chơi phức tạp hơn Điều này đem lại lợi ích thiết thực chosinh viên và những người mới tiếp cận lĩnh vực AI, giúp họ nắm bắt các khái niệm cốt lõi vàchuẩn bị cho các ứng dụng thực tế rộng hơn trong tương lai
1.2 Mục tiêu đề tài
Xây dựng một hệ thống trí tuệ nhân tạo (AI) có khả năng chơi Tic Tac Toe hiệu quả thôngqua ứng dụng thuật toán Minimax Hệ thống được thiết kế nhằm cung cấp một công cụ giảitrí mang tính giáo dục, có thể sử dụng bởi sinh viên, những người đam mê AIvà cả các nhàphát triển phần mềm muốn tìm hiểu về việc tích hợp AI vào các trò chơi đơn giản Kết quảcần đạt được bao gồm:
- Về hệ thống ứng dụng: Hệ thống phải có khả năng chơi Tic Tac Toe với chiến lược hoànhảo, đảm bảo rằng người chơi không thể thắng khi đối mặt với AI Ngoài ra, hệ thống cần
có giao diện người dùng thân thiện, dễ sử dụng và trực quan, giúp người dùng có trảinghiệm mượt mà và hứng thú
- Về công nghệ ứng dụng: Hệ thống sẽ minh chứng cách thức triển khai thuật toán Minimax
để tìm nước đi tối ưu trong trò chơi Tic Tac Toe Công nghệ được sử dụng sẽ bao gồm cácnền tảng lập trình phổ biến và thư viện hỗ trợ AI, đảm bảo tính linh hoạt và khả năng mởrộng của hệ thống Đề tài cũng nhằm cung cấp tài liệu hướng dẫn chi tiết về cách cài đặt vàtriển khai thuật toán này, tạo nền tảng cho những ứng dụng phức tạp hơn trong tương lai
1.3 Phạm vi đề tài
Trang 8- Không gian: Hệ thống được triển khai trên nền tảng ứng dụng web hoặc ứng dụng desktop,
có khả năng tương thích với các hệ điều hành phổ biến như Windows, macOSvà Linux.Điều này đảm bảo rằng người dùng có thể dễ dàng truy cập và tương tác với trò chơi từ máytính cá nhân
- Thời gian: Thời gian nghiên cứu và phát triển hệ thống kéo dài trong vòng 2 tháng, baogồm các giai đoạn phân tích, thiết kế, lập trình, kiểm thửvà hoàn thiện hệ thống Thời giannày cho phép kiểm tra và tinh chỉnh các thuật toán để đảm bảo hiệu suất tốt nhất
- Lĩnh vực: Phạm vi nghiên cứu thuộc lĩnh vực trí tuệ nhân tạo và lập trình trò chơi, tậptrung vào việc ứng dụng thuật toán Minimax Đề tài sẽ giới hạn trong việc xử lý các tìnhhuống và chiến lược chơi Tic Tac Toe, một trò chơi hai người có luật chơi và chiến thuậttương đối đơn giản Hệ thống sẽ không bao gồm các trò chơi phức tạp khác hay tích hợpthêm các thuật toán AI nâng cao ngoài Minimax
Việc xác định phạm vi cụ thể giúp đề tài tránh việc mở rộng quá mức hoặc đi sâu vào cácvấn đề không liên quan, đảm bảo tính tập trung và khả thi trong quá trình thực hiện Hệthống kết quả sẽ cung cấp một giải pháp AI hoàn chỉnh cho trò chơi Tic Tac Toe, dễ hiểu vàứng dụng thực tế cho các mục đích học tập và nghiên cứu cơ bản về AI
1.4 Đối tượng nghiên cứu
1.4.1 Thuật toán Minimax:
- Nguyên lý hoạt động: Hiểu rõ cách thức hoạt động của thuật toán Minimax trong việc tìmkiếm nước đi tối ưu trong các trò chơi hai người có tính đối kháng Bao gồm việc phân tíchcây trò chơi, chức năng lượng giá (heuristic function)và các chiến lược cắt tỉa cây (alpha-beta pruning) để cải thiện hiệu suất
- Ứng dụng cụ thể trong Tic Tac Toe: Nghiên cứu cách thức triển khai Minimax trong bốicảnh trò chơi Tic Tac Toe, từ việc khởi tạo cây trò chơi đến xác định chiến lược chiến thắnghoặc tối thiểu là không thua
1.4.2 Luật chơi Tic Tac Toe:
- Quy tắc cơ bản: Xác định và lập trình các quy tắc chơi cơ bản, bao gồm cách thức xác địnhngười thắng cuộc và các điều kiện kết thúc trò chơi
- Chiến lược chơi hiệu quả: Phân tích các chiến lược chơi phổ biến trong Tic Tac Toe, từ đóthiết lập các chiến lược tối ưu cho AI
1.4.3 Cấu trúc cây trò chơi:
Trang 9- Xây dựng cây trò chơi: Nghiên cứu cách tạo ra cây trò chơi cho Tic Tac Toe, bao gồm tất
cả các nước đi khả dĩ từ mỗi trạng thái của bảng
- Duyệt cây: Cách thức duyệt qua các nút trong cây để đánh giá và chọn nước đi tốt nhấtdựa trên thuật toán Minimax
1.4.4 Giao diện người dùng (UI):
- Thiết kế giao diện: Nghiên cứu các nguyên tắc thiết kế giao diện cho trò chơi nhằm đảmbảo tính thân thiện, dễ sử dụng và tương tác tốt với người dùng
- Trải nghiệm người dùng (UX): Phân tích trải nghiệm người dùng trong trò chơi, bao gồmcác yếu tố như phản hồi trực quan, âm thanhvà cách hiển thị kết quả
1.5 Phương pháp nghiên cứu
1.5.1 Phương pháp thu thập thông tin:
- Khảo sát: Tiến hành khảo sát sơ bộ để thu thập ý kiến từ người dùng tiềm năng về mong muốn và trải nghiệm đối với trò chơi Tic Tac Toe Điều này giúp hiểu rõ nhu cầu và yêu cầuthực tế của người dùng, từ đó định hình các tính năng của hệ thống
- Đọc tài liệu: Tìm hiểu các tài liệu, sách vởvà các nghiên cứu trước đây liên quan đến thuật toán Minimax, AI trong trò chơivà các bài viết học thuật về Tic Tac Toe Đặc biệt chú trọngđến những tài liệu hướng dẫn cách triển khai Minimax trong các trò chơi đơn giản
- Tham khảo mã nguồn: Xem xét và phân tích mã nguồn mở từ các dự án tương tự để hiểu các cách tiếp cận khác nhau và học hỏi từ các giải pháp đã có
1.5.2 Phương pháp xử lý thông tin:
- Định lượng: Phân tích định lượng các dữ liệu thu thập được từ khảo sát, chẳng hạn như tỷ
lệ lựa chọn chiến lược chơi của người dùng, mức độ hài lòng với các tính năng trò chơi Sử dụng các công cụ thống kê để xác định các mẫu thông tin có ý nghĩa
- Định tính: Áp dụng phân tích định tính đối với thông tin từ tài liệu nghiên cứu và phản hồi của người dùng, giúp hiểu rõ hơn về hành vi và nhu cầu của người dùng đối với AI trong tròchơi Tic Tac Toe Sử dụng phương pháp phân tích nội dung để xác định các yếu tố cần cải thiện trong giao diện và chiến lược AI
Trang 101.5.2 Phương pháp thực nghiệm:
- Phát triển và thử nghiệm hệ thống: Xây dựng mô hình thuật toán Minimax và tích hợp vào
hệ thống trò chơi Tic Tac Toe Thực hiện các thử nghiệm để kiểm tra hiệu suất của AI, bao gồm kiểm thử chức năng (functional testing) để đảm bảo AI hoạt động đúng theo thiết kếvà kiểm thử trải nghiệm người dùng (user experience testing) để đánh giá mức độ tương tác và
sự hài lòng của người dùng
- Cải tiến qua vòng lặp: Áp dụng phương pháp lặp (iterative development) để cải thiện hệ thống dựa trên phản hồi và kết quả thử nghiệm Mỗi vòng lặp sẽ bao gồm cập nhật thuật toán, cải tiến giao diệnvà thực hiện các kiểm tra bổ sung nhằm tối ưu hóa AI và nâng cao trải nghiệm người dùng
Trang 11CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Để xây dựng hệ thống trí tuệ nhân tạo (AI) cho trò chơi Tic Tac Toe, cần có một nền tảngvững chắc về các công nghệ web phổ biến Việc chọn HTML, CSSvà JavaScript làm cơ sở
lý thuyết chính là do sự kết hợp của chúng cung cấp đầy đủ các khả năng cần thiết để pháttriển giao diện người dùng (UI) trực quan, khả năng tương tác mạnh mẽ và quản lý logicứng dụng Mỗi công nghệ đều có lịch sử phát triển và đặc điểm riêng giúp chúng thích hợp
để triển khai hệ thống AI chơi Tic Tac Toe trên nền tảng web Dưới đây là các cơ sở lýthuyết chi tiết cho HTML, CSS và JavaScript
2.1 HTML (HyperText Markup Language)
Lịch sử hình thành và phát triển:
HTML (HyperText Markup Language) được phát triển lần đầu tiên bởi Tim Lee vào năm 1991 Ban đầu, nó được tạo ra để mô tả các tài liệu khoa học và liên kết chúng qua các siêu liên kết (hyperlink) HTML đã trải qua nhiều phiên bản, từ HTML 2.0 vào năm 1995 đến HTML 5 vào năm 2014, cung cấp các tính năng phong phú hơn cho việc xây dựng trang web
Berners-Khái niệm (định nghĩa): HTML là ngôn ngữ đánh dấu tiêu chuẩn được sử dụng để tạo
và cấu trúc nội dung trên web Nó sử dụng các thẻ (tag) để xác định các phần tử như tiêu đề, đoạn văn, hình ảnh, liên kếtvà biểu mẫu.
Trang 122.2 CSS (Cascading Style Sheets)
Lịch sử hình thành và phát triển:
CSS (Cascading Style Sheets) được phát triển bởi Håkon Wium Lie và Bert Bos vào năm
1996 Nó được thiết kế để tách biệt phần nội dung của trang web (HTML) với phần trìnhbày (giao diện người dùng), giúp dễ dàng quản lý và thay đổi giao diện trang web
Khái niệm (định nghĩa): CSS là ngôn ngữ tạo kiểu dùng để mô tả cách các phần tử HTML
sẽ hiển thị trên trang web Nó kiểm soát các yếu tố như màu sắc, phông chữ, bố cụcvàkhoảng cách
Khái niệm (định nghĩa):
JavaScript là ngôn ngữ lập trình kịch bản chủ yếu được sử dụng để tạo nội dung động
và tương tác trên trang web Nó cho phép lập trình viên điều khiển các phần tử HTML, xử
lý sự kiệnvà tương tác với API
Điểm mạnh:
Trang 13Tính năng động và tương tác: JavaScript cho phép cập nhật nội dung của trang web
mà không cần tải lại trang, tạo trải nghiệm người dùng mượt mà
Khả năng mở rộng: Hỗ trợ nhiều thư viện và framework như React, Vue.jsvàAngular giúp tăng cường khả năng phát triển ứng dụng web
Trang 14CHƯƠNG 3 PHÂN TÍCH HỆ THỐNG VÀ XÂY DỰNG SẢN PHẨM
3.1 Phân tích hệ thống
3.1.1 Thành phần giao diện người dùng (UI Components)
Bảng trò chơi (Game Board)
Mô tả: Là bảng 3x3 được hiển thị trên giao diện web, cho phép người dùng tương tácbằng cách chọn các ô để đặt dấu X hoặc O
Chức năng: Cung cấp không gian chơi game và hiển thị trạng thái hiện tại của tròchơi
Yêu cầu:
Hiển thị 9 ô vuông có thể chọn
Cập nhật hình ảnh (dấu X hoặc O) khi người chơi hoặc AI chọn ô
Chuyển đổi trạng thái của các ô từ khả dụng sang không khả dụng sau khi đãchọn
Tiêu đề và hướng dẫn (Title and Instructions)
Mô tả: Gồm phần tiêu đề trò chơi và hướng dẫn người dùng cách chơi
Chức năng: Cung cấp thông tin cơ bản và hướng dẫn để người dùng dễ hiểu và bắtđầu chơi
Yêu cầu:
Hiển thị tiêu đề "Tic Tac Toe"
Hướng dẫn ngắn gọn về cách chọn ô và mục tiêu của trò chơi
Thông báo kết quả (Result Display)
Mô tả: Hiển thị kết quả của trò chơi, thông báo ai là người chiến thắng hoặc nếu tròchơi kết thúc hòa
Chức năng: Cung cấp phản hồi cho người chơi về kết quả cuối cùng
Yêu cầu:
Thông báo khi có người thắng (X hoặc O thắng) hoặc khi trò chơi hòa
Cung cấp nút khởi động lại để người chơi có thể chơi lại từ đầu
3.1.2 Thành phần logic (Logic Components)
Điều khiển nước đi (Move Controller)
Mô tả: Quản lý và xử lý nước đi của người chơi và AI
Chức năng: Xác định và xử lý nước đi của người chơi dựa trên hành động chọn ôvà
Trang 15Yêu cầu:
Nhận diện và xử lý sự kiện nhấp chuột của người chơi trên các ô trống
Cập nhật bảng trò chơi và chuyển lượt cho AI sau mỗi nước đi của người chơi.Đảm bảo AI chọn các ô hợp lệ
Thuật toán Minimax (Minimax Algorithm)
Mô tả: Triển khai thuật toán Minimax để AI tính toán nước đi tối ưu nhất
Chức năng: Đưa ra quyết định tối ưu cho nước đi của AI nhằm tăng cơ hội thắnghoặc ngăn chặn người chơi thắng
Kiểm tra thắng/thua (Win/Lose Checker)
Mô tả: Kiểm tra xem có người chơi nào đã thắng hoặc trò chơi kết thúc hòa sau mỗilượt đi
Chức năng: Xác định điều kiện kết thúc trò chơi và cập nhật trạng thái kết thúc Yêu cầu:
Kiểm tra các hàng, cộtvà đường chéo trên bảng trò chơi để xác định ngườithắng
Cập nhật trạng thái của trò chơi khi đạt điều kiện thắng hoặc khi tất cả các ô
đã được chọn mà không có người thắng
3.1.3 Thành phần quản lý trạng thái (State Management)
Trạng thái trò chơi (Game State)
Lưu trữ trạng thái của mỗi ô (trống, X, hoặc O)
Lưu trữ thông tin về người chơi hiện tại (X hoặc O)
Trang 16Cập nhật trạng thái (State Update)
Mô tả: Cập nhật và duy trì trạng thái của trò chơi dựa trên hành động củangười chơi hoặc AI
Chức năng: Điều chỉnh trạng thái của bảng trò chơi sau mỗi lượt đi và xácđịnh xem trò chơi đã kết thúc hay chưa
Yêu cầu:
Cập nhật trạng thái của các ô sau mỗi lượt đi
Xác định khi trò chơi kết thúc và cập nhật trạng thái kết thúc của tròchơi
3.1.4 Quy trình hoạt động
Khởi tạo trò chơi (Game Initialization)
Bắt đầu trò chơi: Giao diện trò chơi xuất hiện với bảng trò chơi trống và cáchướng dẫn ban đầu
Cài đặt trạng thái ban đầu: Thiết lập bảng trò chơi trống và đặt người chơihiện tại làm người chơi đầu tiên (có thể là người chơi hoặc AI tùy chọn)
Luồng chơi (Game Flow)
Người chơi chọn ô (Player Move): Người chơi chọn một ô trống trên bảng tròchơi để đặt dấu của mình
Cập nhật trạng thái: Trạng thái của ô được cập nhật, ký hiệu người chơixuất hiện và trạng thái của trò chơi được kiểm tra
AI thực hiện nước đi (AI Move): Nếu trò chơi chưa kết thúc, AI sửdụng thuật toán Minimax để chọn nước đi tối ưu và cập nhật bảng trò chơi Kiểm tra trạng thái cuối (Final State Check): Sau mỗi lượt đi, kiểm tra xem tròchơi đã kết thúc hay chưa (có người thắng hoặc hòa)
Kết thúc trò chơi (Game End)
Hiển thị kết quả (Result Display): Khi có kết quả, hiển thị thông báo chongười chơi biết ai thắng hoặc trò chơi kết thúc hòa
Khởi động lại trò chơi (Restart Game): Người chơi có thể nhấn nút khởi độnglại để bắt đầu trò chơi mới, trở lại trạng thái ban đầu
3.2 Xây dựng giao diện sản phẩm
( Phần Xây dựng giao diện cho các chức năng trong hệ thống tùy theo mỗi đề tài sẽ mà
Trang 17Lưu ý cách trình bày trong phần trình bày thiết kế giao diện:
Phải có tên chức năng của giao diện
Chức năng giúp người dùng thực hiện công việc gì, giải thích chức năng giao diện Đặt tên hình cho chức năng, để làm danh mục hình, đặt đúng cứu pháp theo quy định.3.2.1 …
….
3.2.3 ….
….
Trang 18CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1 Kết luận
Đạt được:
Hoàn thành giao diện người dùng (UI): Sản phẩm cung cấp một giao diện trực quan
và dễ sử dụng cho trò chơi Tic Tac Toe, đáp ứng đầy đủ các yêu cầu về giao diện và trảinghiệm người dùng
Triển khai thành công thuật toán Minimax: Thuật toán Minimax được triển khai hiệuquả để AI có thể tính toán nước đi tối ưu nhất, đảm bảo trò chơi diễn ra công bằng và tạo rathách thức đáng kể cho người chơi
Tích hợp các chức năng kiểm tra điều kiện thắng/thua: Hệ thống có khả năng xácđịnh và hiển thị chính xác người thắng hoặc trạng thái hòa sau mỗi lượt chơi, giúp ngườidùng hiểu rõ tình trạng hiện tại của trò chơi
Chưa hoàn thành:
Tối ưu hóa hiệu suất thuật toán: Mặc dù thuật toán Minimax hoạt động tốt, nhưngchưa được tối ưu hóa triệt để cho tất cả các trường hợp, dẫn đến thời gian xử lý có thể kéodài khi số lượng lựa chọn tăng lên
Thiếu hỗ trợ đa người chơi: Sản phẩm hiện chỉ hỗ trợ một người chơi đối đầu với AI.Khả năng chơi đối kháng giữa hai người chơi chưa được phát triển đầy đủ
Khả năng mở rộng và tùy chỉnh: Sản phẩm hiện tại chưa cho phép người dùng tùychỉnh các quy tắc hoặc kích thước bảng trò chơi, giới hạn sự linh hoạt trong trải nghiệmchơi game
Đóng góp nổi bật:
Nâng cao kỹ năng lập trình thuật toán: Quá trình triển khai thuật toán Minimax đãgiúp sinh viên nâng cao kỹ năng lập trình và hiểu biết về các thuật toán tìm kiếm và ra quyếtđịnh
Kinh nghiệm phát triển giao diện web: Việc xây dựng giao diện người dùng thânthiện và tích hợp các tính năng tương tác đã cung cấp cho sinh viên kinh nghiệm quý báutrong phát triển ứng dụng web
Áp dụng lý thuyết vào thực tiễn: Đề tài đã thành công trong việc chuyển lý thuyết vềthuật toán Minimax vào một ứng dụng thực tế, từ đó giúp sinh viên hiểu rõ hơn về cách ápdụng các phương pháp lý thuyết vào phát triển phần mềm