Nói đến cơng nghệ thơng tin hình dung đến môi trường phát triển động vào bậc giới Nó áp dụng vào mặt đời sống, xã hội người, từ công việc việc giải trí Cùng với phát triển vượt bậc ngành công nghệ thông tin, người làm nên sản phẩm hữu ích để phục vụ cho đời sống tiêu biểu phải nói đến ngành giải trí Hiện có nhiều chương trình game đời mang tính chất giải trí mạnh mẽ thú vị, nhiên chương trình mang tính trí tuệ chưa chiếm phần lĩnh vực này.Một chương trình phải nói đến chương trình chơi cờ, đại diện “Trò chơi cờ tướng” Một loại cờ nhiều người u thích đơn giản, thú vị Chương trình viết ngơn ngữ Web API ASP.NET, ngơn ngữ có tính tượng tác mạnh với công cụ hỗ trọ sẵn giúp lập trình viên phát triển ứng dụng dễ dàng nhanh chóng thuận lợi
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH
BÁO CÁO ĐỒ ÁN XÂY DỰNG GAME CỜ TƯỚNG
Ngành: Công Nghệ Thông Tin
Giảng viên hướng dẫn: Nguyễn Công Toàn
Bùi Xuân Hoàng Hải 1811060199 18DTHC2 Nguyễn Hoàng Anh 1811061573 18DTHC2 Nguyễn Tiến Sỹ 1811062272 18DTHC2 Nguyễn Quang Vinh 1811062570 18DHTC2
Võ Kim Hồng 1811060266 18DTHC2
TP Hồ Chí Minh, năm 2021
Trang 2LỜI NÓI ĐẦU
Nói đến công nghệ thông tin chúng ta hình dung ngay đến một môi trường phát triểnnăng động vào bậc nhất trên thế giới hiện nay Nó được áp dụng vào mọi mặt đời sống,
xã hội của con người, từ công việc cho đến việc giải trí
Cùng với sự phát triển vượt bậc của ngành công nghệ thông tin, con người đã làm nênnhững sản phẩm hữu ích để phục vụ cho đời sống tiêu biểu phải nói đến ngành giải trí.Hiện nay có rất nhiều chương trình game ra đời mang tính chất giải trí mạnh mẽ và thú
vị, tuy nhiên những chương trình mang tính trí tuệ vẫn chưa chiếm một phần nào đótrong lĩnh vực này.Một trong những chương trình đó phải nói đến các chương trình chơi
cờ, đại diện đây là “Trò chơi cờ tướng” Một trong những loại cờ được khá nhiều ngườiyêu thích vì đơn giản, thú vị Chương trình được viết bằng ngôn ngữ Web API vàASP.NET, là một trong những ngôn ngữ có tính tượng tác mạnh với những công cụ hỗtrọ sẵn giúp lập trình viên phát triển ứng dụng dễ dàng nhanh chóng và thuận lợi
Nhóm chúng em là một sinh viên với kinh nghiệm lập trình chưa có nhiều kinh nghiệm,kiến thức còn hạn hẹn, kỹ năng còn nhiều hạn chế nhưng nhận được sự giúp đỡ tận tìnhcủa thầy Nguyễn Công Toàn cũng như các bạn trong lớp, nhóm em đã cố gắng hoànthành đồ án Tuy còn nhiều thiếu xót và lỗi rất mong nhận được sự góp ý của thầy đểnhóm em hoàn tiện tốt hơn nữa
Nhóm em xin chân thành cảm ơn!
Tp Hồ Chí Minh, Ngày 27 tháng 7 năm 2021
Trang 3Mục lục
CHƯƠNG 1: TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU 1
1.1 Trò Chơi cờ tướng 1
1.2 Mục tiêu chọn đề tài 4
1.3 Yêu cầu của đồ án 5
CHƯƠNG 2: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 5
2.1 Kết quả các chức năng 5
2.1.1 Giao diện chức năng ban đầu khi chạy dự án 5
2.1.2 Chức năng tạo phòng chơi 6
2.1.3 Hiển thị bàn cờ và các quân cờ trên bàn cờ 8
2.1.4 Hiển thị đánh cờ giữa hai người chơi khác nhau 9
2.1.5 Thuật toán của các quân cờ 12
2.1.6 Chức năng chat 15
2.1.7 Chức năng Undo, Redo 17
2.1.8 Chức năng lưu bàn cờ 19
2.1.9 Chức năng người đánh với máy 19
CHƯƠNG 3 : KẾT LUẬN VÀ HƯỚNG ĐI PHÁT TRIỂN 19
3.1 Các kết quả đạt được 19
3.2 Các kết quả chưa đạt được 20
3.3 Hướng phát triển 20
DANH SÁCH HÌNH ANH……… 21
TÀI LIỆU THAM KHẢO……… 22
Trang 4CHƯƠNG 1: TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU
Nội dung chương 1trình bày, giới thiệu về trò chơi cường 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 (Tiếng Trung: 象棋), hay còn gọi là cờ Trung Hoa (Tiếng Trung: 中國象棋),
là một trò chơi trí tuệ dành cho hai người Đây là loại cờ phổ biến nhất tại các nước như Trung Quốc, Việt Nam, Đài Loan và Singapore và nằm trong cùng một thể loại cờ với cờ vua, shogi, janggi
Trò chơi này mô phỏng cuộc chiến giữa hai quốc gia, với mục tiêu là bắt được Tướng củađối phương Các đặc điểm khác biệt của cờ tướng so với các trò chơi cùng họ là: các quân đặt ở giao điểm các đường thay vì đặt vào ô, quân Pháo phải nhảy qua 1 quân khi ănquân, các khái niệm sông và cung nhằm giới hạn các quân Tướng, Sĩ và Tượng
Cờ tướng là một trò những trò chơi có thâm niên lâu đời nhất và tồn tại bền vững theo thời gian Đây không phải không là môn giải trí đơn thuần như bao trò chơi khác , mà nócòn trèn luyện cho người chơ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 thuâ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 kiển tướng” và phải biết giá trị của các quân cờ khác đễ có những chiến lược phù hợp
Bàn cờ
Bàn cờ là 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 nằm ngang giữa bàn cờ, chia bàn cờ thànhhai phần đối xứ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ạ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
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 (hoặc Xanh) Các đường dọc bên Trắng (Đỏ) được đánh số
từ 1 đến 9 từ phải qua trái Các đường dọc bên Đen (Xanh) được đánh số từ 9 tới 1 từ phải qua trái
Mỗi ván cờ lúc bắt đầu phải có 32 quân cờ chia đều cho mỗi bên gồm 16 quân Trắng (Đỏ) và 16 quân Đen (Xanh), gồm bảy 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ủa chúng lại giống nhau hoàn toàn bảy loại quân có ký hiệu và số lượng cho mỗi bên như sau:
Trang 6STT Đối tượng Luật đi
1 Tướng Đi từng ô một, đ ingang hoặc dọc Tướn 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 3x3 được đánh dấu bởi lăng chéo hình chứ X
2 Sĩ Đi xéo 1 ô mỗi nước Sĩ luôn luôn phải ở trong cung như 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 đi 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
Trang 76 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 Đi một ô mỗi nước Nếu chuột chưa vượt qua sông, nó chỉ có thể
đi thẳng tiến Khi đã vượt sông rồi, chuột có thể đi ngang 1 nước hay đi thẳng tiến 1 bước mỗi nước
Bảng 2: 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ữa 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 cờ 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 anq ngay trong nước tiếp theo Những nước để tướng không an toàn là không hợp lệ Thông thương sẽ bị sử lý lỗi kỹ thuật, nếu một ván cờ bị phạm 3 lỗi là thua
Ván cờ kết thúc khi một trong những trường hợp 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ênchiế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 đó
- Hiểu nguyên lý hoạt động của mô hình Client – Sever
- Hiểu được kỹ thuật ASP.NET và WEB API
- Biết kết hợp ứng dụng Jira, gitthub để đưa vào quản lý dự án một cách tối ưu hiệu quả nhất
- 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ề thuật toán của API trong việc áp dụng nước đi
- 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 và cờ vua,… Từ đó xây dựng ra một chương trình tính toán các nước ăn
và chặn trên bàn cờ
Trang 8- Xây dựng chương trình với giao diện dễ nhìn, than thiện vơi người dung và dễ
sử dụng
1.3 Yêu cầu của đồ án
Để triển khai xây dựng đồ án 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 ASP.NET MVC thông dụng hiện nay và cũng như cơ chế hỗ trợ WEB API và ngôn ngữ lâp trình mạng tích hợ.Cụ thể trong đề tài này đã lựa chọn cần tìm hiểu về các kỹ thuật sau:
- Tìm hiểu về mô hình hoạt động Client – Sever
- Tìm hiểu về kỹ thuật lập trình trên ASP.NET MVC5
- Tìm hiểu công nghệ hỗ trợ như : HTML, CSS, JS, JSON, Ajax, Web API,…
- Các điều kiển dữ liệu ( controller)
- Tìm hiểu các thuật toán tính nước đi trong quân cờ
- Triển khai và áp dụng AI vào đánh cờ
- Tìm hiểu và làm Undo, Redo trong dự án
- Cách thức load bàn cờ lên trên web và triển khai lưu bàn cờ
- Thực hiện chức năng chat giữa hai người cùng chơi
- Tạo ra những phòng chơi
CHƯƠNG 2: 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 đồ án và hướng phát triển của đồ án.
2.1 Kết quả các chức năng
2.1.1 Giao diện chức năng ban đầu khi chạy dự án
Trang 9Hình 2: Giao diện ban đầu của bàn cờ
Sau khi khởi động xong CSDL và chạy Index trong view bảng tạo phòng chơi cho người chơi có thể tạo phòng hoặc có thể xem danh sách các phòng chơi để tham gia vào trực tiếp
2.1.2 Chức năng tạo phòng chơi
Một trong những chức năng mà
Hình 3 Chức năng tạo phòng chơi
Hình 4 Giao diện các phòng chơi khi bấm vào button tạo phòng
Trang 10Hình 5 Tạo classroom để hiển thị danh sách phòng chơi
2.1.3 Hiển thị bàn cờ và các quân cờ trên bàn cờ
Bàn cờ người chơi:
Hình 6 Hiển thị bàn cờ trên web
Trang 11Sau khi tạo bàn cờ xong thì tên người chơi sẽ hiển thị bên góc trái màn hình.Giao diện này giúp người chơi dễ phân biệt được khi đánh cơ, và tiếp cận dễ dàng hơn với bàn cờ.Người chơi nào đăng nhập trước thì sẽ đi trước trong nước đi, Tên người chơi lúc đăng nhập được hiển thị ở trên khung.
2.1.4 Hiển thị đánh cờ giữa hai người chơi khác nhau
Hình 7 Người chơi cờ 1
Người chơi 1 có mã người chơi là IP8Q9UKN đăng nhập trước gửi đường link cho một bạn khác qua link để người chơi 2 là 1OL91TC1 có thể chơi cùng trên 1 Sever Và hiển thị được những bước đi mà hai người cùng đánh
Trang 12Hình 8 Người chơi 2
Hình 9 Người chơi 1 đi nước cờ đầu tiên
Trang 13Như đã nói từ đầu thì người chơi 1 đăng nhập trước đo đó đi trước quân Người chơi 1 sẽ điều kiển quân đen và di chuyển quân mã đầu tiên lên 1 ô Sau khi kết thúc lượt đi của mình thì nước đi của người chơi 1 sẽ hiển thị nước đi bên người chơi 2.
Hình 10 Người chơi 2 đã nhận được nước đi của người chơi 1
Hình 11 Người chơi 2 di chuyển nước đi
Trang 14Hình 13 Nước đi của người chơi 2 hiển thị trên bàn cờ máy người chơi 1
2.1.5 Thuật toán của các quân cờ
Để hiển thị được nước đi của các quân cờ trên bàn thì phần code của những quân cờ là phần thiết yếu để hiển thị được các nước đi để khi người chơi tác động trực tiếp vào
Hình 14 Quân chủ Tướng
Trang 15Hình 15 Quân tốt
Hình 16 Quân sĩ
Trang 16Hình 17 Quân pháo
Hình 18 Quân xe
Trang 18Hình 21 Người chơi 2 nhận được thông tin và phản hồi lại cho người chơi 1
2.1.7 Chức năng Undo, Redo
2.1.7.1 Undo
Trang 19Hình 22 Hình ảnh nước đi của quân pháo trước và sau khi undo
2.1.6.2 Redo
Hình 23: Hình ảnh nước đi quân tốt trước và sau khi redo
Trang 202.1.8 Chức năng lưu bàn cờ
Hình 24: Hình ảnh bàn cờ được lưu lại
2.1.9 Chức năng người đánh với máy
2.2 Đánh giá và nhận xét
Chương trình được xây dựng tương đối hoàn, đáp ứng được nhu cầu của đồ án, tuy chưathể 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 nhưng kiến thức
CHƯƠNG 3 : KẾT LUẬN VÀ HƯỚNG ĐI PHÁT TRIỂN
Chương trình được Xây dựng gần như đủ chức năng của một game cờ tướng đánh
cờ qua giữ Client và Sever, đồng thời giúp người chơi luyện tập được cách chơi cờbằng bằng AI chơi cờ
Học được cách quản lý dự án qua Jira phân công việc cụ thể trên Github và tiếp thu được nhiều công nghệ mới từ môn học quản lý dự án công nghệ thông tin
Trang 213.2 Các kết quả chưa đạt được
Một số chức năng vẫn chưa 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
Tốc độ tìm kiếm nước đi của máy chưa được nhanh
3.3 Hướng phát triển
Tối ưu hóa nước đi của quân cờ
Thêm một số chức năng mới hỗ trợ trò chơi
Xây dựng thành một game online hoàn chỉnh
Trang 22DANH MỤC HÌNH ẢNH
Hình 1: Bàn cờ tướng……… ……….2
Hình 2: Giao diện ban đầu của bàn cờ……….6
Hình 3 Chức năng tạo phòng chơi……… 7
Hình 4 Giao diện các phòng chơi khi bấm vào button tạo phòng………7
Hình 5 Tạo classroom để hiển thị danh sách phòng chơi……… 8
Hình 6 Hiển thị bàn cờ trên web………8
Hình 7 Người chơi cờ 1………9
Hình 8 Người chơi 2……… 10
Hình 9 Người chơi 1 đi nước cờ đầu tiên……… 10
Hình 10 Người chơi 2 đã nhận được nước đi của người chơi……….11
Hình 11 Người chơi 2 di chuyển nước đi……… 12
Hình 13 Nước đi của người chơi 2 hiển thị trên bàn cờ máy người chơi 1……… 12
Hình 14 Quân chủ Tướng……… ……… 13
Hình 15 Quân tốt……… ……… 13
Hình 16 Quân sĩ……… ………13
Hình 17 Quân pháo……… ……… 14
Hình 18 Quân xe ……… ……….14
Hình 19 Quân mã……… ……….15
Hình 20 Người chơi 1 gửi thông tin chat cho người chơi máy 2……… … 15
Hình 21 Người chơi 2 nhận được thông tin và phản hồi lại cho người chơi 1…… 16
Hình 22 Hình ảnh nước đi của quân xe trước và sau khi undo……… …… 17
Hình 23 Hình ảnh nước đi quân tốt trước và sau khi redo……… ……18
Hình 24 Hình ảnh bàn cờ được lưu lại……… d…….19
TÀI LIỆU THAM KHẢO
Trang 23
https://dotnet.microsoft.com/apps/aspnet/apis
https://www.tutorialsteacher.com/mvc/asp.net-mvc-tutorials
2sy-book/nm-http-web.html
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/https/configuration/12-2sy/https-12-https://nodejs.org/en/