Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
465,41 KB
Nội dung
Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Đề tài: “Game Cờ Tướng người - người” LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Mục Lục §1 ĐẶC TẢ CHỨC NĂNG I - Main Menu II - Main Game §2 ĐẶC TẢ KĨ THUẬT I - Bố Cục Chương Trình I.1 Lớp MainMenu I.2 Lớp MainGame I.3 Lớp BANCO I.4 Lớp QUAN CO I.5 Lớp QuanXe I.6 Lớp QuanPhao I.7 Lớp QuanMa I.8 Lớp TUONG I.9 Lớp QuanSi I.10 Lớp QuanTuong I.11 Lớp QuanTot II - Ý Tưởng Thuật Toán cụ thể II.1 Lớp MainMenu : Form II.2 Lớp MainGame : Form II.3 Lớp BANCO : Form II.4 Lớp QUAN CO : PictureBox II.5 Lớp QuanXe : QUANCO II.6 Lớp QuanPhao : QUANCO II.7 Lớp QuanMa : QUANCO II.8 Lớp TUONG : QUANCO II.9 Lớp QuanSi : QUANCO II.10 Lớp QuanTuong : QUANCO II.11 Lớp QuanTot : QUANCO LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 §3 TỔNG KẾT §1 Đặc Tả Chức Năng Chương trình chơi cờ tướng chương trình viết C#.NET 2005, cho phép hai người chơi cờ tướng với máy tính Các chức chương trình mơ tả sau: I - Main Menu : menu chương trình, load lên trước tiên người chơi kích hoạt file exe chạy chương trình Hình – Main Menu LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Kể từ bắt đầu chương trình (nghĩa từ lúc Load Main Menu ) suốt thời gian chạy chương trình, chương trình có chạy nhạc tạo cảm hứng cho người chơi Người chơi đổi nhạc ( nghe nhạc máy người chơi ) dừng hẳn nhạc ( chức trình bày bên ) Ngồi ra, người dùng cịn dùng chuột để di chuyển Form MainMenu đến vị trí hình máy tính Các lựa chọn Main Menu : ( chuột di chuyển đến gần Menu Menu đổi sang màu khác đồng thời có âm báo ) Play : Bắt đầu chơi – Khi click vào chức bàn cờ bắt đầu Open : Open file định dạng *.cotuong – Khi click vào chức này, chương trình mở hộp thoại Open File cho người dùng Open file định dạng *.cotuong chơi trước để tiếp tục ván cờ Teacher : Giới thiệu Giáo Viên hướng dẫn – Khi click vào Menu tất Menu khác ẩn đi, thay vào phần giới thiệu giáo viên hướng dẫn nhóm sinh viên thực chương trình – thầy Phạm Thi Vương Students : Giới thiệu Nhóm sinh viên thực – Khi click vào Menu tất Menu khác ẩn đi, thay vào phần giới thiệu Nhóm sinh viên thực chương trình ( Nhóm 27 , lớp K1C4.2 – UIT ) Exit : Thốt khỏi chương trình II - Main Game : Nếu người dùng click vào Play ( Open file *.cotuong ), cửa sổ Main Menu bị ẩn thay vào cửa sổ Game ( bàn cờ ) Hình ảnh giao diện bàn cờ hình sau : LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Người chơi giữ chuột vị trí ngồi phạm vi đường viền xanh để di chuyển Form bàn cờ đến vị trí hình máy tính Hình Giao Diện Bàn Cờ Tướng chơi Các Chức Năng Của Trị Chơi : a) Chương trình cho phép người chơi di chuyển quân cờ Bàn Cờ theo ý muốn thỏa điều kiện cần thiết - Kiểm tra hợp lệ quân cờ nước hay không Nếu khơng hợp lệ, chương trình tự động chuyển qn cờ vị trí xuất phát ban đầu ( xem chưa ) phát âm báo lỗi LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 - Không cho bên “ đường tử “ – nghĩa cố tình đối phương bắt Tướng bên - Kiểm tra chiếu tướng – chiếu phát âm báo chiếu tướng - Kiểm tra nước cản, lộ mặt Tướng … - Phân chia lượt theo quy định luật cờ Tướng – khơng tới lượt khơng Và hai label : Red – Green thông báo cho người chơi biết đến lượt bên b) Chức Undo : - Người chơi hồi lại nước cờ muốn cách click vào button Back góc trái – giao diện - Người chơi “đi tới” nước sau ( có ) cách click vào button Next cạnh Back giao diện trò chơi - Khi chức khơng cịn ý nghĩa tự động , Button chức bị vơ hiệu hóa Ví dụ : Khi nhấn Back liên tục trạng thái quân cờ trở bàn cờ chương trình tự động vơ hiệu hóa button Back Tương tự , button Next c) Tính Thời Gian : - Chương trình tính thời gian hiển thị thời gian từ đầu ván cờ thời điểm ( Đồng Hồ Số ,phía Bàn Cờ ) d) Bảng Menu : - My Music : Open nhạc máy người chơi để làm nhạc - NewGame : Bắt đầu lại ván cờ - MainMenu : Trở MainMenu nảy - Save : Lưu ván cờ chơi vào máy người chơi - Exit : Thoát khỏi chương trình – trước thốt, chương trình hỏi người chơi có muốn Save hay khơng ! - Hai button : Stop Play nhạc ( tương tự hai button chương trình Window Media Player ) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 §2 Đặc Tả Kĩ Thuật I – Bố Cục Chương Trình : - Chương trình viết 11 lớp tất : MainMenu, QUANCO, QuanXe, QuanPhao, QuanMa, TUONG, QuanSi, QuanTuong, QuanTot, BANCO, MainGame - Mỗi lớp làm cơng việc khác Trong đó, Lớp MainMenu giữ vai trị “Class Program” chương trình I.1 - Lớp MainMenu : ( Kế thừa từ lớp Form ) - Lớp dùng để tạo giao diện ban đầu cho người chơi lựa chọn chức chương trình : Play, Open, Teacher, Students, Exit I.2 - Lớp QUANCO : ( Kế thừa từ lớp PictureBox) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 - Thiết kế đặc điểm mà qn cờ có Ví dụ đặc điểm : hình dạng, kích thước… số thông số cần thiết khác : Enable, tọa độ xuất phát… I.3 - Lớp QuanXe : ( Kế thừa từ lớp QUANCO ) - Thiết kế đặc điểm riêng Quân Xe Cờ Tướng ( cho hai bên “ tham chiến ” ) : Hình ảnh, tọa độ lúc ban đâu… thiết lập điều kiện tối thiểu mà Quân Xe phải đạt : “ Xe phải theo đường thẳng ” Chú ý: Ở đây, chưa nói đến việc Cản quân Xe I.4 - Lớp QuanPhao : ( Kế thừa từ lớp QUANCO ) - Cũng tương tự lớp QuanXe Lớp QuanPhao thiết kế đặc điểm riêng Quân Pháo Cờ Tướng : hình ảnh, tọa độ ban đầu… thiết lập điều kiện tối thiểu mà Quân Pháo phải đạt : “ Pháo luật trước hết, phải theo đường thẳng ” Cũng chưa nói đến việc Cản quân Pháo lớp I.5 - Lớp QuanMa : ( Kế thừa từ lớp QUANCO ) - Thiết kế đặc điểm riêng Quân Mã Cờ Tướng : hình ảnh, tọa độ ban đầu ….và thiết lập điều kiện tối thiểu mà Quân Mã phải đạt : “Quân Mã luật, trước hết phải chéo 1ô x 2ô 2ô x 1ô ” Và chưa xét nước cản Quân Mã lớp Chú thích : lớp : QuanXe, QuanPhao, QuanMa hai bên giống nhau, quân cờ không giới hạn không gian hoạt động; Tướng, Sĩ, Tượng bị giới hạn khơng gian hoạt động Vì mà cách thiết lập điều kiện tối thiểu, ta phải viết hai lần : bên A, bên B I.6 - Lớp TUONG : ( Kế thừa từ lớp QUANCO ) - Thiết kế đặc điểm riêng Quân Tướng Cờ Tướng : hình ảnh, tọa độ ban đầu ….và thiết lập điều kiện tối thiểu mà Quân Tướng phải đạt : “ Tướng luật, trước hết phải thẳng, khoảng cách 1ô cờ phạm vi hoạt động khơng phép vượt ngồi ranh giới “ cung điện” LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Tướng ” Trong lớp xét đến điều kiện tối thiểu thôi, chưa xét nước cản Tướng hay lộ mặt Tướng I.7 - Lớp QuanSi : ( Kế thừa từ lớp QUANCO ) - Cũng thiết kế đặc điểm riêng hình ảnh, tọa độ….của Quân Sĩ Cờ Tướng Và thiết lập điều kiện tối thiểu quân cờ khác Điều kiện : “ Quân Sĩ được phép “ cung điện “ Tướng để bảo vệ Tướng Và nước đi, phải chéo 1ô x 1ô ” Khơng tính đến nước cản lớp I.8 - Lớp QuanTuong : ( Kế thừa từ lớp QUANCO ) - Quân Tượng hay gọi Tịnh hay Bồ ( tùy địa phương ) Trong lớp này, thiết lập lớp “ cờ riêng ” Nghĩa thiết kế đặc điểm riêng Quân Tịnh cờ Tướng hình ảnh, tọa độ ban đầu, ….và thiết lập điều kiện tối thiểu để quân Tượng luật : “ Qn Tượng phải chéo 2ơ x 2ô ” Và tương tự quân cờ khác, đây, chưa nói đến việc cản quân Tượng việc cấm quân Tượng “ qua sông ” I.9 - Lớp QuanTot : ( Kế thừa từ lớp QUANCO ) - Ta thiết kế cho Quân Tốt đặc điểm riêng, đặc điểm chung kế thừa từ lớp QUANCO Trong điều kiện hợp lệ Quân Tốt, Quân Tốt chưa qua sơng, phép tới 1ơ Đặc biệt, Qn Tốt qua sơng Tốt “ phong cấp “ – nghĩa phép ngang 1ô tuyệt đối không phép lùi Điều kiện tối thiểu Quân Tốt thiết lập lớp Và lớp khác , ta không xét cản Tốt I.10 - Lớp BANCO : ( Kế thừa từ lớp Form ) - Cơng việc lớp BANCO vẽ bàn cờ, số tọa độ Bàn Cờ, số hình ảnh giao diện lúc chơi cờ quan trọng tạo mảng hai chiều nút ( giao điểm ) bàn cờ mà Quân Cờ nằm giao điểm LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 I.11 - Lớp MainGame : ( Kế thừa từ lớp Form ) - Lớp MainGame lớp giao diện ván cờ Người chơi chơi cờ trực tiếp Form - Công việc Lớp MainGame nhiều Nhưng đây, đề cập đến công việc chung MainGame ( cụ thể nói sau ) - MainGame gọi hàm thiết kế vẽ bàn cờ, giao diện từ lớp BANCO sang, gọi hàm thiết lập điều kiện tối thiểu quân cờ Đồng thời thiết lập thêm số điều kiện khác cho hoàn chỉnh luật quân cờ : cản , tránh chiếu… , xử lý kiện : chiếu, âm thanh, hình anh, time, … Tổng Quát : Ý tưởng chung Game Cờ Tướng - Thiết kế Một Lớp Kế thừa Form làm giao diện để Play Game ( lớp MainGame ) - Thiết kế lớp QUANCO kế thừa từ PictureBox ( dùng control khác ) để tạo quân cờ chung - Thiết kế lớp : Xe, Pháo, Mã, Tướng, Sĩ, Tượng, Tốt kế thừa từ lớp QUANCO sau đặt Quân Cờ lên Form ( lớp MainGame ) tiến hành xử lý luật số kiện khác II – Ý Tưởng Thuật Toán cụ thể : - Trước hết, tạo công cụ thiếu để bắt đầu ván cờ Đó Bàn Cờ Quân Cờ Nghĩa phải viết lớp tạo Quân Cờ lớp Bàn Cờ để tạo bàn cờ đơn giản trước, sau bắt đầu viết lớp MainMenu lớp MainGame để hoàn thiện chương trình II.1 - Lớp BANCO : Lớp BANCO kế thừa từ Form, dùng để vẽ Bàn Cờ thiết lập Nút ẩn (các giao điểm bàn cờ) Lớp BANCO mô tả sau : LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Các biến : public Graphics g; // doi tuong hoa int x, y, i, j;//toado(x,y) va chi so i,j Color butvemau = Color.Black; public Color color = Color.Black; public Point[,] Nut = new Point[10, 9]; Hàm public void VeBanCo() : dùng để vẽ Bàn Cờ hình ảnh giao diện Hàm sử dùng phương thức : DrawLine : để vẽ đường thẳng DrawImage : để vẽ hình ảnh DrawString : để vẽ dòng text thể số Bàn Cờ : a0, a1,b5… DiemSang, DiemSangBienPhai, DiemSangBienTrai : để vẽ điểm khởi đầu Tốt Pháo Các hàm dùng phương thức DrawLine để vẽ đoạn thẳng “ siêu ngắn ” ghép lại thành “ điểm sáng “ Hàm public void TaoDiemAn() : dùng để tạo Nút ẩn bàn cờ Sử dụng vòng for để gán tọa độ cho phần tử mảng Nut[,] II.2 - Lớp QUANCO : Lớp QUANCO kế thừa từ PicturBox thiết kế Quân Cờ chung cho tất Quân Cờ Các lớp QuanXe, QuanPhao… kế thừa từ Lớp QUANCO mô tả sau : Các biến : public bool hoatdong; // Ktra hd cua co public Point toadoxuatphat; public Point PExplor; //toa tham’ hiem~ dung de xu li sau private GraphicsPath path = null;// dung de cat quan co htron Hàm public void TaoCo(int a, int b): Tạo Quân Cờ Cơ Sở, dùng phép gán để gán giá trị ban đâu Trong đó, tọa độ ban đầu (a,b) Hàm public bool NhanLenh(MouseEventArgs e): Nếu trỏ chuột nằm đè lên Quân Cờ chuột MouseDown Qn cờ trạng thái Nhận Lệnh Ở đây, Quân Cờ có Size = (40,40) Do đó, trạng thái Nhận Lênh = true (e.X > this.Location.X && e.X < this.Location.X + 40 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 && e.Y > this.Location.Y && e.Y < this.Location.Y + 40 && e.Button == MouseButtons.Left) Hàm public bool DuDinhDongQuan(Point diemden): Tương tự hàm NhanLenh Nếu Quân Cờ trạng thái hoạt động, đè lên Nút ẩn bàn cờ “dự định đóng quân” Nút Hàm public bool DangChiemDong(Point pt): Nếu Location Quân Cờ trùng với điểm đó, chương trình hiểu Qn Cờ chiếm đóng điểm Chú ý : điểm Nút public bool DangChiemDong(Point pt) { if (this.Location == pt) return true; else return false; } Ba hàm cắt Quân Cờ theo hình elipse : private void RefreshPath() protected override void OnResize(EventArgs e) protected override void OnPaint(PaintEventArgs e) II.3 - Lớp QuanXe : Lớp QuanXe kế thừa từ lớp QUANCO thiết kế đặc điểm riêng biệt Quân Xe Lớp QuanXe gồm hàm : Hàm public PictureBox TaoQuanXeDo(int x, int y): Hàm tạo lại tọa độ cho Xe (x,y) gán giá trị Image cho Quân Cờ mang hình ảnh Quân Xe màu đỏ thực thụ Giá trị trả PictureBox để thuận tiện cho việc Add lên Form sau Hàm public PictureBox TaoQuanXeXanh(int x, int y): Tương tự hàm TaoQuanXeDo Nhưng hình ảnh Quân Xe màu xanh Hàm public bool XeDiDungHuong(Point pBegin, Point pEnd): Hàm XeDiDungHuong thiết lập điều kiện tối thiểu để Quân Xe hợp lệ, nghĩa Xe theo đường thẳng Thuật Toán điêm đầu ( pBegin ) điểm cuối ( pEnd ) không khác hai thành phần tọa độ x,y LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 if (pBegin.X != pEnd.X && pBegin.Y != pEnd.Y || pBegin == pEnd) return false; II.4 - Lớp QuanPhao : Hoàn toàn tương tự lớp QuanXe, lớp QuanPhao kế thừa từ lớp QUANCO thiết kế đặc điểm riêng biệt Quân Pháo Lớp QuanPhao gồm hàm : Hàm public PictureBox TaoQuanPhaoDo(int x, int y): tạo lại tọa độ cho Phao (x,y) gán giá trị Image cho Quân Cờ ảnh Quân Pháo màu đỏ thực thụ Giá trị trả thuận tiện cho việc Add lên Form sau Hàm mang hình PictureBox để Hàm public PictureBox TaoQuanPhaoXanh(int x, int y): Tương tự hàm TaoQuanPhaoDo Nhưng hình ảnh Quân Pháo màu xanh Hàm public bool PhaoDiDungHuong(Point pBegin, Point pEnd): Hàm PhaoDiDungHuong thiết lập điều kiện tối thiểu để Quân Pháo hợp lệ, nghĩa Pháo theo đường thẳng Thuật Toán điêm đầu ( pBegin ) điểm cuối ( pEnd ) không khác hai thành phần tọa độ x,y if (pBegin.X != pEnd.X && pBegin.Y != pEnd.Y || pBegin == pEnd) return false; II.5 - Lớp QuanMa : Tương tự hai lớp trước Xe Pháo, lớp QuanMa thiết kế hình ảnh riêng Hai hàm : public PictureBox TaoQuanMaDo(int x, int y) public PictureBox TaoQuanMaDo(int x, int y) tương tự Xe Pháo Riêng, quân chéo Mã cần có hàm int trituyetdoi(int a) để quản lý tính hợp lệ nước Và hàm : public bool MaDiDungHuong(Point pBegin, Point pEnd) sử dụng hàm int trituyetdoi(int a) Asb(pBegin.X - pEnd.X) * Asb(pBegin.Y -pEnd.Y) == 400&& pBegin != pEnd) return true; ;// Asb == trituyetdoi LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 II.6 - Lớp TUONG : Hai hàm TaoTuongXanh TaoTuongDo tương tự lớp Ta xét tiếp hàm thiết lập điều kiện tối thiểu Lớp TUONG có hàm int trituyetdoi(int a) lớp Mã Nhưng Tướng phép “ cung “, nên ta phải chia thành hai hàm để giải public bool TUONGDoDiDungHuong(Point pBegin, Point pEnd) { // khong duoc phep “dam chan tai cho” if (pBegin.X != pEnd.X && pBegin.Y != pEnd.Y) return false; // gioi han pham vi dua vao toa ban co if ((pBegin.X == pEnd.X || pBegin.Y == pEnd.Y) && pEnd.X > 255 && pEnd.X < 405 && pEnd.Y < 490 && pEnd.Y > 385) { if (trituyetdoi(pEnd.X - pBegin.X) == 50 || trituyetdoi(pBegin.Y - pEnd.Y) == 40 !=pEnd) return true; else return false; } else return false; } &&pBegin Tương tự cho hàm public bool TUONGXanhDiDungHuong phải giới tọa độ phù hợp vơí Tướng Xanh hạn II.7 - Lớp QuanSi : Tương tự TƯỚNG Quân Sĩ chéo, phạm vi cung Các hàm thiết kế tương tự ( tham khảo code ) II.8 - Lớp QuanTuong : Cũng tương tự Sĩ Nhưng Tượng có phạm vi hoạt động rộng Do đó, thiết lập luật Tượng chung cho hai bên, không giới hạn phạm vi Nên không chia thành hai hàm để xử lí Mặc dù ta biết Tượng không phép qua sông public bool TuongDiDungHuong(Point pBegin, Point pEnd) { LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 if (trituyetdoi(pEnd.X - pBegin.X) * trituyetdoi(pEnd.Y == 8000 && pBegin != pEnd) return true; else return false; } - pBegin.Y) II.9 - Lớp QuanTot : Về việc thiết kế hai Quân Tốt cho hai bên tương tự lớp khác Riêng thiết lập luật đi, Quân Tốt có đặc điểm qua sơng rồi, Tốt ngang Do đó, lớp QuanTot, ta phải khai báo hai biến : public bool phongcapdo public bool phongcapxanh để kiểm tra phong cấp bên Ngoài ra, phải viết thêm hai hàm : public void KiemtraPhongcapDo() public void KiemtraPhongcapXanh() để gán giá trị cho biến phongcap cách lúc Đồng thời ta phải chia thành hai hàm tách biệt để xử lí điều kiện Tốt public bool TotDoDiHopLe(Point pBegin, Point pEnd) { if (!phongcapdo && pEnd.X == pBegin.X && (pEnd.Y pBegin.Y) == -40 && pBegin != pEnd) return true; if (phongcapdo && ((pEnd.X == pBegin.X && (pEnd.YpBegin.Y) == -40)|| (pEnd.Y == pBegin.Y && trituyetdoi(pEnd.X - pBegin.X) == 50)) && pBegin != pEnd) return true; else return false; } Hàm TotXanhDiHopLe tương tự II.10 - Lớp MainGame : Lớp MainGame làm tất cơng việc cịn lại để hồn thiện luật quân cờ vẽ bàn cờ lên Form từ kiện vẽ lớp BANCO Trước hết, cần phải khai báo số biến cần thiết chương trình BANCO banco = new BANCO(); LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 QuanXe quanxedo1 = new QuanXe(); QuanXe quanxedo2 = new QuanXe(); QuanXe quanxexanh1 = new QuanXe(); QuanXe quanxexanh2 = new QuanXe(); QuanPhao quanphaodo1 = new QuanPhao(); QuanPhao quanphaodo2 = new QuanPhao(); QuanPhao quanphaoxanh1 = new QuanPhao(); QuanPhao quanphaoxanh2 = new QuanPhao(); QuanMa quanmado1 = new QuanMa(); QuanMa quanmado2 = new QuanMa(); QuanMa quanmaxanh1 = new QuanMa(); QuanMa quanmaxanh2 = new QuanMa(); TUONG TuongDo = new TUONG(); TUONG TuongXanh = new TUONG(); QuanSi quansido1 = new QuanSi(); QuanSi quansido2 = new QuanSi(); QuanSi quansixanh1 = new QuanSi(); QuanSi quansixanh2 = new QuanSi(); QuanTinh quantinhdo1 = new QuanTinh(); QuanTinh quantinhdo2 = new QuanTinh(); QuanTinh quantinhxanh1 = new QuanTinh(); QuanTinh quantinhxanh2 = new QuanTinh(); QuanTot quantotdo1 = new QuanTot(); QuanTot quantotdo2 = new QuanTot(); QuanTot quantotdo3 = new QuanTot(); QuanTot quantotdo4 = new QuanTot(); QuanTot quantotdo5 = new QuanTot(); QuanTot quantotxanh1 = new QuanTot(); QuanTot quantotxanh2 = new QuanTot(); QuanTot quantotxanh3 = new QuanTot(); QuanTot quantotxanh4 = new QuanTot(); QuanTot quantotxanh5 = new QuanTot(); int i, j; LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 bool playerxanh=true, playerdo=true; bool bTracking,nuocdihople; bool an=false; // mot quan co an quan cua doi phuong Point[,] trangthai = new Point[500, 32]; int nuoc = 0;// trang thai dau tien cua BAN CO int nuocmax; Vẽ Bàn Cờ : gọi lại hàm Vebanco từ lớp BANCO protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; banco.g = e.Graphics; banco.VeBanCo(); banco.g.Dispose(); } Thiết kế Menu giao diện : Tương tự lớp MainMenu Sẽ trình bày sau Thiết lập luật quân cờ : Trong suốt trình chơi cờ: lấy cờ, di chuyển cờ, buông cờ xử lý chủ yếu hàm lớp MainGame : // - HAM NHAN CHUOT // protected override void OnMouseDown(MouseEventArgs e) // - HAM DI CHUYEN CHUOT -// protected override void OnMouseMove(MouseEventArgs e) // - HAM THA CHUOT RA - // protected override void OnMouseUp(MouseEventArgs e) Trong hàm MouseDown : Nếu quân cờ Nhận Lệnh + hoatdong = true + toadoxuatphat lưu Location + Location bắt đầu thay đổi theo Mouse + Add lại quân cờ lại + Đặt bTracking=true nghĩa chuột hoạt động ( công việc Add lại quân cờ nhằm tránh tình trạng quân bị quân đứng yên đè lên ) Trong hàm MouseMove : LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Nếu Quân Cờ hoạt động chuột hoạt động Qn Cờ di chuyển theo chuột Trong hàm MouseUp : bước xử lí quan trọng nặng chương trình Trong hàm MuoseUp, cho chạy hai vòng for lồng Một vòng đến vòng đến 10 để kiểm tra tất 90 Nút ẩn Bàn Cờ xét tính hợp lệ quân cờ vừa Ví dụ cụ thể sau : Giả sử Quân cờ hoạt động di chuyển Xe Đỏ bng Xe Đỏ vị trí nào, ta phải xét : * Nếu Xe Đỏ dự định đóng qn Nút Bàn Cờ, ta phải xét tiếp xem có Qn Cờ Đỏ nằm chưa + Nếu có nước khơng hợp lệ, Xe Đỏ vị trí cũ +Nếu khơng Xe Đỏ nằm vào Nút *Xét tiếp xem Xe Đỏ có hợp lệ từ vị trí trước đến Nút nằm khong, có lượt hay khơng, bị Tướng hay khơng +Nếu khơng trả nước khơng hợp lệ +Nếu hợp lệ Xe Đỏ nằm tiếp tục xét xem Xe Đỏ có ăn qn hay khơng, có chiếu đối phương hay không để phát âm tương ứng Riêng hàm kiểm tra Xe Đỏ có hợp lệ hay không viết: Hàm bool XeDiHopLe(QuanXe Xe ,Point pBegin, Point pEnd): Sẽ kiểm tra xem có quân cờ cản đường Xe hay không, kiểm tra Xe đạt điều kiện tối thiểu hay chưa ? để chuyển giá trị Booleand đến cho hàm MouseUp xử lí Các Quân Cờ khác xử lí tương tự Xe Đỏ ví dụ Nhưng tính luật loại khác nên bố cục bước xử lí thay đổi chút Nhưng ý tưởng tất Chúng ta tham khảo code để xem chi tiết phần xử lí cho Quân Cờ cụ thể Xử lí kiện ăn : chương trình có hai hàm CoDoAn CoXanhAn Trong hai hàm này, quân cờ hoạt động buông hợp lệ trùng tọa độ với quân cờ tùy ý quân đối phương qn cờ đối phương bị chết ( đưa tọa độ 999,999 ) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Xử lí chức Back – Next : Mỗi nước hợp lệ, chương trình lưu tọa độ quân cờ vào mảng hai chiều với số dòng số nước đi, số cột 32 cờ bàn cờ Kể quân cờ bị ăn ( 999,999 ) Và nước hợp lệ, biến nuoc tăng giá trị , nuocmax số nước sau ván cờ Sau đó, sử dụng chức Back nuoc , Next nuoc++ Load lên trạng nước Chức Năng Save – Open file *.cotuong : sử dụng chức Save, chương trình ghi file text, chuyển tọa độ tất quân cờ kiểu string ghi chuổi vào file text vừa ghi lưu lại Do đó, ta Open with file *.cotuong Notepad chẳn hạn nội dung file chuỗi số Tổng cộng 32*6=192 kí số file ( tất quân cờ có tọa độ gồm kí tự : cho X cho Y ) Khi người dùng Open file lưu trước đó, chương trình làm thao tác ngược lại với Save : đọc file người dùng lệnh mở, chuyển chuổi string file dạng mảng kí tự, chuyên phần tử mảng kí tự kiểu int gán vào tọa độ tưng quân cờ tương ứng II.11 - Lớp MainMenu : MainMenu kế thừa từ Form Là lớp chưa hàm Main chương trình Form Load lên chạy chương trình với mục đích giới thiệu chức chương trình Ý tưởng cho MainMenu tương đối đơn giản Lớp gồm Label tạo lựa chọn cho người chơi xử lí người chơi lựa chức Cắt Form theo hình chữ nhật // cat Form theo Hinh Chu Nhat GraphicsPath Shape = new GraphicsPath(); // chen hcn tai toa (0,29), size = kichthuoc Form Shape.AddRectangle(new Rectangle(0, 29, this.Width,this.Height)); this.Region = new Region(Shape); Tạo dragging cho Form : ( tham khảo code ) Tạo Menu cho chương trình : LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 Tạo Label Play : Label Play nằm cùng, với BackColor=color.Transferent làm cho màu cua Label trở nên suốt Khi rề chuột đến, Label đổi màu sang màu khác có âm báo Khi Click vào Play để chơi chương trình ẩn MainMenu chay Form MainGame cho người dùng sử dụng this.Visible = false; GameBoard.Visible = true; Các kiện xử lí hàm MouseMove, MouseLeave, MouseClick đối tượng Label Play Các Label khác tương tự Play ( tham khảo code ) §3 Lời Kết Trên báo cáo đầy đủ đồ án mơn học Lập Trình windows Nhóm 27 , Lớp K1C4.2 , trường Đại Học CNTT – ĐHQG TPHCM game Cờ Tướng Vì Đồ Án Nhóm chúng tơi, nên việc sai xot q trình báo cáo điều khó tránh khỏi Nhóm chúng tơi mong đóng góp ý kiến từ phía bạn để chúng tơi cải thiện chương trình trở nên hồn thiện Chúng em xin chân thành cảm ơn thầy Phạm Thi Vương tận tình hướng dẫn, hổ trợ cho chúng em thời gian qua để chúng em hồn thiện cách chương trình ! Xin kính chào ! LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Trường Đại Học CNTT – ĐHQG TP.HCM Trần Minh Sang – Nguyễn Echam Samuel – Huỳnh Hữu Tâm Năm học : 2006 - 2007 - Hết LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... Lớp MainGame : ( Kế thừa từ lớp Form ) - Lớp MainGame lớp giao diện ván cờ Người chơi chơi cờ trực tiếp Form - Công việc Lớp MainGame nhiều Nhưng đây, đề cập đến công việc chung MainGame ( cụ... công cụ thiếu để bắt đầu ván cờ Đó Bàn Cờ Quân Cờ Nghĩa phải viết lớp tạo Quân Cờ lớp Bàn Cờ để tạo bàn cờ đơn giản trước, sau bắt đầu viết lớp MainMenu lớp MainGame để hoàn thiện chương trình... Số ,phía Bàn Cờ ) d) Bảng Menu : - My Music : Open nhạc máy người chơi để làm nhạc - NewGame : Bắt đầu lại ván cờ - MainMenu : Trở MainMenu nảy - Save : Lưu ván cờ chơi vào máy người chơi - Exit