Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
4,13 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH CƠNG TRÌNH NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN XÂY DỰNG MODULE HỖ TRỢ HAI CHƯƠNG TRÌNH MÁY TÍNH THI ĐẤU CỜ CARO TỰ ĐỘNG MÃ SỐ: SV2020-09 SKC 0 Tp Hồ Chí Minh, tháng 10/2020 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP.HCM BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN XÂY DỰNG MODULE HỖ TRỢ HAI CHƯƠNG TRÌNH MÁY TÍNH THI ĐẤU CỜ CARO TỰ ĐỘNG Mã số đề tài: SV2020-09 Chủ nhiệm đề tài Nguyễn Huỳnh Phúc TP Hồ Chí Minh, Tháng 10/2020 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN XÂY DỰNG MODULE HỖ TRỢ HAI CHƯƠNG TRÌNH MÁY TÍNH THI ĐẤU CỜ CARO TỰ ĐỘNG Mã số đề tài: SV2020-09 Thuộc nhóm ngành khoa học: Công nghệ thông tin SV thực hiện: Nam, Nữ: Nguyễn Huỳnh Phúc (Chủ nhiệm) Nam Lê Hồng Đạo Nam Phạm Thái Dương Nam Dân tộc: Kinh Lớp: 171101, 17910 Khoa: CNTT Năm thứ: Ngành học: Công nghệ thông tin Người hướng dẫn: ThS Trần Công Tú TP Hồ Chí Minh, 10/2020 Số năm đào tạo: TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠNG NGHỆ THƠNG TIN CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc BẢN GIẢI TRÌNH CHỈNH SỬA BÁO CÁO TỔNG KẾT ĐỀ TÀI NCKH SINH VIÊN Tên đề tài: Xây dựng module hỗ trợ hai chương trình máy tính thi đấu cờ caro tự động Mã số đề tài: SV2020-09 Họ tên chủ nhiệm: Nguyễn Huỳnh Phúc Họ tên GVHD: Trần Công Tú Đơn vị cơng tác: Khoa Cơng nghệ thơng tin Giải trình chỉnh sửa báo cáo tổng kết đề tài: Khơng có chỉnh sửa Giảng viên hướng dẫn (Ký họ tên) Tp HCM, ngày tháng năm Chủ nhiệm đề tài (Ký họ tên) MỤC LỤC MỤC LỤC DANH MỤC NHỮNG MỤC VIẾT TẮT DANH MỤC CÁC HÌNH VẼ THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI MỞ ĐẦU 11 Tổng quan tình hình nghiên cứu 11 Lý chọn đề tài 11 Mục tiêu đề tài 12 Phương pháp nghiên cứu 12 Đối tượng phạm vi nghiên cứu 13 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 14 1.1 Mạng cục (Local Network Area) 14 1.2 Mơ hình Client – Server 15 1.3 Socket 19 1.4 Database (Microsoft SQL Server) 21 1.5 WPF (Windows Presentation Foundation) 22 1.6 .NET Framework 24 CHƯƠNG 2: XÂY DỰNG PHẦN MỀM 25 Xác định yêu cầu 25 Xây dựng giao diện phần mềm 26 2.1 Xây dựng giao diện chương trình Server (Hình 8) 26 2.2 Xây dựng giao diện chương trình Client (Hình 29) 27 CHƯƠNG 3: CÁC KẾT QUẢ NGHIÊN CỨU 28 3.1 Chương trình Server 28 3.1.1 Màn hình Trang chủ 28 3.1.2 Màn hình Tạo tài khoản 34 3.1.3 Màn hình Tường thuật lại trận đấu 40 3.2 Chương trình Client 43 3.2.1 Màn hình Trang chủ 43 3.2.2 Màn hình Đăng nhập 45 3.3 Một số đoạn code quan trọng 47 CHƯƠNG 4: ĐÁNH GIÁ 51 KẾT LUẬN VÀ KIẾN NGHỊ 52 TÀI LIỆU THAM KHẢO 53 PHỤ LỤC 54 DANH MỤC NHỮNG MỤC VIẾT TẮT - CNTT: Công nghệ thông tin - CPU: Central Processing Unit (Bộ xử lý trung tâm) - DBMS: Database Management System (Hệ quản trị sở liệu) - DSL: Digital Subcriber Line (kênh thuê bao số) - GIS: Geographic Information System (Hệ thống thông tin địa lý) - IP: Internet Protocol (Giao thức mạng) - IPC: Inter Process Communication - LAN: Local Area Network (Mạng máy tính cục bộ) - MAN: Metropolitan Area Network (Mạng máy tính thị) - NIC: Network Interface Card (Card giao tiếp mạng) - SQL: Structured Query Language (Ngôn ngữ truy vấn liệu) - SV: Sinh viên - TCP: Transmission Control Protocol (Giao thức vận chuyển truyền vận) - VPN: Virtual Private Network (Mạng riêng ảo) - WAN: Wide Area Network (Mạng máy tính diện rộng) - WPF: Windows Presentation Foundation - XAML: eXtensible Application Markup Language (Ngôn ngữ đánh dấu ứng dụng mở rộng được) - XBAP: XAML Browser Applications (Ứng dụng trình duyệt XAML) DANH MỤC CÁC HÌNH VẼ Hình 1: Sơ đồ Mạng LAN 14 Hình 2: Mơ hình Client - Server 15 Hình 3: Hoạt động mơ hình Client - Server 17 Hình 4: Giao thức Stream Socket 20 Hình 5: Database 21 Hình 6: SQL (Structured Query Language) 21 Hình 7: WPF 22 Hình 8: Màn hình trang chủ 28 Hình 9: Thanh hiển thị người chơi kết nối với Server 29 Hình 10: Thanh cơng cụ 30 Hình 11: Khu vực hiển thị trận đấu 31 Hình 12: Thơng tin hai người chơi trận đấu 32 Hình 13: Tuỳ chọn số lượng trận đấu bắt đầu 33 Hình 14: Nút Play - Bắt đầu chơi dựa số lượng trận đấu lựa chọn 33 Hình 15: Nút Replay - Sẽ hiển thị Cửa sổ Tường thuật trận đấu 34 Hình 16: Màn hình Tạo tài khoản 34 Hình 17: Ơ nhập thơng tin tài khoản người chơi 35 Hình 18: Ơ nhập thơng tin mật người chơi 35 Hình 19: Nút tạo tài khoản 36 Hình 20: Màn hình Tạo trận đấu 36 Hình 21: Thanh hiển thị danh sách người chơi 37 Hình 22: Ơ lựa chọn số lượng trận dấu 37 Hình 23: Ơ chọn bật/ tắt Luật chặn hai đầu game Caro 38 Hình 24: Ơ thơng tin hai người chơi 39 Hình 25: Nút tạo 39 Hình 26: Màn hình Tường thuật trận đấu 40 Hình 27: Ơ thơng tin hai người chơi 41 Hình 28: Ơ hiển thị trận đấu 42 Hình 29: Màn hình Trang chủ 43 Hình 30: Trạng thái kết nối người chơi đến Server 43 Hình 31: Nút đăng nhập lại 44 Hình 32: Ô dùng để điền đường dẫn Chương trình AI mà người chơi thiết kế 44 Hình 33: Màn hình Đăng nhập 45 Hình 34: Ơ nhập địa IP Server mà người chơi muốn kết nối 45 Hình 35: Ơ nhập tài khoản mật người chơi nút đăng nhập 46 Hình 36: Màn hình chờ sau ấn nút đăng nhập 46 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI Thông tin chung: - Tên đề tài: Xây dựng module hỗ trợ hai chương trình máy tính thi đấu cờ caro tự động - Chủ nhiệm đề tài: Nguyễn Huỳnh Phúc - Lớp: 17910 Mã số SV: 17110350 Khoa: Công nghệ thông tin - Thành viên đề tài: STT Họ tên MSSV Lớp Khoa Phạm Thái Dương 17110273 171101 Công nghệ thông tin Lê Hồng Đạo 17110276 171101 Công nghệ thông tin - Người hướng dẫn: ThS Trần Công Tú Mục tiêu đề tài: Xây dựng module hỗ trợ chương trình máy tính thi đấu cờ caro tự động cách thống nhất, công Ứng dụng vào để chấm điểm tập lập trình game Caro Tạo sân chơi lĩnh vực lập trình, tạo thi học thuật thi đấu Caro nhiều đối tượng khác Tính sáng tạo: Dự án mang lại lợi ích lớn mơi trường giảng dạy, tổ chức thi học thuật liên quan đến lĩnh vực cơng nghệ thơng tin Khuyến khích sinh viên làm quen với trí tuệ nhân tạo, ứng dụng vào lập trình trò chơi caro tự động so sánh kết với Kết nghiên cứu: Xây dựng module có khả kết nối máy, giúp chương trình thi đấu Client có khả tương tác với chương trình thi đấu gửi thơng tin cho Server Server có khả tổng hợp kết nối, cài đặt trận đấu Cung cấp Nút đăng nhập lại người chơi muốn đăng nhập tài khoản khác Hình 31: Nút đăng nhập lại Ô dùng để điền đường dẫn Chương trình AI mà người chơi thiết kế Người chơi truy cập vào thư mục Chương trình AI cách ấn nút bên phải Hình 32: Ô dùng để điền đường dẫn của Chương trình AI mà người chơi thiết kế 44 3.2.2 Màn hình Đăng nhập Hình 33: Màn hình Đăng nhập Màn hình để người chơi đăng nhập tài khoản người Quản lí cấp để tiến hành khởi động chương trình Bao gồm: Ô nhập địa IP Server mà người chơi muốn kết nối Hình 34: Ô nhập địa IP của Server mà người chơi muốn kết nối 45 Ô nhập tài khoản mật người chơi nút đăng nhập Hình 35: Ô nhập tài khoản mật của người chơi nút đăng nhập Sau ấn nút đăng nhập lên hình chờ Hình 36: Màn hình chờ sau ấn nút đăng nhập 46 3.3 Một số đoạn code quan trọng Kết nối tới server: IPAddress ip = GetIPAddress(); IPEndPoint ipe = new IPEndPoint(ip, PORT_NUMBER); player = new TcpClient(); player.Connect(ipe); if (!SendLoginInfomation()) break; isConnected = true; ignoreCounter = true; Đọc liệu từ server: public string ReadFromStream() { byte[] dataTemp = new byte[SIZE_OF_BYTE]; NetworkStream stream = player.GetStream(); stream.ReadTimeout = 10000; stream.Read(dataTemp, 0, dataTemp.Length); string data = Encoding.ASCII.GetString(dataTemp); return data.Substring(0, data.IndexOf("[end]")); } Gửi liệu cho chương trình thi đấu: public void WriteToConsole(string data) { if (data[0] == '-') 47 { int signal = int.Parse(data.Substring(0, 2)); botProcess.StandardInput.WriteLine(signal); if (signal == LOSE) { botProcess.StandardInput.WriteLine(data.Split(',') [1]); botProcess.StandardInput.WriteLine(data.Split(',') [2]); ShowLogClient("Bạn thua ván đấu"); } } else { botProcess.StandardInput.WriteLine(data.Split(',') [0]); botProcess.StandardInput.WriteLine(data.Split(',') [1]); } } Gửi liệu cho server: public void WriteToStream(string data) { byte[] dataTemp = new byte[SIZE_OF_BYTE]; 48 dataTemp = Encoding.ASCII.GetBytes(data); NetworkStream stream = player.GetStream(); stream.WriteTimeout = 10000; stream.Write(dataTemp, 0, dataTemp.Length); } Kiểm tra trạng thái kết nối: public static TcpState GetState(TcpClient tcpClient) { var foo = IPGlobalProperties.GetIPGlobalProperties() GetActiveTcpConnections() SingleOrDefault(x => x.LocalEndPoint.Equals (tcpClient.Client.LocalEndPoint)); return foo != null ? foo.State : TcpState.Unknown; } Nhận kết nối từ client: private void GetConnection() { server = new TcpListener(GetIPAddress(), 9999); server.Start(); while (true) { TcpClient client = server.AcceptTcpClient(); client.Client.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 0); 49 AddNewPlayer(client); } } Gửi liệu cho client: public async Task SendDataAsync(Player player, string msg) { byte[] buffer = new byte[BYTES_SIZE]; buffer = Encoding.ASCII.GetBytes(msg); NetworkStream stream = player.Client.GetStream(); stream.WriteTimeout = 10000; await stream.WriteAsync(buffer, 0, buffer.Length); } Nhận liệu từ client: public async Task GetDataAsync(TcpClient player) { byte[] buffer = new byte[BYTES_SIZE]; NetworkStream stream = player.GetStream(); stream.ReadTimeout = 10000; await stream.ReadAsync(buffer, 0, buffer.Length); string data = Encoding.ASCII.GetString(buffer); return data.Substring(0,data.LastIndexOf("[end]")); } 50 CHƯƠNG 4: ĐÁNH GIÁ Sau hoàn thành đề tài nghiên cứu, nhóm rút số đánh giá đề tài sau: Ưu điểm: - Đã xây dựng module hỗ trợ chương trình máy tính thi đấu cờ caro tự động cách thống nhất, công với chức tạo trận đấu tự động, hiển thị thông tin trận đấu,… - Đề tài hướng nghiên cứu việc áp dụng công nghệ thông tin vào đào tạo trường, đặc biệt cho sinh viên công nghệ thơng tin sinh viên có hiểu biết lập trình có sân chơi lĩnh vực lập trình, tạo thi học thuật thi đấu Caro nhiều đối tượng khác - Mức độ hoàn thành sản phẩm so với kế hoạch đề ra: 100% Nhược điểm: - Tốc độ kết nối client đến server chưa nhanh - Với tính chất, mức độ thời gian nghiên cứu có hạn nên còn nhiều vấn đề mà nhóm chưa thể sâu làm rõ 51 KẾT LUẬN VÀ KIẾN NGHỊ Kết luận: - Đề tài hoàn thành sản phẩm đề áp dụng nội khoa Cơng nghệ thông tin - Đề tài không trùng lặp với kết đề tài khác đảm bảo chất lượng nội dung đề tài NCKH cấp trường - Đề tài tạo module hoàn thiện để áp dụng vào thực tiễn, đặc biệt tạo môi trường học tập sân chơi rèn luyện cho sinh viên ngành công nghệ thông tin - Dự án mang lại lợi ích lớn mơi trường giảng dạy, tổ chức thi học thuật liên quan đến lĩnh vực công nghệ thông tin: giảm chi phí tổ chức, rút ngắn thời gian cơng tác chấm điểm thực hành, có kết nhanh chóng xác - Đề tài sau hồn thiện tránh khỏi số hạn chế nhược điểm, nhóm tìm cách khắc phục hoàn thiện đề tài tương lai để đưa đề tài áp dụng rộng rãi vào thực tiễn Kiến nghị: - Cân nhắc áp dụng module nhóm vào giảng dạy tạo sân chơi cho sinh viên ngành công nghệ thông tin - Tiếp tục phát triển thêm sân chơi áp dụng công nghệ thơng tin trí tuệ nhân tạo cho sinh viên ngành khác để bắt kịp xu hướng thời đại - Cần có thêm nghiên cứu hành động rõ ràng từ phía nhà trường để tạo thêm sân chơi giúp sinh viên rèn luyện, học tập thêm mà không bị nhàm chán với môn học lý thuyết 52 TÀI LIỆU THAM KHẢO [1] Microsoft Document, https://docs.microsoft.com/vi-vn/ [2] Wikipedia, https://vi.wikipedia.org/wiki/Local_area_network#:~:text=Local%20Area%20Network% 20(ti%E1%BA%BFng%20Anh,m%E1%BB%99t%20s%E1%BB%91%20thi%E1%BA% BFt%20b%E1%BB%8B%20kh%C3%A1c [3] Wikipedia, https://vi.wikipedia.org/wiki/Client-server [4] Matbao, https://wiki.matbao.net/socket-la-gi-khai-niem-can-biet-ve-giao-thuc-tcp-ipva-udp/ [5] Wikipedia, https://vi.wikipedia.org/wiki/C%C6%A1_s%E1%BB%9F_d%E1%BB%AF_li%E1%BB %87u [6] Wikipedia, https://vi.wikipedia.org/wiki/Windows_Presentation_Foundation [7] Medium, https://medium.com/@semtekcorp/net-framework-la-gi-vi-sao-no-lai-quantrong-trong-may-tinh4d101af34a81#:~:text=h%C6%A1n%20v%E1%BB%81%20n%C3%B3.,.,%E1%BB%A9ng%20d%E1%BB%A5ng%20web%2C%20web%20services%E2%80% A6 53 PHỤ LỤC HƯỚNG DẪN VIẾT CHƯƠNG TRÌNH ĐỂ CĨ THỂ THI ĐẤU CỜ CARO TỰ ĐỘNG: Chương trình chúng tơi module hỗ trợ chương trình máy tính thi đấu cờ caro tự động: giúp thí sinh thi đấu caro với qua việc lập trình chương trình máy tính (caro máy) Sau số thông tin chương trình thi đấu cờ caro quy định dùng thi đấu: - Bàn cờ dùng cho thi đấu cờ caro có kích thước 20x20 đánh số hàng số cột sau: 20 cột đánh số từ đến 19, 20 hàng đánh số từ đến 19, tọa độ 0,0 nằm góc bên trái bàn cờ Một nước xác định bao gồm cặp số tọa độ hàng cột - Mỗi trận đấu bao gồm nhiều ván đấu để phân định thắng thua tùy theo thể lệ thi vòng thi Có quân cờ X O: người trước ván đánh quân O người còn lại đánh quân X - Người trước (quân O) đánh vào vị trí bàn cờ (trong chương trình khuyến khích nước đầu nằm bàn cờ chiến thuật chơi không phụ thuộc vào vị trí qn đầu) Sau đến lượt người tiếp theo, luân phiên đánh lên bàn cờ, tới lượt người chơi đánh nước lượt có giới hạn thời gian 5s tính từ nhận nước tới tính nước hợp lệ 5s bị xử thua Khi người chơi có quân cờ liên tiếp bàn cờ theo chiều dọc, chiều ngang đường chéo thỏa mãn luật chơi (áp dụng luật bị chặn đầu hay không) thắng Sau ván đấu đổi lượt người trước (nếu có nhiều ván đấu) Để tham gia thi đấu thì thí sinh phải lập trình mợt chương trình caro máy thỏa mãn cấu trúc sau: - Đọc nước đối thủ thông tin liên quan đến trận đấu từ hình console: o Một nước hợp lệ đối thủ cặp gồm số nguyên không âm, số nằm khoảng từ đến 19 o Chương trình đọc số từ hình số đọc số khơng âm số thứ tự hàng mà đối thủ đánh, lúc đọc tiếp số số thứ tự cột để tạo thành nước đối thủ o Nếu chương trình đọc số âm có nghĩa mã thông báo lên quan đến trận đấu Các mã thông báo quy định sau: -1 thông báo bắt đầu ván không áp dụng luật chặn đầu, bạn trước -2 thông báo bắt đầu ván đấu không áp dụng luật chặn đầu, bạn người sau Khi nhận thơng báo thực lại việc đọc nước -3 thông báo bắt đầu ván áp dụng luật chặn đầu, bạn trước -4 thông báo bắt đầu ván áp dụng luật chặn đầu, bạn sau -5: bạn giành chiến thắng ván đấu -6: bạn thua ván đấu -7: nước bạn không hợp lệ: ngồi kích thước bàn cờ -8: nước bạn trùng với nước đi trước (của bạn đối thủ) -9: trường hợp nước không hợp lệ khác - Sau đọc liệu chương trình tiến hành tính tốn nước tính tốn lại nước lỗi trước đó: o Nước tính tốn phải số nguyên không âm khoảng từ đến 19 Khi tính tốn phải lưu ý để tránh nước khơng hợp lệ Trước hết phải có điều kiện để tạo nước hợp lệ(chú ý đến tọa độ, kích thước bàn cờ thơng tin nước trước đó) o Bạn tham khảo thuật tốn tìm nước caro tự động thơng qua internet để chương trình tính tốn nước hợp lý o Việc tính tốn nhằm mục đích đưa nước hợp lệ nhắm tới việc chiến thắng (có đủ quân cờ liên tiếp hàng, cột chéo) ngăn chặn nước chiến thắng đối thủ - Sau tính tốn nước chương trình cho phép xuất nước hình console: o Thông tin xuất số nguyên không âm khoảng từ đến 19 số nằm hàng số thứ tự hàng cột sau chương trình tính tốn Số số thứ hàng, số thứ số thứ tự cột - Sau xuất thông tin hình tiếp tục lại việc đọc thơng tin tính tốn o Lặp lại bước đọc thơng tin, tính tốn xuất để chương trình hoạt động bình thường - Để thực việc bạn cần biết số kĩ thuật lập trình (bằng ngôn ngữ C/C++ ngôn ngữ khác) Lưu ý: - Mọi thông tin thắc mắc thêm vui lòng liên hệ chủ nhiệm dự án Nguyễn Huỳnh Phúc theo số điện thoại: 0346646603 email: phucnipy3@gmail.com để tư vấn giải Chương trình có cấu trúc tương tự sau: Nhập tín hiệu bắt đầu: cin >> a; //Xử lý tín hiệu (Nếu bạn trước xuất nước bạn, bạn sau đọc nước đối thủ) While (true) { //Đọc nước thông báo //Nếu đọc thông báo sau bỏ qua bước phía //Xử lý //Xuất nước tính tốn } ... đề tài: Xây dựng module hỗ trợ chương trình máy tính thi đấu cờ caro tự động cách thống nhất, công Ứng dụng vào để chấm điểm tập lập trình game Caro Tạo sân chơi lĩnh vực lập trình, tạo thi học... kiểm tra khả lập trình người tham gia để tạo chương trình thơng minh Qua ý tưởng đó, nhóm nghiên cứu việc xây dựng module để hỗ trợ hai chương trình máy tính thi đấu cờ caro tự động, theo nhóm... VIỆT NAM Độc lập - Tự - Hạnh phúc BẢN GIẢI TRÌNH CHỈNH SỬA BÁO CÁO TỔNG KẾT ĐỀ TÀI NCKH SINH VIÊN Tên đề tài: Xây dựng module hỗ trợ hai chương trình máy tính thi đấu cờ caro tự động Mã số đề tài: