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
20 trang |
Chia sẻ: lecuong1825 | Lượt xem: 7998 | Lượt tải: 2
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.