Sơ lược về việc phát triển ứng dụng cho hệ điều hành Android Bên cạnh hệ điều hành cung cấp các tính năng cơ bản cho thiết bị Google còn cung cấp một kho ứng dụng mở rộng cho phép người
Trang 1MỤC LỤC
Phần I: Sơ lược về hệ điều hành Android
Phân II: Phát triển trò chơi Chiếc nón kỳ diệu trên hệ điều hành Android Phần III: Tổng kết
Trang 2PHẦN 1: SƠ LƯỢC VỀ HỆ ĐIỀU HÀNH ANDROID
I. Lịch sử ra đời và phát triển của hệ điều hành android
Tháng 4 năm 2005 Công ty Google mua lại Android Inc đánh dấu bước khởi đầu của hệ điều hành Android, năm 2007 cùng với sự thành lập của Liên minh thiết bị cầm tay mở (Open Handset Alliance) thì hệ điều hành Android cũng lần đầu tiên được giới thiệu, tháng 10 năm 2008 chiếc điện thoại Android đầu tiên HTC Dream được giới thiệu và bán ra mở đầu cho một thời kỳ phát triển của hệ điều hành nguồn mở Android
Hình 1.1 Điện thoại Android đầu tiên - HTC Dream phiên bản Androdi 1.6
Trải qua thời kỳ phát triển mạnh mẽ với nhiều nhà sản xuất lớn như Samsung, LG, HTC, Sony…cho ra nhiều dòng thiết bị khác nhau, tính đến
Trang 3tháng 12 năm 2013 số thiết bị Android được kích hoạt đã chạm mốc 1 tỷ thiết bị, trong đó chiếm phần lớn là điện thoại di động, máy tính bảng, và các thiết bị nghe nhìn thông minh khác, tính đến quý 3 năm 2013 Android
là nền tảng đứng đầu thị trường di động với 81% tổng số thiết bị được bán ra
Hình 1.2 Thị phần thiết bị di động năm 2013 (Engadget.com)
Android là một hệ điều hành dựa trên nền tảng LINUX thiết kế dành cho các thiết bị cảm ứng như điện thoại, máy tính bảng…là một hề điều hành nguồn mở và Google Inc phát hành mã nguồn theo giấy phép Apache, với không nhiều rằng buộc nên đã cho các nhà phát triển thiết bị và cộng đồng phát triển trên thế giới được điều chỉnh và phân phối Android một cách tự do
Android có một hạt nhân dựa trên nhân Linux phiên bản 2.6, kể từ Android 4.0 Ice Cream Sandwich trở về sau, là phiên bản 3.x, với middleware, thư viện và API viết bằng C, còn phần mềm ứng dụng chạy trên một nền tảng ứng dụng gồm các thư viện tương thích với Java dựa trên Apache Harmony Android sử dụng máy ảo Dalvik với một trình biên dịch động để chạy 'mã dex' (Dalvik Executable) của Dalvik, thường được biên dịch sang Java
Trang 4ta cũng hỗ trợ x86 thông qua dự án Android x86, và Google TV cũng sử dụng một phiên bản x86 đặc biệt của Android.
Nhân Linux dùng cho Android đã được Google thực hiện nhiều thay đổi về kiến trúc so với nhân Linux gốc Android không có sẵn X Window System cũng không hỗ trợ các thư viện GNU chuẩn, nên việc chuyển các ứng dụng hoặc thư viện Linux có sẵn sang Android rất khó khăn Các ứng dụng C đơn giản và SDL cũng được hỗ trợ bằng cách chèn những đoạn shim Java
và sử dụng tương tự JNI , như khi người ta chuyển Jagged Alliance 2 sang Android Một số tính năng cũng được Google đóng góp ngược vào nhân
Trang 5Linux, đáng chú ý là tính năng quản lý nguồn điện có tên wakelock
Hình 1.3 Kiến trúc hệ điều hành Android
II. Sơ lược về việc phát triển ứng dụng cho hệ điều hành Android
Bên cạnh hệ điều hành cung cấp các tính năng cơ bản cho thiết bị Google còn cung cấp một kho ứng dụng mở rộng cho phép người sử dụng mua hoặc tải xuống miễn phí các tiện ích mở rộng, các ứng dụng và trò chơi cho thiết bị thông qua dịch vụ Google Play Với những thủ tục tương đối đơn giản các nhà phát triển, các cá nhân, lập trình viên có thể đăng ký dễ dàng để trở thành nhà phát triển ứng dụng cho hệ điều hành Android và
Trang 6bán hoặc cung cấp miễn phí các ứng dụng của mình lên kho ứng dụng của Google hoặc một kho ứng dụng của bên thứ 3.
Các ứng dụng tiện ích và trò chơi sau đây gọi chung là ứng dụng chạy trên
hệ điều hành được viết bằng ngôn ngữ Java, Android SDK tool sẽ biên dịch code và các tài nguyên có trong một file đóng gói APK (Android Package) có phần mở rộng apk Một APK file bao gồm nội dung của ứng dụng có thể cài đặt nên một thiết bị Android tương ứng, mói cách khác nó chính là file cài đặt của ứng dụng chạy trên hệ điều hành Android
Thành phân cơ bản của một ứng dụng:
- Các Activity
Một Activity có thể coi là một màn hình đơn trong giao diện của người sử dụng, ví
dụ một ứng dụng Email phải có 1 Activity thể hiện tiêu đề và ngày tháng đến cũng như trạng thái của tất cả các thư đến Các Activity hoạt động trong một tổng thể để xây dựng nên một ứng dụng tuy nhiên giữa chúng vẫn có sự độc lập với nhau, các ứng dụng khác nhau hoàn toàn có thể sử dụng được chung các Acitvity
- Các Service
Một service là một thành phần chạy ngầm phía dưới hệ điều hành, thực hiện một chức năng liên tục lâu dài nào đó để phục vụ cho những tiến trình khác nhau Một service không cung cấp một giao diện người dùng, ví dụ như dịch vụ nghe nhạc khi người dùng đang truy cập vào một trang
web hoặc đang xem ảnh
Trang 7o Các quyền của người dụng mà ứng dụng yêu cầu như quyền gửi tin nhắn, truy cập internet, truy cập danh bạ…
o Mức API tối thiệu mà ứng dụng yêu cầu để cài đặt, một ứng dụng có API cao hơn hệ điều hành hiện tại sẽ không cài đặt được trên hệ điều hành đó
o Các thư viện API mà ứng dụng yêu cầu
Hình 1.4 AndroidManifest
- Tài nguyên ứng dụng
o Một ứng dụng nhất là các ứng dụng đa phương tiện hay trò chơi không chỉ bao gồm các mã lệnh mà còn bao gồm một thệ thống âm thanh, hình ảnh để cung cấp cho người sử dụng giao diện thuận tiện và đẹp mắt
PHẦN 2: XÂY DỰNG TRÒ CHƠI CHIẾC NÓN KỲ DIỆU TRÊN HỆ ĐIỀU HÀNH ANDROID
Chiếc nón kỳ diệu là trò chơi dành cho một người chơi trên các thiệt bị di động hệ điều hành Android bao gồm điện thoại đi động và máy tính bảng, nội dung trò chơi là đưa ra các ô chữ đã ẩn các chữ cái với một gợi ý và người chơi lần lượt đoán ra các chữ cái đó để tìm ra ô chữ ẩn, trong qua trình đoán người chơi quay nón để tính ra mức điểm thưởng cho mỗi lần đoán đúng.
I. Mục đích đề tài:
Trang 8Trò chơi thực chất vẫn là một phần mềm nhưng có thêm các hiệu ứng âm thanh hình ảnh và sự tương tác rất lớn giữ người sử dụng và chương trình, nó không đơn thuần là một phần mềm giải quyết các bài toàn thông thường mà còn là một sản phẩm Multimedia giải trí Tuy nhiên để đưa ra một bản thiết kế hoàn chỉnh về kiến trúc của một trò chơi là tương đối khó khăn, đề tài Xây dựng trò chơi Chiếc nón
kỳ diệu trước hết là để sơ lược tìm hiểu về các bước xây dựng và phát triển một trò chơi đơn giản cho hệ điều hành Android nói riêng và các trò chơi nói chung, thứ hai là qua quá trình xây dựng sản phẩm sẽ tìm hiểu thêm các công cụ lập trình, engine của trò chơi và ngôn ngữ lập trình java, vì lý do đó đề tài chủ yếu tập trung vào 2 mục tiêu cơ bản:
o Phân tích thiết kế để đưa ra một kiến trúc trò chơi mà từ đó có thể dễ dàng
sử dụng các công cụ lập trình để phát triển thành một sản phẩm hoàn thiện
o Sử dụng bộ công cụ của Android để xây dựng trò chơi hoàn thiện
II. Phân tích thiết kế của trò chơi Chiếc nón kỳ diệu
Công việc phân tích và thiết kế trò chơi Chiếc nón kỳ diệu thực thi các công việc sau
o Tổng hợp các yêu cầu (Requiement Capture): tổng hợp các yêu cầu của trò
chơi, mô hình hóa các yêu cầu dựa trên các biểu đồ UML use case Bước này thực hiện nhằm mục đích chỉ ra được các yêu cầu của trò chơi và các thành phần tĩnh cơ bản mà trò chơi sẽ phải xây dựng
o Phân tích yêu cầu (Requiement Analysis) : Từ bước tổng hợp được các
yêu cầu, sẽ đưa ra và phân tích các yêu cầu trên để chuyển chúng thành các
Trang 9thành phần cơ bản của trò chơi, ở đâu sau bước phân tích yêu cầu sẽ đưa ra được các Class cần có để cấu thành nên trò chơi.
o Mô hình động (Dynamic Modelling): ở hai bước trên mới chỉ đưa ra được
cấu trúc tĩnh của trò chơi, mà chưa chỉ ra được việc xây dựng các tương tác trong trò chơi giữa người chơi và các thành phần khác nhau bên trong trò chơi, bước Mô hình động sẽ chỉ ra các hoạt động, các trạng thái khác nhau cần có của một trò chơi, từ khởi đầu đến kết thúc, để mô hình hóa các trạng thái hoạt động ở đây sử dụng biểu đồ UML Activity
Dưới đây là chi tiết các bược thực hiện
1. Tổng hợp các yêu cầu (Requiement Capture)
Có 5 mành hình chính trong trò chơi và một màn hình Splash
Màn hình Menu lựa chọn
Màn hình xem hướng dẫn trò chơi
Màn hình xem bảng xếp hạng
Màn hình chơi chính
Màn hình Slash (Màn hình chờ khi khởi động game)
o Các màn hình và trạng thái chuyển được mô tả theo sơ đồ dưới đây
Trang 10Hình 2.1 Luồng di chuyển trong trò chơi
Dưới đây chỉ ra các hoạt động và tương tác giữa người chơi và trò chơi, phần in đậm là các chủ thể thực hiện các tương tác với người chơi, đối với một trò chơi lớn việc liệt kê ra tất cả các hoạt động là không thể và cũng không cần thiết, mục đích của bước phân tích thiết kế là đưa ra một cấu trúc tổng quan về trò chơi mà các lập trình viên và những người liên quan có thể hiểu được và triển khai được chúng thành sản phẩm
MÀNH HÌNH MENU
Hiển thị cho người chơi:
Hiển thị màn hình menu
Hiển thị các nút lựa chọn của Menu
Hiển thị Logo và tên trò chơi
Thể hiện âm thanh nền và âm thanh các nút lựa chọn
Hiển thị MessageBox xác nhận thoát Các hoạt động của người chơi:
Người chơi chọn nút bắt đầu
Người chơi chọn nút xem hướng dẫn
Người chơi chọn nút xem bảng xếp hạng
Người chơi bật tắt âm thanh
Người chơi chọn thoát game
• Người nhấn Thoát để thoát hẩn game
• Người chơi Chọn Hủy để trở lại menu
MÀN HÌNH HƯỚNG DẪN
Các hiển thị
Hiển thị nội dung hướng dẫn
Hiển thị nút Thoát để trở về MenuCác hành động
Nhấn nút thoát để trở về Menu
MÀN HÌNH BẢNG XẾP HẠNG
Các hiển thị
Trang 11 Hiển thị bảng xếp hạng
• Hiển thị 5 Unit điểm cao nhất của bảng xếp hạng
Hiển thị nút Thoát để trở về Menu
Hiển thị keyboard bao gồm các nút chữ cái
• Hiển thị keyboard (Hiển thị trở lại màn hình)
• Giấu keyboard (ẩn khỏi màn hình)
• Ẩn những nút chữ cái đã đoán
Hiển thị MC (Người dẫn chương trình) gồm câu bình luận và các nút lựa chọn
Hiển thị câu hỏi
Hiển thị điểm đạt được
Hiển thị số lượt chơi
Các hành động của người chơi
Quay nón
Đoán chữ cái
• Chọn chữ cái
Lật ô chữ trên bảng ô chữ
Trang 12 Thoát khỏi màn chơi hiện tại
• Chọn Thoát để thoát màn chơi hiện tại
• Chọn Hủy để tiếp tục chơi tiếp
Từ các tình huống như trên ta có các sơ đồ USE CASE sau:
Màn hình Menu
Màn hình hướng dẫn
Trang 13Màn hình bảng xếp hạng
Trang 14Màn hình chơi chính
- Các hoạt động của người chơi:
- Các hiển thị trong Màn chơi chính
Trang 16Từ các mô hình use case đã phân tích ở phần Yêu cầu của trò chơi như trên ta rút ra được các Class chính như sau:
Sơ đồ các Class được thể hiện như sau:
Hình 2.2 Sơ đồ 1 số class chính trong trò chơi
Trang 172. Phân tích yêu cầu
Mô hình động
Ở phần này chỉ tập trung vào các tương tác chính trong phần màn chơi chính:
Hoạt động chính trong phần màn chơi có thể được mô tả tóm tắt như sau:
Trò chơi hiển thị hình ảnh màn chơi chính, Level hiện tại trong 2 giây MC chương trình hiển thị hỏi lại người chơi đã sẵn sàng sau khi đã xem qua ô chữ và đọc nội dung câu hỏi Tiếp theo nón quay hiển thị để người chơi quay nón và chờ nón dừng, kết quả (Điểm số) hiển thị, khi đó bàn phím chữ sẽ hiển thị để người chơi đoán và chọn một chữ cái, sau khi người chơi chọn chữ cái chương trình chờ 1 giây và đưa ra kết quả đúng hay sai, nếu đúng thì tiếp tục trở về trạng thái quay nón, và cập nhật thêm điểm, nếu sai một lượt chơi bị đi và trở về trạng thái quay nón để tiếp tục, khi hết lượt chơi trò chơi kết thúc và bảng lưu điển hiển thị để người chơi lựa chọn lưu lại điểm số Màn chơi hoàn thành khi người chơi đoán ra hết các ô chữ hoặc người chơi đoán được luôn ô chữ Trò chơi sẽ kết thúc khi hết lượt chơi hoặc người chơi hoàn thành 20 level của trò chơi
Từ đó có thể chỉ ra trò chơi có 1 số trạng thái sau:
- Trạng thái giới thiệu: Khi mới bắt đầu trò chơi.
- Trạng thái sẵn sàng quay nón: Ở tráng thái này người chơi có thể tương tác với
nón để quay
- Trạng thái nón đang quay: trạng thái này hiển thị nón đang quay để chờ kết quả,
người chơi sẽ chờ và không tương tác được với bất kỳ thành phần nào khác cho đến khi nón dừng lại
- Trạng thái nón dừng: Sau khi quay nón sẽ dừng lại ở một ô kết quả, trạng thái
này kéo dài trong 2s để hiển thị rõ hơn kết quả của lượt quay
- Trạng thái đoán chữ: Trạng thái mà trò chơi yêu cầu người chơi đoán 1 chữ cái,
trạng thái sẽ được chuyển khi người chơi chọn 1 ô chữ cái
- Trạng thái đoán chữ xong: Sau khi người chơi chọn sẽ chuyển sang trạng thái
Trang 18- Trạng thái thua: Khi người chơi đoán sai và hết lượt đoán sẽ chuyển sang trạng
thái này
Các trạng thái được mô tả theo sơ đồ sau:
Trang 19Hình 2.3 Sơ đồ các trạng thái chính của trò chơi
Khi triển khai trò chơi sẽ quản lý các tiến trình bằng một timerHandler và các trạng thái như trên
Trang 20private static final intSTATE_INTRO = 3;
private static final intSTATE_READ_QUEST = 4;
private static final intSTATE_GUESS_DONE = 5;
private static final intSTATE_WHEEL_DONE = 6;
private static final intSTATE_READY_WHEEL = 7;
private static final intSTATE_SPIN_GUESS = 8;
private static final intSTATE_BANK_RUP = 12;
private static final intSTATE_FLIP = 9;
private static final intSTATE_SPIN = 10;
private static final intSTATE_GIFT = 11;
private static final intSTATE_HALF = 13;
private static final intSTATE_WIN = 14;
private static final intSTATE_LOSE = 15;
private static final intSTATE_ANSWER = 16;
3. Thực thi yêu cầu
Từ mô tả thiết kế trên có thể triển khai thực thi trò chơi chiếc nón kỳ điệu:Ngôn ngữ sử dụng: Java
Trình biên tập: Eclipse và bộ công cụ Android SDK Manager
Engine: Andengine GLES 2.0
Yêu cầu hệ điều hành: Android 2.3 trở lên
Một số điểm quan trọng trong quá trình triển khai:
o Sử dụng Engine:
Trò chơi Chiếc Nón Kỳ diệu được xây dựng bằng engine Andengine (http://www.andengine.org/) một eninge 2D nguồn mở miễn phí chuyên biệt cho việc xây dựng những trò chơi 2D trên hệ điều hành Android với nhiều ưu điểm nổi bật như, miễn phí, dễ dàng quản lý tài nguyên, cung cấp các thư viện vật lý có sẵn
o Lưu trữ và sử dụng dữ liệu trên Android
Để kết nối với cơ sở dữ liệu, sử dụng và lưu trữ dữ liệu cần sử dụng đến SQLite, ở đây SQLite đã được cung cấp sẵn trong thư viện của Android
Trang 21Trong quá trình phát triển game Chiếc Nón Kỳ Diệu vẫn còn nhiều vấn đề và hạn chế, như việc kết nối cơ sở dữ liệu trên thiết bị di động, khả năng quản lý
bộ nhớ hạn chế của điện thoại, kiểm tra và phát hiện các lỗi trên sản phẩm khó khăn vì sự đa dạng của thiết bị, phần cứng, tỷ lệ màn hình và hệ điều hành khác nhau Đề tài trên còn có thể phát triển theo hướng:
o Hiệu ứng âm thanh và đồ họa cần cải thiện hơn
o Ngân hàng câu hỏi cần được đặt trên server để thuận tiện cho việc nâng cấp, bổ xung và sửa chữa
o Khả năng chơi nhiều người (Multiplayer), khả năng người chơi thi đấu với
AI của trò chơi…
- Tài liệu tham khảo
o Nguyễn Văn Vỵ - Nguyễn Việt Hà, Giáo trình kỹ nghệ phần mềm, 2010
o Erik Bethke, Game development and production, Worldware game
developer’s libarary, 2003
o Jayme Schroeder và Brian Broyles, AndEngine for Android Game
Development Cookbook, PACKT, 2013