Đề tài Xây dựng game Cờ tướng

Cờ tƣớng (chữ Hán gọi là 象棋, phiên âm Hán Việt là Tượng Kỳ tức "cờ hình tượng", có người cho là "cờ voi" nhưng chữ "tượng" nên hiểu theo nghĩa "phỏng theo, bắt chước" hợp lí hơn nghĩa "voi"), hay còn gọi là cờ Trung Hoa (Tiếng Anh: Chinese Chess) vì nó được phổ biến ra thế giới từ Trung Quốc và cũng được coi là "quốc hồn quốc túy" của nước này (nhƣng theo phương Tây thì nó có nguồn gốc từ Ấn Độ), là một trò chơi trí tuệ dành cho hai người, là loại cờ được chơi phổ biến nhất thế giới cùng với cờ vua

pdf20 trang | Chia sẻ: lecuong1825 | Lượt xem: 7890 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Đề tài Xây dựng game Cờ tướng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
MỤC LỤC CHƢƠNG 1: MỞ ĐẦU ......................................................................................... 1 1.1. Trò chơi cờ tƣớng ....................................................................................... 1 1.2. Mục tiêu của đề tài ...................................................................................... 4 1.3. Yêu cầu của đề tài ....................................................................................... 4 1.4. Nội dung luận văn ....................................................................................... 5 CHƢƠNG 2: CƠ SỞ LÝ THUYẾT........................ Error! Bookmark not defined. 2.1. Tìm hiểu Socket ........................................ Error! Bookmark not defined. 2.2. Giao thức TCP/IP ...................................... Error! Bookmark not defined. 2.2.1 Tầng ứng dụng (Application Layer) ... Error! Bookmark not defined. 2.2.2 Tầng giao vận (Transport Layer) ........ Error! Bookmark not defined. 2.2.3 Tầng liên mạng (Internet Layer) ......... Error! Bookmark not defined. 2.2.4 Tầng giao diện mạng (Network Interface Layer)Error! Bookmark not defined. 2.3. Mô hình Client – Server............................ Error! Bookmark not defined. 2.4. Dạng trò chơi và cây trò chơi ................... Error! Bookmark not defined. 2.5. Vét cạn ...................................................... Error! Bookmark not defined. 2.6. Chiến lƣợc tìm kiếm trong trò chơi .......... Error! Bookmark not defined. 2.7. Đánh giá một thế cờ .................................. Error! Bookmark not defined. 2.8. Thủ tục MiniMax ...................................... Error! Bookmark not defined. 2.9. Thủ tục AlphaBeta .................................... Error! Bookmark not defined. CHƢƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNGError! Bookmark not defined. 3.1. THIẾT KẾ HỆ THỐNG ........................... Error! Bookmark not defined. 3.1.1 Sơ đồ usecase ...................................... Error! Bookmark not defined. 3.1.2 Sơ đồ lớp ............................................. Error! Bookmark not defined. 3.2. ĐẶC TẢ CHỨC NĂNG ........................... Error! Bookmark not defined. 3.2.1 Các yêu cầu chức năng cơ bản ............ Error! Bookmark not defined. 3.2.2 Yêu cầu phi chức năng ........................ Error! Bookmark not defined. 3.3. ĐẶC TẢ KỸ THUẬT .............................. Error! Bookmark not defined. 3.3.1 Kho dữ liệu (Resource) ....................... Error! Bookmark not defined. 3.3.2 Các lớp quân cờ ................................... Error! Bookmark not defined. 3.3.3 Lớp Luatchoi ....................................... Error! Bookmark not defined. 3.3.4 Lớp cothedi ......................................... Error! Bookmark not defined. 3.3.5 Lớp LoadResource .............................. Error! Bookmark not defined. 3.3.6 Lớp HienThiCT ................................... Error! Bookmark not defined. 3.3.7 Lớp ServerProgram ............................. Error! Bookmark not defined. 3.3.8 Lớp ClientProgram: ............................ Error! Bookmark not defined. 3.3.9 Lớp ChessEngine ................................ Error! Bookmark not defined. CHƢƠNG 4: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ ........................................ 6 4.1. Kết quả thực hiện các chức năng ................................................................ 6 4.1.1 Giao diện đăng nhập ............................................................................. 6 4.1.2 Menu game ............................................................................................ 7 4.1.3 Bàn cờ: .................................................................................................. 8 4.1.4 Nhấc quân cờ đánh dấu các vị trí có thể đi: .......................................... 9 4.1.5 Kiểm tra chiếu tƣớng: ......................................................................... 10 4.1.6 Kiểm tra thắng thua: ............................................................................ 11 4.1.7 Chức năng xin thua ............................................................................. 13 4.1.8 Chức năng cầu hòa: ............................................................................. 14 4.2. Đánh giá và nhận xét ................................................................................ 15 DANH SÁCH HÌNH VẼ Hình 1: Bàn cờ tƣớng .............................................................................................. 2 Hình 2: Mô hình bốn tầng của giao thức TCP/IP . Error! Bookmark not defined. Hình 3: Mô hình Client – Server .......................... Error! Bookmark not defined. Hình 4: Hình ảnh mô phỏng cây chƣơng trình ..... Error! Bookmark not defined. Hình 5: Thuật toán Mimax ................................... Error! Bookmark not defined. Hình 6: Minh họa chiến lƣợc chơi cờ của ngƣời và chƣơng trình máy tính Error! Bookmark not defined. Hình 7: Thuật toán AlphaBeta .............................. Error! Bookmark not defined. Hình 8: Usecase tổng quát .................................... Error! Bookmark not defined. Hình 9: Usecase chức năng chơi mạng ................. Error! Bookmark not defined. Hình 10: Usecase chức năng chơi với máy .......... Error! Bookmark not defined. Hình 11: Sơ đồ lớp chức năng chơi qua mạng LANError! Bookmark not defined. Hình 12: Sơ đồ lớp chức năng đánh với máy ....... Error! Bookmark not defined. Hình 13: Thƣ mục chứa dữ liệu ............................ Error! Bookmark not defined. Hình 14: Mô phỏng bàn cờ tƣớng với tọa độ ....... Error! Bookmark not defined. Hình 15: Miền xem xét nằm giữa Alpha, Beta ..... Error! Bookmark not defined. Hình 16 Cây trò chơi minh họa cho thuật toán AlphaBetaError! Bookmark not defined. DANH SÁCH BẢNG BIỂU Bảng 1: Luật đi của mỗi quân cờ ............................................................................ 3 Bảng 2: Một số port phổ biến ............................... Error! Bookmark not defined. Bảng 3: Giá trị của các quân cờ ............................ Error! Bookmark not defined. Bảng 4: So sánh hai thuật toán MiniMax và AlphaBetaError! Bookmark not defined. Xây dựng game Cờ tướng CHƢƠNG 1: MỞ ĐẦU  Nội dung chương 1 trình bày, giới thiệu về trò chơi cờ tướng, lịch sử ra đời, luật chơi. Phần cuối chương sẽ trình bày mục tiêu và ý nghĩa của đề tài. 1.1. Trò chơi cờ tƣớng Lịch sử: Cờ tƣớng (chữ Hán gọi là 象棋, phiên âm Hán Việt là Tượng Kỳ tức "cờ hình tƣợng", có ngƣời cho là "cờ voi" nhƣng chữ "tƣợng" nên hiểu theo nghĩa "phỏng theo, bắt chƣớc" hợp lí hơn nghĩa "voi"), hay còn gọi là cờ Trung Hoa (Tiếng Anh: Chinese Chess) vì nó đƣợc phổ biến ra thế giới từ Trung Quốc và cũng đƣợc coi là "quốc hồn quốc túy" của nƣớc này (nhƣng theo phƣơng Tây thì nó có nguồn gốc từ Ấn Độ), là một trò chơi trí tuệ dành cho hai ngƣời, là loại cờ đƣợc chơi phổ biến nhất thế giới cùng với cờ vua Cờ Tƣớng là một trong những trò chơi có thâm niên lâu đời và tồn tại bất biến với thời gian. Đây không phải là môn giải trí đơn thuần nhƣ bao trò chơi khác, mà nó còn rèn luyện cho con ngƣời trí thông minh và khả năng phán đoán. Trong cờ Tƣớng, có những quy luật và nguyên tắc đƣợc quy định chặt chẽ, buộc ngƣời chơi phải tuân theo để làm nên thành công của ván cờ. Trong cờ Tƣớng, ngƣời chơi phải biết “điều binh khiển Tƣớng” và phải biết giá trị của các quân cờ để có những chiến lƣợc phù hợp. Bàn cờ: Bàn cờ là một hình chữ nhật do 9 đƣờng dọc và 10 đƣờng ngang cắt nhau vuông góc tại 90 điểm hợp thành. Một khoảng trống gọi là sông (hay hà) nằm ngang giữa bàn cờ, chia bàn cờ thành hai phần đối xứng bằng nhau. Mỗi bên có một cung Tƣớng hình vuông (Cửu cung) do 4 ô hợp thành tại cá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 xuyên qua. Theo quy ƣớc, khi bàn cờ đƣợc quan sát chính diện, phía dƣới sẽ là quân Trắng (hoặc Đỏ), phía trên sẽ là quân Đen. Các đƣờng dọc bên Trắng (Đỏ) đƣợc đánh số Xây dựng game Cờ tướng từ 1 đến 9 từ phải qua trái. Các đƣờng dọc bên Đen đƣợc đánh số từ 9 tới 1 từ phải qua trái. Hình 1: Bàn cờ tƣớng Luật chơi: Ván cờ đƣợc tiến hành giữa hai ngƣời, một ngƣời cầm quân Trắng (hay Đỏ), một ngƣời cầm quân Đen (hay Xanh lá cây). Mục đích của mỗi ngƣời là tìm mọi cách đi quân trên bàn cờ theo đúng luật để chiếu bí Tƣớng (hay Soái, hoặc Suý) của đối phƣơng và giành thắng lợi. Quân cờ đƣợc di chuyển theo luật sau: Stt Đối tƣợng Luật đi 1 Tƣớng Đi từng ô một, đi ngang hoặc dọc. Tƣớng luôn luôn phải ở trong phạm vi cung và không đƣợc ra ngoài. “Cung” tức là hình vuông 3×3 đƣợc đánh dấu bởi lằng chéo hình chử X. Xây dựng game Cờ tướng 2 Sĩ Đi xéo 1 ô mỗi nƣớc. Sĩ luôn luôn phải ở trong cung nhƣ con Tƣớng. 3 Tƣợng Đi chéo 2 ô (ngang 2 và dọc 2) cho mỗi nƣớc đi. Tƣợng chỉ đƣợc phép ở một bên của bàn cờ, không đƣợc di chuyển sang nữa bàn cờ của đối phƣơng. Nƣớc đi của tƣợng sẽ không hợp lệ khi có một quân cờ nằm chặn giữa đƣờng đi. 4 Xe Đi ngang hay 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. 5 Mã Đi ngang 2 ô và dọc 1 ô (hay dọc 2 ô và ngang 1 ô) cho mỗi nƣớc đi. Nếu có quân nằm ngay bên cạnh mã và cản đƣờng ngang 2 (hay đƣờng dọc 2), mã bị cản không đƣợc đi đƣờng đó. 6 Pháo Đi ngang và dọc giống nhƣ xe. Điểm khác biệt là nếu pháo muốn ăn quân, pháo phải nhảy qua đúng 1 quân nào đó. Khi không ăn quân, tất cả những điểm từ chổ đi đến chổ đến phải không có quân cản. 7 Tốt (hay Binh) đi một ô mỗi nƣớc. Nếu chốt chƣa vƣợt qua sông, nó chỉ có thể đi thẳng tiến. Khi đã vƣợt sông rồi, chốt có thể đi ngang 1 nƣớc hay đi thẳng tiến 1 bƣớc mỗi nƣớc. Bảng 1: Luật đi của mỗi quân cờ - Ăn quân: Khi quân di chuyển đến một vị trí 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 con tƣớng trên bàn không đƣợc nằm trên cùng 1 cột dọc mà không có quân cản nào ở giữa. Nƣớc đi để 2 con tƣớng trong vị trí chống tƣớng là không hợp lệ. - An toàn của tƣớng: Sau một nƣớc đi, tƣớng của bên đã đi không đƣợc để quân đối phƣơng ăn ngay trong nƣớc tiếp. Những nƣớc để tƣớng không an toàn là không hợp lệ.Thông thƣờng bị xử lý lổi kỹ thuật,nếu một ván cờ bị phạm 3 lổi thì sẽ thua. Ván cờ kết thúc khi một trong những tình huống sau: - Chiếu bí: Nếu một bên chiếu (bắt tƣớng), và đối thủ không có khả năng đở, bên chiếu tƣớng thắng. - Hết nƣớc đi: Nếu bên tới phiên đi nhƣng không có nƣớc hợp lệ để đi, bên đó sẽ bị thua. - Khi một hoặc hai bên bị phạm lỗi. Xây dựng game Cờ tướng 1.2. Mục tiêu của đề tài Đề tài: “Xây dựng game cờ tƣớng ”. Để làm đề tài này, ta cần: - Hiểu nguyên lý hoạt động của mô hình Client – Server trong lập trình mạng. - Hiểu đƣợc kỹ thuật Socket trong Java. Cách áp dụng nó để xây dựng ứng dụng. - Biết kết hợp Socket trong Java và mô hình Client – Server để xây dựng một ứng dụng chạy trên môi trƣờng mạng. - Tìm hiểu cách một chƣơng trình máy tính có thể chơi đƣợc các trò chơi đấu trí nhƣ cờ tƣớng, cờ vua, Tìm hiểu về cây trò chơi và vét cạn - Tìm hiểu về chiến lƣợc tìm kiếm trong thể loại trò chơi đối kháng nhƣ cờ tƣớng, cờ vua, từ đó xây dựng và viết chƣơng trình cho thủ tục MiniMax. - Cải tiến thuật toán MiniMax bằng việc xây dựng thủ tục AlphaBeta, giảm thời gian tìm kiếm nƣớc đi của chƣơng trình. - Xây dựng chƣơng trình với giao diện dễ nhìn, thân thiện với ngƣời chơi và dễ sử dụng. 1.3. Yêu cầu của đề tài Để triển khai xây dựng đề tài hoàn chỉnh ta phải am hiểu tổng quan, sơ lƣợc về các mô hình hoạt động trong môi trƣờng mạng thông dụng hiện nay cùng các cơ chế hỗ trợ cho mô hình đó và ngôn ngữ lập trình mạng thích hợp. Cụ thể trong đề tài đã lựa chọn cần tìm hiểu kỹ các phần sau: - Tìm hiểu mô hình Client – Server. - Tìm hiểu cơ chế Socket - Tìm hiểu kỹ thuật Socket trong Java - Tìm hiểu cây trò chơi, chiến lƣợc tìm kiếm trên cây. - Xây dựng hàm MiniMax - Cải thiện thủ tục MiniMax với AlphaBeta Xây dựng game Cờ tướng 1.4. Nội dung luận văn Luận văn bao gồm 4 chƣơng: Chƣơng 1: Giới thiệu tổng quan về trò chơi cờ tƣớng, mục tiêu của đề tài và yêu cầu của đề tài. Chƣơng 2: Trình bày, giới thiệu về mô hình Client – Server, các giao thức và lý thuyết trò chơi. Chƣơng 3: Trình bày các kiến trúc trong game và giải pháp để xây dựng game. Chƣơng 4: Kết luận và hƣớng phát triển Xây dựng game Cờ tướng TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ  Nội dung chương này trình bày các kết quả đạt được trong quá trình thực hiện luận văn và hướng phát triển của đề tài. 1.5. Kết quả thực hiện các chức năng 1.5.1 Giao diện đăng nhập Xây dựng game Cờ tướng 1.5.2 Menu game Xây dựng game Cờ tướng 1.5.3 Bàn cờ: Bàn cờ ngƣời chơi: Sau khi đăng nhập thành công, giao diện chính của chƣơng trình sẽ hiện lên giúp ngƣời chơi tiếp cận với ván cờ. Ngƣời chơi nào đăng nhập trƣớc sẽ đƣợc đi trƣớc. Tên ngƣời chơi lúc đăng nhập đƣợc hiển thị ở khung tên. Xây dựng game Cờ tướng 1.5.4 Nhấc quân cờ đánh dấu các vị trí có thể đi: Khi ngƣời chơi nhấc quân lên để thực hiện nƣớc, chƣơng trình sẽ hiển thị các vị trí trên bàn cờ mà quân cờ có thể đi đƣợc, quân cờ nhấc lên sẽ đƣợc đánh dấu. Xây dựng game Cờ tướng 1.5.5 Kiểm tra chiếu tƣớng: Chƣơng trình sẽ kiểm tra chiếu tƣớng sau mỗi nƣớc đi, nếu có chiếu tƣớng, chƣơng trình đƣa ra thông báo cho cả hai ngƣời chơi. Thông báo chiếu tƣớng chỉ hiển thị trong 2s rồi tắt để ngƣời chơi tiếp tục ván cờ. Xây dựng game Cờ tướng 1.5.6 Kiểm tra thắng thua: Ngƣời chơi: Chƣơng trình sẽ kiểm tra thắng sau mỗi nƣớc đi, nếu ngƣời chơi ăn đƣợc tƣớng của đối phƣơng sẽ thắng, chƣơng trình đƣa ra thông báo thắng, ván cờ kết thúc. Xây dựng game Cờ tướng Đối phƣơng: Chƣơng trình chỉ kiểm tra thắng nên khôi đối phƣơng thắng thì đồng thời chƣơng trình cũng hiển thị thông báo thua đối với ngƣời chơi, ván cờ kết thúc. Xây dựng game Cờ tướng 1.5.7 Chức năng xin thua Khi thấy thế cờ đã thua, ngƣời chơi có thể nhấn nút xin thua, chƣơng trình đƣa ra thông báo thua, ván cờ kết thúc. Xây dựng game Cờ tướng 1.5.8 Chức năng cầu hòa: Khi đối phƣơng nhấp vào nút cầu hòa: Khi nhận thấy ván cờ vào thế hòa, ngƣời chơi có thể nhấn nút cầu hòa để kết thúc ván cờ với kết quả hòa. Khi nhấn nút, chƣơng trình hiển thị yêu cầu cầu hòa đến đối phƣơng. Xây dựng game Cờ tướng Nếu ngƣời chơi chấp nhận: Nếu ngƣời chơi chấp nhận, ván cờ kết thúc với kết quả hòa, chƣơng trình hiển thị thông báo hòa cho cả hai ngƣời chơi. Nếu ngƣời chơi từ chối, ván cờ sẽ tiếp tục. 1.6. Đánh giá và nhận xét Chƣơng trình đƣợc xây dựng tƣơng đối hoàn thiện, đáp ứng đầy đủ các yêu cầu của đồ án, tuy chƣa thể phát triển thành một trò chơi online hoàn thiện song đồ án đã giúp củng cố và hoàn thiện kiến thức. Xây dựng game Cờ tướng KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Các kết quả đạt đƣợc:  Tìm hiểu kiến thức về lập trình mạng, mô hình Client – Server, lý thuyết trò chơi, kỹ thuật lập trình game2D.  Đề tài “Xây dựng game Cờ tƣớng” đƣợc hoàn thành đúng yêu cầu và thời gian quy định.  Chƣơng trình đƣợc xây dựng đủ chức năng cơ bản của một game cờ tƣớng đánh qua mạng LAN đồng thời giúp ngƣời chơi luyện tập với chƣơng trình máy tính. Các kết quả chƣa đạt đƣợc:  Một số chức năng vẫn chƣa thật hoàn thiện, ở một số trƣờng hợp đặc biệt chƣơng trình vẫn chƣa xử lý đƣợc.  Chƣa tạo đƣợc phòng cho ngƣời chơi lựa chọn.  Tốc độ tìm nƣớc đi của chƣơng trình máy tính chƣa đƣợc tốt. Hƣớng phát triển:  Tối ƣu chƣơng trình máy tính đánh cờ.  Xây dựng phòng chơi, thêm một số chức năng trong game nhƣ hoãn nƣớc, tính thời gian.  Phát triển thành game Online.