Professional Documents
Culture Documents
BÁO CÁO ĐỒ ÁN
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ển
nă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ên
nhữ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ười
yê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ình
củ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àn
thà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!
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ành
hai 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:
1
Hình 1: Bàn cờ tướng
Tướng 1
Sĩ 2
Tượng 3
Xe 2
Pháo 2
2
Mã 2
Tốt 5
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 đen ( 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à cờ theo đúng luật để chiếu bí Tướng ( hay Soái, hoặc Súy) của đối phương và giành
thắng lợi. Quân cờ được di chuyển theo luật sau:
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.
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.
3
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 Đ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.
- Ă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ê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ẽ thua.
- Khi một hoặc hai bên phạm lỗi.
1.2 Mục tiêu chọn đề 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 – 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ờ.
4
- 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.
Để 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.
5
Hì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.
6
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
7
Hình 5. Tạo classroom để hiển thị danh sách phòng chơi
8
Sau 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.
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.
9
Hình 8. Người chơi 2
10
Như đã 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
11
Hình 11. Người chơi 2 di chuyển nước đi
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
Hình 16 Quân sĩ
13
Hình 17 Quân pháo
Hình 18 Quân xe
14
Hình 19 Quân mã
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
2.1.7 Chức năng Undo, Redo
2.1.7.1 Undo
Hình 22 Hình ảnh nước đi của quân xe trước và sau khi undo
17
2.1.6.2 Redo
Hình 23: Hình ảnh nước đi quân tốt trước và sau khi redo
18
2.1.8 Chức năng lưu bàn cờ
19
3.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
20
Bảng Chia Công Việc
21
TÀI LIỆU THAM KHẢO
.
22