Xây dựng trò chơi Caro Trực tuyến trên Nền tảng Android

MỤC LỤC

CƠ SỞ LÝ THUYẾT

GIỚI THIỆU VỀ LẬP TRÌNH TRÊN HỆ ĐIỀU HÀNH ANDROID 1. TỔNG QUAN

    Hệ điều hành Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế với mục đích chính là dành cho các thiết bị di động cảm ứng như điện thoại thông minh hoặc máy tính bảng. Hiện tại Android là một hệ điều hành mở được phát triển bởi Liên Minh Thiết Bị Cầm Tay do Google dẫn đầu, cùng với các thành viên là những công ty hàng đầu về công nghệ và thiết bị di động trên toàn cầu như: T-mobile, HTC, Intel, LG, Qualcomm, Samsung Electronics, Sprint Nextel, Marvell Technology, Motorola,. Lợi thế đó giúp cho Android nhanh chóng trở thành một trong những hệ điều hành phổ biến nhất cho các thiết bị di động hiện nay, với những tính năng hoàn thiện.

    Android ngày càng lớn mạnh về số lượng và chất lượng bởi sự linh hoạt từ nền tảng Google, phù hợp với cả smartphone tầm thấp lẫn giá cao.

    Bảng 2.1 . Bảng tóm tắt các phiên bản của hệ điều hành android Phiên bản Tên Ngày phát hành Ghi chú
    Bảng 2.1 . Bảng tóm tắt các phiên bản của hệ điều hành android Phiên bản Tên Ngày phát hành Ghi chú

    Tầng liên kết dữ liệu (Data Link Layer)

    Tầng liên kết dữ liệu chính là nơi các cầu nối (bridge) và các thiết bị chuyển mạch (switches) hoạt động. Kết nối chỉ được cung cấp giữa các nút mạng được nối với nhau trong nội bộ mạng. Tuy nhiên, có lập luận khá hợp lý cho rằng thực ra các thiết bị này thuộc về tầng 2,5 chứ không hoàn toàn thuộc về tầng 2.

    Tầng giao dịch (Session layer)

    Tầng này thiết lập, quản lý và kết thúc các kết nối giữa trình ứng dụng địa phương và trình ứng dụng ở xa. Tầng này còn hỗ trợ hoạt động song công (duplex) hoặc bán song công (half-duplex) hoặc đơn công (Single) và thiết lập các qui trình đánh dấu điểm hoàn thành (checkpointing) - giúp việc phục hồi truyền thông nhanh hơn khi có lỗi xảy ra, vì điểm đã hoàn thành đã được đánh dấu - trì hoãn (adjournment), kết thúc (termination) và khởi động lại (restart). Mô hình OSI uỷ nhiệm cho tầng này trách nhiệm "ngắt mạch nhẹ nhàng" (graceful close) các phiên giao dịch (một tính chất của giao thức kiểm soát vận chuyển TCP) và trách nhiệm kiểm tra và phục hồi phiên, đây là phần thường không được dùng đến trong bộ giao thức TCP/IP.

    Tầng ứng dụng (Application layer)

    GIAO THỨC TCP/IP

    Giao thức TCP/IP được phát triển từ mạng ARPANET và Internet và được dùng như giao thức mạng và vận chuyển trên mạng Internet. TCP (Transmission Control Protocol) là giao thức thuộc tầng vận chuyển và IP (Internet Protocol) là giao thức thuộc tầng mạng của mô hình OSI. Hiện nay các máy tính của hầu hết các mạng có thể sử dụng giao thức TCP/IP để liên kết với nhau thông qua nhiều hệ thống mạng với kỹ thuật khác nhau.

    Giao thức TCP/IP thực chất là một họ giao thức cho phép các hệ thống mạng cùng làm việc với nhau thông qua việc cung cấp phương tiện truyền thông liên mạng. Do nhiều nguyên nhân như lịch sử, chi phí… nên bộ giao thức TCP/IP đã được sử dụng rất lâu trước khi mô hình OSI ra đời. Trong khi bộ giao thức TCP/IP có 4 (hoặc 5 tầng) thì mô hình OSI có tới 7 tầng với sự khác biệt là 2 tầng mới: tầng phiên và tầng trình diễn.

    • Trong khi mô hình OSI nhấn mạnh độ tin cậy được cung cấp trong dịch vụ chuyển dữ liệu thì đối với TCP/IP coi độ tin cậy nằm trong vấn đề end to end. • Trong mô hình OSI tất cả mọi tầng đều có phát hiện và kiểm tra lỗi, tầng vận chuyển chỉ làm nhiệm vụ kiểm tra độ tin cậy của source – to – destination. • Mô hình OSI được xây dựng trước khi các giao thức của nó được xây dựng, do vậy nó có tính tổng quát cao và có thể được dùng để mô tả các mô hình khác.

    Vì vậy bộ giao thức TCP/IP được sử dụng rộng rãi trong thực tế trong khi mô hình OSI lại phù hợp với mục đích học tập và giảng dạy. Các ứng dụng dùng UDP thường chỉ truyền những gói có kích thước nhỏ, độ tin cậy dữ liệu phụ thuộc vào từng ứng dụng + TCP (Transmission Control Protocol): Ngược lại với UDP, TCP cung cấp các kênh truyền thông hướng kết nối và đảm bảo truyền dữ liệu 1 cách tin cậy.

    Hình 2.6 . Mô hình TCP/IP và mô hình OSI
    Hình 2.6 . Mô hình TCP/IP và mô hình OSI

    GIỚI THIỆU VỀ LẬP TRÌNH SOCKET 1. KHÁI NIỆM VỀ SOCKET

    UDP cung cấp các kênh truyền thông phi kết nối nên nó không đảm bảo truyền dữ liệu 1 cách tin cậy. TCP thường truyền các gói tin có kích thước lớn và yêu cầu phía nhận xác nhận về các gói tin đã nhận.

    Tiến trình

    • NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU

      Xét ở góc độ lập trình, Socket là giao diện lập trình ứng dụng (API) hay bộ thư viện hàm hỗ trợ, dùng để nối kết chương trình ứng dụng với lớp mạng trong hệ thống mạng TCP/IP. Bằng cách vận dụng và kết hợp những kiến thức đã được trình bày ở chương 2, trong chương 3 này, tác giả sẽ vận dụng để xây dựng trò chơi cờ Caro online. Nếu đăng nhập thành công, Server sẽ tạo ra một token tương ứng với người đăng nhập để quản lý cùng với đó là thông tin những ai đang đăng nhập.

      Kể từ khi đăng nhập thành công, những thông tin được gửi từ Client đến Server sẽ gửi kèm theo token do Server tạo ra để đảm bảo thông tin được gửi chính là do Client đó gửi. Khi người chơi đi quân cờ, Server sẽ nhận và xử lý truyền thông tin nước cờ của hai người chơi cho nhau, xét thắng thua và cập nhật điểm cho người chơi. • Database Server: Lưu trữ cơ sở dữ liệu người dùng bao gồm thông tin đăng ký, đăng nhập, thông tin người chơi như điểm, cấp bậc, bàn cờ.

      • Game Server: đóng vai trò là nơi trung gian để giao tiếp giữa Client với nhau, quản lý kết nối, đồng bộ thời gian, nhận thông tin từ Client, tính toán nước đi hợp lệ, thông tin thắng thua và gửi thông tin đến Client. Trong quá trình nghiên cứu và thực hiện, để xây dựng Game Server phục vụ Client nối kết, ngoài việc sử dụng Socket, vẫn còn một số kĩ thuật khác như RMI, WebServices vẫn đáp ứng được việc xây dựng Game Server. −Mỗi khi có nối kết đến, Server sẽ Settimeout Socket là 10 phút, sau đó Server sẽ tạo 1 luồng khác để phục vụ cho Client.

      Nếu phân định trạng thái thắng thua, thì Server làm công việc sau: Lưa trạng thái bàn cờ vào cơ sở dữ liệu, hủy luồng đếm thời gian, xóa bàn cờ trong danh sách bàn cờ. Với mục đích quản lý người chơi, giúp người chơi có thể xem lại thành tích cá nhân, quản lý ván cờ, lưu lại lịch sử ván cờ giúp người chơi có thể xin đi lại, tất cả thông tin người chơi, bàn cờ sẽ được lưu ở cơ sở dữ liệu. - Ngoài ra chương trình còn có những chức năng của trò chơi online: đăng kí tài khoản, đăng nhập hệ thống, yêu cầu chơi cờ, chơi cờ trực tuyến, chat, xin đi lại trong khi chơi cờ.

      Một luồng luôn lắng nghe các thông điệp từ Server rồi phân tích chuỗi, sau đó đưa qua một luồng khác để cập nhật lại giao diện chương trình.

      Hình 2.8 . Mô hình kết nối socket
      Hình 2.8 . Mô hình kết nối socket

      Chơi cờ

      • CHƯƠNG TRÌNH DEMO 1. SƠ ĐỒ CHỨC NĂNG

        Ví dụ về đăng kí tài khoản nguyenict có mật khẩu là NgocNguyen thì cấu trúc thông điệp là Register,nguyenict,NgocNguyen. Ví dụ đăng nhập tài khoản nguyenict có mật khẩu khoa92 thì cấu trúc thông điệp sẽ là Login,nguyenict,khoa92. … : Gửi cho Client biết danh sách người dùng và thông tin đi kèm đã đăng nhập vào Server.

        Ví dụ tài khoản nguyenict muốn mời tài khoản khoa92, có id là 112 tham gia ván cờ, thì người chơi nguyenict phải gởi thông điệp là Invite,112. Ví dụng người chơi nguyenict yêu cầu gởi lời mời đến người chơi khoa92 thì Server sẽ gởi thông điệp là: Inviting,nguyenict. Ví dụ tài khoản nguyenict và tài khoản khoa92 đang chơi game, người chơi nguyenict muốn gởi đến người chơi khoa92 một tin nhắn có nội dung "Hello", thì thông điệp sẽ là: Chat,Hello.

        Ví dụ, người chơi nguyenict và khoa92 đang tham gia ván cờ, người chơi nguyenict có lượt chơi và đánh nước cờ có tọa độ (1,3) thì thông điệp gởi đi sẽ là: Move,1,3. Khi đang ở giao diện bàn cờ, và bạn chơi gởi tin nhắn sang thì sẽ có báo hiệu bằng cách chuyển màu tab Chat để thông báo là có tin nhắn mới nhận. - Xây dựng chương trình nối kết đến Server: đăng ký, đăng nhập, xem danh sách người chơi online và chơi cờ.

        - Chơi cờ: xử lý các sự kiện trên màn hình cảm ứng và thiết lập các yêu cầu cơ bản cho game. - Tổng hợp được kiến thức trong quá trình học, vận dụng lý thuyết để giải quyết vấn đề thực tế. - Sử dụng giao diên lập trình mức thấp, lập trình đồ họa 2D, chưa sử dụng thư viện hỗ trợ nên giao diện còn chưa đẹp lắm.

        - Sử dụng thư viện OpenGL để cải tiến thành giao diện đồ họa 3D, tăng sức hấp dẫn của chương trình.

        Sơ đồ giao tiếp giữa Client và Server
        Sơ đồ giao tiếp giữa Client và Server