Môn học Phát triển ứng dụng cho thiết bị di động. Android là nền tảng di động phổ biến nhất. Nội dung báo cáo gồm: Giới thiệu nền tảng Android Phát biểu bài toán Phân tích thiết kế hệ thống Cài đặt cà kiểm thử ứng dụng Đồ án, đồ án môn học, bài tập lớn, project.
Trang 1BÀI TẬP LỚN
HỌC PHẦN: PHÁT TRIỂN ỨNG DỤNG CHO
THIẾT BỊ DI ĐỘNG
BÀI TẬP LỚN: THIẾT KẾ ỨNG DỤNG GAME 3 IN 1 TRÊN ANDROID
Trang 2BÀI TẬP LỚN
HỌC PHẦN: PHÁT TRIỂN ỨNG DỤNG CHO
THIẾT BỊ DI ĐỘNG
BÀI TẬP LỚN: THIẾT KẾ ỨNG DỤNG GAME 3 IN 1 TRÊN ANDROID
Trang 3LỜI MỞ ĐẦU
Cùng với sự phát triển như vũ bão của công nghệ số là sự phát triển vượt trội của hàng loạt các loại thiết bị mobile Với chức năng liên lạc gần như thiết yếu đối với cuộc sống của con người thì mobile đã được phổ biến trong xã hội Ngoài ra thiết bị mobile còn có thêm nhiều chức năng nhằm hỗ trợ người dùng trong cuộc sống Nó có thể là một công cụ làm việc như một chiếc máy tính mini, có thể là công cụ giải trí,…
Cùng với sự bùng nổ của smartphone hiện nay, và sự phát triển của các hệ điều hành dành cho điện thoại, điển hình là Android và iOS đã tạo nên một thị trường
đa dạng cho xu hướng Game Mobile phát triển mạnh mẽ Từ năm 2014 đến nay,
xu hướng người dùng chơi game chuyển dịch từ máy tính sang mobile đã và đang tăng cao và hết sức mạnh mẽ nhờ ưu điểm tiện lợi và giải trí nhanh
Vậy thì game mobile sẽ phát triển theo xu hướng nào? Đó là những game gọn nhẹ,
dễ chơi, dễ dùng và nhanh gọn thuận tiện, như chính các đặc trưng của chiếc
mobile vậy Chúng ta có thể giải trí ở mọi lúc, mọi nơi, phù hợp với nhu cầu thư giãn nhẹ nhàng, tranh thủ Đó chính là lý do rất đơn giản để các tựa game như: Flappy Bird hay 2048 hay Knowledge is Power đang làm mưa gió trên thị trường game di động trong thời gian vừa qua
Nhận thấy tầm thiết yếu đó, nhóm em đã quyết định tìm hiểu và thực hiện đề tài:
“Thiết kế ứng dụng game 3 in 1 trên Android” Trong đề tài này, nhóm sẽ trình
bày cái nhìn căn bản về lập trình game trên Android Studio và demo ứng dụng game trong đó
Trang 4MỤC LỤC
LỜI MỞ ĐẦU 3
MỤC LỤC 4
DANH MỤC HÌNH ẢNH 6
MỞ ĐẦU 7
1 Lý do chọn đề tài: 7
2 Mục đích và yêu cầu của đề tài: 7
3 Đối tượng nghiên cứu: 7
4 Phạm vi nghiên cứu: 8
5 Phương pháp nghiên cứu: 8
6 Bố cục đề tài: 8
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 9
1.1 Tổng quan về Android 9
1.1.1.Tầng hạt nhân Linux 9
1.1.2.Tầng hạt nhân Library: 10
1.1.3 Android runtime: 11
1.1.4 Tầng Application Framework: 11
1.1.5 Tầng Application: 11
1.2 Tổng quan về Android Studio: 12
1.2.1 Khái niệm: 12
1.2.2 Mục đích: 13
1.2.3 Tính năng: 13
CHƯƠNG 2: PHÁT TRIỂN GAME 14
2.1 Thiết kế game: 14
2.1.1 Tạo và cấu hình game 2D: 14
2.1.3 Âm thanh và hình ảnh trong game: 17
2.1.4 Cách biên dịch ra file APK trong Android Studio: 22
2.2 Xây dựng game Flappy Bird: 24
2.2.1 Giới thiệu về game: 24
Trang 52.3 Xây dựng game 2048: 32
2.3.1 Giới thiệu về game: 32
2.3.2 Quy luật chơi: 33
2.3.3 Điểm số: 34
2.4 Xây dựng game Knowledge is Power: 35
2.4.1 Giới thiệu về game: 35
2.4.2 Quy luật chơi: 36
2.4.3 Điểm số: 38
KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 39
1 Cài đặt: 39
1.1 Link demo sản phẩm: 39
2 Kết quả: 39
2.1 Ưu điểm: 39
2.2 Nhược điểm: 40
TÀI LIỆU THAM KHẢO 41
Trang 6DANH MỤC HÌNH ẢNH
Hình 2.1 Tạo Project .15
Hình 2.2 Đặt tên cho project và địa chỉ lưu thư mục .16
Hình 2.3 Project tổng thể gồm có 3 game và 1 main chính .17
Hình 2.4 Tạo thư mục âm thanh .18
Hình 2.5 Cài đặt vị trí lưu thư mục âm thanh .19
Hình 2.6 Vị trí lưu thư mục âm thanh .20
Hình 2.7 Vị trí thư mục lưu trữ ảnh .21
Hình 2.8 Vị trí thư mục lưu trữ ảnh và âm thanh .22
Hình 2.9 Biên dịch ra file APK .23
Hình 2.10 Thông báo sau khi bên dịch thanh công file APK .23
Hình 2.11 Vị trí sao lưu file APK .24
Hình 2.1.1 Giao diện chính game Flappy Bird 25 Hình 2.1.2 Mô hình PDM game Flappy Bird 26 Hình 2.1.3 Tác động vật lý trong game Flappy Bird 27 Hình 2.1.4 Cách tính điểm trong game Flappy Bird 27 Hình 2.1.5 Kết thúc game Flappy Bird 28 Hình 2.1.6 Quy luật chơi game Flappy Bird 29 Hình 2.1.7 Giao diện độ khó trong game Flappy Bird 30 Hình 2.1.8 Giao diện thành tích trong game Flappy Bird 31 Hình 2.2.1 Giao diện chính game 2048 .32
Hình 2.2.2 Giao diện độ khó game 2048 .33
Hình 2.2.3 Giao diện thành tích trong game 2048 .34
Hình 2.3.1 Giao diện chính game Knowledge is Power 35
Hình 2.3.2 Quy luật chơi game Knowledge is Power .36
Hình 2.3.3 Giao diện độ khó game Knowledge is Power .37
Hình 2.3.4 Các quyền trợ giúp đặc biết trong game Knowledge is Power .37
Hình 2.3.5 Giao diện thành tích trong game Knowledge is Power .38
Hình 3.1 Tải thành công game lên Amazon Store .39
Trang 7MỞ ĐẦU
1 Lý do chọn đề tài:
Cùng với sự phát triển như vũ bão của công nghệ số là sự phát triển vượt trội của hàng loạt các loại thiết bị mobile Với chức năng liên lạc gần như thiết yếu đối với cuộc sống của con người thì mobile đã được phổ biến trong xã hội Ngoài ra thiết bị mobile còn có thêm nhiều chức năng nhằm hỗ trợ người dùng trong cuộc sống Nó có thể là một công cụ làm việc như một chiếc máy tính mini, có thể là công cụ giải trí,…
Ngày nay, khi sự phát triển giải trí cho con người đang có chiều hướng tăng thì việc giải trí trên chiếc mobile của chúng ta lại càng có cơ hội phát triển hơn nữa Trong đó chơi game là một hoạt động chiếm khá nhiều thời gian Vì vậy cơ hội thành công về việc lập trình game mobile là rất cao
Vậy thì game mobile sẽ phát triển theo xu hướng nào? Đó là những game gọn nhẹ,
dễ chơi, dễ dùng và nhanh gọn thuận tiện, như chính các đặc trưng của chiếc
mobile vậy Chúng ta có thể giải trí ở mọi lúc, mọi nơi, phù hợp với nhu cầu thư giãn nhẹ nhàng, tranh thủ Đó chính là lý do rất đơn giản để các tựa game như: Flappy Bird hay 2048 hay Knowledge is Power đang làm mưa gió trên thị trường game di động trong thời gian vừa qua
Nhận thấy tầm thiết yếu đó, nhóm em đã quyết định tìm hiểu và thực hiện đề tài:
“Thiết kế ứng dụng game 3 in 1 trên Android”
2 Mục đích và yêu cầu của đề tài:
- Xây dựng chức năng cơ bản của các tựa game mobile “Flappy Bird, 2048,
Knowledge is Power”
- Ứng dụng hiển thị các chức năng cơ bản và thông tin đầy đủ về game
3 Đối tượng nghiên cứu:
- Trò chơi phù hợp với mọi lứa tuổi
Trang 85 Phương pháp nghiên cứu:
- Phương pháp nghiên cứu lý thuyết: tiến hành thu thập các tài liệu, thông tin liên quan tới đề tài
- Khảo sát thực tế
- Xây dựng chương trình theo mục tiêu đề ra
- Phân tích, thiết kế hệ thống chương trình phù hợp
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
TÀI LIỆU THAM KHẢO
Trang 9CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1.1 Tổng quan về Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Android, Inc với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Vào năm 2007
android ra mắt cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động Tháng 10 năm 2008, chiếc điện thoại đầu tiên chạy Android được đưa vào thị trường tiêu dùng
Kiến trúc hệ điều hành Android gồm có 4 tầng từ dưới lên là tầng hạt nhân Linux, tầng Libraries & Android runtime, tầng Application Framework và tầng Application
1.1.1.Tầng hạt nhân Linux
Hệ điều hành Android được phát triển dựa trên hạt nhân Linux, cụ thể là hạt nhân phiên Linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này Tất cả mọi hoạt động của điện thoại muốn thi hành được thì đều thực hiện ở mức cấp thấp Ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình
(process)
Tuy được phát triển dựa vào nhân Linux nhưng thực ra nhân Linux đã được nâng cấp và chỉnh sửa rất nhiều để phù hợp với tính chất của những thiết bị cầm tay, như hạn chế bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cầu kết nối mạng không dây
Các thành phần chủ yếu:
- Display Driver: Điều khiển việc hiển thị lên màn hình cũng như nhận những điều khiển của người dùng trên màn hình (di chuyển, cảm ứng,…)
Trang 10- Camera Driver: Điều khiển hoạt động của camera, nhận luồng dữ liệu từ camera trả về
- Bluetooth Driver: Điều khiển thiết bị thu và phát sóng Bluetooth
- USB Driver: Quản lý hoạt động của các cổng giao tiếp USB
- Keypad Driver: Điều khiển bàn phím
- Wifi Driver: Chịu trách nhiệm về việc thu phát sóng wifi
- Audio Driver: Điều khiển các bộ thu phát âm thanh, giải mã các tín hiệu dạng audio thành tín hiệu số và ngược lại
- Binder IPC Driver: Chịu trách nhiệm về kết nối và liên lạc với mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông được thực hiện
- M-System Driver: Quản lý việc đọc ghi lên các thiết bị như thẻ nhớ SD, flash
- Power Management: Giám sát việc tiêu thụ điện năng
1.1.2.Tầng hạt nhân Library:
Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể
sử dụng, các thư viện đó được tập hợp thành một số nhóm như:
- Thư viện hệ thống (System C Library): Thư viện dựa trên chuẩn C, được sử dụng chỉ bởi hệ điều hành
- Thư viện Media (Media Libraries): Có nhiều code để hỗ trợ việc phát và ghi các loại định dạng âm thanh, hình ảnh, video thông dụng
- Thư viện Web (LibWebCore): Đây là thành phần để xem nội dung trên web, được sử dụng để xây dựng phần mềm duyệt web (Android Browse) cũng như để các ứng dụng khác có thể nhúng vào Nó cực kỳ mạnh, hỗ trợ được nhiều công nghệ cao như HTML5, JavaScript, CSS, DOM, AJAX,…
- Thư viện SQLite: Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng
Trang 111.1.3 Android runtime:
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java
có thể hoạt động Runtime có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như Java
IO, Collection, File Access Thứ hai là một máy ảo Java (Dalvik Virtual Machine) Mặc dù cũng được viết bằng ngôn ngữ Java nhưng một ứng dụng Java của Android không được chạy trên JRE của Sun mà chạy bằng máy ảo Dalvik do Google phát triển
1.1.4 Tầng Application Framework:
Tầng này xây dựng bộ công cụ - các phần tử ở mức cao để các lập trình viên
có thể nhanh chóng xây dựng ứng dụng Nó được viết bằng Java, có khả năng sử dụng chung để tiết kiệm tài nguyên
Đây là một nền tảng mở, điều đó có 2 lợi ích:
- Với các hãng điện thoại: Có thể tùy biến để phù hợp với cấu hình điện thoại mà
họ sản xuất cũng như để có thể có nhiều mẫu mã, style hợp thị hiếu người dùng Vì vậy nên tuy chung nền tàng Android mà điện thoại của Google có thể khác với Samsung, T-Mobile, HTC, Motorola, …
- Với lập trình viên: Cho phép lập trình viên có thể sử dụng các API ở tầng trên mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc Một tập hợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền, liên lạc giữa các ứng dụng, các thành phần giao diện,…
1.1.5 Tầng Application:
Đây là tầng ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như:
- Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành: gọi điện, quản lý danh bạ, duyệt web, nhắn tin, lịch làm việc, đọc gmail, quay phim chụp ảnh,…
Trang 12- Các ứng dụng cài thêm như các trò chơi, từ điển, các phần mềm học tiếng anh Các chương trình có đặc điểm là:
- Viết bằng ngôn ngữ Java có phần mở rộng là APK
- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được dựng lên để phục vụ cho nó
- Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời điểm,
có thể có nhiều chương trình chạy cùng một lúc, tuy nhiên với mỗi ứng dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi Điều đó có tác dụng hạn chế sự làm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn
- Các ứng dụng được gán số ID của người sử dụng nhằm phân định quyền hạn khi
sử dụng tài nguyên, cấu hình phần cứng hệ thống
- Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động khác, Android cho phép một ứng dụng của bên thứ 3 chạy nền Các ứng dụng đó chỉ có một hạn chế đó là không được sử dụng quá 5% công suất CPU Điều đó nhằm tránh độc quyền trong sử dụng CPU
- Ứng dụng không có điểm vào cố định, không có phương thức main để bắt đầu 1.2 Tổng quan về Android Studio:
1.2.1.Khái niệm:
Android Studio là một trong những môi trường phát triển dạng tích hợp dành cho nền tảng Android với các chức năng chính như: Thiết kế các giao diện cho người dùng, thực hiện thay đổi sản phẩm trong thời gian thực,…
Bởi vì đây là một phần mềm hoàn toàn miễn phí nên bạn có thể tải về cũng như cho phép bạn có thể triển khai code thành một ứng dụng trên Android vô cùng dễ dàng
Trang 131.2.2 Mục đích:
Android Studio được tạo nên với mục đích chính là để thay thế các phiên bản của plugin android được dùng cho Eclipse thời trước với sự hợp tác của
Google và JetBrains
Chức năng quan trọng nhất của Android Studio là cung cấp giao diện giúp người
sử dụng có thể tạo được các ứng dụng và xử lý được các công cụ có file phức tạp sau hậu trường Java là ngôn ngữ lập trình được Android Studio sử dụng và được cài sẵn trên các thiết bị
Ví dụ tiêu biểu như:
- Khi bạn muốn một môi trường hợp nhất nơi để có thể phát triển cho tất cả các thiết bị AndroidInstant Run Nhằm đẩy các thay đổi vào ứng dụng đang hoạt động
mà không cần phải xây dựng một APK mới
- Các mẫu mã và sự tích hợp với GitHub sẽ giúp bạn xây dựng tốt những tính năng ứng dụng phổ biến nhất và khi nhập mã của các mẫu
- Các công cụ và khuôn khổ thử nghiệm giúp mở rộng Lint công cụ nhằm nâng cao hiệu suất và khả năng sử dụng để tương thích với các phiên bản
- Một hệ thống để xây dựng Gradle linh hoạt
- Trình mô phỏng nhanh với các tính năng phong phú
Trang 14CHƯƠNG 2: PHÁT TRIỂN GAME
2.1 Thiết kế game:
Ý tưởng thiết kế game:
Đặc trưng của dòng game nhóm em xây dựng tại một thời điểm chỉ có một người chơi, trò chơi sẽ có một màn hình chơi, người chơi sẽ chọn 1 trong 3 tựa game trên menu hiển thị hoặc có thể chọn cài đặt game ở menu cài đặt Mỗi game sẽ có quy luật riêng, có thể xem chi tiết ở phần hướng dẫn mỗi game
Nếu người chơi không vượt qua các thử thách ở trong game thì sẽ hiện lên màn hình GameOver, vì vậy ta phải đọc kỹ hướng dẫn chơi trước khi bắt đầu
2.1.1 Tạo và cấu hình game 2D:
- Tạo dự án:
Trên Android Studio tạo mới một project: vào menu File/New Project
Trang 15Hình 2.1 Tạo Project
• Name: Android Game 3 in 1 – Nhóm 3
• Package name: com.project.game
Trang 16Hình 2.2 Đặt tên cho project và địa chỉ lưu thư mục.
Tiếp theo bạn cần tạo thêm Activity Trên Android Studio chọn:
• File > New > Activity > Empty Activity
Trang 17Do trong ứng dụng game của nhóm em có 3 game vậy nên chúng em đã tạo lần lượt thêm 3 Activity có tên như sau:
• Activity Name: FlappyBirdActivity, Game2048Activity, KnowledgeActivity
Hình 2.3 Project tổng thể gồm có 3 game và 1 main chính
2.1.3 Âm thanh và hình ảnh trong game:
Chuẩn bị sẵn file âm thanh và hình ảnh của game
Nhấn phải chuột vào thư mục "res" của project và chọn:
Trang 18• New > Folder > Raw Resource Folder
Hình 2.4 Tạo thư mục âm thanh.
Trang 19Hình 2.5 Cài đặt vị trí lưu thư mục âm thanh.
Trang 20Hình 2.6 Vị trí lưu thư mục âm thanh.
Copy các ảnh này vào thư mục drawable của project Tạo mới thư mục raw, và copy file explosion.wav & background.mp3 vào thư mục này