Trò chơi này mang lại cho người dùng cảm giác mới mẻhơn về cờ tướng vì nó được xây dựng với sự kết hợp giữa cờ tướng cổ điển, trí tuệnhân tạo và công nghệ thực tế tăng cường.. Để hiện th
Trang 1KHOA KHOA HỌC - KỸ THUẬT MÁY TÍNH
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
XÂY DỰNG TRÒ CHƠI CỜ TƯỚNG
Trang 2KHOA:KH & KT Máy tính _ NHIỆM VỤ LUẬN ÁN TỐT NGHIỆP
- Tìm hiểu về các giải thuật AI truyền thống
- Tìm hiểu về Unity và Công nghệ AR
- Thiết kế game phù hợp
- Hiện thực sản phẩm có đánh giá
3 Ngày giao nhiệm vụ luận án: 01/02/2021
4 Ngày hoàn thành nhiệm vụ: 30/07/2021
5 Họ tên giảng viên hướng dẫn: Phần hướng dẫn:
1) Vương Bá Thịnh
Nội dung và yêu cầu LVTN đã được thông qua Bộ môn
Ngày tháng năm
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
PGS.TS Huỳnh Tường Nguyên Vương Bá Thịnh
PHẦN DÀNH CHO KHOA, BỘ MÔN:
Người duyệt (chấm sơ bộ): _
Trang 4Ngày 11 tháng 08 năm 2021
PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người phản biện)
1 Họ và tên SV: CHUNG MINH ĐỆ
2 Đề tài: XÂY DỰNG TRÒ CHƠI CỜ TƯỚNG
3 Họ tên người phản biện: TRẦN GIANG SƠN
4 Tổng quát về bản thuyết minh:
- Số bản vẽ vẽ tay Số bản vẽ trên máy tính:
6 Những ưu điểm chính của LVTN:
- Sinh viên đã tìm hiểu những kiến thức cơ sở để thực hiện luận văn như giải thuật MinMax, giải thuật Alpha-Beta.
- Sinh viên đã tìm hiểu và sử dụng môi trường lập trình Unity để hiện thực chương trình.
- Viết được chương trình cho phép người chơi cờ với máy trên điện thoại thông minh.
7 Những thiếu sót chính của LVTN:
- Chương trình còn đơn giản, nước đi của máy tính không hiệu quả Cần bổ sung thêm một số giải thuật và giải pháp để tăng độ thông minh cho chương trình.
- Cần phải chỉnh sửa thêm hàm lượng giá.
- Việc đưa nội dung thực tế tăng cường (AR) vào trò chơi là không cần thiết.
8 Đề nghị: Được bảo vệ Bổ sung thêm để bảo vệ Không được bảo vệ
9 3 câu hỏi SV phải trả lời trước Hội đồng:
- Em hãy đề xuất phương án để làm tăng độ thông minh cho chương trình.
10 Đánh giá chung (bằng chữ: giỏi, khá, TB): Điểm : 6 /10
Ký tên (ghi rõ họ tên)
Trần Giang Sơn
Trang 5Các tài liệu, trang web mà chúng tôi tham khảo trong quá trình thực hiện đềcương luận văn đều được trích dẫn rõ ràng nguồn gốc được trình bày ở mục tàiliệu tham khảo Chúng tôi xin cam đoan rằng ngoài những trích dẫn tham khảo,toàn bộ nội dung báo cáo đều do chúng tôi tự soạn thảo từ những kết quả nghiêncứu do chúng tôi thực hiện và các kết quả của chúng tôi nghiên cứu dưới sự hướngdẫn của thầy Vương Bá Thịnh, không sao chép từ bất kỳ nguồn tài liệu nào khác.Tôi sẽ hoàn toàn chịu xử lý theo quy định nếu có bất cứ sai phạm nào với lờicam kết.
Sinh viên thực hiện đề tài
Trang 6Với vốn kiến thức được tiếp thu trong quá trình học tập không chỉ là nền tảngcho quá trình viết luận văn mà còn là hành trang quý báu sẽ đi suốt cuộc đời và
hỗ trợ rất nhiều cho công việc của tôi
Tôi xin gửi lời biết ơn sâu sắc và lời cảm ơn chân thành đến Ths Vương BáThịnh đã dành rất nhiều thời gian và tâm huyết hướng dẫn nghiên cứu và hoànthành đề cương luận văn tốt nghiệp
Tôi xin gửi lời cảm ơn đến thầy cô của khoa Khoa học và Kỹ thuật Máy tính,đặc biệt các thầy cô đã tham gia giảng dạy các môn trong chương trình mà tôitheo học Các thầy cô là người trang bị, trau dồi thêm cho tôi kiến thức nền tảng,
kỹ năng nghiên cứu, kỹ năng tìm hiểu và giải quyết vấn đề trong học tập cũngnhư trong cuộc sống
Tôi xin gửi lời cảm ơn sâu sắc đến toàn thể gia đình, bạn bè, những người đãluôn bên cạnh tôi, tạo động lực để tôi phấn đấu trong học tập và trong cuộc sống.Cuối cùng, do những kiến thức còn hạn chế nên tôi khó tránh khỏi những saisót nhỏ trong đề cương luận văn Tôi rất hi vọng đó là những lỗi sai nhỏ và kínhmong những đóng góp ý kiến từ các quý thầy cô
Sinh viên thực hiện đề tài
Trang 7Tóm tắt đề tài
Trò chơi điện thoại di động đang có bước phát triển vượt bậc và trở thànhngành công nghiệp giải trí lớn nhất thế giới Bên cạnh đó sự phát triển của điệnthoại di động ngày càng vượt trội hơn so với trước Điển hình là sự xuất hiện củanhiều nhãn điện thoại di động mới trên thị trường Với sự phát triển đó, hàng loạttrò chơi khác nhau với đa dạng các thể loại được ra đời Trong đó có những sảnphẩm có sự kết hợp câu chuyện thực tế và trò chơi giúp cho người chơi có cảmgiác như đang xem một bộ phim và trải nghiệm bản thân là một nhân vật trongphim đó Ngoài ra còn có những sản phẩm chuyển thể các trò chơi trong thực tếthành những trò chơi trên điện thoại di động giúp dễ dàng tham gia, sử dụng bất
cứ nơi đâu và dễ dàng thao tác
Hiện nay, những trò chơi trực tuyến ngày càng phổ biến và chiếm được số lượnglớn người tham gia Nhưng không vì vậy mà các trò chơi cổ điển ngày càng mất
đi, số lượng tải và truy cập những trò chơi này vẫn còn rất nhiều Tuy nhiên, với
sự phát triển nhanh chóng của trò chơi trên điện thoại di động một số nhà pháttriển đã có những chiến lược và thay đổi cũng như sáng tạo những trò chơi mớidựa trên những trò chơi cổ điển này Nhầm mang lại những trải nghiệm mới hơncho người chơi và thu hút thêm được số lượng người chơi
Sự kết hợp giữa trò chơi và trí tuệ nhân tạo đã và đang được phổ biến rộng rãitrên thị trường trò chơi điện tử ngày nay Sự kết hợp này mang lại được nhữngtrải nghiệm mới mẻ hơn như trải nghiệm độ khó đa dạng, đưa ra những gợi ý bổích và nhu cầu của con người về những trò chơi chiến thuật, thông minh ngày càngcao
Nắm bắt được những nhu cầu đó, tôi đã thực hiện xây dựng trò chơi cờ tướngtrên điện thoại di động Trò chơi này mang lại cho người dùng cảm giác mới mẻhơn về cờ tướng vì nó được xây dựng với sự kết hợp giữa cờ tướng cổ điển, trí tuệnhân tạo và công nghệ thực tế tăng cường
Để hiện thực được đề tài này, tôi đã thực hiện những công việc sau:
• Tìm hiểu về trò chơi cờ tướng cơ bản bao gồm lịch sử hình thành và pháttriển, các quân cờ, bàn cờ và luật chơi của cờ tướng
• Tìm hiểu về giải thuật trí tuệ nhân tạo có thể áp dụng vào trò chơi cờ tướng
• Tìm hiểu các kiến thức nền tảng những công nghệ cần thiết để xây dựng tròchơi kết hợp với thực tế tăng cường
• Thực hiện từng bước các công việc theo sự chỉ dẫn của giáo viên hướng dẫn
Trang 8• Hoàn thành ứng dụng, kiểm tra lại ứng dụng và cải thiện những thiếu sót.
• Tự đánh giá sản phẩm đã thực hiện về ưu điểm và nhược điểm, hướng pháttriển trong tương lai và viết báo cáo
Trang 9Mục lục
1.1 Tổng quan đề tài 11
1.2 Mục tiêu và phạm vi của đề tài 11
1.3 Ý nghĩa thực tiễn 12
1.4 Cấu trúc luận văn 12
2 Cơ sở lý thuyết 14 2.1 Giới thiệu cờ tướng 14
2.1.1 Lịch sử cờ tướng 14
2.1.2 Quân cờ và luật di chuyển của các quân cờ 14
2.2 Cây tìm kiếm 16
2.3 Giải thuật tìm kiếm Minimax 17
2.4 Giải thuật cắt tỉa Alpha-Beta 18
2.5 Hàm lượng giá 19
2.6 Chuỗi FEN 19
2.7 Thực tế tăng cường 22
2.8 Công cụ sử dụng 23
Trang 102.9 Các công trình liên quan 26
2.9.1 Các hướng khai thác chủ yếu 26
2.9.2 Phần mềm cờ tướng Intella 26
2.9.3 Phần mềm cờ tướng CCBridge 27
2.9.4 Alpha Zero 28
3 Phân tích và thiết kế hệ thống 29 3.1 Phân tích độ phức tạp của cờ tướng 29
3.2 Hàm lượng giá 30
3.3 Giải thuật tìm kiếm Minimax 34
3.4 Thiết kế hệ thống 35
3.4.1 Đặc tả Usecase 36
4 Hiện thực và kết quả 41 4.1 Trò chơi cờ tướng 41
4.1.1 Xây dựng đồ họa và luật chơi 41
4.1.2 Hiện thực 44
4.1.3 Khó khăn và giải pháp trong quá trình thực hiện 55
4.2 Kết hợp cờ tướng và thực tế tăng cường 56
4.2.1 Tìm hiểu về một số công trình liên quan 56
4.2.2 Hiện thực 58
4.2.3 Khó khăn và giải pháp trong quá trình hiện thực 62
4.3 Quản lý mã nguồn 63
5 Tổng kết và kế hoạch phát triển 64 5.1 Kết quả đạt được 64
5.2 Hạn chế 64
5.3 Kế hoạch phát triển 64
Trang 11Danh sách hình vẽ
2.1 Cây tìm kiếm 17
2.2 Trạng thái bàn cờ bắt đầu trận 21
2.3 Sản phẩm của thực tế tăng cường 23
2.4 Hình ảnh logo Unity 24
2.5 Hình ảnh logo Blender 24
2.6 Giao diện phần mềm Intella 27
2.7 Giao diện phần mềm CCbridge 28
3.1 Trường hợp AI xem quân Tướng như quân cờ thường 34
3.2 Usecase trò chơi 35
3.3 Class diagram 40
4.1 Hình ảnh một số quân cờ 41
4.2 Hình ảnh bàn cờ 42
4.3 Hình ảnh di chuyển quân cờ 43
4.4 Tạo quân cờ 45
4.5 Hình ảnh quân cờ trong Blender 46
4.6 Main Camera trong Unity 47
4.7 Board trong Unity 48
4.8 Directional Light trong Unity 49
4.9 GameManager Light trong Unity 50
4.10 Materials trong Unity 51
4.11 Prefab trong Unity 51
4.12 Script trong Unity 52
4.13 Config trong Unity 52
4.14 Thiết lập vị trí xe đen 54
4.15 Thiết lặp tên ứng dụng 58
4.16 Thiết lặp lõi AR trên Android 59
4.17 Một số thiết lặp trên ứng dụng 59
Trang 124.18 Cài đặc các Package AR 604.19 Các thành phần trong Project 62
Trang 13Danh sách bảng
2.1 Ký hiệu và số lượng quân cờ mỗi bên 15
2.2 Ký hiệu quân cờ 20
3.1 Bảng số lượng nút phải xét trong thuật toán Minimax 29
3.2 Bảng số lượng nút phải xét trong thuật toán Minimax kết hợp với Alpha-Beta 30
3.3 Giá trị mỗi quân cờ 31
3.4 Giá trị vị trí quân Xe 32
3.5 Giá trị vị trí quân Mã 33
3.6 Giá trị vị trí quân Pháo 33
3.7 Giá trị vị trí quân Tốt 33
3.8 Sử dụng camera AR 36
3.9 Di chuyển quân cờ 37
3.10 Kết quả trận đấu 39
4.1 Số lượng quân cờ mỗi bên 53
Trang 14Thuật ngữ & từ viết tắt
Trang 151 Giới thiệu đề tài
Trong cuộc sống hiện nay nhu cầu giải trí của con người rất đa dạng sau nhữnggiờ học tập, lao động căng thẳng để lấy lại sức lực và tinh thần Xã hội càng pháttriển với nhịp sống của công nghiệp thì nhu cầu giải trí càng lớn và càng phongphú Để đáp ứng được nhu cầu đó đòi hỏi tạo ra nhiều sân chơi phù hợp cho mọilứa tuổi và mọi đối tượng Công nghệ giải trí hiện nay khá đa dạng và phong phú:tham gia sinh hoạt văn hóa, thể thao, các sân chơi truyền hình, trò chơi điện tử Tồn tại một trong số đó là nhu cầu giải trí về chơi cờ Nó đã xuất hiện từ rất lâu
và vẫn được nhiều người ưa thích cho đến hiện nay Trên địa bàn thành phố HồChí Minh có rất nhiều địa điểm chơi cờ khá nổi tiếng: Cafe cờ tướng Phan XíchLong, câu lạc bộ cờ tướng Nguyễn Trung Trực, Cafe Hội quán cờ thu hút rấtnhiều người đến chơi Chúng ta ít nhiều cũng đã chứng kiến những hình ảnh vềnhững ván cờ căng thẳng giữa những người lớn tuổi hoặc trung niên
Khi đất nước ngày càng phát triển làm cho nhu cầu giải trí cũng ngày càngtăng lên Điều này dẫn tới sự phát triển và độ đa dạng của loại hình giải trí cũngtăng lên Tuy nhiên sức hút của các bộ môn thể thao trí tuệ như cờ tướng hay cờvua vẫn còn tồn tại Nhưng hình thức chơi cờ đã có sự tăng lên Chúng ta thườngbắt gặp những hình ảnh của hai người đang ngồi chơi cờ ở một số quán cafe Bêncạnh đó, sự phát triển của công nghệ đã tạo ra những sản phẩm thông minh vàtiện lợi góp phần mang Internet đến gần hơn với mọi người Do đó việc chơi cờcũng trở nên thuận tiện hơn, không cần phải di chuyển đến địa điểm nên việc chơi
cờ trở nên thuận tiện hơn
Để đáp ứng được nhu cầu giải trí của con người đòi hỏi phải có những sảnphẩm ngày càng tốt hơn mang đến những trải nghiệm mới cho người dùng Tôi
đã vận dụng những kiến thức đã học trong khoảng thời gian ở trường và tìm hiểunhững công nghệ mới hiện nay để tạo ra sản phẩm nhầm mục đích có thể phục vụcho nhu cầu giải trí của con người và trau dồi thêm hiểu biết cho bản thân
Đề tài nghiên cứu hướng tới mục tiêu là nghiên cứu các phương pháp giải quyếtbài toán về sử dụng trí tuệ nhân tạo trong trò chơi cờ tướng kết hợp với thực tếtăng cường Đối với bài toán này, có nhiều phương pháp để giải quyết như phươngpháp tìm kiếm Minimax, học có giám sát (Supervised Learning), học tăng cường(Reinforcement Learning) Mỗi phương pháp giải quyết mang lại độ hiểu quả
Trang 16khác nhau Đề tài nghiên cứu tập trung vào phương pháp tìm kiếm Minimax vàkết hợp với thực tế tăng cường nhầm tạo cho người dùng trải nghiệm mới hơn Đó
là việc sử dụng thực tế tăng cường để thể hiện bàn cờ vào trong thực tế qua điệnthoại di động
Đề tài tập trung vào quá trình phát triển trò chơi trên nền tảng Unity vàngôn ngữ C# Cùng với đó là sử dụng các giải thuật tìm kiếm Minimax và cắt tỉaAlpha-Beta để tạo ra đối thủ trí tuệ nhân tạo Bên cạnh đó còn sử dụng thực tếtăng cường để có thể tăng thêm độ sinh động cho trò chơi Sản phẩm hướng đếntay người chơi thông qua Google Play hoặc AppStore Và đối đượng được nhắmđến là những người có nhu cầu trải nghiệm cờ tướng mới trên điện thoại hoặc có
sở thích chơi cờ tưởng và đối với mọi lứa tuổi
• Hiện thực quân cờ và bàn cờ để có thể thêm vào Unity
• Xây dựng trò chơi cờ tướng trên nền tảng Unity
• Kết hợp trò chơi cờ tướng với các giải thuật trí tuệ nhân tạo là tìm kiếmMinimax và cắt tỉa Alpha-Beta
• Tìm hiểu về thực tế tăng cường và thực hiện các ví dụ về thực tế tăng cường
• Thực hiện kết hợp giữa cờ tướng đã xây dựng ở trên và thực tế tăng cường
Việc xây dựng một sản phẩm trò chơi cờ tướng đã góp phần mang ý nghĩa vềmặt thực tiễn cũng như ý nghĩa về mặt khoa học Về mặt thực tiễn, nhầm gópphần giải quyết nhu cầu của con người mang lại những trải nghiệm mới mẽ hơncho người dùng Về mặt khoa học, góp phần vào công cuộc nghiên cứu về vấn đềhiện thực trò chơi kết hợp với thực tế tăng cường
Luận văn được tổ chức theo cấu trúc như sau:
• Chương 1: Giới thiệu và tổng quan đề tài
• Chương 2: Trình bày về cơ sở lý thuyết
• Chương 3: Phân tích và thiết kế hệ thống
Trang 17• Chương 4: Hiện thực và kết quả
• Chương 5: Tổng kết những kết quả đạt được, những hạn chế và rút kinhnghiệm
Trang 18Đầu tiên, chúng ta sẽ nói lịch sử hình thành nên cờ tướng Cờ Ấn Độ du nhậpvào Trung Quốc và trở thành tiền thân cờ tướng cũng như cờ Shogi của xứ NhậtBản và khi cờ Trung Quốc du nhập vào Triều Tiên thì trở thành cờ Janggi Trongkhi đó, cờ Ấn Độ du nhập sang Tây phương trở thành cờ vua Và cuối cùng,người Trung Quốc chuyển thành cờ tướng vào thời kỳ nhà Tống Nhà sử học ngườiĐức Peter Banaschak đã chỉ ra rằng cờ tướng Baoying, không có "Pháo" trong
"Xuanguailu" do đó chưa có Pháo của Niu Sengru, ngài tể tướng của nhà Đường,
là nguồn gốc thực sự của cờ tướng hiện đại tức là thời Đường đã manh nha tròchơi cờ tướng hiện đại hoàn toàn xuất hiện bởi người Trung Hoa vào thời kỳ nhàĐường
Tiếp theo, chúng ta đề cập đến bàn cờ Về bàn cờ, có dạng là hình chữ nhật
do 9 đường dọc và 10 đường ngang cắt nhau vuông góc tại điểm 90 tạo thành Ởgiữa bàn cờ có một khoảng trống được gọi là sông,chia bàn cờ thành hai phần đốixứng bằng nhau Mỗi bên có một cung Tướng hình vuông do 4 ô hợp thành tạicác đường dọc 4, 5, 6 kể từ đường ngang cuối của mỗi bên, trong 4 ô này có vẽhai đường chéo Mỗi ván cờ lúc bắt đầu phải có 32 quân cờ chia đều cho mỗi bêngồm 16 quân trắng và 16 quân đen, gồm 7 loại quân.Tuy tên quân cờ của mỗi bên
có thể viết khác nhau (ký hiệu theo chữ Hán) nhưng giá trị và cách đi quân củachúng giống nhau hoàn toàn
2.1.2 Quân cờ và luật di chuyển của các quân cờ
Trong bàn cờ, mỗi quân cờ có một cách di chuyển khác nhau, chúng được dichuyển theo luật như sau:
• Tướng: Đi từng ô một, đi ngang hoặc đi dọc Tướng luôn trong phạm vi
"cung" và không được ra ngoài "Cung" tức là hình vuông 3x3 được đánhdấu bởi lằng chéo hình chữ X
Trang 19• Sĩ: Đi chéo 1 ô mỗi nước và phải luôn trong cung Như vậy quân Sĩ có 5 vịtrí hợp lệ và có chức năng bảo vệ tướng.
• Tượng: Đi chéo 2 ô mỗi nước và không được vượt qua sông Như vậy, trênbàn cờ, quân Tượng có 7 vị trí có thể đi được
• Xe: Đi ngang hoặc dọc trên bàn cờ miễn là đừng bị quân khác cản đường từđiểm đi đến điểm đến
• Pháo: Đi ngang hoặc dọc giống như quân Xe Điểm khác biệt muốn ăn quânphải nhảy qua đúng 1 quân nào đó Khi không ăn, tất cả những điểm từđiểm đi đến điểm đến không có quân nào cản
• Mã: Đi ngang 2 ô và dọc 1 ô (hay dọc 2 ô và ngang 1 ô) Nếu có quân cờnào đó nằm ngay bên cạnh thì Mã bị cản, không được đi đường đó
• Tốt: Đi 1 ô mỗi nước Nếu chưa qua sông, nó chỉ được tiến Nếu qua sôngthì được đi ngang hay tiến, không được lùi
• An toàn của Tướng: Sau một nước đi, Tướng của bên đi không được để đốiphương ăn ngay trong nước kế tiếp Những nước để Tướng không an toàn làkhông hợp lệ
Trang 20Ván đấu sẽ được kết thúc nếu xảy ra 1 trong những trường hợp sau đây:
• Chiếu bí: Nếu một bên chiếu tướng, và đối thủ không có khả năng đỡ, bênchiếu tướng thắng
• Hết nước đi: Nếu bên tới phiên không có nước hợp để đi, bên đó thua
• Sau 120 nước đi của cả 2 bên, mà không có quân cờ nào bị ăn thì hòa nhau
• Cấm chiếu tướng liên tục 10 lần
• Ăn quân: Khi quân di chuyển đến 1 vị trí được giữ bởi quân đối phương,quân đối phương bị ăn và bị lấy ra khỏi bàn cờ
• Chống tướng: Hai quân Tướng trên bàn cờ không được nằm cùng nhau trênmột cột dọc mà không có quân cản nào ở giữa Nước đi để 2 quân Tướngtrong vị trí chống tướng là không hợp lệ
Trong lĩnh vực khoa học máy tính, cây tìm kiếm là cây cấu trúc dữ liệu dạngcây được sử dụng để định vị các khóa cụ thể từ bên trong một tập hợp Để câyhoạt động như cây tìm kiếm, khóa cho mỗi nút phải lớn hơn bất kỳ khóa nào trongcây con bên trái và nhỏ hơn bất kỳ khóa nào trong cây con bên phải Ưu điểm củacây tìm kiếm là hiệu quả về thời gian tìm kiếm của chúng do cây được cân bằnghợp lý, nghĩa là lá ở hai đầu có độ sâu tương đương Các cấu trúc cây tìm kiếmkhác nhau tồn tại, một số trong đó chép chèn và xóa các phần tử hiệu quả, màcác hoạt động đó duy trì sự cân bằng của cây
Cây tìm kiếm được sử dụng trong trò chơi cờ tướng cho việc lưu trữ trạng tháibàn cờ Mỗi một nút trong cây là một trạng thái bàn cờ và các cạnh của nó tươngứng với nước đi Số lượng các trạng thái có thể sinh ra từ một trạng thái là số concủa nút đó trong cây Khi bắt đầu vào là trạng thái bàn cờ, trò chơi sẽ tính toáncác nước đi hợp lệ Kết hợp với với trạng thái bàn cờ và nước đi hợp lệ sẽ tạo rađược trạng thái tiếp theo cho bàn cờ Thực hiện tương tự như vậy ta có thể xâydựng được cây tìm kiếm từ đầu vào là trạng thái bàn cờ
Trang 21Hình 2.1: Cây tìm kiếm
Minimax là một quy tắc quyết định được sử dụng trong AI (Artificial gence), lý thuyết quyết định (decision theory), lý thuyết trò chơi (game theory),thống kê, cho việc giảm thiểu tổn thất có thể xảy ra đối với trường hợp xấu nhất.Khi xử lý, nó được gọi là ’maximin’, để tối đa hóa mức tối thiểu Ban đầu đượcxây dựng cho lý thuyết trò chơi tổng bằng 0 của n người chơi, bao gồm cả trườnghợp người chơi thực hiện các nước đi thay thế và những trường hợp họ thực hiệncác bước đi đồng thời Nó cũng được mở rộng sang các trò chơi phức tạp hơn và
Intelli-ra quyết định chung khi không chắc chắn
Một giải thuật Minimax là một thuật toán đệ quy cho việc lựa chọn các bước
đi kế tiếp trong trò chơi Mỗi trạng thái hay vị trí của trò chơi đều được gán giátrị Dựa vào hàm tính giá trị vị trí ta sẽ tính toán được giá trị này và biết được
độ hiệu quả nếu đạt được vị trí này Người chơi sau đó có thể thực hiện các nước
đi để tối đa giá trị tối thiểu của vị trí kết quả từ các nước đi có thể của đối thủ
1function minimax(node, depth, maximizingPlayer) is
Trang 222 if depth = 0 or node is a terminal node then
3 return the heuristic value of node
4 if maximizingPlayer then
5 value := -infty
6 for each child of node do
7 value := max(value, minimax(child, depth - 1, FALSE))
8 return value
9 else (* minimizing player *)
10 value := +infty
11 for each child of node do
12 value := min(value, minimax(child, minimax(child, depth - 1,
TRUE))
13 return value
Cắt tỉa Alpha-Beta là một giải thuật tìm kiếm nhầm giảm số lượng các nútđược đánh giá bởi giải thuật Minimax trong cây tìm kiếm của nó Nó là một giảithuật tìm kiếm đối nghịch được sử dụng phổ cho các máy trò chơi của hai ngườichơi (Tic-tac-toe, cờ vây, cờ vua ) Nó ngừng đánh giá một nước đi khi ít nhấtmột khả năng được tìm thấy chứng tỏ nước đi đó tệ hơn một nước đi đã được kiểmtra trước đó Những nước đi như vậy không cần phải đánh giá thêm Khi áp dụngcho một cây Minimax tiêu chuẩn, nó sẽ tra lại cùng một nước đi như Minimax sẽlàm nhưng cắt bỏ những nhánh không ảnh hưởng đến quyết định cuối cùng
1function alphabeta(node, depth, alpha, beta, maximizingPlayer) is
2 if depth = 0 or node is a terminal node then
3 return the heuristic value of node
4 if maximizingPlayer then
5 value := -infty
6 for each child of node do
7 value := max(value, alphabeta(child, depth - 1, alpha, beta,
FALSE))
8 alpha := max(alpha, value)
9 if alpha >= beta then
10 break (* beta cutoff *)
11 return value
12 else
13 value := +infty
14 for each child of node do
15 value := min(value, alphabeta(child, depth - 1, alpha, beta,
Trang 2316 beta := min(beta, value)
17 if beta <= alpha then
Mục tiêu của phương pháp Heuristic là đưa ra giải pháp trong một khung thờigian hợp lý đủ tốt để giải quyết vấn đề trong tầm tay Giải pháp này có thể khôngphải là giải pháp tốt nhất trong số tất cả các giải pháp cho vấn đề này, hoặc nó
có thể chỉ gần đúng với giải pháp chính xác Nhưng nó vẫn có giá trị vì việc tìmthấy nó không đòi hỏi một thời gian dài
Hàm lượng giá có thể tự tạo ra kết quả hoặc chúng có thể được sử dụng kếthợp với các thuật toán tối ưu hóa để cải thiện hiệu quả của chúng Hàm lượng giá
sẽ nhận vào một trạng thái của bàn cờ và trả về giá trị cho trạng thái đó
Hầu hết các hàm lượng giá hiện nay đều có dạng như sau:
val =
nXi=1
Trang 24FEN được hình thành dựa trên nhà báo người Scotland David Forsyth Vàothế kỹ 19 hệ thống của Forsyth được sử dụng rất phổ biến Và sau đó được Steven
J Edwards mở rộng để có thể sử dụng bởi máy tính FEN được định nghĩa trong
"Hướng dẫn triển khai và đặc điểm kỹ thuật trò chơi di động" Trong Ký hiệu tròchơi di động cho các trò chơi cờ vua, FEN được sử dụng để xác định các vị trí banđầu khác với vị trí tiêu chuẩn FEN không cung cấp đầy đủ thông tin để quyếtđịnh liệu một trận hòa lặp lại ba lần có thể được yêu cầu hợp pháp hay một đềnghị rút thăm có thể được chấp nhận hay không; do đó, cần có một định dạngkhác, chẳng hạn như Mô tả vị trí mở rộng
Một bản ghi FEN xác định một vị trí trò chơi cụ thể, tất cả trong một dòngvăn bản và chỉ sử dụng bộ ký tự ASCII Tệp văn bản chỉ có bản ghi dữ liệu FENphải có phần mở rộng tệp
FEN rất quan trọng để ghi lại các trò chơi trong các biến thể cờ vua nhưChess960 (còn được gọi là Cờ vua ngẫu nhiên Fischer), trong đó vị trí ban đầukhông nhất thiết phải là vị trí ban đầu truyền thống Tuy nhiên, mã hóa tính khảdụng của việc nhập thành FEN (KQkq) không đủ cho các vị trí trong đó có haiquân ở cùng một phía của vua ở xếp hạng phía sau, vì nếu chỉ có một quân cósẵn để nhập thành thì sẽ không rõ ràng là quân nào không biết vị trí ban đầu củachúng Giải pháp được thực hiện bởi các công cụ cờ vua như Shredder và Fritz_9
là sử dụng các chữ cái của các cột mà các quân cờ bắt đầu trò chơi Lược đồ nàyđôi khi được gọi là Shredder-FEN, đối với thiết lập truyền thống, Shredder-FEN
từ 1 tới 9 Giữa các hàng sẽ được ngăn cách bởi dấu"/" Và cuối cùng ở mỗi chuỗi
sẽ ký hiệu các chữ "w" hay "b" tượng trưng cho quân Đỏ hoặc Đen
Xeđen
Mãđen
Pháođen
Tốtđen
Bảng 2.2: Ký hiệu quân cờ
Trang 25Hình 2.2: Trạng thái bàn cờ bắt đầu trận
Khi bắt đầu bàn cờ gồm 7 loại quân và tổng cộng 16 quân cờ cho mỗi bên Vìvậy chuỗi FEN sẽ có dạng:
"rceakacer/9/1h5h1/p1p1p1p1p/9/9/P1P1P1P1P/1H5H1/9/RCEAKAECR"
Trang 262.7 Thực tế tăng cường
Thực tế tăng cường (Augmented Reality) là một trải nghiệm tương tác củamột môi trường thực tế nơi các đối tượng mà cư trú trong thế giới thực được tăngcường bởi các thông tin nhận thức máy tính tạo ra, đôi khi trên nhiều giác quanphương thức , trong đó có thị giác , thính giác , xúc giác và khứu giác AR có thểđược định nghĩa là một hệ thống kết hợp ba tính năng cơ bản: sự kết hợp giữa thếgiới thực và ảo, tương tác thời gian thực và đăng ký 3D chính xác các đối tượngthực và ảo Thông tin cảm quan được phủ lên có thể mang tính xây dựng (tức
là phụ gia vào môi trường tự nhiên), hoặc phá hủy (tức là che lấp môi trường tựnhiên) Trải nghiệm này được đan xen một cách liền mạch với thế giới vật chấtsao cho nó được coi là một khía cạnh nhập vai của môi trường thực Theo cáchnày, thực tế tăng cường thay đổi nhận thức liên tục của một người về môi trườngthế giới thực, trong khi thực tế ảo thay thế hoàn toàn môi trường thế giới thựccủa người dùng bằng môi trường giả lập
Giá trị chính của thực tế gia tăng là nó đưa các thành phần của thế giới sốvào nhận thức của một người về thế giới thực, và không phải như một màn hìnhhiển thị dữ liệu đơn giản mà thông qua việc tích hợp các cảm giác nhập vai đượccoi là những phần tự nhiên của một môi trường Các hệ thống AR chức năngđầu tiên mà cung cấp những kinh nghiệm thực tế hỗn hợp nhập vai cho người sửdụng Ngoài ra, thực tế tăng cường được sử dụng để cải thiện môi trường hoặctình huống tự nhiên và cung cấp trải nghiệm phong phú về mặt tri giác Với sự trợgiúp của các công nghệ AR tiên tiến (ví dụ như thêm thị giác máy tính , kết hợpcamera AR vào các ứng dụng điện thoại thông minh và nhận dạng đối tượng ),thông tin về thế giới thực xung quanh của người dùng trở nên tương tác và đượcthao tác kỹ thuật số Thông tin về môi trường và các đối tượng của nó được phủlên thế giới thực Thông tin này có thể là ảo Thực tế tăng cường là bất kỳ trảinghiệm nào là nhân tạo và bổ sung vào thực tế đã tồn tại
Không phải bất kỳ smartphone hay thiết bị điện tử nào cũng có thể sử dụngđược thực tế ảo tăng cường Thay vào đó, để sử dụng được công nghệ này, thiết bịcần được trang bị hệ thống nhận biết vật thể, bao gồm mô tả vật thể là gì, hìnhdạng của vật thể, vị trí của vật thể trong không gian 3 chiều Sau đó sử dụng cácthuật toán và công nghệ khác đi kèm để tái lập hình ảnh của vật thể vào khônggian thực Ví dụ, bạn tạo ra một chiếc ghế ảo, thiết bị của bạn cần tính toán saocho đặt chiếc ghế đó vào không gian thật (nhà ở, văn phòng) sao cho chuẩn xácnhất theo kích thước thực tế
Trang 27Hình 2.3: Sản phẩm của thực tế tăng cường
Việc triển khai thực tế tăng cường trong các sản phẩm tiêu dùng đòi hỏi phảixem xét thiết kế của các ứng dụng và các ràng buộc liên quan của nền tảng côngnghệ Vì các hệ thống AR chủ yếu dựa vào sự đắm chìm của người dùng và sựtương tác giữa người dùng và hệ thống, thiết kế có thể tạo điều kiện thuận lợi choviệc áp dụng ảo Đối với hầu hết các hệ thống thực tế tăng cường, có thể tuân theomột hướng dẫn thiết kế tương tự Dưới đây liệt kê một số cân nhắc khi thiết kếcác ứng dụng thực tế tăng cường: khảo cổ học, kiến trúc, giáo dục, nông nghiệp,thương mại,
Công cụ được sử dụng để hiện thực đề tài này đó là Unity Unity là một công
cụ hiện thực trò chơi đa nền tảng, được phát triển bởi Unity Technologies , đượccông bố và phát hành lần đầu tiên vào tháng 6 năm 2005 Công cụ này đã dần dầnđược mở rộng để hỗ trợ nhiều loại máy tính để bàn , thiết bị di động , bảng điềukhiển và nền tảng thực tế ảo Nó đặc biệt phổ biến cho phát triển trò chơi di độngiOS và Android và được sử dụng cho các trò chơi như Pokémon Go, MonumentValley,
Trang 28mô phỏng hạt, mô phỏng thân mềm, điêu khắc, tạo hoạt ảnh, khớp chuyển động,kết xuất, đồ họa chuyển động, chỉnh sửa video và tổng hợp.
Hình 2.5: Hình ảnh logo Blender
Các bước triển khai trên Blender:
Trang 29• Tìm hiểu các cách sử dụng của Blender về thiết kế đồ họa 3D và thực hiệnmột số ví dụ để tăng thêm kinh nghiệm sử dụng Blender.
• Sử dụng blender để thiết kế đồ họa 3D cho từng quân cờ và bàn cờ
Các bước triển khai trên Unity:
• Đồ họa: sử dụng các đồ họa được xây dựng từ Blender để gán cho cácGameObject trong trò chơi cờ tướng
• Giải thuật: xác định được giải thuật sẽ sử dụng trong thực hiện cờ tướng làgiải thuật tìm kiếm Minimnax và giải thuật cắt tỉa Alpha-Beta
• Thao tác với Unity: ngôn ngữ sử dụng là C#, thiết lặp tọa độ, căn chỉnh cácquân cờ (GameObject), áp dụng giải thuật vào trò chơi cờ tướng
• Tìm hiểu và thực hiện các ví dụ cơ bản về thực tế tăng cường có thể áp dụngtrong cờ tướng để tăng thêm kinh nghiệm sử dụng
• Áp dụng thực tế tăng cường vào trò chơi cờ tướng
Một số khái niệm cơ bản cần phải nắm đối với lặp trình Unity:
• Project: Khái niệm Project bao trùm toàn bộ các thành phần làm nên mộtgame: các models, assets, scripts, scenes, Projects được cấu trúc phântầng tương tự với cấu trúc tệp tin và thư mục máy tính
• Scenes: Một scene chứa các vật thể trong game (GameObject) tương tác vớithế giới, trong đó có người chơi
• Packages: Một package là tập hợp các game objects, assets và các file data liên quan Bạn có thể nghĩ package tương tự như một một package thưviện trong Java vậy Chúng là những đối tượng liên quan tới nhau
meta-• GameObject: Đây là một đối tượng cụ thể nào đó trong trò chơi, ví dụ nhưquân cờ, cây cối, nhà cửa,
• Components: Mỗi GameObject đều được định nghĩa bởi các tập hợp cáccomponents Tập hợp các components phải liên quan tới thuộc tính tự nhiêncủa đối tượng đó
• Assets: Một asset là bất kỳ tài nguyên nào: âm thanh, hình ảnh, model(vậtthể 3D) mà bạn cần để cấu thành một GameObject
• Scripts: Script là một tập các câu lệnh được viết ra để định nghĩa một hành
vi nào đó cho game objects, có rất nhiều loại classes, phụ thuộc và hành vi
mà nó điều khiển
Trang 302.9 Các công trình liên quan
2.9.1 Các hướng khai thác chủ yếu
Các chương trình cờ tướng hiện nay tập trung chủ yếu vào hai hướng khai thácchính, một là tìm kiếm vét cạn dựa trên sức mạnh của phần cứng máy tính đểduyệt sâu vào cây trò chơi, mong muốn tìm được nước di chuyển tốt hơn, hai làhướng tìm kiếm dựa vào kinh nghiệm với mục tiêu làm giảm kích thước của câytrạng thái nhưng vẫn đảm bảo được tính tin cậy của nước đi.Trong chương nàynhóm sẽ giới thiệu một số phần mềm chơi cờ tướng đặc trưng cho hai hướng tiếpcận trên
2.9.2 Phần mềm cờ tướng Intella
Intella là phần mềm cờ tướng mạnh nhất trên android hiện nay với số lượnglượt tải khổng lồ Dạt được kết quả đó là do phần mềm đem lại trải nghiệm ngườidùng tuyệt vời với nhiều chế độ chơi và lực cờ vô cùng mạnh Bên cạnh đó phầnmềm cũng hỗ trợ người chơi với các cấp độ khác nhau từ cấp bậc không chuyênđến kì cựu, sử dụng giao diện tiếng anh thuận tiện hơn so với tiếng Trung Ngoài
ra, người chơi còn có thể nâng cấp trình độ thêm cho nó bằng cách thêm Bookshoặc thay Engine Một điểm cộng nữa là phần mềm có tích hợp sẵn chế độ chơi
tự động mà người chơi có thể vừa nhâm nhi tách trà và vừa xem đối thủ bị hạgục Ở Việt Nam có rất nhiều nhà phát hành đưa Intella đến với người chơi, đặcbiệt với phiên bản A chess V1.6 32 bit giao diện GUI được đánh giá rất cao mặc
dù chỉ hổ trợ 2U
Trang 31Hình 2.6: Giao diện phần mềm Intella
Trang 32Hình 2.7: Giao diện phần mềm CCbridge
2.9.4 Alpha Zero
AlphaZero là phiên bản nâng cấp của AlphaGo Zero được DeepMind trình làngvào tháng 10/2017, với sức mạnh vượt bật trên các phiên bản tốt nhất của ngườianh em AlphaGo Zero AlphaZero sử dụng cơ chế tự chơi thông qua việc học tăngcường để "tự tạo kinh nghiệm" cho mình mà không có bất kì sự giám sát hoặc dữliệu của con người.Sử dụng 5000 TPU thế hệ đầu tiên để khởi tạo trò chơi và 64TPU cho việc huấn luyện mạng nơ-ron Việc học được thực hiện nhờ một mạngnơ-ron tích chập rất sâu, ý tưởng của mạng nơ-ron là để tìm học hỏi xem nhữngtrạng thái nào sẽ dẫn đến kết quả thắng hoặc thua AlphaZero đã cho thấy sứcmạnh vượt trội của mình khi chỉ mất 2 giờ để đạt được hiệu suất của ELMO, 4giờ cho StockFish và 8 giờ cho AlphaGo Zero
Trang 333 Phân tích và thiết kế hệ thống
Bàn vua có kích thước 8x8 với 6 loại quân khác nhau, trong khi đó bàn cờtướng có kích thước 9x10 với 7 loại quân khác nhau Điều này làm cho việc hiệnthực bàn cờ tướng phúc tạp hơn so với cờ vua
Bàn cờ tướng giống như một chiến trường hơn so với một bàn cờ bình thường.Trong bàn cờ tướng có 2 phần đặc biệt Một là cung, quân tướng và quân sĩ chỉđược di chuyển trong cung và không thể ra khỏi Hai là sông, quân tượng khôngđược phép sang sông Những ràng buộc này dường như có thể làm giảm độ phứctạp của cờ tướng vì những quân cờ này không thể uy hiếp được quân cờ bên kiasông Nhưng trên thực tế, chúng có thể đe dọa trực tiếp các quân cờ bên kia sôngbằng quân pháo và theo quy tắc không được nhìn mặt nhau giữa hai vị tướng
Hệ số phân nhánh(K) trong cờ tướng được tính dựa theo công thức sau:
Trang 34Nếu chúng ta sử dụng giải thuật cắt tỉa nhánh Alpha-Beta một cách tối ưu thìtổng số nút của cây được tính theo công thức sau:
Việc đánh giá một vị trí được xác định bằng cách ước tính trạng thái bàn cờ,tức là bằng cách xác định giá trị lợi thế (hoặc bất lợi) Đánh giá như vậy là mộtphần của cờ tướng đỏi hỏi trí tuệ nhất, nó cũng là phần con người tốt hơn máytính Trong một số tình huống khó xác định ngày cả khi cây tìm kiếm rộng đến 15hoặc 20 nước di chuyển Việc thêm loại phán đoán vào trò chơi sẽ làm tăng thêm
Trang 35tính thông minh cho trí tuệ nhân tạo Nó giúp giảm độ sâu tìm kiếm nhưng tăngthời gian cần thiết để tính toán từng đánh giá.
Việc đánh giá một quân cờ trong cờ tướng có khoảng 5 yếu tố:
• Sức mạnh của quân cờ trong trò chơi
• Các vị trí quan trọng
• Tính linh hoạt
• Mối đe dọa giữa các quân và bảo vệ quân giữa khỏi đe dọa
• Sự linh động theo các tính huống
Bảng 3.3: Giá trị mỗi quân cờ
Việc tính toán sức mạnh của các quân cờ là phương pháp đơn giản nhất đểđánh giá trạng thái bàn cờ hiện tại Vì các loại quân cờ khác nhau và có sức mạnhphòng thủ khác nhau dẫn đến giá trị của chúng cũng khác nhau Tướng là quân
cờ quan trọng nhất Giá trị của nó cũng lớn hơn nhiều so với những quân cờ khác.Các giá trị của các quân cờ khác được xác định dựa trên quy tắc Heuristic Sứcmạnh một quân xe tương tự quân một mã và một quân pháo Sức mạnh của quân
mã bằng hai quân tượng Dựa vào những quy tắc này, ELP đưa ra những giá trịcho các quân cờ
• Tướng: Tướng: là quân cờ không có sức mạnh gì nhiều đôi khi nó sẽ trợ giúpcác quân trong phe tấn công nhưng có giá trị cao nhất trên bàn cờ bởi vìnếu bị mất tướng thì sẽ bị thua cờ Tất cả các quân khác đều có thể đổi, hisinh nhưng tướng thì không thể đổi
• Xe: là binh chủng cơ động nhất, nó có thể di chuyển khắp bàn cờ và khốngchế ngang dọc tối đa 17 điểm Nên xe có giá trị cao nhất và nó cũng gầntương đương sức mạnh với pháo mã cộng lại
• Pháo: Pháo: Là binh chủng tác chiến tầm xa rất hiệu quả Trên đường dọc,Pháo khống chế tối đa chỉ 8 điểm nhưng nó còn khống chế được cả đườngngang Mặt khác Pháo là quân có tính cơ động cao, nó có thể đi một bướcvượt đến 9 tuyến đường Nhưng ở cự li gần, nhiều khi Pháo bất lực, không