XÂY DỰNG GAME CỜ CARO CÓ CHAT TRONG MẠNG LAN BẰNG JAVA THEO HƯỚNG CẤU PHẦN CLIENTSERVER LỜI NÓI ĐẦU Ngày nay, do nhu cầu đời sống của con người ngày càng được nâng cao, trong đó nhu cầu vui chơi giải trí của con người được quan tâm đến rất nhiều. Trong đó, việc giải trí bằng những trò chơi máy tính ngày càng phát triển và lan rộng ra do sự lôi cuốn mạnh mẽ của nó. Những người chơi game một mình trên máy tính càng không đáp ứng được yêu cầu mà thay vào đó là những game với nhiều máy tính kết nối với nhau. Xuất phát từ nhu cầu đó, nhóm chúng em đã thực hiện đề tài “Xây dựng game cờ caro có chat trong mạng LAN bằng java theo hướng cấu phần client – server”. Chương trình “Xây dựng game cờ caro có chat trong mạng LAN bằng java theo hướng cấu phần client – server” được xây dựng dưới đây áp dụng kỹ thuật lập trình mạng bằng ngôn ngữ Java, do SunMicroSystem đưa ra vào năm 1991. Trong quá trình thực hiện đề tài nhóm chúng em đã gặp không ít khó khăn và trở ngại với sự giúp đỡ của bạn bè cùng sự hướng dẫn tận tình, chỉ bảo cặn kẽ của thầy, cuối cùng nhóm em cũng hoàn thành xong đề tài với mọi sự hiểu biết của mình. Qua đây, nhóm chúng em xin gửi lời cảm ơn đến những người bạn trong lớp phát triển phần mềm theo hướng cấu phần KTPM2K10 đã góp ý và giúp đỡ và đặc biệt cảm ơn thầy Th.s Nguyễn Thái Cường người đã định hướng chúng em chọn đúng đề tài, truyền dạy các kĩ năng nghiệp vụ cũng như uốn nắn cho nhóm em, từ bài báo cáo đến cách thức thực hiện đề tài. Một lần nữa nhóm em xin chân thành cảm ơn thầy Sinh viên thực hiện TÓM TẮT BTL Cho phép nhiều người chơi ở những máy khác nhau ở mọi nơi trên internet. Máy server tạo ra một Socket phục vụ kết nối từng cặp người tham gia chơi cờ caro. Theo từng ván cờ. Mỗi phiên là một luồng đảm bảo sự trao đổi giữa 2 người chơi và xác định trạng thái ( thắng thua) của ván cờ. Trong mỗi ván cờ người đầu kết nối với server được gọi là người thứ nhất được gán với ký hiệu “X‟ còn người thứ 2 được gán với ký hiệu là “O”. Họ thay phiên nhau đánh vào những ô dự kiến ( nhấn vào ô mà mình định đánh) để nhanh chóng đạt được số ô (ví dụ 4, hay 5) thẳng hang theo hàng ngang, hàng dọc và đường chéo. Người nào đánh được số ô đó trước, người đó thắng cờ. Số ván cờ được tạo trên server là không hạn chế. Đề tài “Xây dựng game cờ caro có chat trong mạng LAN bằng java theo hướng cấu phần client – server” là xây dựng một chương trình chơi cờ caro với các gồm các nội dung sau: Chức năng Multi Player: Chơi 2 người. Chat trong mạng LAN. Chơi online: Chương trình hỗ trợ cho 2 người cùng trên mạng LAN.
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN PHÁT TRIỂN PHẦN MỀM HƯỚNG CẤU PHẦN ĐỀ TÀI: XÂY DỰNG GAME CỜ CARO CÓ CHAT TRONG MẠNG LAN BẰNG JAVA THEO HƯỚNG CẤU PHẦN CLIENT-SERVER Giáo viên hướng dẫn: Th.s Nguyễn Thái Cường Lớp : KTPM2 – K10 Nhóm : 19 Sinh viên thực : Hà Minh Đại Lê Đức Tú Anh Nguyễn Thị Thảo Hà Nội, 12/2018 LỜI NÓI ĐẦU Ngày nay, nhu cầu đời sống người ngày nâng cao, nhu cầu vui chơi giải trí người quan tâm đến nhiều Trong đó, việc giải trí trò chơi máy tính ngày phát triển lan rộng lơi mạnh mẽ Những người chơi game máy tính khơng đáp ứng yêu cầu mà thay vào game với nhiều máy tính kết nối với Xuất phát từ nhu cầu đó, nhóm chúng em thực đề tài “Xây dựng game cờ caro có chat mạng LAN java theo hướng cấu phần client – server” Chương trình “Xây dựng game cờ caro có chat mạng LAN java theo hướng cấu phần client – server” xây dựng áp dụng kỹ thuật lập trình mạng ngơn ngữ Java, SunMicroSystem đưa vào năm 1991 Trong trình thực đề tài nhóm chúng em gặp khơng khó khăn trở ngại với giúp đỡ bạn bè hướng dẫn tận tình, bảo cặn kẽ thầy, cuối nhóm em hồn thành xong đề tài với hiểu biết Qua đây, nhóm chúng em xin gửi lời cảm ơn đến người bạn lớp phát triển phần mềm theo hướng cấu phần KTPM2-K10 góp ý giúp đỡ đặc biệt cảm ơn thầy Th.s Nguyễn Thái Cường - người định hướng chúng em chọn đề tài, truyền dạy kĩ nghiệp vụ uốn nắn cho nhóm em, từ báo cáo đến cách thức thực đề tài Một lần nhóm em xin chân thành cảm ơn thầy! Sinh viên thực TÓM TẮT BTL Cho phép nhiều người chơi máy khác nơi internet Máy server tạo Socket phục vụ kết nối cặp người tham gia chơi cờ caro Theo ván cờ Mỗi phiên luồng đảm bảo trao đổi người chơi xác định trạng thái ( thắng/ thua) ván cờ Trong ván cờ người đầu kết nối với server gọi người thứ gán với ký hiệu “X‟ người thứ gán với ký hiệu “O” Họ thay phiên đánh vào ô dự kiến ( nhấn vào mà định đánh) để nhanh chóng đạt số (ví dụ 4, hay 5) thẳng hang theo hàng ngang, hàng dọc đường chéo Người đánh số trước, người thắng cờ Số ván cờ tạo server không hạn chế Đề tài “Xây dựng game cờ caro có chat mạng LAN java theo hướng cấu phần client – server” xây dựng chương trình chơi cờ caro với gồm nội dung sau: - Chức Multi Player: Chơi người Chat mạng LAN Chơi online: Chương trình hỗ trợ cho người mạng LAN MỤC LỤC DANH MỤC HÌNH ẢNH DANH SÁCH CÁC TỪ VIẾT TẮT Từ viết tắt BTL COP Diễn giải Bài tập lớn Component-Oriented Programming Lập trình hướng cấu phần Local Area Network Mạng máy tính cục Use Case: Ca sử dụng LAN UC PHẦN MỞ ĐẦU Cờ caro loại trò chơi phổ biến luật chơi đơn giản khơng đòi hỏi nhiều cơng cụ chơi, bạn cần tờ giấy có kẻ bút đủ Chính trò chơi lại phổ biến giới học sinh sinh viên Cờ caro trò chơi đối kháng người: Trò chơi đối kháng (two-agent, conflicting game) : Gồm người chơi, đối thủ tìm cách dành chiến thắng trước đối thủ số hữu hạn nước đi, nước ược tạo dựa từ trạng thái trận đấu Nếu sau số giới hạn nước đi, chưa dành chiến thắng xem hồ Ngồi ra, thơng tin trận đấu hoàn toàn biết đuợc (perfect information) đối thủ Đề tài “Xây dựng game cờ caro có chat mạng LAN java theo hướng cấu phần client – server” gồm có nội dung sau: - Vẽ bàn cờ Hiển thị ký tự (ví dụ X O) Sau nước, kiểm tra xem thắng cuôc hay chưa Nếu thắng cuộc, xuất thông báo, kết thúc ván, trái lại, trò chơi tiếp tục Sau kết thúc ván, chương trình cho phép người chơi chọn chơi tiếp hay kết thúc, tùy theo kết thúc trò chơi Chat với Khách – Chủ Mục đích BTL là: Như giới thiệu trên, Cờ caro trò chơi có từ lâu đời nay, phổ biến giới học đường Từ nhu cầu giải trí đó, có nhiều hãng sản xuất trò chơi caro máy tính, giúp cho việc chơi cờ caro dễ dàng hơn, bạn đánh cờ với máy mà khơng cần người bạn thực Trên mục đích muốn đem trò chơi cờ caro đến với người, làm cho việc chơi cờ trở nên dễ dàng hơn, hổ trợ cho bạn chơi với bạn bè, nhóm em chọn chương trình chơi cờ caro làm đề tài Phương pháp: Nghiên cứu sở lý thuyết tài liệu thơng qua cơng cụ tìm kiếm google ,coccoc … Sử dụng kiến thức học phân tích, thiết kế hệ thống để tổng hợp lại kiến thức hoàn thành báo cáo Dự kiến kết đạt được: Cung cấp tài liệu cần thiết công nghệ áp dụng Phân tích, thiết kế, đưa cấu phần cách hợp lý Xây dựng cấu phần theo phân tích thiết kế Tóm tắt nội dung chương: Chương 1: Cơ sở lý thuyết Trong chương giới thiệu ngôn ngữ công cụ áp dụng đề tài BTL Chương 2: Phân tích thiết kế hệ thống Khảo sát hệ thống, vẽ biểu đồ UC, đặc tả UC Chương 3: Cài đặt triển khai Xây dựng chương trình thiết kế giao diện phần mềm Chương 4: Đánh giá kết luận Kết luận chung cho chương BTL Nhấn mạnh vấn đề giải đồng thời trình bày vấn đề chưa giải đưa kiến nghị, đề xuất Chương CƠ SỞ LÝ THUYẾT 1.1.Tổng quan phát triển phần mềm theo hướng cấu phần 1.1.1 Giới thiệu cấu phần Các cấu phần phần mềm định nghĩa nhiều cách khác từ điểm giống khác khung nhìn [Brown 1998] trình bày bốn định nghĩa thành phần phần mềm, tổng kết Hội thảo quốc tế CBSE tháng năm 1998: • Một cấu phần phần không tầm thường, gần độc lập phần thay hệ thống, đáp ứng chức rõ ràng kiến trúc xác định Một cấu phần thích nghi cung cấp việc thực vật lý tập giao diện (Philippe Krutchen, Rational Software) • Một cấu phần phần mềm chạy thực (runtime) gói kết nối động nhiều chương trình quản lý đơn vị truy cập thông qua giao diện tài liệu phát chạy thực (Gartner Group) • Một cấu phần phần mềm đơn vị thành phần với giao diện đặc tả phụ thuộc bối cảnh Một cấu phần phần mềm triển khai độc lập tham gia với tư cách bên thứ (Clemes Szyperski) • Một cấu phần thương mại đại diện cho việc thực phần mềm trình kinh doanh Nó bao gồm thành phần phần mềm cần thiết để thể hiện, thực hiện, triển khai nội dung tái sử dụng cấu phần cho hệ thống kin doanh lớn (Wojtek Kozaczynski, SSA) Từ định nghĩa trên, rút định nghĩa cấu phần rõ hơn: “Một cấu phần phần mềm mảnh khép kín, tự triển khai mã với chức xác định rõ lắp rắp với cấu phần khác thông qua giao diện nó” Một cấu phần chương trình hay tập hợp chương trình biên dịch thực thi Đó khép kín, đó, cung cấp chức mạch lạc Nó tự triển khai để cài đặt thực mơi trường người dùng cuối Nó lắp ráp với thành phần khác để tái sử dụng đơn vị ngữ cảnh khác COP Component-Oriented Programming (Lập trình hướng cấu phần) COP cung cấp phương thức cao mức trừu tượng Có số lượng ngày lớn components tái sử dụng thư viện hỗ trợ việc phát triển ứng dụng cho lĩnh vực khác Tư lập trình hướng thành phần (component-oriented programming) theo ý tưởng: • Giải toán cách xây dựng tập thành phần (component) có tính độc lập tương Mỗi thành phần đảm nhiệm phần công việc định Các thành phần phải tuân theo tiêu chuẩn định xác định trước bao gồm giao diện, kết nối, phiên bản, triển khai Về nguyên tắc, thành phần tái sử dụng độc lập với ngữ cảnh, nói cách khác dễ dàng sử dụng lúc, nơi • Sau đó, người ta ghép thành phần với để thu phần mềm thoả mãn tập yêu cầu xác định 1.1.2 Cách xây dựng cấu phần Với lập trình hướng cấu phần, người ta tiến hành lập trình theo phương pháp sau: • Xây dựng thư viện thành phần, thành phần thực cơng việc xác định • Khi cần phát triển phần mềm cụ thể, người ta cần chọn thành phần có sẵn thư viện để ghép lại với Người lập trình phải phát triển thêm thành phần cần mà chưa có thư viện Thực tế cho thấy phương pháp phát triển phần mềm theo cấu phần làm giảm chi phí dự án phát triển phần mềm So với công nghệ truyền thống chuẩn, công nghệ phần mềm sở cấu phần quan tâm đến cách xây dựng phần mềm nhiều Thông qua việc sử dụng lại cấu phần, vòng đời phát triển phần mềm rút ngắn lại, đồng thời tăng tính mềm dẻo sử dụng bảo trì phần mềm Hơn nữa, phát triển phần mềm có khả làm tăng chất lượng phần mềm 1.2 Tổng quan ngôn ngữ Java 1.2.1 Giới thiệu ngôn ngữ Java Java ngơn ngữ lập lập trình, phát triển Sun Microsystem vào năm 1995, ngôn ngữ kế thừa trực tiếp từ C/C++ ngôn ngữ lập trình hướng đối tượng Vì ngơn ngữ lại đặt tên Java? Java tên đảo Indonesia - đảo tiếng với loại coffee Peet loại nước uống phổ biến kỹ sư Sun Ban đầu Ngôn ngữ đặt tên "Oak" (có nghĩa "Cây sồi" - 1991), luật sư Sun xác định tên đăng ký nhãn hiệu nên nhà phát triển phải thay tên - lý mà tên Java đời trở thành tên gọi thức Ngơn ngữ Ngơn ngữ Lập trình Java 10 2.5.3 Hiện thơng tin người phát triển - Tên UC: Hiện thông tin người phát triển Tác nhân: Người dùng Mô tả: Khi gười sử dụng muốn xem thơng tin nhà phát triển chọn chức để xem Điều kiện đầu vào: Khơng có Kết đầu ra: Hiển thị thơng tin người phát triển Luồng kiện: STT Tác nhân Hệ thống Chọn Help Hiển thị mục Help About Chọn About Hiển thị thông tin người dùng - Luồng kiện khác: Không 2.5.4 Hiển thị luật chơi - Tên UC: Hiện thông tin người dùng Tác nhân: Người dùng Mô tả: Khi gười sử dụng muốn xem luật chơi chọn chức để xem Điều kiện đầu vào: Không Kết đầu ra: Hiển thị luật chơi Luồng kiện: STT Tác nhân Hệ thống Chọn Help Hiển thị mục Help About Chọn Help Hiển thị luật chơi - Luồng kiện khác: Không 2.5.5 Chơi - Tên UC: Làm game Tác nhân: Người dùng Mô tả: Khi người sử dụng muốn làm khung giao diện đánh caro để chơi ván phải chọn chức chơi Điều kiện đầu vào: Không Kết đầu ra: Giao diện game reset Luồng kiện: 19 STT Tác nhân Hệ thống Chọn Game Hiển thị mục New Game Chọn New Game Reset lại game - Luồng kiện khác: Không 2.5.6 Kết nối lại STT Tên UC: Kết nối lại Tác nhân: Client Mơ tả: Người dùng phía client bị kết nối, hay muốn làm kết nối tới server chọn chức reconnect Điều kiện đầu vào: Máy client kết nối tới địa IP từ trước Kết đầu ra: Kết nối lại client tới server có IP kết nối từ trước Luồng kiện: Tác nhân Hệ thống Chọn new connect Hiển thị mục reconnect new IP server Chọn reconnect Kết nối tới máy chủ có IP kết nối từ trước Hiện thị thông báo - Luồng kiện khác: Không 2.5.7 Kết nối địa IP STT Tên UC: Kết nối địa IP Tác nhân: Client Mô tả: Người dùng phía client muốn kết nối tới server có địa IP khác địa ban đầu chọn chức new IP server Điều kiện đầu vào: khơng có Kết đầu ra: Kết nối client tới server có IP nhập Luồng kiện: Tác nhân Hệ thống Chọn new connect 20 Hiển thị mục reconnect new IP server Chọn reconnect Kết nối tới máy chủ có IP kết nối từ trước Hiện thị thông báo - Luồng kiện khác: Không 21 Chương Cài đặt triển khai 3.1 Thiết kế giao diện Sơ dồ lớp Hình Sơ đồ lớp - Gồm lớp: + Lớp Server cho cờ caro + Lớp Client cho cờ caro 22 Giao diện bàn cờ hộp chat Hình Giao diện bàn cờ hộp chat Form bàn cờ: - Nền: sử dụng thuộc tính BackGroundColor Các ô: Tạo từ nút buttton Giao diện kết nối 23 Hình 3 Giao diện kết nối dến Server Hình Giao diện kết nối đến Server Giao diện Client Server 24 Hình Giao diện Client Server Khi chơi cờ Hình Giao diện bên đánh cờ 25 Hình Giao diện đánh cờ Giao diện nút Help Khi nhấn vào nút Help, xuất giải thích luật chơi Hình Giao diện nút Help Giao diện nút About Khi nhấn vào nút About, xuất ô thông tin người dùng 26 Hình Giao diện nút About Khi chơi thua - thắng - Hai bên đấu đến có người đạt năm liên hàng ngang, hàng dọc hàng chéo xuất thơng báo - Đến lượt vượt thời gian quy định xuất thông báo thua Hình 10 Giao diện thắng – thua Giao diện chat 27 Hình 11 Giao diện chat máy Khi ngừng chơi - Bên Client ngừng chơi trước Hình 12 Giao diện ngắt kết nối 28 Hình 13 Giao diện ngắt kết nối - Bên Server trước Hình 14 Giao diện ngắt kết nối 3.2 Cấu phần tập lớn Đã xuất thư viện để import vào nơi khác 29 Hình 15 Import thư viện vào chương trình khác 30 Chương Kết luận 4.1 Ưu điểm - Giao diện thân thiện với người dùng - Xây dựng chức chương trình game - Cho phép đánh online - Có thể vừa chơi vừa chat nói chuyện với 4.2 Nhược điểm - Giao diện đơn giản - Trao đổi Client Server chưa tốt - Chưa kiểm soát hết lỗi 4.3 Hướng phát triển - Cần bổ sung nhiều chức để chương trình game hồn chỉnh - Tìm hiểu hồn thiện số chức chương trình game chưa thực - Tìm hiểu thêm ngơn ngữ Java - Mở rộng chương trình đưa chương trình vào thực tế 4.4 Tổng kết Kết luận chung cho chương BTL Chương 1: Nêu sở lý thuyết Sơ lược ngôn ngữ Java, Java Socket, công cụ áp dụng đề tài BTL NetBean IDE Chương 2: Phân tích thiết kế hệ thống UML Khảo sát hệ thống, vẽ biểu đồ UC, đặc tả UC Chương 3: Cài đặt triển khai Có sơ đồ lớp thiết kế giao diện phần mềm Phân chia công việc Đại: Xây dựng thuật toán code chức đánh cờ, code giao diện Tú Anh: Xây dựng chức Chat Client – Server, làm báo cáo tập lớn Thảo: Xây dựng giao diện, làm báo cáo tập lớn 31 TÀI LIỆU THAM KHẢO [1] https://freetuts.net/java-la-gi-gioi-thieu-ngon-ngu-java-1023.html [2] https://kenhlaptrinh.net/vi-du-lap-trinh-socket-client-server-giao-thuc-tcp/ [3] https://tailieu.vn/tag/lap-trinh-socket.html [4] https://kenhlaptrinh.net/lap-trinh-mang-socket-trong-java/ [5] https://www.youtube.com/watch?v=X3Un56Qc1I0 [6] https://google.com [7] Giáo trình phân tích thiết kế hướng đối tượng – Trường Đại Học Công nghiệp Hà Nội Vũ Thị Dương, Phùng Đức Hòa, Nguyễn Thị Hương Lan – Nhà xuất Khoa Học Kỹ Thuật, xuất năm 2015 32 PHỤ LỤC Phần bao gồm thông tin quan trọng có liên quan đến BTL Thơng thường chi tiết sau thường để phần phụ lục: mã chương trình, thơng số kỹ thuật chi tiết linh kiện điện tử sử dụng phần thiết kế, kết chưa qua xử lý … 33 ... theo hướng cấu phần client – server” Chương trình Xây dựng game cờ caro có chat mạng LAN java theo hướng cấu phần client – server” xây dựng áp dụng kỹ thuật lập trình mạng ngôn ngữ Java, SunMicroSystem... thẳng hang theo hàng ngang, hàng dọc đường chéo Người đánh số trước, người thắng cờ Số ván cờ tạo server không hạn chế Đề tài Xây dựng game cờ caro có chat mạng LAN java theo hướng cấu phần client... chơi game máy tính khơng đáp ứng u cầu mà thay vào game với nhiều máy tính kết nối với Xuất phát từ nhu cầu đó, nhóm chúng em thực đề tài Xây dựng game cờ caro có chat mạng LAN java theo hướng cấu