XÂY DỰNG CHƯƠNG TRÌNH CHƠI CỜ VÂY ĐƠN GIẢN SỬ DỤNG CÔNG NGHỆ TRI THỨC

26 1.9K 11
XÂY DỰNG CHƯƠNG TRÌNH CHƠI CỜ VÂY ĐƠN GIẢN SỬ DỤNG CÔNG NGHỆ TRI THỨC

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BÁO CÁO ĐỒ ÁN. Môn: CÔNG NGHỆ TRI THỨC VÀ ỨNG DỤNG XÂY DỰNG CHƯƠNG TRÌNH CHƠI CỜ VÂY ĐƠN GIẢN SỬ DỤNG CÔNG NGHỆ TRI THỨC Học viên: PHẠM NGUYỄN TRƯỜNG AN Giảng viên hướng dẫn: GS. TSKH. Hoàng Văn Kiếm 2 Công nghệ tri thức và ứng dụng Mục lục Phần 1.Giới thiệu yêu cầu: 3 1)Giới thiệu cờ vây: 3 2)Tản mạn computer go 3 3)Yêu cầu đề ra: 4 Phần 2.Cơ sở lý thuyết 4 1)Đặc điểm của cờ vây 4 Cờ Vây có 9 điều luật cơ bản: 4 Lợi thế của người so với máy 14 2)Một số đặc điểm chung của các chương trình chơi cờ vây 14 Phần 3.Phân tích thiết kế 15 1)Thiết kế tổng quát của chương trình 15 2)Cách biểu diễn bàn cờ 16 3)Engine chơicờ 16 Phần 4.Kết quả và hướng phát triển 25 Tài liệu tham khảo: 26 3 Công nghệ tri thức và ứng dụng Phần 1.Giới thiệu yêu cầu: 1) Giới thiệu cờ vây: Cờ vây, tiếng Trung Quốc là 围棋 (wei chi) bắt nguồn từ vùng Bắc Á khoảng 500 năm trước công nguyên. Không có sử liệu nào ghi nhận một cách cụ thể về nguồn gốc cờ vây, nhưng từ thời Tam Quốc, cờ vây đã trở nên rất phổ biến ở Trung Quốc với hình ảnh Quan Công thản nhiên đánh cờ trong khi đang được Hoa Đà phẫu thuật viết thương. Trải qua hàng nghìn năm thăng trầm, hiện nay cờ vây vẫn còn rất thịnh hành và đã phát triển ra toàn thế giới. Điểm đặc biệt của cờ vây chính là sự đơn giản đến kỳ lạ trong luật chơi, chỉ có một loại quân cờ đồng nhất, và những quân này cũng không thể di chuyển. Trong khi các loại cờ khác bắt đầu với một bàn cờ đầy quân và kết thúc bằng sự tiêu diệt toàn bộ hay một quân đặc biệt nào đó của đối phương, cờ vây bắt đầu với một bàn cờ trống rỗng và kết thúc bằng việc vây chiếm càng nhiều không gian trên bàn cờ càn tốt. Những ván cờ vây chuyên nghiệp có thể kết thúc mà không cần phải tiêu diệt một quân nào. Tuy nhiên để chơi giỏi cờ vây hoàn toàn không đơn giản. Mặc dù những nước đi chỉ thuần túy là đặt quân lên bàn cờ, những quân này sau đó lại liên kết với những quân khác tạo thành một thế trận phức tạp, và có chiêu sâu chiến lược rất cao. Việc nhận biết được thế trận và đưa ra nước đi đúng là không hề đơn giản. Khoảng cách về kỹ năng giữa những kỳ thủ chuyên nghiệp và người mớp tập chơi là vô cùng khủng khiếp. Những thống kê cho thấy các kỳ thủ chuyên nghiệp còn có thể nhớ tất cả các nước đi của ván cờ và đưa ra lý giải cho từng nước. 2) Tản mạn computer go Các nghiên cứu về việc lập trình cho máy tính chơi cờ vây được manh nha từ thập kỷ 60 của thế kỷ XX tại phương Tây (1) , sau khi môn cờ này bắt đầu gây được sự chú ý nhất định. Những chương trình đánh cờ vây đầu tiên được hiện thực vào cuối thập niên 70. Rất nhiều dự án phần mềm và các hệ thống chơi cờ vây đã ra đời và liên tục được phát triển. Tuy nhiên trong khi các hệ thống chơi những loại cờ khác đã phát triển đến ngang hàng với những đại kiện tướng cờ của thế giới (như việc Deep Blue đánh bại nhà vô địch cờ vua thế giới Kasparov vào năm 1997) thì cho đến tận ngày nay vẫn chưa có hệ thống chơi cờ vây nào vượt qua được đẳng cấp của người chơi bán chuyên nghiệp. Những ván đấu giữa các kỳ thủ chuyên nghiệp và máy luôn kết thúc với phần thắng 4 Công nghệ tri thức và ứng dụng thuộc về con người. Ngay cả khi máy được chấp đi trước đến hơn 9 nước, vẫn rất hiếm khi máy có thể giành được phần thắng. Nhiều giả thuyết đã được đặt ra để lý giải vấn đề này, ngoài những nguyên nhân như sức mạn hiện tại của các hệ thống máy tính hay đặc tính phức tạp của riêng ván cờ vây. Có giả thuyết cho rằng chính sự đơn giản nhưng sâu sắc của cờ vây đã đánh vào điểm khác biệt giữa tư duy của người và máy và tạo cho người lợi thế lớn so với máy. (2) 3) Yêu cầu đề ra: Đồ án này sẽ nghiên cứu, tìm hiểu về những đặc trưng của bộ môn cờ vây và các phương thức cơ bản của những hệ thống chơi cờ hiện tại. Từ đó xây dựng một chương trình máy tính đơn giản có thể chơi cờ vây với người, hỗ trợ giao diện đồ hoạ và giao tiếp bằng chuột máy tính. Phần 2.Cơ sở lý thuyết 1) Đặc điểm của cờ vây Cờ Vây có 9 điều luật cơ bản: Điều 1 : Cờ Vây là trò chơi giữa hai đối thủ. Điều 2 : Một đấu thủ cầm quân Trắng còn đấu thủ kia cầm quân Đen. Bên Đen đi trước (trừ trường hợp chấp quân thì bên Trắng đi trước). Điều 3 : Quân cờ được đặt vào giao điểm của các đường kẻ. Điều 4 : Mỗi một quân cờ khi đã đặt vào vị trí thì không được phép di chuyển nữa (trừ trường hợp bị bắt làm tù binh, bị nhấc ra ngoài, sẽ nói ở điều 6). Điều 5 : Đấu thủ nào chiếm được nhiều đất hơn, thì thắng ván cờ. Điều 6 : Các quân cờ bị đối phương làm cho hết “khí” thì gọi là “tù binh” và bị nhấc ra khỏi bàn cờ. Điều 7 : Không được đặt quân vào vị trí không còn “khí”(trừ trường hợp ăn quân, sẽ nói sau). Điều 8 : Có những quy ước đặt biệt cho trường hợp “tranh chấp” lẫn nhau, được gọi là “ko”(sẽ giải thích sau). Điều 9 : Sẽ có những điều luật riêng cho việc đánh có chấp. 5 Công nghệ tri thức và ứng dụng Từ điều 1 đến điều 4 thì không giải thích gì thêm, nhưng từ điều thứ 5 đến thứ 9 sẽ có giải thích và minh họa đầy đủ. 1 – VÙNG ĐẤT (còn gọi là lãnh thổ hay territory): Là các giao điểm trống (không có quân) được các quân của một bên vây kín xung quanh. Xem hình vẽ (trong đó có đất ở góc (16 điểm) và đất ở giữa bàn cờ (8 điểm) được bên Đen vây kín, tổng cộng Đen có 24 điểm). Mục đích của mỗi bên là tìm cách vây kín được càng nhiều đất càng tốt, để khi kết thúc ván cờ, đếm đất ai nhiều hơn thì người đó thắng. Trong khi tranh giành đất đồng thời tìm cách vây bắt quân đối phương, loại trừ quân đối phương ra khỏi bàn cờ (bắt tù binh) mà thực chất cũng là chiếm đất vì mỗi tù binh bị bắt sẽ cho một điểm trống. Kích thước của vùng đất được đếm bởi số giao điểm chứa trong nó. Vùng đất ở góc chỉ cần ít quân mà chiếm được nhiều do các góc và cạnh đã thay thế cho quân. Vùng đất ở giữa, ngược lại, dùng nhiều quân mà chiếm được ít. Các đấu thủ phải nhớ điều này trong khi chơi. 2 – ĐÁM QUÂN VÀ KHÍ CỦA ĐÁM QUÂN: Đám quân gồm một hay nhiều quân của một bên nằm liền nhau theo hàng dọc hay hàng ngang. Khí của đám quân là những giao điểm trống nằm sát bên đám quân đó theo hàng dọc và ngang (xem hình, khí là những điểm được bôi xám) 3 – ĂN QUÂN HAY BẮT QUÂN (CAPTURE): Khi một bên đi quân chẹn nốt khí cuối cùng của đám quân đối phương, khiến cho đám quân của đối phương hết khí, thì tất cả các quân của đám quân này coi như “chết hẳn” và bị nhấc ra khỏi bàn cờ (thuật ngữ gọi đám quân này là “tù binh”). Mỗi bên sẽ để riêng tù binh của mình để dùng tính điểm vào cuối ván cờ. 6 Công nghệ tri thức và ứng dụng Trong trường hợp dưới đây thì quân Trắng ở góc, cạnh và giữa bàn cờ đều hết khí và thành tù binh đưa ra khỏi bàn cờ. 4 - CHẸT QUÂN (ATARI): Là nước đi khiến đám quân của đối phương chỉ còn lại một khí duy nhất. Quân hay đám quân đó gọi là “quân bị chẹt”. Thông thường có 2 vị trí để chẹt quân, việc chọn vị trí nào để chẹt quân là tùy thuộc vào việc chạy của đám quân đang bị chẹt (hình vẽ). 7 Công nghệ tri thức và ứng dụng 5 - CHẠY QUÂN: Khi một đám quân có nguy cơ bị bắt hay đang bị chẹt thì nó phải tìm đường tháo chạy bằng cách nối dài đám quân của mình ra để có thêm khí. Việc nối dài này được gọi là chạy quân (xem hình, quân Đen đang bị chẹt, Đen đặt quân có hình ngôi sao nối vào để chạy quân) 6 - NỐI ĐÁM QUÂN: Là nước đi làm cho hai đam quân riêng lẻ trở thành một đám quân mới duy nhất, với mục đích là phá vây, tăng thêm khí cho đám quân mới này. Đen có hai đám quân riêng biệt. Sau đó đặt thêm 1 quân (có hình sao) vào để nối hai đám quân với nhau. 7 - ĐIỂM HẾT KHÍ: Là giao điểm bị một bên vây kín (hình vẽ). 8 Công nghệ tri thức và ứng dụng Không được đặt quân vào “điểm hết khí” (trừ trường hợp bên đặt vào là bên vây điểm hết khí hoặc đặt vào là bắt được ngay quân đối phương hay trường hợp “ko” mà chúng ta sẽ tìm hiểu sau). Vậy có 2 loại nước cấm: 1) Cấm đi vào giao điểm đã bị đối phương chặn hết khí (vây chặt). 2) Cấm đi vào giao điểm còn lại cuối cùng của đám quân đã bị đối phương vây chặt (xem hình trên) Tuy nhiên phải lưu ý có những nước tuy bị đối phương vây mà không cấm. Như hình dưới, bên Đen vẫn có thể đi vào những giao điểm trống(điểm a), vì khi đi vào đó Đen sẽ ăn ngay các quân Trắng (vì làm cho đám quân Trắng hết khí). 8 – VÂY CHIẾM ĐẤT: Mỗi bên có thể chiếm đất bằng hai cách: - Nối liền các quân của mình cùng với các góc các cạnh của bàn cờ thành một vùng 9 Công nghệ tri thức và ứng dụng khép kín. Diện tích bên trong vùng khép kín chính là đất chiếm được của bên đó. - Nối liền các quân với nhau thành một vòng khép kín. Bạn có thể ghi nhớ rằng vùng đất sẽ không được hoàn chỉnh nếu để cho đối phương xâm nhập vào. a) Xâm nhập từ bên ngoài: Mỗi bên phải chuẩn bị đề phòng sự xâm nhập của đối phương khi xuất hiện một số khu vực trong vành đai quân của mình bị đứt quãng. Xem hình: Vùng đất của Đen trong trường hợp này không hoàn chỉnh, nó bị đứt quãng tại điểm “a”. Nếu Trắng đi vào điểm “a” thì vành đai của Đen bị cắt đứt và hai đám quân Đen bị tách rời sẽ bị nguy hiểm. Còn nếu Đen đi vào điểm “a” thì có được 1 vùng đất hoàn chỉnh 12 điểm. Xâm nhập bằng quân đơn: Đây không phải xâm nhập bằng cách nối quân từ ngoài vào mà bằng cách nhảy dù ngay vào bên trong lãnh thổ đối phương bằng những quân lẻ. Rõ ràng lãnh thổ của Đen là 36 điểm hoàn chỉnh. Nhưng Trắng đặt vào bên trong lãnh thổ đó một quân Trắng nhằm tạo mắt bên trong. (xem hình dưới, bên trái). Trắng nhảy dù và tạo được một đám quân ngay trong lãnh thổ của Đen, dù Đen đã cố gắng vây lại nhưng Trắng đã tạo được hai mắt có 2 điểm hết khí nên Đen không thể bắt đám quân này làm tù binh. Do nhảy dù mà đất của Đen từ 36 bị giảm còn 18. Trắng thêm được 2 điểm trống, cuối ván điền quân vào, Đen mất tổng số tới 20 điểm. (xem hình trên, bên phải). 10 Công nghệ tri thức và ứng dụng 9 – KHÁI NIỆM VỀ “SỐNG” VÀ “CHẾT” CỦA ĐÁM QUÂN: Khi một quân được đặt vào bàn cờ, bao giờ nó cũng có khí xung quanh. Nhưng trong quá trình diễn biến ván cờ, cả hai đấu thủ đều tìm cách cuớp khí của đám quân đối phương. Khi hoàn toàn hết khí thì đám quân đó trở thành tù binh, bị nhấc ra khỏi bàn cờ, lúc đó người ta nói rằng đám quân đó “chết hẳn” (như đã giải thích ở phần ăn quân. Có những đám quân tuy còn khí nhưng thật ra là chết vì trước hay sau cũng không có đường thoát (gọi là chết kỹ thuật) (xem hình dưới, đám Đen bị bắt). Định nghĩa “quân chết kỹ thuật”: Là một hay nhiều quân tuy còn khí nhưng đã nằm hoàn toàn trong vòng vây của đối phương, không có đường thoát, không có mắt, không sống chung(sẽ giải thích sau). Tuy nhiên có trường hợp bị nằm trong vòng vây nhưng không chết vì có một lãnh thổ nhỏ để dư sức làm mắt.(xem hình dưới, Đen vẫn sống) Nhưng nếu biết cách hay, Trắng có thể bắt chết Đen, còn nếu Trắng không thích mạo hiểm thì Đen sống. Mỗi bên đều cố gắng bằng mọi cách cho quân mình tránh bị bắt làm tù binh mà còn tạo ra cho đám quân mình cuộc sống “vĩnh viễn”, tức là làm cho đối phương không còn khả năng tiêu diệt hết khí của đám quân mình. Muốn tạo cho đám quân mình cuộc sống “vĩnh [...]... đặt vào và lấy đi thường xuyên nhiều quân khiến cho người chơi gặp khó khăn hơn nhiều so với máy (ví dụ như hình bên) Tuy nhiên các thế cờ này là ít gặp trong cờ vây và thường được người chơi giải quyết bằng kinh nghiệm luyện tập từ trước 2)Một số đặc điểm chung của các chương trình chơi cờ vây Cũng như các chương trình chơi cờ khác, chơi cờ vây cũng yêu cầu các kỹ thuật như tính toán nước đi (move... heuristics Cây nước đi của cờ vây cũng lớn hơn vì thế trước khi tiến hành tìm kiếm, tree-search, một số kỹ thuật cắt tỉa cây phải được thực hiện Phần 3.Phân tích thiết kế 1) Thiết kế tổng quát của chương trình Chương trình hiện tại gồm có hai module chính là giao diện người dùng và engine chơi cờ 16 Công nghệ tri thức và ứng dụng Trong đó người chơi sẽ đưa ra các nước đi thông qua một bàn cờ với giao diện đồ... hơn so với các môn cờ khác Thậm chí một số hệ thống chơi cờ vây đơn giản dựa hoàn toàn vào việc ước lượng thế trận để tìm nước đi mà bỏ qua khâu ước lượng các nước đi này Việc cài đặt các kỹ thuật trên ở cờ vây cũng tương đối khác Nếu như ở cờ vua hoặc cờ tướng chúng ta có một số cơ sở định lượng nhất định để ước lượng thế trận – bằng cách đánh giá trị cho những quân cờ, thì ở cờ vây việc ước lượng... khả năng trên có nghĩa ván cờ đã đến lúc kết thúc Phần 4.Kết quả và hướng phát tri n Chương trình được viết trong môi trường: - Microsoft Visual Studio 2010 - Net Framework 3.5 - Sử dụng WPF Sử dụng WPF cho phép chương trình có thể tự vẽ ra các hiệu ứng đổ bóng, tô màu gradient một cách đơn giàn hơn, cho phép tạo ra giao diện bóng bẩy chỉ bằng những dòng code và không phải sử dụng một hình ảnh nào Điều... nhất Đối với cờ vây, bàn cờ vây tiêu chuẩn có kích thước 19x19, quân cờ được đặt vào các giao điểm (điểm khí) của những đường ngang và dọc bàn cờ Tổng cộng có 19 x 19 = 361 giao điểm, hơn gấp 5 lần so với cờ vua hay cờ tướng Mỗi lượt đi quân cờ có thể được đặt tại gần như mọi điểm còn trống, điều này khiến mức độ phân nhánh (branching factor) của cờ vây lớn hơn rất nhiều so với các loại cờ khác Việc... tình trạng hiện tại của bàn cờ Chương trình sẽ ước lượng thế trận dựa trên việc so khớp giữa thế cờ tại điểm đang xét với một mảng các thế cờ có sẵn (pattern matching) Các thế cờ này là cơ sở tri thức cơ bản của chương trình, được tham khảo phần lớn từ phần mềm waffyGo của tác giả Bill Newmam( newman@tcgould.tn.cornell.edu) Mỗi pattern sẽ được xét tại từng điểm khí trên bàn cờ, , với cú pháp sau: PATTERN,... các quân trong bàn cờ vây ít thay đổi Nếu như ở cờ vua hoặc cờ tướng, sau mỗi nước người chơi phải ghi nhận 2 hoặc 3 thay đổi trên bàn cờ (chỗ trống mà quân di chuyển đang chiếm giữ sẽ trống đi, có một vị trí mới bị chiếm giữ và có thể có một quân đối phương bị bắt) Đối với cờ vây, thông thường mỗi nước đi chỉ gây ra một sự thay đổi trên bàn cờ (việc bắt quân là không phổ biến ở cờ vây, đặc biệt ở đẳng... một 15 Công nghệ tri thức và ứng dụng số điều chỉnh cho phù hợp với đặc điểm của cờ vây Nếu trong các loại hình cờ khác, chúng ta có thể áp dụng kỹ thuật move generation trước để có danh sách các nước đi khả thi Tiếp đến ta ước lượng các nước đi đó (move evaluation) bằng cách ước lượng thế trận diễn ra sau khi tiến hành nước đi này Từ đó ta chọn một số nước đi có tiềm năng nhất và lặp lại quá trình. .. đánh cờ như kiểm tra tình trạng sống sau mỗi nước đi, gỡ bỏ những quân bị bắt, thống kế và cập nhật danh sách các groups trên bàn cờ sẽ được thực hiện bằng thuận toán flood fill 3) Engine chơicờ Do chỉ thực hiện đơn giản nên giải thuật được chương trình sử dụng để đánh cờ chỉ bao gồm 2 kỹ thuật chính là tính toán nước đi và ước lượng thế trận Kỹ thuật đi thử để tạo cây nước đi nhằm tìm nước tối ưu... bảo tính chất nhỏ gọn của chương trình (nhỏ hơn 100KB) Toàn bộ bàn cờ sẽ được vẽ bằng hàm DrawRectangle, DrawEllipse, DrawText, và DrawGeometry Ngoài khả năng giảm kích thước chương trình, việc tạo hình hoàn tòa bằng code cho phép giao diện có thể được điều chỉnh sang bất cứ kích thước nào mà không bị ảnh hưởng giống như khi dùng ảnh raster tĩnh 26 Công nghệ tri thức và ứng dụng Tài liệu tham khảo: . ÁN. Môn: CÔNG NGHỆ TRI THỨC VÀ ỨNG DỤNG XÂY DỰNG CHƯƠNG TRÌNH CHƠI CỜ VÂY ĐƠN GIẢN SỬ DỤNG CÔNG NGHỆ TRI THỨC Học viên: PHẠM NGUYỄN TRƯỜNG AN Giảng viên hướng dẫn: GS. TSKH. Hoàng Văn Kiếm 2 Công nghệ. những đặc trưng của bộ môn cờ vây và các phương thức cơ bản của những hệ thống chơi cờ hiện tại. Từ đó xây dựng một chương trình máy tính đơn giản có thể chơi cờ vây với người, hỗ trợ giao. cờ này là ít gặp trong cờ vây và thường được người chơi giải quyết bằng kinh nghiệm luyện tập từ trước. 2)Một số đặc điểm chung của các chương trình chơi cờ vây. Cũng như các chương trình chơi

Ngày đăng: 10/04/2015, 17:05

Từ khóa liên quan

Mục lục

  • Phần 1. Giới thiệu yêu cầu:

    • 1) Giới thiệu cờ vây:

    • 2) Tản mạn computer go

    • 3) Yêu cầu đề ra:

    • Phần 2. Cơ sở lý thuyết

      • 1) Đặc điểm của cờ vây

        • Cờ Vây có 9 điều luật cơ bản:

        • Lợi thế của người so với máy.

        • 2) Một số đặc điểm chung của các chương trình chơi cờ vây.

        • Phần 3. Phân tích thiết kế

          • 1) Thiết kế tổng quát của chương trình

          • 2) Cách biểu diễn bàn cờ.

          • 3) Engine chơicờ

          • Phần 4. Kết quả và hướng phát triển

          • Tài liệu tham khảo:

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

Tài liệu liên quan