1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu lập trình SocketThread xây dựng ứng dụng chơi Caro trong mạng LAN

66 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 1,84 MB

Nội dung

Xây dựng Game Caro đáp ứng được yêu cầu về chơi giữa người với máy hoặc giữa người với người. Ôn tập lại các kiến thức về lập trình mạng, lập trình đồ họa trong .NET. Nghiên cứu các ứng dụng của trí tuệ nhân tạo vào thực tiễn đời sống.

LỜI CẢM ƠN Trƣớc tiên, em xin gửi lời cảm ơn sâu sắc tới thầy Lê Trung Hiếu (Giảng viên Khoa Công Nghệ Thông Tin, Trƣờng Đại Học Duy Tân) Thầy tận tình dẫn cho em từ bƣớc đến hoàn thành đề tài Thầy giúp em giải vấn đề lúc khó khăn Ở thầy em học đƣợc khơng hiểu biết mà phong cách làm việc Em xin gửi lời cảm ơn tới tất thầy, cô giáo khoa Công Nghệ Thông Tin – Trƣờng Đại Học Duy Tân nhiệt tình giảng dạy cho chúng em tri thức kỷ nguyên công nghệ Cảm ơn ngƣời bạn tôi, ngƣời giúp đỡ nhiều học tập, sống hồn thành khóa luận Cuối cùng, xin gửi lời cảm ơn đến bố, mẹ gia đình Bố mẹ ln chỗ dựa tinh thần vững cho Đà Nẵng, Ngày 20 Tháng 04 Năm 2013 LỜI CAM ĐOAN Tôi xin cam đoan: a Những nội dung khóa luận thực hướng dẫn trực tiếp thầy Lê Trung Hiếu –Giảng viên khoa Công Nghệ Thông Tin, Đại Học Duy Tân b Mọi tham khảo dùng khóa luận trích dẫn rõ ràng trung thực tên tác giả,tên cơng trình,thời gian, địa điểm công bố c Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, xin chịu hồn tồn trách nhiệm Tác giả Ngơ Cơng Danh MỤC LỤC Lời cảm ơn Lời cam đoan MỞ ĐẦU CHƢƠNG 1: 1.1 LẬP TRÌNH AI 1.1.1 Lý thuyết trò chơi 1.1.1.1 Khái niệm 1.1.1.2 Biểu diễn trò chơi 1.1.1.3 Các loại trò chơi 1.1.2 Trí tuệ nhân tạo 10 1.1.2.1 Trí tuệ nhân tạo ? 10 1.1.2.2 Các trƣờng phái trí tuệ nhân tạo 11 1.1.2.3 Các thành phần TTNT 12 1.1.3 1.2 KIẾN THỨC ỨNG DỤNG Giải thuật MinMax 13 LẬP TRÌNH MẠNG 15 1.2.1 Tổng quan mạng LAN 15 1.2.2 Địa mạng cổng giao tiếp (IPAddress & Port) 17 1.2.2.1 IPAddress 17 1.2.2.2 Port 18 1.2.3 Kỹ thuật NET Remoting 20 1.2.3.1 NET Remoting gì? 20 1.2.3.2 NET Remoting Web Services 20 1.2.3.3 Channels 21 1.2.3.4 Tạo chƣơng trình Server để host Remotable Object 22 1.2.3.5 1.2.4 Tạo chƣơng trình client để sử dụng Remote Object 23 Lập trình Thread MultiThread 24 1.2.4.1 Thread gì? 24 1.2.4.2 Namespace System.Threading 25 1.2.4.3 Đồng hóa (Synchorization) 29 1.2.4.4 Delegate 30 1.2.4.5 Deadlock 31 CHƢƠNG 2: PHÂN TÍCH 33 2.1 SƠ LƢỢC VỀ TRÒ CHƠI CARO 33 2.2 MÔ TẢ VẤN ĐỀ 34 2.3 YÊU CẦU ĐẶT RA 35 2.4 PHÂN TÍCH CHƢƠNG TRÌNH 35 2.4.1 Chƣơng trình Caro cho máy tính 35 2.4.1.1 Mô tả 35 2.4.1.2 Áp dụng luật chơi 36 2.4.1.3 Xử lý ngoại lệ phát sinh game 36 2.4.2 Thuật toán MinMax - Ứng dụng 37 2.4.2.1 Thuật toán MinMax 37 2.4.2.2 Xây dựng chiến thuật cho AI 42 2.4.3 Phân tích thành phầ n xƣ̉ lý 44 2.4.3.1 Use case 44 2.4.3.2 Chơi với AI 46 2.4.3.3 Chơi qua ma ̣ng LAN 46 CHƢƠNG 3: XÂY DỰNG ỨNG DỤNG 49 3.1 THIẾT KẾ GIAO DIỆN 49 3.1.1 Màn hình chiń h 49 3.1.2 Màn hình chơi đơn 50 3.1.3 Màn hình ta ̣o Host 50 3.1.4 Màn hình Login 51 3.1.5 Màn hình chơi LAN 52 3.1.6 Màn hình thi đấ u giƣ̃a đớ i thủ 52 3.1.7 Màn hình chat with 53 3.2 VIẾT MÃ 53 KẾT LUẬN TÀI LIỆU THAM KHẢO Danh mục hình vẽ: Hình 1.1: NET Remoting Overview 20 Hình 1.2: Remotable Object Sample 22 Hình 1.3: Sample Server host Remotable Object 23 Hình 1.4: Sample Client Application 24 Hình 1.5: Chu kỳ hoạt động Thread 25 Hình 1.6: Cơ chế hoạt động MultiThread: 29 Hình 1.7: Ví dụ Delegate 31 Hình 2.1: Cây trị chơi 38 Hình 2.2: Use Case 44 Hình 2.3: Mơ hình xử lý chơi đơn 46 Hình 2.4: Mơ hình ta ̣o Host 47 Hình 2.5: Mơ hình xử lý Login 48 Hình 3.1: Màn hình chính 49 Hình 3.2: Màn hình chơi đơn 50 Hình 3.3: Màn hình Host 50 Hình 3.4: User đăng nhâ ̣p vào Host 51 Hình 3.5: Màn hình Login 51 Hình 3.6: Màn hình chơi LAN 52 Hình 3.7: Màn hình thi đấ u 52 Hình 3.8: Màn hình Chat with 53 Hình 3.9: Hàm xử lý ván đấu 54 Hình 3.10: Hàm tìm nƣớc 55 Hình 3.11: Hàm tạo Host 55 Hình 3.12: Hàm tạo kết nối tới Server 56 Danh mục bảng: Bảng 1.1: Các thành phần lớp IpAddress 18 Bảng 1.2: Một số lớp namespace System.Threading 25 Bảng 1.3: Các thành phần static lớp Thread 27 Bảng 1.4: Các thành viên cấp đối tƣợng lớp Thread 27 Danh mục từ viết tắt: AI Artificial Intelligence Trí thông minh nhân tạo CPU Central Processing Unit Đơn vị xử lý trung tâm DNS Domain Name Service Dịch vụ phân giải tên miền FTP File Transfer Protocol Giao thức truyền tải tệp tin GUI Graphic User Interface Giao diện đồ họa ngƣời dùng HTTP Hyper Text Transfer Protocol Giao thức truyền tải siêu văn IP Internet Protocol Giao thức liên mạng LAN Local Area Network Mạng máy tính cục NIC Network Interface Card Card giao tiếp mạng POP3 Post Office Protocol Giao thức bƣu điện SMTP Simple Mail Transfer Protocol Giao thức truyền tải thƣ tín đơn giản SOAP Simple Object Access Protocol Giao thức truy cập đối tƣợng đơn giản TCP Transmission Control Protocol Giao thức điều khiển truyền vận UDP User Datagram Protocol Giao thức truyền tải gói ngƣời dùng XML Extensible Markup Language Ngơn ngữ đánh dấu mở rộng Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN MỞ ĐẦU TỔNG QUAN Bạn muốn thƣ giãn với trị chơi có tính tƣơng tác cao! Bạn muốn đánh bại đồng nghiệp, bạn bè tranh tài trí thơng minh! Vâng, game Caro mà giới thiệu sau cho bạn tất Game mang lại cho bạn trải nghiệm thú vị chọn chế độ chơi với máy, điều chỉnh giao diện hay tùy chỉnh chiến thuật máy Chắc chắn không dễ dàng cho “amateur” muốn đánh bại đƣợc ngƣời máy Game Hoặc chế độ khác khơng hấp dẫn chức thách đấu với ngƣời chơi khác thông qua mạng LAN Đây hứa hẹn nơi mang lại cho bạn phút giây thƣ giãn thú vị bên bạn bè, đồng nghiệp Ngoài chức thách đấu game Caro, hệ thống hỗ trợ ngƣời chơi chat với thơng qua kênh chat riêng Ngƣời chơi gửi thơng điệp cho ngƣời khác đăng nhập vào Host nhƣ phần mềm chat mạng LAN Để làm đƣợc tất yêu cầu trên, cần phải nghiên cứu hai lĩnh vực: Trí tuệ nhân tạo-Lý thuyết trị chơi lập trình mạng Cụ thể áp dụng Giải thuật MinMax để xây dựng ngƣời máy cho game, kỹ lập trình Socket để xây dựng chế độ chơi LAN Nhƣ biết, mạng LAN đời từ lâu nhƣng ngày chiếm vai trị quan trọng Đƣợc ứng dụng rộng rãi hộ gia đình, trƣờng học, cơng ty, …, với mục đích trao đổi liệu máy trạm quy mô mạng Việc lập trình cho mạng LAN xuất từ đời, ngơn ngữ hỗ trợ lập trình mạng đa dạng nhƣ Java, NET… Và khóa luận này, nghiên cứu kỹ thuật NET Remoting NET để lập trình cho chế độ chơi LAN Trí tuệ nhân tạo hay trí thơng minh nhân tạo (tiếng Anh: artificial intelligence hay machine intelligence, thƣờng đƣợc viết tắt AI) trí tuệ Ngơ Cơng Danh_2481 Trang -1 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN đƣợc biểu diễn hệ thống nhân tạo Thuật ngữ thƣờng dùng để nói đến máy tính có mục đích khơng định ngành khoa học nghiên cứu lý thuyết ứng dụng trí tuệ nhân tạo Tuy trí thơng minh nhân tạo khơng có nghĩa rộng nhƣ trí thơng minh khoa học viễn tƣởng, nhƣng ngành trọng yếu tin học Trí thơng minh nhân tạo liên quan đến cách cƣ xử, học hỏi khả thích ứng thơng minh máy móc Các ví dụ ứng dụng bao gồm tác vụ điều khiển, lập kế hoạch lập lịch (scheduling), khả trả lời câu hỏi chẩn đoán bệnh, trả lời khách hàng sản phẩm công ty, nhận dạng chữ viết tay, nhận dạng tiếng nói khn mặt Bởi vậy, trí thơng minh nhân tạo trở thành mơn học, với mục đích cung cấp lời giải cho vấn đề sống thực tế Ngày nay, hệ thống nhân tạo đƣợc dùng thƣờng xuyên kinh tế, y dƣợc, ngành kỹ thuật quân sự, nhƣ phần mềm máy tính thơng dụng gia đình trị chơi điện tử Và qua đó, ta xây dựng AI cho game Caro dựa tảng giải thuật trí tuệ nhân tạo Cụ thể, giải thuật MinMax đƣợc sử dụng để xây dựng AI suy nghĩ phán đoán nhƣ não ngƣời chế độ chơi ngƣời với máy LÝ DO CHỌN ĐỀ TÀI Đây đề tài hay khơng dễ dàng, địi hỏi kỹ tƣ duy, phân tích cao Các kiến thức ứng dụng vào chƣơng trình cũ cơng nghệ nhƣng lại sinh viên Những vấn đề đƣợc truyền đạt sở lý thuyết, chƣa đƣợc nhiều sinh viên ứng dụng vào thực tế Thơng qua khóa luận này, củng cố lại kiến thức lập trình mạng nhƣ lập trình đồ họa NET, tổng hợp phát triển công nghệ dùng đồ án chuyên ngành Tìm hiểu nâng cao số cơng nghệ khác để khai thác hiệu lập trình phần mềm Ngơ Cơng Danh_2481 Trang -2 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN Là sở để lập trình AI cho máy tính, áp dụng thuật tốn mơn học “Trí tuệ nhân tạo” vào thực tiễn Từ mơ cách đơn giản ứng dụng ngành đời sống ngƣời Trao dồi thêm kỹ lập trình game cho windows, tảng để phát triển ứng dụng game cho hệ máy khác nhƣ Mobile hay Tablet MỤC ĐÍCH ĐỀ TÀI  Xây dựng đƣợc Game Caro đáp ứng đƣợc yêu cầu chơi ngƣời với máy ngƣời với ngƣời  Ôn tập lại kiến thức lập trình mạng, lập trình đồ họa NET Áp dụng công nghệ nghiên cứu đồ án chuyên ngành nhƣ số công nghệ khác để hỗ trợ cho việc lập trình mạng  Nghiên cứu ứng dụng trí tuệ nhân tạo vào thực tiễn đời sống Qua đó, xây dựng nên đƣợc “bộ não” nhân tạo mô cách rõ ràng ứng dụng ngành  Rút đƣợc học kinh nghiệm cho thân việc lập trình nhƣ xây dựng ứng dụng liên quan đến trí tuệ nhân tạo HƢỚNG GIẢI QUYẾT 4.1 Lý thuyết trị chơi - Trí tuệ nhân tạo Nền tảng lý thuyết trò chơi - Nắm vững khái niệm lý thuyết trò chơi, lịch sử phát triển nhƣ ứng dụng lý thuyết trò chơi vào sống - Áp dụng lý thuyết trị chơi vào trí tuệ nhân tạo Cụ thể để giải cho toán ngƣời chơi với máy Đƣa giải pháp, giải thuật trí tuệ nhân tạo vào việc xây dựng máy tính biết suy nghĩ Xây dựng AI - Từ tảng lý thuyết trị chơi trí tuệ nhân tạo, áp dụng giải thuật MinMax vào việc xây dựng AI cho toán ngƣời chơi với máy - Yêu cầu máy phải biết phân tích, chọn nƣớc tối ƣu, phải biết cách chiến thắng ngƣời chơi - Các bƣớc áp dụng giải thuật MinMax vào việc xây dựng AI: Ngơ Cơng Danh_2481 Trang -3 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN - Yêu cầ u:  Ngƣời chơi vào đƣơ ̣c game  Kích chọn chức chơi đơn  Chơi Multi qua ma ̣ng LAN: - Là Use Case thực chức tạo chơi ngƣời với ngƣời thông qua ma ̣ng LAN - Yêu cầ u:  Ngƣời chơi vào game  Kích chọn chức chơi qua mạng LAN  Tạo Host: - Tạo Server cho việc chơi LAN giƣ̃a các ngƣời chơi - Yêu cầ u:  Chọn chức chơi Multi  Đồng ý việc tạo Host  Login: - Đăng nhâ ̣p vào Server LAN - Yêu cầ u:  Host đã đƣơ ̣c ta ̣o  Không chọn chức tạo Host  Nhâ ̣p IP Server  Đặt tên ngƣời chơi  Thách đấu: - Gƣ̉i lời thách đấ u cho các đố i thủ Server - Yêu cầ u:  Đăng nhâ ̣p thành công  Chọn tên ngƣời chơi server  Kích chọn chức thách đấu  Chat: - Trò chuyê ̣n giƣ̃a các ngƣời chơi Server - Yêu cầ u:  Đăng nhâ ̣p thành công Ngô Công Danh_2481 Trang -45 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN  Chọn tên ngƣời chơi list user Server  Gõ nội dung cần trị chuyện kích chọn gửi 2.4.3.2 Chơi với AI Ngƣời chơi vào game, chọn chế độ chơi đơn để bắt đầu chơi với máy Mơ hình: Hình 2.3: Mơ hình xử lý chơi đơn - Từ hình chính, ngƣời chơi kích chọn chức chơi đơn (chơi với AI) - Màn hình chơi đơn xuất hiện, cho phép ngƣời chơi thiết lập tùy chọn nhƣ: giao diện, mức độ AI, chiến thuật AI… - Ngƣời chơi đồng ý thiết lập, ván chơi bắt đầu 2.4.3.3 Chơi qua mạng LAN Tạo Host: Tạo Host ngƣời chơi khác đăng nhập vào sử dụng chức chơi LAN của chƣơng trin ̀ h Ngơ Cơng Danh_2481 Trang -46 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN Mơ hình: Hình 2.4: Mơ hình tạo Host - Từ hình chính, ngƣời chơi chọn chế độ chơi qua mạng LAN (chơi với ngƣời chơi khác) - Hệ thống yêu cầu ngƣời chơi có muốn tạo Host hay không? Chọn Yes để tạo Host - Nếu port mặc định chƣa đƣợc dùng Host đƣợc tạo, ngƣợc lại thông báo port đƣợc sử dụng - Xuất hình Host Login: Đăng nhâ ̣p vào Host đã đƣơ ̣c ta ̣o với IP của Host và tên tùy cho ̣n ngƣời chơi đă ̣t Ngơ Cơng Danh_2481 Trang -47 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN Mơ hình: Hình 2.5: Mơ hình xử lý Login - Từ hình chính, ngƣời chơi kích chọn chế độ chơi qua mạng LAN - Hệ thống yêu cầu tạo Host, chọn “No” để thực chức đăng nhập - Tại hình đăng nhập, nhập IP Host tên đăng nhập (do ngƣời chơi tự đặt) Nếu IP không tên đăng nhập bị trùng, có MessageBox thơng báo - Sau đăng nhập thành cơng, ngƣời chơi lựa chọn đối thủ để thực chức thách đấu Hoặc lựa chọn ngƣời chơi khác để trị chuyện Ngơ Cơng Danh_2481 Trang -48 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN CHƢƠNG 3: XÂY DỰNG ỨNG DỤNG 3.1 THIẾT KẾ GIAO DIỆN 3.1.1 Màn hình Hình 3.1: Màn hình Button “Chơi đơn”: Click vào chọn chức chơi với máy Button “Ma ̣ng LAN” : Click cho ̣n chức chơi ngƣời với ngƣời quan ma ̣ng LAN Button “Thông tin”: Show thông tin chƣơng trin ̀ h Button “Thoát”: Show hô ̣p thoa ̣i có muố n thoát khỏi chƣơng trình Ngô Cơng Danh_2481 Trang -49 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN 3.1.2 Màn hình chơi đơn Hình 3.2: Màn hình chơi đơn New game: Tạo ván chơi Hot key F2 Option: Cho phép các tùy cho ̣n về AI About: thông tin phầ n mề m 3.1.3 Màn hình tạo Host Hình 3.3: Màn hình Host Ngơ Cơng Danh_2481 Trang -50 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN Hiể n thi ̣thông tin về Port và Server Name của Host Đồng thời, nế u có ngƣời chơi nào đăng nhâ ̣p vào host cũng sẽ hiể n thi ̣ lên Hình 3.4: User đăng nhâ ̣p vào Host 3.1.4 Màn hình Login Hình 3.5: Màn hình Login Chọn IP Host , Localhost nhập dãy IP Host đã đƣơ ̣c ta ̣o Đặt tên ngƣời chơi Click Button “OK” để đăng nhâ ̣p vào Host Ngơ Cơng Danh_2481 Trang -51 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN 3.1.5 Màn hình chơi LAN Hình 3.6: Màn hình chơi LAN ComboBox: hiể n thi ̣danh sách ngƣời chơi đã đăng nhâ ̣p vào Host Button “OK”: gƣ̉i lời mời đế n đố i thủ Button “Send”: gƣ̉i đoa ̣n tin nhắ n đế n ngƣời chơi khác (Không cầ n phải đối thủ) 3.1.6 Màn hình thi đấ u giƣ̃a đớ i thủ Hình 3.7: Màn hình thi đấ u Ngô Công Danh_2481 Trang -52 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN Ván chơi hai đối thủ Sẽ có phút cho ván đấu Nế u hế t giờ mà chƣa kế t thúc ván đấ u thì lƣơ ̣t của đố i thủ nào đố i thủ đó sẽ thua Màn hình chat with 3.1.7 Hình 3.8: Màn hình Chat with Chọn ngƣời chơi list Host, gõ nội dung cần truyền click button “Send” 3.2 VIẾT MÃ public void NewGame() { view.ResetBoard(); view.End = Player.None; GomokuBoard.MaxDepth = Option.scrTrinhDo.Value; // cho may danh truoc ? if (Option.chkFirstMove.Checked) view.CurrPlayer = Player.Human; else view.Board[Height / 40 + view.OffsetH, Width / 40 + view.OffsetW] = Player.Machine; if (Option.cmbKinhNghiem.Text == "Chuyen gia tan cong") { view.TScore = new int[5] { 0, 1, 21, 341, 5461 }; view.KScore = new int[5] { 0, 5, 85, 1635, 21885 }; } Ngơ Cơng Danh_2481 Trang -53 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN else if (Option.cmbKinhNghiem.Text == "Chuyen gia phong thu") { view.TScore = new int[5] { 0, 5, 85, 1635, 21885 }; view.KScore = new int[5] { 0, 1, 21, 341, 5461 }; } else // Phong thu chat, tan cong nhanh { view.TScore = new int[5] { 0, 1, 9, 85, 769 }; view.KScore = new int[5] { 0, 2, 28, 256, 2308 }; } if (Option.rbtNut.Checked) { view.bmpHuman = new Bitmap(" // //Resources//bmpNodeHuman.bmp"); view.bmpMachine = new Bitmap(" // //Resources//bmpNodeMachine.bmp"); view.bmpNone = new Bitmap(" // //Resources//bmpNodeNone.bmp"); } else if (Option.rbtClassic.Checked) { view.bmpHuman = new Bitmap(" // //Resources//bmpHuman.bmp"); view.bmpMachine = new Bitmap(" // //Resources//bmpMachine.bmp"); view.bmpNone = new Bitmap(" // //Resources//bmpNone.bmp"); } else if (Option.rbtWeb.Checked) { view.bmpHuman = new Bitmap(" // //Resources//bmpWebHuman.bmp"); view.bmpMachine = new Bitmap(" // //Resources//bmpWebMachine.bmp"); view.bmpNone = new Bitmap(" // //Resources//bmpWebNone.bmp"); } view.DrawBoard(); statusbar.Hide(); } Hình 3.9: Hàm xử lý ván đấu Ngô Công Danh_2481 Trang -54 Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro mạng LAN public Node GetMaxNode() { int r, c, MaxValue = 0; Node n = new Node(); for (r = 1; r

Ngày đăng: 05/12/2021, 10:15

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w