Tải bản đầy đủ (.pdf) (19 trang)

Báo cáo đồ án môn học đề tài chương trình trò chơi caro qua mạng bằng java

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.43 MB, 19 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊNKHOA ĐIỆN TỬ - VIỄN THƠNGBỘ MƠN MÁY TÍNH – HỆ THỐNG NHÚNG</b>

--- ---

<b>BÁO CÁO ĐỒ ÁN MƠN HỌCMơn học: Lập trình mạng</b> <i><b>Đề tài: Chương trình trị chơi caro qua mạng bằng Java</b></i>

Giảng viên hướng dẫn:...ThS. Lê Đức Trị Lớp:...20Nhung Nhóm sinh viên thực hiện:...Nhóm 15 Lê Hồng Việt Quốc...20200323

Phạm Vĩnh Phú...20200308

Phan Dương Khải Nguyên...20200281

Huỳnh Trần Quốc Trung...20200379

Thành phố Hồ Chí Minh, ngày 07 tháng 03 năm 2024

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>Nhận xét của giảng viên</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

BẢNG ĐÁNH GIÁ ĐÓNG GÓP CỦA THÀNH VIÊN

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

LỜI MỞ ĐẦU

Đầu tiên, nhóm 15 xin cảm ơn thầy Lê Đức Trị đã phân cơng cho nhóm 15 đề tài này. Được nhận và thực hiện vào dự án này không chỉ là một cơ hội lớn để áp dụng kiến thức lập trình mạng của mình mà còn là một trải nghiệm học hỏi và phát triển kỹ năng quý báu.

Việc xây dựng một game Caro đa người chơi trên mạng không chỉ là một nhiệm vụ kỹ thuật mà còn là một thách thức tương đối đối với kỹ năng lập trình mạng và giao tiếp giữa các thành phần của hệ thống. Chúng em cam kết sẽ đặt hết sức mình vào dự án này, học hỏi và tận dụng những kiến thức đã học được để tạo ra một sản phẩm chất lượng và thú vị.

Trong báo cáo này, nhóm 15 sẽ cố gắng trình bày một cách chi tiết và rõ ràng nhất về quá trình phát triển dự án, từ việc nghiên cứu và thiết kế cho đến triển khai và kiểm thử. Nhóm chúng em hy vọng rằng báo cáo này không chỉ là một bản tường thuật về công việc của nhóm đã thực hiện mà cịn là một nguồn tài liệu hữu ích cho các sinh viên khác quan tâm đến lập trình mạng và phát triển game trực tuyến.

Một lần nữa xin được phép gửi lời cảm ơn chân thành nhất đến thầy Lê Đức Trị vì đã giúp đỡ và hướng dẫn để nhóm chúng em có thể hồn thành được đề tài đã được nhận và hồn thành tốt mơn học ./.

<i>Nhóm 15</i>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

MỤC LỤC

LỜI MỞ ĐẦU...4

<b>I.TỔNG QUAN VỀ ĐỀ TÀI...6</b>

<i>1.Giới thiệu tổng quan về đề tài...6</i>

<i>2.Giới thiệu tổng quan về game Caro...6</i>

<i>3.Phương pháp triển khai đề tài...6</i>

<b>II. CƠ SỞ LÝ THUYẾT...7</b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>I. TỔNG QUAN VỀ ĐỀ TÀI</b>

<i>1. Giới thiệu tổng quan về đề tài</i>

Yêu cầu: Lập trình chương trình trị chơi game caro qua mạng bằng Java.

<i>2. Giới thiệu tổng quan về game Caro</i>

Game Caro, hay còn được biết đến với tên gọi Gomoku, là một trò chơi kinh điển thuộc thể loại cờ vua, nơi hai người chơi trạnh nhanh với nhau để tạo ra một chuỗi liên tiếp gồm n cờ theo hàng ngang, dọc hoặc chéo trên một bảng ơ vng.

<i><b>Luật chơi: Trị chơi được chơi trên một bảng ơ vng, thường là có kích thước</b></i>

15x15 hoặc 19x19, với mỗi người chơi sử dụng một loại quân cờ riêng (thường là X và O hoặc các biểu tượng khác nhau). Mục tiêu cua mỗi người chơi là đặt quân cờ của mình trên bảng để tạo ra một chuỗi gồm n quân cờ theo hàng ngang, dọc hoặc chéo mà không bị chặn bởi quân cờ của đối thủ. Người chơi đầu tiên tạo ra chuỗi này sẽ chiến thắng trị chơi.

Game Caro khơng chỉ là một trị chơi giải trí mà cịn là một trị chơi địi hỏi tính tư duy chiến lược và kỹ năng định hình khơng gian. Với sự phổ biến trên toàn thế giới, Caro đã trở thành một trong những trị chơi kinh điển được u thích và chơi rộng rãi trong cộng đồng game thủ.

Trong dự án này, nhóm chúng em quyết định phát triển một phiên bản game Caro bằng Java, cho phép 2 người chơi cùng tham gia vào trò chơi và cạnh tranh với nhau thông qua kết nối Internet. Với sự kết hợp giữa tính giải trí và khả năng tương tác trực tuyến, nhóm em hy vọng rằng dự án sẽ đáp ứng được yêu cầu và mang đến một trải nghiệm tốt với dự án game Caro qua mạng này.

<i>3. Phương pháp triển khai đề tài</i>

 Ngơn ngữ lập trình: Java

 Mơi trường phát triển: NetBeans, MySQL.

 Các kiến thức sử dụng: giao thức TCP/IP, Socket, JavaSwing, Multithreading.

 Mơ hình: client-server, MVC (Model – View – Controller).

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

 Tạo ra được một chương trình mà các Client có thể kết nối và tương tác với nhau thông qua một Server.

<b>II. CƠ SỞ LÝ THUYẾT</b>

<i>1. Giao thức TCP/IP</i>

Bộ giao thức TCP/IP (TCP/IP protocol suite) hay còn gọi là bộ giao thức Internet (Internet protocol suite hoặc IP suite) là một mơ hình khái niệm và một tập hợp các giao thức truyền thông dùng trong mạng Internet và các hệ thống mạng máy tính tương tự. Tên gọi TCP/IP đến từ hai giao thức nền tảng của bộ giao thức là TCP (Transmission Control Protocol) và IP (Internet Protocol).

Các lớp chính của mơ hình TCP/IP:

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Trong dự án, nhóm sử dụng TCP/IP, làm việc ở tầng Transport và tần Internet của mơ hình TCP/IP.

 <b>Tầng Transport (TCP/UDP):</b>

 TCP cung cấp kết nối tin cậy, đảm bảo dữ liệu được truyền qua mạng một cách an tồn và có thứ tự. Điều này thích hợp cho các ứng dụng như trò chơi trực tuyến, nơi độ tin cậy và đồng bộ hóa dữ liệu là quan trọng.

 Nếu sử dụng UDP (User Datagram Protocol) thay vì TCP, cũng đang làm việc ở tầng Transport. UDP là giao thức không đảm bảo việc truyền dữ liệu một cách tin cậy và khơng có cơ chế kiểm sốt lỗi hoặc đảm bảo thứ tự gói tin, nhưng nó có thể nhanh hơn và phù hợp cho các ứng dụng cần thời gian thực hoặc không yêu cầu độ tin cậy cao như streaming media.

 <b>Tầng Internet (IP):</b>

 Tầng Internet của TCP/IP chịu trách nhiệm định tuyến gói tin trên mạng. Trong dự án, khi sử dụng TCP hoặc UDP để truyền dữ liệu, gói tin sẽ được đóng gói vào các gói tin IP và chuyển tiếp qua mạng tới đích. Giao thức IP đảm bảo gói tin đến đúng đích bằng cách sử dụng địa chỉ IP của các thiết bị mạng và các bảng định tuyến.

<i>2. Socket</i>

Socket là một giao diện lập trình ứng dụng (API – Application Programming Interface) được giới thiệu đầu tiên trong ấn bản Unix – BSD 4.2 dưới dạng các hàm hệ thống trong ngôn ngữ C. Ngày nay, socket được hỗ trợ hầu hết trên các hệ điều hành: Windows, Linux và trong nhiều ngôn ngữ lập trình như C, C++, Java, Dot.net,…

Socket cho phép thiết lập các kênh giao tiếp giữa các máy tính trên mạng, trong đó mỗi đầu kênh được đánh dấu bởi một cặp địa chỉ IP và số cổng (port).

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<i>Hình 2: Socket</i>

Khi thiết lập kết nối bằng socket, mỗi bên của kết nối được gán với một cặp địa chỉ IP và số cổng. Điều này cho phép các máy tính khác nhau có thể giao tiếp với nhau một cách độc lập thông qua các kênh giao tiếp được thiết lập socket.

Có hai kiểu socket:

 AF_UNIX: chỉ cho phép giao tiếp giữa các quá trình trong cùng một máy tính

 AF_INET: cho phép giao tiếp giữa các q trình trên những máy tính khác nhau.

Trong dự án này, nhóm thực hiện dùng kiểu socket AF_UNIX để tương tác giữa hai user khác nhau.

Để thực hiện các cuộc giao tiếp, q trình cần có cổng của socket mà mình sử dụng. Mỗi cổng giao tiếp thể hiện một địa chỉ xác định trong hệ thống.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<i>Hình 3: Ports</i>

Số hiệu cổng gán cho socket phải duy nhất trên máy tính, có giá trị trong khoảng 0 – 65535 (16bit), các cổng từ 1 – 1023 được dành riêng cho các quá trình

Sử dụng trong các ứng dụng yêu cầu kết nối tin cậy, đảm bảo việc truyền dữ liệu an tồn và có thứ tự. Khi sử dụng socket TCP, một kết nối đường truyền được thiết lập giữa client và server, và dữ liệu được truyền đi qua kết nối này theo trình tự được đảm bảo.

 <b>Socket UDP: </b>

Sử dụng trong các ứng dụng yêu cầu truyền dữ liệu một cách nhanh chóng và không cần đảm bảo việc truyền dữ liệu tin cậy. Khi sự dụng socket UDP, dữ liệu được gửi dưới dạng các gói tin độc lập mà khơng cần thiết lập kết nối đường truyền.

Trong dự án, nhóm sử dụng giao thức có kết nối sử dụng giao thức TCP vì các lý do sau:

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

 Đảm bảo truyền dữ liệu an tồn và có thứ tự.  Kết nối tin cậy giữa client và server.  Quản lý kết nối đa chiều.

<i>3. Mơ hình client – server</i>

Mơ hình client – server là một mơ hình phân tán trong đó các ứng dụng được chia thành hai phần chính: client (người dùng) và server (máy chủ). Trong mơ hình này, client và server tương tác với nhau thơng mạng.

<i>Hình 4: Mơ hình client - server</i>

Trong mơ hình client – server, server đóng vai trị như là một trung tâm điều khiên, cung cấp các dịch vụ và tài nguyên cho các client. Các client được cấp quyền truy cập vào các tài nguyên và dịch vụ của server thông qua các giao thức và phương thức truy cập HTPP, FTP, SSH, Telnet, và nhiều hơn nữa.

Các ứng dụng client – server rất phổ biến trong các môi trường mạng và Internet, bao gồm các ứng dụng web, email, trò chơi trực tuyến, hệ thống quản lý cơ sở dữ liệu và nhiều hơn nữa. Mơ hình client – server cho phép các ứng dụng phân tán trên nhiều máy trính và cho phép các người dùng truy cập và chia sẽ dữ liệu và tài ngun một cách dễ dàng.

Mơ hình client – server sử dụng TCP là một kiểu thiết kế mạng phổ biến trong đó client và server tương tác với nhau thông qua giao thức TCP (Transmission Control Protocol). Cách mơ hình hoạt động:

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

 Thiết lập kết nối:

 Client khởi tạo một yêu cầu kết nối tới server bằng cách gửi một yêu cầu kết nối đến địa chỉ IP và cổng của server.

 Server lắng nghe yêu cầu kết nối từ client trên cổng được chỉ định và chấp nhận kết nối từ client khi có u cầu.

<i>Hình 5: Giai đoạn 1 của hoạt động client - server sử dụng TCP</i>

 Gửi nhận và dữ liệu:

 Sau khi kết nối được thiết lập, client và server có thể gửi và nhận dữ liệu từ nhau.

 Dữ liệu được chia thành các gói tin và truyền đi qua kết nối TCP, đảm bảo tính tồn vẹn và đúng thứu tự của dữ liệu.

<i>Hình 6: Giai đoạn 2 của mơ hình hoạt động client - server sử dụng TCP</i>

 Xử lý yêu cầu:

 Server nhận dữ liệu từ client và thực hiện xử lý yêu cầu tương ứng.  Sau khi xử lý, server có thể gửi lại kết quả cho client, hoặc tiếp tục duy trì

kết nối thực hiện các tương tác tiếp theo.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<i>Hình 7: Giai đoạn 3 của mơ hình hoạt động client - server sử dụng TCP</i>

 Kết thúc kết nối:

 Khi quá trình trao đổi dữ liệu hồn tất, client hoặc server có thể đóng kết nối bằng cách gưi một tín hiệu kết thúc kết nối.

 Server lắng nghe và chấp nhận các yêu cầu đóng kết nối từ client, và sau đó đóng kết nối.

<i>Hình 8: Giai đoạn 4 của mơ hình client - servet sử dụng TCP</i>

Mơ hình client – server sử dụng TCP được sử dụng trong dự án vì đáp ứng được tính tin cậy và đảm bảo tính tốn vẹn của dữ liệu. Điều này là do TCP cung cấp một kết nối tin cậy giữa client và server, đảm bảo rằng dữ liệu được truyền đi một cách an toàn và có thứ tự.

<i>4. Mơ hình MVC</i>

MVC là viết tắt của cụm từ “Model – View – Controller”. Đây là mơ hình thiết kế được sử dụng trong kỹ thuật phần mềm. MVC là một mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính. MVC chia thành ba phần được kết nối với nhau và mỗi thành phần đều có một nhiệm vụ riêng của nó và độc lập với các thành phần khác. Tên gọi 3 thành phần:

 Model (dữ liệu): quản lí xử lí các dữ liệu.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

 View (giao diện): nơi hiển thị dữ liệu cho người dùng.

 Controller (bộ điều khiển): điều khiển sự tương tác của hai thành phần Model

 Model: là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng và là cầu nối giữa 2 thành phần khác là View và Controller. Một model là dữ liệu được sử dụng bởi chương trình. Đây có thể là cơ sở dữ liệu, hoặc file XML bình thường hay một đối tượng đơn giản.

 <b>View: đây là phần giao diện dành cho người sử dụng. View là phương tiện</b>

hiển thị các đối tượng trong một ứng dụng. Chẳng hạn như hiện thị một cửa sổ, nút hay văn bản trong một cửa số khác. Nó bao gồm bất cứ thứ gì mà người dùng có thể nhìn thấy được.

 <b>Controller: là bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến</b>

thông qua View. Một controller bao gồm cả Model lẫn View. Nó nhận input và thực hiện các update tương ứng.

Luồng xử lý trong MVC:

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

 Khi một yêu cầu của từ client gưi server. Thì bị Controller trong MVC chặn lại để xem đó là URL request hay event.

 Sau đó, Controller xử lý input của user rồi giap tiếp với Model trong MVC.  Model chuẩn bị data và gửi lại cho Controller.

 Cuối cùng, khi xử lý xong yêu cầu thì Controller gửi dữ liệu trở lại View và hiện thị cho người dùng trên trình duyệt.

<i>5. Đa luồng</i>

<i>Hình 10: Đa luồng</i>

Đa luồng (multithreading) là một kỹ thuật cho phép một chương trình chia thành nhiều luồng thực thi đồng thời. Mỗi luồng thực hiện một tác vụ riêng biệt, cho phép chương trình thực hiện nhiều cơng việc cùng lúc và tăng hiệu suất tổng thể của ứng dụng. Dưới đây là số điểm quan trọng về đa luồng:

 <b>Tăng hiệu suất: Đa luồng cho phép các tác vụ được thực hiện đồng thời,</b>

giúp tăng hiệu suất của chương trình bằng cách sử dụng tài nguyên hệ thống hiệu quả hơn.

 <b>Phản hồi tương tác: Đa luồng cho phép ứng dụng vẫn có thể phản hồi tương</b>

tác với người dùng trong khi thực hiện các tác vụ phức tạp khác mà khơng gây tình trạng đóng băng hoặc chậm trễ.

 <b>Tận dụng CPU đa lõi: Trên các máy tính có nhiều lõi CPU, việc sử dụng đa</b>

luồng cho phép chương trình tận dụng tối đa khả năng xử lý song song của các lõi.  <b>Xử lý các tác vụ đồng thời: Đa luồng thường được sử dụng để xử lý các tác</b>

vụ đồng thời như gửi và nhận dữ liệu qua mạng, xử lý dữ liệu đồng thời từ nhiều nguồn, hoặc tương tác với người dùng trong khi thực hiện các tác vụ nền.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

 <b>Quản lý tài nguyên chia sẻ: Khi sử dụng đa luồng, cần phải chú ý đến việc</b>

quản lý tài nguyên chia sẻ như biến toàn cục hoặc bộ nhớ, để tránh các vấn đề như xung đột và đồng bộ hóa dữ liệu.

Trong dự án của nhóm, việc sử dụng đa luồng có thể hữu ích để xử lý các tác vụ đồng thời như xử lý yêu cầu từ nhiều người chơi cùng một lúc, cập nhật trạng thái của trò chơi và hiển thị giao diện người dùng một cách mượt mà và phản hồi.

<b>III. GIỚI THIỆU MÔI TRƯỜNG PHẦN MỀM</b>

<i>1. Java</i>

Java là một ngơn ngữ lập trình phổ biến, mạnh mẽ và đa năng. Ra mắt lần đầu vào năm 1995, cho đến bây giờ Java được sử dụng rộng rãi trong nhiều loại ứng dụng khác nhau. Các đặc điểm quan trọng của Java:

 Đa nền tảng: Java được thiết kể để có thể chạy trên nhiều nền tảng khác nhau mà không cần đổi mã nguồn, nhờ vào máy ảo Java.

 Hướng đối tượng: Java hỗ trợ lập trình hướng đối tượng, giúp dễ quản lý mã nguồn, tái sử dụng mã và phát triển ứng dụng phức tạp.

 An toàn và bảo mật: Java có các tính năng bảo mật tích hợp để ngăn chặn các lỗ hổng bảo mật và chống lại các cuộc tấn công.

 Phong phú với thư viện: Java đi kèm với một bộ thư viện phong phú, cung cấp các cơng cụ và API để phát triển nhanh chóng và dễ dàng các ứng dụng phức tạp.

Java không chỉ là một ngơn ngữ lập trình, mà cịn là một nền tảng phát triển toàn diện, cung cấp một loạt các công cụ và tài nguyên để phát triển ứng dụng từ nhỏ đến lớn. Trong hệ sinh thái Java, Java Development Kit (JDK) là trung tâm, cung cấp môi trường phát triển và thực thi đầy đủ cho các ứng dụng Java.

<i>2. Java Swing</i>

Java Swing là một phần của Java Development Kit (JDK), cung cấp bộ công cụ GUI mạnh mẽ để phát triển giao diện người dùng đồ họa cho các ứng dụng Java. Với Swing, ta có thể tạo ra các ứng dụng desktop phong phú và linh hoạt, với các thành phần giao diện người dùng như nút, ô văn bản, hộp thoại, bảng và nhiều hơn nữa phù hợp cho nhu cầu cụ thể của dự án là tạo ra một trò chơi game Caro.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Sử dụng Java Swing, ta có thể tùy chỉnh giao diện người dùng của mình theo ý muốn, từ việc thay đổi màu sắc, phông chữ, đến tạo ra các thành phần giao diện người dùng tùy chỉnh hoàn toàn. Điều này giúp bạn xây dựng các ứng dụng có giao diện người dùng đẹp mắt và chuyên nghiệp, đồng thời đảm bảo sự linh hoạt và dễ bảo trì.

Với sự kết hợp của Java và Java Swing, nhóm có thể phát triển các ứng dụng desktop mạnh mẽ và linh hoạt, giúp bạn đáp ứng được các yêu cầu của đề tài một cách hiệu quả.

<i>3. MySQL</i>

MySQL là một hệ quản trị cơ sở dữ liệu phổ biến và mạnh mẽ, được sử dụng rộng rãi trong việc lưu trữ và quản lý dữ liệu trong các ứng dụng phát triển phần mềm. Với MySQL, ta có thể tổ chức và truy cập dữ liệu một cách hiệu quả, đồng thời đảm bảo tính tồn vẹn và bảo mật của dữ liệu.

MySQL có nhiều đặc điểm và ưu điểm quan trọng:

 Miễn phí và mã nguồn mở (Open-source): MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, cho phép sử dụng, phát triển và phân phối một cách tự do, giúp giảm chi phí cho dự án.

 Phù hợp cho các ứng dụng nhỏ đến lớn (Suitable for small to large-scale applications): MySQL có khả năng mở rộng từ các ứng dụng nhỏ đến các hệ thống phức tạp với hàng triệu bản ghi, giúp xây dựng ứng dụng mở rộng dễ dàng.

 Tính linh hoạt (Flexibility): MySQL hỗ trợ nhiều loại dữ liệu và loại câu lệnh truy vấn phong phú, cho phép tùy chỉnh cơ sở dữ liệu theo nhu cầu cụ thể của ứng dụng.

 Hiệu suất cao (High Performance): MySQL được tối ưu hóa để đạt hiệu suất cao, cho phép xử lý một lượng lớn dữ liệu một cách nhanh chóng và hiệu quả, giúp ứng dụng hoạt động mượt mà và đáp ứng được các yêu cầu của người dùng.

Trong dự án của nhóm, MySQL đóng vai trò quan trọng như là một hệ quản trị cơ sở dữ liệu (Hệ quản trị cơ sở dữ liệu – DBMS) để lưu trữ và quản lý dữ liệu của trị chơi.

IV. THIẾT KẾ TRỊ CHƠI

</div>

×