Đồ án Ứng dụng cờ Caro qua mạng trên Android

MỤC LỤC

DANH MỤC HÌNH VẼ VI

TỔNG QUAN ĐỀ TÀI 1

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 2

1.1. Giới thiệu trò chơi cờ Caro 2

1.1.1. Lịch sử nguồn gốc 2

1.1.2. Luật chơi cờ Caro 2

1.2. Tổng quan về mạng máy tính 2

1.2.1. Khái niệm mạng máy tính 2

1.2.2. Các mô hình phân tầng mạng 2

1.3. Mô hình Client – Server 4

1.3.1. Nguyên lý hoạt động 5

1.3.2. Ưu điểm nhược điểm mô hình Client – Server 5

1.4. Giao thức TCP/IP 6

1.5. Khái niệm Socket 6

1.6. Giới thiệu hệ điều hành Android 7

1.6.1. Android là gì ? 7

1.6.2. Các phiên bản HĐH Android 7

1.6.3. Các thành phần của ứng dụng Android 8

CHƯƠNG 2: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH 9

2.1. Các chức năng chính 9

2.1.1. Chương trình Server 9

2.1.2. Chương trình Client 9

2.2. Thread trong ứng dụng 9

2.3. Xây dựng chương trình Server 10

2.3.1. Tổ chức quản lý Client 10

2.3.2. Tổng quát chương trình Server 10

2.3.3. Thread giao tiếp với Client 11

2.3.4. Một số thuật toán chương trình chức năng 12

2.4. Xây dựng chương trình Client 13

2.4.1. Xây dựng bàn cờ 13

2.4.2. Thread gửi dữ liệu 15

2.4.3. Thread nhận dữ liệu 16

2.5. Giao diện chương trình 17

2.5.1. Chương trình Server 17

2.5.2. Chương trình Client 17

CHƯƠNG 3: KẾT LUẬN VÀ ĐÁNH GIÁ 20

3.1. Kết quả đạt được 20

3.2. Tồn tại chưa giải quyết 20

3.3. Hướng phát triển 20

 

 

docx25 trang | Chuyên mục: Android | Chia sẻ: dkS00TYs | Lượt xem: 5109 | Lượt tải: 1download
Tóm tắt nội dung Đồ án Ứng dụng cờ Caro qua mạng trên Android, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ng quá trình truyền dữ liệu kênh kết nối này phải được duy trì.
Quá trình thiết lập kênh kết nối được thực hiện bởi một quá trình gọi là bắt tay ba bước.
Bước 1: Giao thức TCP máy gửi phải yêu cầu thiết lập một kênh truyền bằng cách gửi một phân đọan (Segment) gọi là SYN đến giao thức TCP máy nhận.
Bước 2: Giao thức TCP máy nhận gửi trả lại một đoạn phân đoạn (Segment) gọi là ACK để xác nhận đã nhận thành công.
Bước 3: Giao thức TCP máy gửi tiếp tục gửi một phân đoạn ACK để xác nhận và sau đó là truyền dữ liệu.
Hình 1.7: Quá trình bắt tay ba bước
Khái niệm Socket
Socket được xem là là điểm giao tiếp của ứng dụng mạng, do đó chương trình Client/Server sẽ thực hiện hai thao tác cơ bản sau:
Để truyền dữ liệu, chương trình chỉ cần ghi dữ liệu vào socket.
Để nhận dữ liệu, chương trình đọc dữ liệu từ socket.
Có 2 loại socket là TCP socket và UDP socket tương ứng với 2 giao thức TCP và UDP.
Hình 1.8: Socket trong mô hình TCP/IP
Giới thiệu hệ điều hành Android
Android là gì ?
Android là hệ điều hành(viết tắt HDH) được phát triển dựa trên nền tảng Linux, nó được thiết kế chủ yếu dành cho các thiết bị số sử dụng màn hình cảm ứng như điện thoại thông minh và máy tính bảng(và hiện nay là cả một số đầu phát HD). Android đang được phát triển bởi công ty Google cùng với liên minh thiết bị cầm tay mở rộng (viết tắt OHA). Ban đầu Android được phát triển bởi công ty liên hợp android, được google hỗ trợ tài chính và mua lại vào năm 2005. Android được công bố trong năm 2007 cùng với sự thành lập của liên minh thiết bị cầm tay mở rộng(OHA), một liên đoàn bao gồm 86 thành viên là các công ty hoạt động trong các mảng phần cứng, phần mềm, viễn thông dành cho việc thúc đẩy các tiêu chuẩn mở cho các thiết bị di động.
Các phiên bản HĐH Android
Từ năm 2008, HDH Android đã được cập nhật rất nhiều và đã từng bước cải tiến hệ thống điều hành, bổ sung thêm các tính năng mới và sửa chữa các lỗi trong phiên bản trước. Mỗi bản phát hành chính được đặt tên theo thứ tự chữ cái sau một món tráng miệng hoặc thức ăn có đường.
Phiên bản
Tên mã
Ngày phát hành
1.6
Donut
15/9/2009
2.0–2.1
Eclair
26/10/2009
2.2
Froyo
20/5/2010
2.3.3–2.3.7
Gingerbread
9/2/2010
2.3–2.3.2
Gingerbread
6/12/2010
3.1
Honeycomb
10/5/2011
3.2
Honeycomb
15/7/2011
4.0.x
Ice Cream Sandwich
16/12/2011
4.1.x
Jelly Bean
9/7/2012
4.2.x
Jelly Bean
13/11/2012
4.3
Jelly Bean
25/7/2013
4.4
KitKat
10/2013
Các thành phần của ứng dụng Android
Activity: là lớp thể hiện ứng dụng. Mỗi màn hình trong ứng dụng là một mở rộng của lớp Activity. Các Activity sử dụng các View tạo thành giao diện đồ họa tương tác người dùng để thể hiện thông tin và phản hồi hành động của người dùng.
Service: là thành phần chạy ẩn, cập nhật nguồn dữ liệu và thể hiện các Activity, kích hoạt các Notification. Các Service thường thực hiện các xử lí thông thường như tiếp tục Activity sau khi các Activity này không hoạt động hoặc hiển thị.
Content Provider: là thành phần lưu trữ dữ liệu chia sẻ. Content Provider quản lí và chia sẻ cơ sở dữ liệu của ứng dụng. Chúng được coi như là phương tiện chia sẻ dữ liệu giữa các ứng dụng.
Intent: là cấu trúc truyền thông điệp giữa các ứng dụng. Chúng ta có thể sử dụng Intent để truyền một thông tin tới toàn hệ thống hay tới Activity hay Service định trước để thực thi một hoạt động. Hệ thống sau đó sẽ xác định đối tượng nào sẽ thực hiện các hoạt động phù hợp.
Broadcast Receiver: là nơi nhận các Intent. Chúng ta có thể tự tạo một Broadcast Receiver để ứng dụng có thể nhận được các Intent phù hợp với bộ lọc đặt trước. Broadcast Receiver tự động bắt đầu khi ứng dụng phản hồi với Intent nhận được và biến ứng dụng trở thành hướng sự kiện một cách hoàn hảo.
Widget: thành phần trực quan của ứng dụng có thể thêm vào màn hình chính. Là một dạng Broadcast Receiver, Widget cho phép người dùng tạo ra các ứng dụng động, tương tác được nhúng ngay trên màn hình chính.
Notification: là thành phần thông báo cho người dùng. Hộp thoại thông báo cho người dùng mà không gián đoạn các Activity hiện thời. Đây là kĩ thuật thông báo cho người dùng năm trong một Service hay một Broadcast Receiver.
CHƯƠNG 2: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH
Các chức năng chính
Chương trình Server
Đăng nhập: Chương trình Server sẽ nhận một tên đăng nhập từ phía người dùng gửi đến và kiểm tra nếu tên đăng nhập này đã được sử dụng chương trình Server sẽ thông báo cho người dùng chọn một tên đăng nhập khác, ngược lại cho phép người chơi đăng nhập vào hệ thống.
Đăng xuất: khi một người chơi gửi yêu cầu đăng xuất chương trình Server sẽ xóa các thông tin người chơi khỏi hệ thống. 
Chuyển tiếp dữ liệu: Chương trình Server sẽ nhận dữ liệu từ Client này và chuyển tiếp dữ liệu đến Client khác nhằm cho phép các Client giao tiếp với nhau.
Chương trình Client
Đăng nhập: Người chơi sẽ cung cấp một tên đăng nhập và yêu cầu đăng nhập vào hệ thống.
Đăng xuất: Người chơi gửi yêu cầu để được đăng xuất khỏi hệ thống.
Chơi game: Người dùng sẽ chọn một trong số người chơi này để yêu cầu bắt đầu game, nếu người chơi đồng ý một ván đấu sẽ bắt đầu và chỉ kết thúc khi có một người thắng cuộc hoặc một trong hai người chơi xin thua. 
Trò chuyện: Trong lúc một ván đấu đang diễn ra hai người người chơi có thể gửi tin nhắn cho nhau.
Thread trong ứng dụng
Thread là đơn vị nhỏ nhất của tiến trình được định thời bởi hệ điều hành và được bao hàm trong các tiến trình thực thi của máy tính. Mỗi một thread có một callstack cho các phương thức, đối số và biến cục bộ của thread đó.
Khai báo và khởi động Thread
class A extends Thread {
	 Public void run() {…} 
}
 New A().start();
Xây dựng chương trình Server
Tổ chức quản lý Client
Khi một Client yêu cầu kết nối đến Server bằng cách khai báo một tên đăng nhập, nếu được chấp nhận Server sẽ lưu thông tin của Client để phục vụ liên lạc với Client này.
Hình 2.1: Cấu trúc danh sách Client
Tổng quát chương trình Server
Hình 2.2: Thuật toán chương trình Server
Hành động
Mã lệnh
Tạo socket
Gán cổng
ServerSocket serverSocket = new ServerSocket(port);
Port: số hiệu cổng có giá trị 1 – 65356.
Lắng nghe
Socket socket = serverSocket.accept();
Khi hàm accept thực hiện thì một đối tượng socket được tạo ra. Nghĩa là một kênh kết nối đã được thiết lập.
Khởi chạy thread giao tiếp
Sau khi kết kênh kết nối được thiết lập thread sẽ đảm nhiệm giữ kết nối và thực hiện các yêu cầu từ Client.
Class threadClient extent Thread{
Private Socket socComing;
Public threadClient(Socket soc){
this.socComing = soc;
}
Public void run(){...}
}
New ClientThread(socket).start();
Thread giao tiếp với Client
Hình 2. 3: Thuật toán giao tiếp với Client 
Hành động
Mã lệnh
Lắng nghe
Đọc dữ liệu
InputStreamReader inStream = new InputStreamReader(socComing.getInputStream());
	BufferedReader buffReader = new BufferedReader(inStream);
String strData = buffReader.readLine();
Hàm readLine() sẽ thực thi khi và trả về một chuỗi kí tự mà Client gửi lên. 
Phân tích yêu cầu
String arrData[] = strData.split("-");
Chuỗi kí tự Client gử lên Client có dạng: hành động - dữ liệu, do đó arrData[0] sẽ chứa thông tin về yêu cầu từ Client.
Đóng socket
socComing.close();
Trước khi đóng socket ta nên đóng các BufferedReade, InputStreamReader bằng phương thức close();
buffReader.close();inStream.colse();
**Gửi dữ liệu từ Server đến Client thực hiện lần lược các bước sau:
Duyệt tìm trong danh sách Client mà Server đang quản lý thông qua thuộc tính “Tên đăng nhập”.
Sử dụng phương thức println() và flush() của đối tượng PrintWriter để gửi dữ liệu đến Client.
Một số thuật toán chương trình chức năng
Chương trình đăng nhập
Hình 2.4: Thuật toán đăng nhập
Chương trình đăng xuất
Hình 2.5: Thuật toán Đăng xuất
Xây dựng chương trình Client
Xây dựng bàn cờ
Cấu trúc bàn cờ: bàn cờ có tất cả 100 ô được chia thành 9 dòng, 9 cột và được đánh số từ 0-99 như hình vẽ.
Hình 2.6: Cấu trúc bàn cờ
Xác định các vị trí trên bàn cờ: dữ liệu bàn cờ được lưu trong một danh sách, với mỗi phần tử trong danh sách chứa thông tin của một ô trên bàn cờ. Giả sử ta ta có vị trí ô X các vị trí A, B, C, D, E, F, G, H (Hình 2.6) được xác định theo công thức:
A = X – 10
E = X + 10
B = X – 9
F = X + 9
C = X + 1
G = X – 1
D = X + 11
H = X – 11
Dữ liệu bàn cờ: với mỗi ô sẽ nhận 1 trong 3 giá trị X, O, N với X quân cờ người chơi thứ nhất, O quân cờ người chơi thứ hai, N ô trống.
Hình 2.7: Dữ liệu bàn cờ
Sự kiện click trên bàn cờ: để bắt được sự kiện người chơi click trên bàn cờ cần sử dụng đối tượng OnItemClickListener được khai báo như sau:
OnItemClickListener click = new OnItemClickListener(){
@Override
	Public void onItemClick(AdapterView a, View a, int pos,long arg3)
{...} }
Hình 2.8: Thuật toán xử lý trong sự kiện click
Thread gửi dữ liệu
Hình 2.9: Thuật toán thread gửi dữ liệu
Thread nhận dữ liệu
Giao diện chương trình
Chương trình Server
Hình 3.1: Giao diện chương trình Server
Chương trình Client
Giao diện đăng nhập
Hình 3.2: Giao diện đăng nhập
Giao diện sau khi đăng nhập thành công
Hình 3.3: Giao diện đăng nhập thành công
Giao diện đợi người chơi chấp nhận lời mời
Hình 3.4: Giao diện mời người chơi
Giao diện thông báo lời mời
Hình 3. 5: Giao diện thông báo lời mời
Giao diện chơi game
Hình 3.6: Giao diện chơi game
Giao diện trò chuyện
Hình 3.7: Giao diện trò chuyện
CHƯƠNG 3: KẾT LUẬN VÀ ĐÁNH GIÁ
Kết quả đạt được
Hiểu và xây dựng được ứng dụng mạng cho phép truyền dữ liệu giữa các thiết bị người dùng theo mô hình Client – Server sử dụng giao thức TCP/IP.
Cở bản hoàn thành các chức năng cho phép hai người dùng thi đấu cở Caro qua mạng.
Tồn tại chưa giải quyết
Do kỹ thuật lập trình còn hạn chế, chưa có kinh nghiệm nên chương tình còn tồn tại nhiều lỗi và ngoại lệ.
Thuật toán kiểm tra người thắng cuộc chưa thực sự tối ưu.
Chưa tự động kết nối lại khi đường truyền bị ngắt.
Hướng phát triển
Do kỹ thuật lập trình còn hạn chế, chưa có kinh nghiệm nên chương tình còn tồn tại nhiều lỗi và ngoại lệ.
Giao diện chưa được đẹp mắt.
Chương trình chưa tối ưu.

File đính kèm:

  • docxĐồ án Ứng dụng cờ Caro qua mạng trên Android.docx
  • rarCaroClient.rar
  • rarCaroServer.rar
  • pptxĐồ án Ứng dụng cờ Caro qua mạng trên Android.pptx
Tài liệu liên quan