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 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 Game máy tính ngày càng phát triển nhanh và lan rộng ra do sự lôi cuốn rất mạnh mẽ của nó. Hầu như ai đã sử dụng máy tính đều đã giải trí bằng một số game nào đó trên máy tính. Có thể nói Game là một thể loại phong phú nhất trong tất cả các loại chương trình trên máy tính. Trong qua quá trình học tập và miệt mài nghiên cứu về chuyên môn của ngành, nhóm chúng em đã tiếp thu được một số kiến thức hữu ích cho bản thân, nhằm đánh giá kết quả đã đạt được trong quá trình học tập, nhóm em đã hoàn thành bài báo cáo của môn học này.Hình thức trình bày và nội dung của bài báo cáo có nhiều mặt còn thiếu sót mong nhận được sự đóng góp ý kiến từ phía thầy cô và các bạn nhằm để bổ sung vào lỗ hỏng kiến thức cho hình thức và nội dung của bài báo cáo được đầy đủ hơn và sau đó là áp dụng cho những môn học sau được tốt hơn.Ngày nay hầu hết tất cả các game điều chơi online trên Internet. Với một lượng người chơi khổng lồ. Nhằm đáp ứng yêu cầu của người chơi hôm nay nhóm chúng em đã lập trình “Game Caro online”. Nhằm mục đích giúp cho người chơi giải trí.
Trang 1TRƯỜNG ĐẠI HỌC TRÀ VINH
KHOA KĨ THUẬT VÀ CÔNG NGHỆ
Giảng Viên: NGUYỄN BẢO ÂN
Sinh Viên Thực Hiện
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Giáo Viên Hướng Dẫn
Nguyễn Bảo Ân
Trang 3em hoàn thành bài báo cáo này.
Nhóm em xin chân thành cảm ơn thầy và giáo viên Khoa Công Nghệ Thông TinTrường Đại Học Trà Vinh đã hướng dẫn và truyền đạt những kiến thức cơ bản cho nhómchúng em làm cơ sở và nền tảng để thực hiện đề tài này.Em cũng xin chân thành cảm ơn sựgiúp đỡ và những đóng góp quý báo của các bạn trong lớp đã giúp nhóm chúng em hoànthành đề tài này Do kiến thức còn giới hạn nên không tránh được những sai sót khuyết điểm
do đó nhóm chúng em rất mong nhận được sự đóng góp ý kiến của thầy và các bạn từ đónhóm chúng em rút ra những kinh nghiệm để hoàn thành tốt hơn trong những bài làm lầnsau
Xin chân thành cảm ơn !
Sinh viên thực hiện:
1 Nguyễn Văn An
2 Lê Phú An
3 Huỳnh Văn Đô
4 Lê Thị Tú
5 Lê Ngọc Hường
Trang 4Trong qua quá trình học tập và miệt mài nghiên cứu về chuyên môn của ngành,nhóm chúng em đã tiếp thu được một số kiến thức hữu ích cho bản thân, nhằm đánh giá kếtquả đã đạt được trong quá trình học tập, nhóm em đã hoàn thành bài báo cáo của môn họcnày.
Hình thức trình bày và nội dung của bài báo cáo có nhiều mặt còn thiếu sót mongnhận được sự đóng góp ý kiến từ phía thầy cô và các bạn nhằm để bổ sung vào lỗ hỏng kiếnthức cho hình thức và nội dung của bài báo cáo được đầy đủ hơn và sau đó là áp dụng chonhững môn học sau được tốt hơn
Ngày nay hầu hết tất cả các game điều chơi online trên Internet Với một lượngngười chơi khổng lồ Nhằm đáp ứng yêu cầu của người chơi hôm nay nhóm chúng em đã lậptrình “Game Caro online”.Nhằm mục đích giúp cho người chơi giải trí
Xin chân thành cảm ơn!
Trang 5NỘI DUNG CHƯƠNG I: GIỚI THIỆU
1 Lý do chọn đề tài
Ngày nay, do nhu cầu đời sống của con người ngày càng được nâng cao, trong đó nhucầu 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 Gamemáy tính ngày càng phát triển nhanh và lan rộng ra do sự lôi cuốn rất mạnh mẽ của nó Hầunhư ai đã sử dụng máy tính đều đã giải trí bằng một số game nào đó trên máy tính Có thểnói Game là một thể loại phong phú nhất trong tất cả các loại chương trình trên máy tính chonên nhóm chúng em chọn đề tài “game caro online”
Thứ nhất là giúp cho người chơi giải trí.
Thứ hai, trong quá trình học tập nhóm chúng em được sự tận tình chỉ bảo của thầy
Nguyễn Bảo Ân, đã truyền đạt cho nhóm chúng em những kiến thức hữu ích để nhóm chúng
em được hoàn thành báo cáo tốt hơn
Thứ ba, việc viết game bằng ngôn ngữ Java cung cấp cho nhóm chúng em có khả năng
tiếp cận, tìm hiểu ngôn ngữ mới, nâng cao kinh nghiệm lập trình để sau này có thể tìm có thểtham gia vào các dự án lớn hơn
2 Mục tiêu, kết quả đề tài
Giúp cho người chơi có thể giải trí
Xây dựng được một chương trình game caro online có thể chơi trên mạng, có thể chơinhiều cặp với nhau
Trang 6CHƯƠNG II: CƠ SỞ LÝ THUYẾT
1 Sơ lược về hệ thống mạng máy tính và hệ phân tán
a Hệ thống mạng máy tính
- Các thiết bị truyền dẫn kết nối các máy tính cục bộ và trên diện rộng và liên lạc
với nhau qua các giao thức.
- Hệ thống mạng máy tính có ở khắp nơi như:
=> Tồn tại nhiều máy tính xử lý độc lập
- Hệ phân tán tập trung vào các ứng dụng, mọi hệ phân tán phụ thuộc vào các dịch vụ được cung cấp bởi hệ thống mạng máy tính.
2 Các giao thức mạng
a Giao thức IP
- IP là một số nguyên 32 bit, thường được biểu diễn dưới dạng một dãy 4 số nguyên
cách nhau bởi dấu chấm Một số nguyên trong địa chỉ IP là một byte, thường được gọi làmột octet (8 bits)
- Một địa chỉ IP gồm có 3 phần
+ Phần đầu tiên là địa chỉ mạng (network address)
Trang 7+ phần thứ cuối cùng là địa chỉ máy (host address).
+ phần còn lại (nếu có) là địa chỉ mạng con (subnet address)
- Địa chỉ IP được chia ra làm 5 lớp mạng (lớp A, B, C, D và E) trong đó 4 lớp đầu được sửdụng còn lớp E dành để nghiên cứu, lớp D dung cho việc phát triển các thông tinbroadcast/multicast, lớp A,B,C được dung trong cuộc sống hàng ngày
b Giao thức TCP
- TCP là giao thức truyên thông định hướng kết nối, việc truyền trong mạng là tin cậy
dựa trên các tính năng retransmission, flowcontrol và kiểm tra lỗi
- TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các ứng dụng kếtquả, trong đó có WWW, thư điện tử và Secure Shell
- Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên dưới vàmột ứng dụng bên trên Các ứng dụng thường cần các kết nối đáng tin cậy kiểu đườngống để liên lạc với nhau, trong khi đó, giao thức IP không cung cấp những dòng kiểu đó, màchỉ cung cấp dịch vụ chuyển gói tin không đáng tin cậy TCP làm nhiệm vụ của tầng giaovận trong mô hình OSI đơn giản của các mạng máy tính
- Các ứng dụng gửi các dòng gồm các byte 8-bit tới TCP để chuyển qua mạng TCPphân chia dòng byte này thành các đoạn có kích thước thích hợp (thường được quyết địnhdựa theo kích thước của đơn vị truyền dẫn tối đa của tầng liên kết dữ liệu của mạng mà máytính đang nằm trong đó) Sau đó, TCP chuyển các gói tin thu được tới giao thức IP để gửi nóqua một liên mạng tới mô đun TCP tại máy tính đích TCP kiểm tra để đảm bảo không cógói tin nào bị thất lạc bằng cách gán cho mỗi gói tin một "số thứ tự" Số thứ tự này còn được
sử dụng để đảm bảo dữ liệu được trao cho ứng dụng đích theo đúng thứ tự Mô-đun TCP tạiđầu kia gửi lại "tin báo nhận" cho các gói tin đã nhận được thành công; một "đồng hồ" tạinơi gửi sẽ báo thời gian nếu không nhận được tin báo nhận trong khoảng thời gian bằngmột round-trip time, và dữ liệu (được coi là bị thất lạc) sẽ được gửi lại TCP sử
dụng checksum (giá trị kiểm tra) để xem có byte nào bị hỏng trong quá trình truyền hay
không; giá trị này được tính toán cho mỗi khối dữ liệu tại nơi gửi trước khi nó được gửi, vàđược kiểm tra tại nơi nhận
Trang 8c Giao thức UDP
- UDP là một trong những giao thức cốt lõi của giao thức TCP/IP Dùng UDP, chương
trình trên mạng máy tính có thể gởi những dữ liệu ngắn được gọi là datagram tới máy khác.
UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà TCP làm; các gói dữ liệu có thểđến không đúng thứ tự hoặc bị mất mà không có thông báo Tuy nhiên UDP nhanh và hiệuquả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian Do bảnchất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với sốlượng lớn người yêu cầu
3 Mô hình Client, Servers
- Mô hình client/server là một mô hình nổi tiếng trong mạng máy tính, được áp dụng rất
rộng rãi và là mô hình của mọi trang web hiện có Ý tưởng của mô hình này là máy con(đóng vài trò là máy khách) gửi một yêu cầu để máy chủ (đóng vai trò người cung ứng dịchvụ), máy chủ sẽ xử lý và trả kết quả về cho máy khách
Trang 94 Lập trình Socket
- Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương trình yêucầu dịch vụ ( client) và một chương trình cung cấp dịch vụ (server) trên mạng LAN, WANhay Internet và đôi lúc là giữa những quá trình ngay bên trong máy tính Mỗi socket có thểđược xem như một điểm cuối trong một kết nối Một socket trên máy yêu cầu dịch vụ có địachỉ mạng được cấp sẵn để “gọi” một socket trên máy cung cấp dịch vụ Một khi socket đãđược thiết lập phù hợp, hai máy tính có thể trao đổi dịch vụ và dữ liệu
- Để tạo 1 ứng dụng sử dụng socket thì cần phải có server và client
- Server và client sẽ gửi và nhận dữ liệu thông qua socket cụ thể: Client sẽ gửi yêu cầu có các tham số đến server, server nhận được các tham số và sẽ xử lý ở server rồi truyền trả lại cho client kết quả (1 ví dụ đơn giản là : client sẽ nhập 1 String và gửi nó cho server và server
sẽ đảo ngược String đó rồi trả lại cho client , cứ nhập như vậy cho đến khi Client đã chuỗi
"quit" thì sẽ thoát )
(File client)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor
public class Client {
public static void main(String args[])
Trang 10{
try {
String cau1;// Cau duoc gui toi server
String ketQua;//Cau duoc server xu ly va tra lai la in hoa
BufferedReader inFormUser= new BufferedReader(new InputStreamReader(System
in));// Tao input stream
Socket clientSocket= new Socket("172.16.1.1",8989);// Tao clinent socket de ket noi toi server
DataOutputStream sendToServer= new DataOutputStream(clientSocket.getOutputStream());// Tao output stream ket noi toi socket
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while(true)
{
cau1 = inFormUser.readLine();// Nhap vao 1 cau
sendToServer.writeBytes(cau1+'\n');// gui toi server
if (cau1.equalsIgnoreCase("quit"))// Gap chuoi quit
break;
ketQua = inFromServer.readLine();// Nhan lai tu server
System.out.println("FROM SERVER: "+ketQua);
Trang 11(File Servers)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor
public class Server {
public static void main(String args[])
{
try {
String cau;// Cau tu client gui toi
String ketQua = "";// Cau sau khi xu ly xong tra ve client
ServerSocket ss = new ServerSocket(8989);// Tao cong 8989 de server lang nghe while (true)// Cho client ket noi
{
// Khong dung multithread
Socket connectionSocket= ss.accept();
BufferedReader fromClient= new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));// Tao input stream
DataOutputStream sendToClient= new DataOutputStream(connectionSocket.getOutputStream());// Tao output stream
Trang 12// Thread.sleep(5000);// Giả sử server phải xử lý mất 5s
// Dao chuoi nhan duoc
StringBuilder str = new StringBuilder(cau);
Trang 13CHƯƠNG III: CHƯƠNG TRÌNH GAME
1 Mô tả ứng dụng
- Viết chương trình để thực hiện trò chơi đánh cờ caro trên mạng
- 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 hai người chơi có thể chat nói chuyển với nhau
- 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ánvớ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àonhững ô khác nhau ( nhấn vào ô màn mình định đánh) để nhanh chóng đạt được số ô thẳnghang 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 client
2 Phân tích ứng dụng
Dựa vào bài toán ta phải thực hiện những công việc sau:
- Tạo ra 1 Server cho game caro
- Tạo ra 1 Client cho game caro
- Máy Server tạo ra 1 Socket phục vụ kết nối từng cặp Client chơi
* Luật chơi của game được thiết lập như sau:
- Client kết nối trước thì được gọi là người chơi 1 và được đánh trước
- Client kết nối sau thì được gọi là người chơi 2 và đánh sau
- Client nào đánh được số ô trên hàng dọc, hàng ngang và đường chéo lớn hơn hoặc bằng 5
ô thì thắng cuộc.
- Client của 2 người cùng chơi với nhau chat nói chuyện với nhau
Trang 143 Giải thuật quét ma trận
Khi một trong hai người chơi đánh quân cờ của mình, từ điểm vừa đánh ta xét theo chiềudọc, chiều ngang và hai đường chéo Nếu có một dãy liên tiếp năm quân cờ (hoặc nhiều hơn)giống nhau thì thông báo người chơi đó đã chiến thắng và người còn lại đã bị thua
Khởi tạo biến đếm bằng 1
- Xét theo chiều dọc:
+ Từ điểm vừa đánh quân cờ, ta tăng dòng lên một đơn vị đồng thời giữ nguyên giá trịcột
+ Trong khi, dòng lớn hơn bằng 0 và nhỏ hơn 15 và cột lớn hơn bằng không và nhỏ hơn
15 và quân cờ tại vị trí mới này giống với quân cờ tại vị trí vừa đánh Ta tăng biến đếm lênmột đơn vị đồng thời tiếp tục tăng dòng lên một đơn vị và giữ nguyên giá trị cột, tiếp tụcvòng lặp Ngược lại, thoát khỏi vòng lặp
+ Từ điểm vừa đánh quân cờ, ta giảm dòng xuống một đơn vị đồng thời giữ nguyên giátrị cột
+ Trong khi, dòng lớn hơn bằng 0 và nhỏ hơn 15 và cột lớn hơn bằng không và nhỏ hơn
15 và quân cờ tại vị trí mới này giống với quân cờ tại vị trí vừa đánh Ta tăng biến đếm lênmột đơn vị đồng thời tiếp tục giảm dòng xuống một đơn vị và giữ nguyên giá trị cột, tiếp tụcvòng lặp Ngược lại, thoát khỏi vòng lặp
- Xét theo chiều ngang:
+ Từ điểm vừa đánh quân cờ, ta tăng cột lên một đơn vị đồng thời giữ nguyên giá trịdòng
+ Trong khi, dòng lớn hơn bằng 0 và nhỏ hơn 15 và cột lớn hơn bằng không và nhỏ hơn
15 và quân cờ tại vị trí mới này giống với quân cờ tại vị trí vừa đánh Ta tăng biến đếm lênmột đơn vị đồng thời tiếp tục tăng cột lên một đơn vị và giữ nguyên giá trị dòng, tiếp tụcvòng lặp Ngược lại, thoát khỏi vòng lặp
Trang 15+ Từ điểm vừa đánh quân cờ, ta giảm cột xuống một đơn vị đồng thời giữ nguyên giá trịdòng.
+ Trong khi, dòng lớn hơn bằng 0 và nhỏ hơn 15 và cột lớn hơn bằng không và nhỏ hơn
15 và quân cờ tại vị trí mới này giống với quân cờ tại vị trí vừa đánh Ta tăng biến đếm lênmột đơn vị đồng thời tiếp tục giảm cột xuống một đơn vị và giữ nguyên giá trị dòng, tiếp tụcvòng lặp Ngược lại, thoát khỏi vòng lặp
- Xét theo đường chéo chính:
+ Từ điểm vừa đánh quân cờ, ta tăng dòng lên một đơn vị đồng thời giảm cột xuống mộtđơn vị
+ Trong khi, dòng lớn hơn bằng 0 và nhỏ hơn 15 và cột lớn hơn bằng không và nhỏ hơn
15 và quân cờ tại vị trí mới này giống với quân cờ tại vị trí vừa đánh Ta tăng biến đếm lênmột đơn vị đồng thời tiếp tục tăng dòng lên một đơn vị và giảm cột xuống một đơn vị, tiếptục vòng lặp Ngược lại, thoát khỏi vòng lặp
+ Từ điểm vừa đánh quân cờ, ta giảm dòng xuống một đơn vị đồng thời tăng cột lên mộtđơn vị
+ Trong khi, dòng lớn hơn bằng 0 và nhỏ hơn 15 và cột lớn hơn bằng không và nhỏ hơn
15 và quân cờ tại vị trí mới này giống với quân cờ tại vị trí vừa đánh Ta tăng biến đếm lênmột đơn vị đồng thời tiếp tục giảm dòng xuống một đơn vị và tăng cột lên một đơn vị, tiếptục vòng lặp Ngược lại, thoát khỏi vòng lặp
- Xét theo đường chéo phụ:
+ Từ điểm vừa đánh quân cờ, ta tăng dòng lên một đơn vị đồng thời tăng cột lên một đơnvị
+ Trong khi, dòng lớn hơn bằng 0 và nhỏ hơn 15 và cột lớn hơn bằng không và nhỏ hơn
15 và quân cờ tại vị trí mới này giống với quân cờ tại vị trí vừa đánh Ta tăng biến đếm lênmột đơn vị đồng thời tiếp tục tăng dòng lên một đơn vị và tăng cột lên một đơn vị, tiếp tụcvòng lặp Ngược lại, thoát khỏi vòng lặp
Trang 16+ Từ điểm vừa đánh quân cờ, ta giảm dòng xuống một đơn vị đồng thời giảm cột xuốngmột đơn vị.
+ Trong khi, dòng lớn hơn bằng 0 và nhỏ hơn 15 và cột lớn hơn bằng không và nhỏ hơn
15 và quân cờ tại vị trí mới này giống với quân cờ tại vị trí vừa đánh Ta tăng biến đếm lênmột đơn vị đồng thời tiếp tục giảm dòng xuống một đơn vị và giảm cột xuống một đơn vị,tiếp tục vòng lặp Ngược lại, thoát khỏi vòng lặp
- Trả về biến đếm
Nếu quét hết ma trận mà không có người chơi nào giành chiến thắng thì thông báo haingười chơi hòa nhau