thiết kế trò chơi cờ ca-rô
Mô phỏng trò chơi cờ caro Công nghệ Phần mềm Mục lục Cấu hình hệ thống chi tiết 44 IV.2.5.Chức năng nút Help_______________________________________53 IV.2.6.Chức năng nút About_______________________________________54 IV.2.7.Chức năng nút Save & Exit __________________________________55 Tin học 3A – HVKTQS 1 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm THIẾT KẾ TRÒ CHƠI CỜ CA-RO I. Đặc tả hệ thống I.1 Giới thiệu trò chơi cờ CA-RO Cờ CA-RO ( hay còn có tên khác là GO-MO-KU) là trò chơi nằm trong thể loại các trò chơi đối kháng ( cờ vua, cờ tường, cờ vây ), diễn ra giữa 2 đấu thủ. Đặc điểm của dạng trò chơi này như sau: - Có 2 đấu thủ, mỗi người chỉ đi 1 nước khi tới lượt - Trận đấu không kéo dài vô tận, phải diễn ra hòa, hoặc một bên thắng và bên kia thua. Thông thường ta hay gọi các trò chơi này là loại cờ. Đôi khi ta gọi đây là các trò chơi Minimax. Hình 1.1 là ví dụ về 1 số trò chơi nằm trong thể loại các trò chơi đối kháng: Tin học 3A – HVKTQS 2 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm (Hình 1.1) I.2 Lịch sử trò chơi cờ CA-RO Cờ caro chính là môn cờ logic lâu đời và cổ xưa nhất trên Trái Đất. Cờ caro đã được sáng tạo từ nhiều nền văn minh khác nhau một cách độc lập. Nó bắt đầu xuất hiện từ năm 2000 trước CN ở sông Hoàng Hà, Trung Quốc. Một số nhà khoa học đã tìm thấy bằng chứng chứng minh Caro đã được phát minh ở Hy lạp cổ đại và ở Châu Mỹ trước thời Colombo. Môn cờ cổ của Trung Quốc là Wutzu. Cờ Caro du nhập từ Trung Quốc vào Nhật Bản từ khoảng năm 270 trước CN. Nó thường được gọi là Gomoku nhưng cũng có các tên gọi khác tuỳ theo thời gian và địa phương như Kakugo, gomoku-narabe, Itsutsu-ishi Người ta đã tìm thấy một trò chơi cổ từ một di tích ở Nhật năm 100 sau CN và thấy nó là một biến thể của Caro. Nó đã lan truyền nhanh chóng với cái tên Kakugo (trò 5 quân). Các nhà sử học nói rằng Tin học 3A – HVKTQS 3 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm vào các thế kỷ 17 và 18, mọi người đều chơi trò này-người già cũng như người trẻ. Năm 1858, khi quyển sách đầu tiên về trò chơi này được xuất bản, nó được gọi là Kakugo. Nó tiếp tục được chơi, được gọi với nhiều tên khác nhau như Goren, Goseki, rồi Gomokunarabe, Gomoku và phát triển cho đến ngày nay thành thể loại phức tạp nhất trong họ hàng đông đúc của nó, là Renju (chuỗi ngọc trai). Ta có thể biết mọi thông tin về Renju và các biến thể ở www.renju.nu Khi trình độ các kỳ thủ Gomoku được nâng cao, họ nhận ra rằng nếu chỉ chơi đơn giản như trong Gomoku thì đó sẽ là một lợi thế quá lớn cho bên tiên tức bên Đen (thực tế chính là ưu thế thắng). Sau đó một số nhà toán học đã chứng minh được rằng nếu chơi với luật Gomoku trên bàn cờ bằng hoặc rộng hơn 15x15 thì Đen chắc chắn thắng (sure win), và sau đó cách đi cụ thể cũng đã được tìm ra, hệ thống và phân loại (theo tôi biết thì cách thắng hoàn toàn không duy nhất như nhiều người chờ đợi, mà thực tế có nhiều nhánh thắng (win branch) cho Đen). Để dễ hình dung rõ hơn tôi xin được nêu lại luật của Gomoku cổ : -Bàn cờ 15x15 -Đen đi trước -Ai tạo được nước năm (1 hàng 5 quân liền nhau) thì thắng. -Các nước Overline (>= 6 quân) không có giá trị với cả hai bên và không bị coi là lỗi (cấm). Từ đó, Gomoku lâm vào một giai đoạn khủng hoảng. Khả năng đánh thắng 100 phần trăm của Đen đã làm trò chơi này mất đi ý nghĩa của nó. Có nhiều cải tiến được đề xuất, một số đã bị bỏ qua nhanh chóng, số khác làm xuất hiện các biến thể mới của Gomoku. Ý tưởng chung của các cải tiến là đề ra một số hạn chế Tin học 3A – HVKTQS 4 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm cho Đen, nhằm cân bằng ưu thế đi tiên. Dưới đây là một số biến thể phổ biến. Gomoku. Hiện nay được chơi chính thức với bàn 13x13. Không có hoà. Nếu hết đất thì Trắng thắng. Chưa tìm được chứng minh nào cho thấy Đen chắc chắn thắng. Tuy nhiên Đen vẫn có ưu thế rất lớn. Bạn có thể chơi ở www.itsyourturn.com. ProGomoku. Chơi trên bàn 15x15. Nước đầu của Đen đặt sẵn ở trung tâm. Nước thứ ba (nước thứ hai của Đen) phải đặt ngoài hình vuông cấm. Hình vuông cấm là hình vuông trung tâm kích thước 5x5. Không có hạn chế cho Trắng. Đã có chứng minh Đen chắc chắn thắng trong biến thể này. Pente. Biến thể này không còn giống Gomoku. Luật bổ sung là có thể ăn quân đối phương. Nước ăn quân được thực hiện bằng cách chặn hai đầu một nước hai quân đối phương và ăn hai quân đó. Ai tạo được nước năm hoặc ăn được 5 cặp quân trước thì thắng. Rất phổ biến ở Mỹ. Chơi trên bàn 19x19. Tuy nhiên trò chơi này chỉ thực sự lấy lại được sự hấp dẫn của nó khi phát triển thành thể loại hoàn thiện nhất được chơi ngày nay - Renju. Renju cũng đã mất hàng chục năm để thử nghiệm và phát triển những luật mới. Cụ thể là vào năm 1899, cái tên Renju (chuỗi ngọc trai) ra đời và đến năm 1966 thì nó đã được hoàn thiện khi Liên đoàn Renju Nhật Bản - Nihon Renju Sha ra đời và công bố luật Renju chính thức. II. Đưa CA-RO vào trong Game PC II.1 Mục đích, Đối tượng sử dụng và Yêu cầu tối thiểu cho trò chơi a. Mục đích sử dụng Tin học 3A – HVKTQS 5 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm Tro chơi được thiết kế nhằm mục đích tăng khả năng suy luận, phán đoán cho người chơi kết hợp với giải trí lành mạnh. b. Đối tượng sử dụng Trò chơi CA-RO được thiết kế và phát triển với mục tiêu cung cấp miễn phí, nhằm phục vụ cho tất cả các đối tượng yêu thích môn cờ CA-RO, từ học sinh, sinh viên, đến những người lớn tuổi. c. Yêu cầu tối thiểu - Giao diện thân thiện, dễ sử dụng - Cho phép người chơi có thể chọn nhiều mức độ từ dễ đến khó. - Đưa ra 2 chế độ chơi: + Người đấu với Người + Người đấu với Máy. II.2 Đặc tả hệ thống II.2.1. Mô hình và sơ đồ chức năng. a. Xác định các chức năng: - New game - Game mode - Save and Exit - Load game - TopScore - Update - CA-RO help - About Tin học 3A – HVKTQS 6 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm b. Sơ đồ phân rã chức năng: Tin học 3A – HVKTQS 7 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm c. Đặc tả chi tiết chức năng STT: 1 Tên chức năng: New game. Nhóm chức năng: Chức năng chơi. Tin học 3A – HVKTQS 8 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm - Chức năng này cho phép người chơi bắt đầu 1 ván cờ, khi kích hoạt chức năng này thì trên FORM sẽ xuất hiện nhiều lựa chọn trong phần Game mode, sau khi chọn chế độ và mức độ chơi phù hợp với mình, 1 bàn cờ sẽ hiện ra và trận đấu sẽ được bắt đầu, người chơi có thể sử dụng tổ hợp phím nóng Ctrl + N để thực hiện chức năng này. Game Mode: đây là chức năng cho phép người chơi có thể lựa chọn những mức độ và chế độ chơi phù hợp vởi bản thân. - Có 2 chế độ chơi được đưa ra đó là: + Người đấu với Người. + Người đấu với Máy. - Hệ thống sẽ có 3 mức độ chơi cho game thủ lựa chọn ( mặc định là Easy): + Easy + Normal + Hard - Do 1 ván đấu không thể kéo dài vô tận nên hệ thống cũng đưa ra những khoảng thời gian giới hạn cho 1 ván đấu, các khoảng thời gian là do game thủ lựa chọn, tối thiểu là 30 phút và tối đa là 1440 phút. STT: 2 Tên chức năng: Save and Exit. Nhóm chức năng: Chức năng chơi. - Save&Exit nằm trong nhóm chức năng chơi, được hiển thị trên màn hình khi mới đăng nhập vào trò chơi, hoặc khi đang chơi, người chơi nhấn ESC. - Lưu trữ trạng thái hiện hành của trò chơi lên tệp dữ liệu ghi trên đĩa cứng máy tính, trạng thái này sẽ được nạp trở lại trong lần khởi động trò chơi sau đó. Thông tin trạng thái cần lưu bao gồm: Tin học 3A – HVKTQS 9 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm tên người chơi, trạng thái các quân cờ trên bàn cờ, lượt đi tiếp theo. - Khi chức năng được kích hoạt, chương trình đưa ra thông báo chứng thực yêu cầu, nếu người chơi xác nhận đúng, thực hiện Save&Exit, ngược lại bỏ qua. - Tất cả được lưu vào một file có định dạng sẵn có đuôi là sav, tên file do người chơi có thể tự đặt hoặc để tên mặc định do game quy định. - Người chơi có thể sử dụng tổ hợp phím nóng Ctrl + S để thực hiện chức năng này. STT: 3 Tên chức năng: Load game. Nhóm chức năng: Chức năng chơi. - Load Game gắn liền với Save Game, khi người chơi đã có file *.sav nghĩa là có ván cờ đã lưu thì có thể dùng chức năng này để mở lại ván cờ và chơi tiếp. - Load Game có thể sử dụng bất cứ lúc nào kể cả khi người chơi đang chơi một ván cờ, khi Load Game được gọi nó hỏi người chơi có muốn lưu lại ván cờ đang chơi không. Nếu có thì chức năng Save Game sẽ được gọi và sau đó mới Load Game. STT: 4 Tên chức năng: TopScore Nhóm chức năng: Chức năng hệ thống - Chương trình sẽ có 1 hệ thống xếp hạng các thứ bậc. Hệ thống này sẽ được tính toán dựa trên số điểm và số lần thắng mà người chơi đạt được. - Công thức tính toán điểm dựa trên 2 mức: mức độ khó và thời gian kết thúc ván đấu. Trong đó mức độ Hard sẽ được cho điểm cao nhất, sau đó đến Normal và cuối cùng là Easy. Khoảng thời Tin học 3A – HVKTQS 10 [...]... Mô phỏng trò chơi cờ caro Công nghệ Phần mềm Đóng vai trò như bản hướng dẫn chơi trò chơi Đưa ra: - Luật chơi - Các chế độ chơi - Các chủ đề Sử dụng các tính năng hệ thống STT: 7 Tên chức năng: About Nhóm chức năng: Chức năng trợ giúp - Phiên bản trò chơi + Đây là phiên bản đầu tiên, Ver 1.0 - Thông tin nhà sản xuất, liên hệ - Đưa ra địa chỉ email, tiếp nhận những thông tin phản hồi từ người chơi III.MÔ... trình Trò chơi Caro” có hai chế độ chơi, đó là “human vs human”(người chơi với người) và “human vs com”(người chơi với máy) Sau đây là các thuật toán liên quan đến hai chế độ chơi này 1 Chế độ “human vs human” (người chơi với người) Trong chế độ này, các thao tác chơi cờ hoàn toàn phụ thuộc vào người chơi Máy tính chỉ thực hiện chức năng kiểm tra các ô đã được sử dụng qua đó không cho phép người chơi. .. các loại trò chơi với bàn cờ (boardgame) thì kỹ thuật này chỉ ứng dụng khi việc sinh nước đi từ Tin học 3A – HVKTQS 16 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm trạng thái có sẵn là đơn giản, ngoài ra việc đánh giá nước đi này là hay hơn nước đi khác phải làm thật chính xác vì nếu không sẽ khó thấy được nước đi nào là tốt hơn nước kia trong các nước đi đã sinh Tuy nhiên, cờ Caro là trò chơi có độ... hòa, thua) sau mỗi nước đi a Kiểm tra trạng thái ô cờ Tin học 3A – HVKTQS 12 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm Ô cờ chỉ có hai trạng thái “đã đánh” và “chưa đánh” không phân biệt là người chơi nào đánh xuống Do vậy, công việc kiểm tra trạng thái ô cờ là rất dễ dàng bằng cách sử dụng một mảng hai chiều n x n (trong đó n là kích thước bàn cờ) chứa giá trị Boolean: True or False Mảng được khởi... return 0; } - Kết thúc hòa có nghĩa là sau một số hữu hạn các nước đi, các ô cờ trên bàn cờ đã được sử dụng hết nhưng lại không có bên nào tạo được 5 nước liên tiếp Sau khi ô cuối cùng được đánh xuống mà không xác định được bên nào thắng thì sẽ phải công bố ván đấu hòa 2 Chế độ “human vs com” (người chơi với máy) Tin học 3A – HVKTQS 15 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm Với chế độ chơi này, máy...Mô phỏng trò chơi cờ caro Công nghệ Phần mềm gian kết thúc ván đấu càng ngắn thì điểm dành cho người chơi càng cao Sẽ có 5 thứ bậc: + 5 sao (*****) Mức cao nhất + 4 sao (****) + 3 sao (***) + 2 sao (**) + 1 sao (*) - Sau khi kết thức 1 ván cờ, hệ thống sẽ tự đống tính toán và cho biết thứ bậc của người chơi là bao nhiêu STT: 5 Tên chức năng: Nhóm chức năng:... những nhược điểm sau, đó là việc thiết kế hàm ValueIt() thật sự là rất khó, bởi vì không thể lập trình chính xác cho máy biết được nước nào là có giá trị, đây chỉ là gần đúng mà thôi Hơn nữa, khi thiết kế xong rồi kết hợp nó vào cái hàm tìm kiếm nước đi thì sẽ rất mất thời gian - Sinh tất cả các nước đi (Complete Generation) Tin học 3A – HVKTQS 19 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm + Ý tưởng... học 3A – HVKTQS 23 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm vì nó đã bị chiếm bởi quân của đối thủ hoặc là ô nằm kế cạnh của bàn cờ -StTable[1] ("*###") : Chỉ còn 1 ô trống kế tiếp, còn lại không đáng quan tâm -StTable[2] ("OO##") : Hai ô kế tiếp (trên hướng đang xét, ví dụ bên trái) là quân ta, ngoài ra không còn ô nào đáng quan tâm -StTable[30]("OOOO") : Có bốn quân cờ bên ta liên tiếp Định nghĩa... của các thế cờ là con Các thế cờ con pos' đó là các thế cờ được tạo ra từ pos bằng cách đi một nước đi hợp lệ m nào đó Do đó ta phải có các lệnh thực hiện đi quân để đến các thế cờ mới Để biết từ thế cờ pos có thể đi được những nước nào, ta dùng một thủ tục Gen có tham số là thế cờ cha pos Thủ tục này sẽ cất các thế cờ con pos' đó vào bộ nhớ (dạng danh sách) Việc tiếp theo là ta lấy từng thế cờ đó ra... sâu của cây trò chơi cũng bị hạn chế nhiều Ta Tin học 3A – HVKTQS 35 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm cần có thêm những cải tiến để cải thiện tình hình - Kỹ thuật AlphaBeta Thủ tục AlphaBeta là một cải tiến thuật toán Minimax nhằm tỉa bớt nhánh của cây trò chơi, làm giảm số lượng nút phải sinh và lượng giá, do đó có thể tăng độ sâu của cây tìm kiếm Giả sử hình dưới là một thế cờ mà hai nút . HVKTQS 1 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm THIẾT KẾ TRÒ CHƠI CỜ CA-RO I. Đặc tả hệ thống I.1 Giới thiệu trò chơi cờ CA-RO Cờ CA-RO ( hay còn có tên khác là GO-MO-KU) là trò chơi nằm trong. trò chơi này là loại cờ. Đôi khi ta gọi đây là các trò chơi Minimax. Hình 1.1 là ví dụ về 1 số trò chơi nằm trong thể loại các trò chơi đối kháng: Tin học 3A – HVKTQS 2 Mô phỏng trò chơi cờ. cho trò chơi a. Mục đích sử dụng Tin học 3A – HVKTQS 5 Mô phỏng trò chơi cờ caro Công nghệ Phần mềm Tro chơi được thiết kế nhằm mục đích tăng khả năng suy luận, phán đoán cho người chơi kết