1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng game 2d math workout trên android

85 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng game 2d math workout trên android
Tác giả Phan Viết Dũng
Người hướng dẫn THS. Phạm Dương Thu Hằng
Trường học Đại học Sư Phạm - Đại học Đà Nẵng
Chuyên ngành Tin học
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2013
Thành phố Đà Nẵng
Định dạng
Số trang 85
Dung lượng 2,3 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

69 Hình 11 Kết quả demo màn hình thay đổi người chơi của game trên Android .... 70 Hình 12 Kết quả demo màn hình đổi tên người chơi của game trên Android 70 Hình 13 Kết quả demo màn hì

Trang 1

ĐẠI HỌC ĐÀ NẴNG ĐẠI HỌC SƢ PHẠM

Trang 2

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Đà nẵng, ngày …, tháng …, năm 2013

Cán bộ hướng dẫn

THS Phạm Dương Thu Hằng

Trang 3

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Đà nẵng, ngày …, tháng …, năm 2013

Cán bộ phản biện

Trang 4

LỜI CẢM ƠN

Tôi xin chân thành cảm ơn các thầy cô giáo trong khoa Tin học cùng toàn thể thầy cô của trường Đại Học Sư Phạm – Đại Học Đà Nẵng đã truyền đạt cho tôi những kiến thức quý giá trong suốt những năm học vừa qua

Xin chân thành cảm ơn cô Phạm Dương Thu Hằng đã tận tình chỉ bảo và giúp đỡ cho tôi hoàn thành đồ án này

Cuối cùng tôi xin cảm ơn các bạn trong khoa Tin, những người đã giúp đỡ, chia sẻ những kiến thức, kinh nghiệm, tài liệu, … trong suốt quá trình nghiên cứu thực hiện đề tài

Trang 5

LỜI CAM ĐOAN

Tôi xin cam đoan:

1 Những nội dung trong báo cáo này là do tôi thực hiện

2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giá, tên công trình, thời gian, địa điểm công bố

4 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm

Trang 6

MỤC LỤC

MỞ ĐẦU 13

1 Giới thiệu đề tài 13

2 Mục đích, ý nghĩa của đề tài 14

3 Phương án triển khai đề tài 14

CHƯƠNG I CƠ SỞ LÝ THUYẾT 15

I.1 Giới thiệu các công cụ để làm game 15

I.1.1 Eclipse 15

I.1.2 Giới thiệu về ngôn ngữ lập trình Java 15

I.1.2.1 Lịch sử phát triển 15

I.1.2.2 Khả năng của Java 16

I.1.2.3 Những đặc điểm của Java 16

I.1.2.4 Máy ảo Java (JVM – Java Virtual Machine) 17

I.1.2.5 Hai kiểu ứng dụng dưới ngôn ngữ lập trình Java 18

I.1.2.6 Bộ phát triển ứng dụng Java (JDK – Java Development Kit) 18

I.1.3 Giới thiệu về hệ điều hành Android 19

I.1.3.1 Lịch sử Android 19

I.1.3.2 Khái niệm Android 20

Trang 7

I.2.1 Game loop (vòng lặp của game) 26

I.2.2 Framerate (FPS) 27

I.2.3 Bộ nhớ (memory) 27

I.2.4 State 28

I.3 Giới thiệu về SDK 28

CHƯƠNG II TRÒ CHƠI VÀ QUÁ TRÌNH LẬP TRÌNH, KIỂM THỬ 32

II.1 Trò chơi 32

II.2 Quá trình lập trình 33

II.2.1 Phân tích chương trình 33

II.2.2 Lập trình trò chơi 35

II.2.2.1 Main menu 43

II.2.2.2 Addition & Subtraction 44

II.2.2.3 Multiplication & Division 48

II.2.2.4 Brain Cruncher 51

II.2.2.5 Math Blaster Challenge 55

II.2.3 Nhập 56

II.2.4 Âm thanh 56

II.3 Quá trình kiểm thử sản phẩm 56

II.3.1 Cài đặt hệ thống trên Android 56

II.3.2 Kiểm thử 57

CHƯƠNG III MỘT SỐ KẾT QUẢ DEMO 67

Kết quả demo trên Android emulator 67

KẾT LUẬN 84

1 Kết quả đạt được 84

Trang 8

2 Những vấn đề còn tồn đọng 84

3 Hướng phát triển của đề tài 84 TÀI LIỆU THAM KHẢO 85

Trang 9

MỤC LỤC CÁC HÌNH

Hình 1 - Các thành viên của "Liên minh di động mở" 19

Hình 2 Mô hình kiến trúc nền tảng Android 21

Hình 3 Mô hình hợp tác giữa máy ảo Dalvik và Navite code 25

Hình 5 Biểu diễn khung thiết kế của chương trình 33

Hình 6 Kết quả demo biểu tượng của game trên Android 67

Hình 7 Kết quả demo màn hình chính của game trên Android 68

Hình 8 Kết quả demo màn hình chính với extra menu sound on của game trên Android 68

Hình 9 Kết quả demo màn hình chính với extra menu sound off của game trên Android 69

Hình 10 Kết quả demo màn hình tùy chỉnh của game trên Android 69

Hình 11 Kết quả demo màn hình thay đổi người chơi của game trên Android 70

Hình 12 Kết quả demo màn hình đổi tên người chơi của game trên Android 70 Hình 13 Kết quả demo màn hình chuẩn bị vào chơi Addition & Subtraction của game trên Android 71

Hình 14 Kết quả demo màn hình chơi Addition & Subtraction của game trên Android 71

Hình 15 Kết quả demo màn hình chơi Addition & Subtraction khi người chơi trả lời đúng của game trên Android 72

Hình 16 Kết quả demo màn hình chơi Addition & Subtraction khi người chơi trả lời sai của game trên Android 72

Hình 17 Kết quả demo màn hình xem lại kết quả chơi Addition & Subtraction của game trên Android 73

Trang 10

Hình 18 Kết quả demo màn hình xem điểm cao Addition & Subtraction của

game trên Android 73

Hình 19 Kết quả demo màn hình thể hiện biểu đồ điểm cao Addition &

Subtraction của game trên Android 74

Hình 20 Kết quả demo màn hình chuẩn bị chơi Multiplication & Division của

game trên Android 74

Hình 21Kết quả demo màn hình chơi Multiplication & Division của game

trên Android 75

Hình 22 Kết quả demo màn hình chơi Multiplication & Division khi người

chơi trả lời đúng của game trên Android 75

Hình 23 Kết quả demo màn hình chơi Multiplication & Division khi người

chơi trả lời sai của game trên Android 76

Hình 24 Kết quả demo màn hình xem lại kết quả chơi Multiplication &

Division của game trên Android 76

Hình 25 Kết quả demo màn hình xem điểm cao Multiplication & Division của

game trên Android 77

Hình 26 Kết quả demo màn hình thể hiện biểu đồ điểm cao Multiplication &

Division của game trên Android 77

Hình 27 Kết quả demo màn hình chọn độ khó Brain Cruncher của game trên

Android 78

Hình 28 Kết quả demo màn hình chuẩn bị chơi Brain Cruncher của game trên

Android 78

Hình 29 Kết quả demo màn hình chơi Brain Cruncher câu hỏi đầu tiên của

game trên Android 79

Hình 30 Kết quả demo màn hình chơi Brain Cruncher câu hỏi tiếp theo của

game trên Android 79

Hình 31 Kết quả demo màn hình người chơi nhập kết quả cuối cùng Brain

Cruncher của game trên Android 80

Trang 11

Hình 32 Kết quả demo màn hình xem lại màn chơi Brain Cruncher của game

trên Android 80

Hình 33 Kết quả demo màn hình xem lại câu hỏi và đáp án Brain Cruncher

của game trên Android 81

Hình 34 Kết quả demo màn hình chơi Math Blaster Challenge của game trên

Android 81

Hình 35 Kết quả demo màn hình chơi Math Blaster Challenge khi người chơi

trả lời đúng của game trên Android 82

Hình 36 Kết quả demo màn hình lên level Math Blaster Challenge của game

Trang 12

MỤC LỤC CÁC BẢNG

Bảng 1Biểu diễn các ca kiểm thử về gameplay 63 Bảng 2 Biểu diễn các ca kiểm thử về âm thanh 65 Bảng 3 Biểu diễn các ca kiểm thử Interrupt 66

Trang 13

MỞ ĐẦU

1 Giới thiệu đề tài

Tất cả mọi người đều cần các trò chơi Trò chơi để giết thời gian, tìm hiểu thế giới xung quanh, tăng sức cạnh tranh hay chứng tỏ bản thân Qua hàng triệu năm tiến hóa của con người và của các loại trò chơi, dưới hình thức này hay hình thức khác, đều mang theo tất cả những tiêu chí kể trên

Với một tỷ chiếc điện thoại thông minh trên toàn thế giới và máy tính bảng cũng đã đến tay hàng trăm triệu người tiêu dùng, đây chính là cơ hội vàng cho các nhà phát triển phần mềm di động tạo ra sự thành công và phát triển sự nghiệp lâu dài với game

Chúng ta đang ở năm thứ sáu của cuộc cách mạng điện thoại di động Như đã đề cập ở trên, hiện có khoảng 1 tỷ chiếc điện thoại thông minh đang được sử dụng trên toàn thế giới 1 tỷ chiếc điện thoại tiếp theo dự kiến sẽ được nối mạng trong vòng ba năm tới Các nước phát triển hiện đã đạt đến điểm bão hòa, hầu hết những người tiêu dùng ở Mỹ và châu Âu đang sở hữu điện thoại thông minh đều khẳng định rằng họ sẽ tiếp tục nâng cấp điện thoại của mình khi phiên bản mới xuất hiện Những thị trường mới nổi như Ấn Độ, Trung Quốc và các nước Đông Âu cũng sẽ đạt được mức tăng trưởng ấn tượng trong một vài năm tới

Hầu như tất cả mọi người trên thế giới đều đang sở hữu trong túi của mình một thiết bị điện toán Và những ứng dụng hàng đầu được tìm kiếm và

sử dụng trong các smartphone chính là các loại game Các nhà phát triển game trên điện thoại di động đang thực sự ở thời hoàng kim, và thời kỳ này

sẽ không sớm kết thúc trong thời gian tới

Chính vì vậy, bản thân em chọn đề tài này nhằm muốn nghiên cứu về

kỹ thuật làm game 2D trên hệ điều hành ANDROID Bước đầu xây dựng

Trang 14

demo một chương trình game đơn giản phục vụ cho quá trình nghiên cứu và công việc tương lai sau này.

2 Mục đích, ý nghĩa của đề tài

Củng cố những kiến thức đã học và nghiên cứu: tìm hiểu hệ điều hành Android, nghiên cứu công nghệ làm game 2D

Xây dựng trò chơi Math Workout trên hệ điều hành Android

3 Phương án triển khai đề tài

Để hoàn thành đề tài này, trong quá trình triển khai thực hiện cần tuân thủ các bước sau:

Lập kế hoạch thực hiện đề tài

Trang 15

CHƯƠNG I CƠ SỞ LÝ THUYẾT I.1 Giới thiệu các công cụ để làm game

I.1.1 Eclipse

Eclipse là phần mềm miễn phí, được các nhà phát triển sử dụng để xây dựng những ứng dụng J2EE, sử dụng Eclipse nhà phát triển có thể tích hợp với nhiều công cụ hỗ trợ khác để có được một bộ công cụ hoàn chỉnh

mà không cần dùng đến phần mềm riêng nào khác Eclipse SDK bao gồm 3 phần chính: Platform, Java Development Toolkit (JDT), Plug-in Development Environment (PDE) Với JDT, Eclipse được xem như là một môi trường hỗ trợ phát triển Java mạnh mẽ PDE hỗ trợ việc mở rộng Eclipse, tích hợp các Plug-in vào Eclipse Platform Eclipse Platform là nền tảng của toàn bộ phần mềm Eclipse, mục đích của nó là cung cấp những dịch vụ cần thiết cho việc tích hợp những bộ công cụ phát triển phần mềm khác dưới dạng Plug-in, bản than JDT cũng có thể được coi là một Plug-in làm cho Eclipse như là một Java IDE (Integrated Development Environment – môi trường phát triển tích hợp)

I.1.2 Giới thiệu về ngôn ngữ lập trình Java

I.1.2.1 Lịch sử phát triển Năm 1990, Sun MicroSystems thực hiện dự án Green nhằm phát triển phần mềm trong các thiết bị dân dụng James Gosling, chuyên gia lập trình đã tạo ra một ngôn ngữ lập trình mới có tên là Oak Ngôn ngữ này có cú pháp gần giống như C++ nhưng bỏ qua các tính năng nguy hiểm của C++ như truy cập trực tiwwsp tài nguyên hệ thống, con trỏ, định nghĩa chồng các toán tử…

Trang 16

Khi ngôn ngữ Oak trưởng thành, WWW cũng đang vào thời kỳ phát triển manh mẽ Sun cho rằng đây là một ngôn ngữ thích hợp cho Internet Năm 1995, Oak đổi tên thành Java và sau đó đến 1996 Java được xem như một chuẩn công nghiệp cho Internet

I.1.2.2 Khả năng của Java

 Là một ngôn ngữ bậc cao như C, C++, Perl, SmallTalk,… cho nên có thể dùng để tạo ra các ứng dụng để giải quyết các vấn đề về số, xử lý văn bản, tạo ra trò chơi, và nhiều thứ khác

 Có các môi trường lập trình đồ họa như Visual Java, Symantec Café, Jbuilder, Jcreator,…

 Có khả năng truy cập dữ liệu từ xa thong qua cầu nối JDBC (Java Database Connectivity)

 Hỗ trợ các lớp hữu ích, tiện lợi trong lập trình các ứng dụng mạng (Sotket) cũng như truy xuất Web

 Hỗ trợ lập trình phân tán (Remote Method Invocation) cho phép một ứng dụng có thể được xử lý phân tán trên các máy tính khác nhau

 Và luôn được bổ sung các tính năng cao cấp khác trong các phiên bản sau

I.1.2.3 Những đặc điểm của Java

 Ngôn ngữ hoàn toàn hướng đối tượng

 Ngôn ngữ đa nền cho phép một chương trình có thể thực thi trên các

hệ điều hành khác nhau (MS Windows, UNIX, Linux) mà không phải biên dịch chương trình Phương châm của Java là “Viết một lần, chạy trên nhiều nền” (Write Once, Run AnyWhere)

Trang 17

 Ngôn ngữ đa luồng, cho phép trong một chương trình có thể có nhiều luồng điều khiển được thực thi song song nhau, rất hữu ích cho các xử

 Ngôn ngữ đơn giản, dễ học, kiến trúc chương trình đơn giản, trong sáng

I.1.2.4 Máy ảo Java (JVM – Java Virtual Machine)

Để đảm bảo tính đa nền, Java sử dụng cơ chế Máy ảo của Java

Bytecode đó là ngôn ngữ máy của Máy ảo Java tương tự như các lệnh nhị phân của các máy tính thực

Một chương trình sau khi được viết bằng ngôn ngữ Java (có phần mở rộng là java) phải được biên dịch thành tập tin thực thi được trên máy

ảo Java (có phần mở rộng là class) Tập tin thực thi này chứa các chỉ thị dưới dạng mã Bytecode mà máy ảo Java hiểu được phải làm gì Khi thực hiện một chương trình, máy ảo Java lần lượt thông dịch các chỉ thị dưới dạng Bytecode thành các chỉ thị dạng nhị phân của máy tính thực và thực thi thực sự chúng trên máy tính thực

Máy ảo thực tế đó là một chương trình thông dịch Vì thế các hệ điều hành khác nhau sẽ có các máy ảo khác nhau Để thực thi một ứng

Trang 18

dụng của Java trên một hệ điều hành cụ thể, cần phải đạt máy ảo tương ứng cho hệ điều hành đó

I.1.2.5 Hai kiểu ứng dụng dưới ngôn ngữ lập trình Java

Khi bắt đầu thiết kế một ứng dụng dưới ngôn ngữ Java, bjan phải chọn kiểu cho nó là Application hay Applet

 Applet: Là một chương trình ứng dụng được nhúng vào cá trang web Mã của chương trình được tải về máy người dùng từ Web Server khi người dùng truy xuất đến trang web chứa nó

 Application: Là một chương trình ứng dụng được thực thi trực tiếp trên các máy ảo của Java

I.1.2.6 Bộ phát triển ứng dụng Java (JDK – Java Development Kit)

JDK là một bộ công cụ cho phép người lập trình phát triển và triển khai các ứng dụng bằng ngôn ngữ Java được cung cấp miễn phí bởi công ty JavaSoft (hoặc Sun) Có các bộ JDK cho các hệ điều hành khác nhau Các ấn bản của JDK không ngừng được phát hành, có thể tải về từ địa chỉ http://java.sun.com hoặc http://www.javasoft.com

Bộ công cụ này gồm các chương trình thực thi đáng chú ý sau:

 Javac: Chương trình biên dịch các chương trình nguồn viết bằng ngôn ngữ java ra các tập tin thực thi được trên máy ảo Java

 Java: Đây là chương trình làm máy ảo của Java, thông dịch

mã Bytecode của các chương trình kiểu application thành

mã thực thi của máy thực

 Appletviewer: Bộ thông dịch, thực thi các chương trình

Trang 19

 Javadoc: Tạo tài liệu về chú thích chương trình nguồn một cách tự động

 Jdb: Trình gỡ rối

 Rmic: Tạo Stub cho ứng dụng kiểu RMI

 Rmiregistry: Phục vụ danh bạ (Name Server) trong hệ thống RMI

I.1.3 Giới thiệu về hệ điều hành Android

Hình 1 - Các thành viên của "Liên minh di động mở"

Trang 20

Từ năm 2007, hệ điều hành Android đã trải qua nhiều lần cập nhật Tính đến tháng 6/2010, đã có khoảng 70 mẫu điện thoại di động

sử dụng hệ điều hành Android, chưa kể các thiết bị điện tử khác như máy tính bảng (tablet computers), ebook readers, Google TV,

I.1.3.2 Khái niệm Android

Android là hệ điều hành điện thoại di động mở nguồn mở miễn phí do Google phát triển dựa trên nền tảng của Linux Bất kỳ một hãng sản xuất phần cứng nào cũng đều có thể tự do sử dụng hệ điều hành Android cho thiết bị của mình, miễn là các thiết bị ấy đáp ứng được các tiêu chuẩn cơ bản do Google đặt ra (có cảm ứng chạm, GPS, 3G, ) (Xem thêm: Android Compatibility Definition Document)

Các nhà sản xuất có thể tự do thay đổi phiên bản Android trên máy của mình một cách tự do mà không cần phải xin phép hay trả bất

kì khoản phí nào nhưng phải đảm bảo tính tương thích ngược (backward compatibility) của phiên bản chế riêng đó

Android là nền tảng cho thiết bị di động bao gồm một hệ điều hành, midware và một số ứng dụng chủ đạo Bộ công cụ Android SDK cung cấp các công cụ và bộ thư viên các hàm API cần thiết để phát triển ứng dụng cho nền tảng Android sử dụng ngôn ngữ lập trình java

Trang 21

 Optimized graphics: Hổ trợ bộ thư viện 2D và 3D dự vào đặc tả OpenGL ES 1.0

 SQLite: DBMS dùng để lưu trữ dữ liệu có cấu trúc

 Hổ trở các định dạng media phổ biến như: MPEG4, H.264, MP3, AAC, ARM, JPG, PNG, GIF

 Hổ trợ thoại trên nền tảng GSM (Phụ thuộc vài phần cứng thiết bị)

 Bluetooth, EDGE, 3G và WiFi (Phụ thuộc vài phần cứng thiết bị)

 Camera, GPS, la bàn và cảm biến (Phụ thuộc vài phần cứng thiết bị)

 Bộ công cụ phát triển ứng dụng mạnh mẽ

I.1.3.3 Kiến trúc Android

Lược đồ sau thể hiện các thành phần của hệ điều hành Android:

Hình 2 Mô hình kiến trúc nền tảng Android

Trang 22

Applications

Hệ điều hành Android tích hợp sẳn một số ứng dụng cơ bản như email client, SMS, lịch điện tử, bản đồ, trình duyệt web, sổ liên lạc và một số ứng dụng khác Ngoài ra tầng này cũng chính là tầng chứa các ứng dụng được phát triển bằng ngôn ngữ Java

Application Framwork

Tầng này của hệ điều hành Android cung cấp một nền tảng phát triển ứng dụng mở qua đó cho phép nhà phát triển ứng dụng có khả năng tạo ra các ứng dụng vô cùng sáng tạo và phong phú Các nhà phát triển ứng dụng được tự do sử dụng các tính năng cao cấp của thiết bị phần cứng như: thông tin định vị địa lý, khả năng chạy dịch vụ dưới nền, thiết lập đồng hồ báo thức, thêm notification vào status bar của màn hình thiết bị…

Người phát triển ứng dụng được phép sử dụng đầy đủ bộ API được dùng trong các ứng dụng tích hợp sẳn của Android Kiến trúc ứng dụng của Android được thiết kế nhằm mục đích đơn giản hóa việc tái sử dụng các component Qua đó bất kì ứng dụng nào cũng có thể công bố các tính năng mà nó muốn chia sẻ cho các ứng dụng khác (VD: Ứng dụng email có muốn các ứng dụng khác có thể sử dụng tính năng gởi mail của nó) Phương pháp tương tự cho phép các thành phần có thể được thay thế bởi người sử dụng

Tầng này bao gồm một tập các services và thành phần sau:

 Một tập phong phú và có thể mở rộng bao gồm các đối tượng View được dùng để xây dựng ứng dụng như: list, grid, text box, button và thậm chí là một trình duyệt web

có thể nhúng vào ứng dụng

Trang 23

Content Provider: Cho phép các ứng dụng có thể truy

xuất dữ liệu từ các ứng dụng khác hoặc chia sẽ dữ liệu của chúng

Resource Manager: Cung cấp khả năng truy xuất các tài

nguyên non-code nhƣ hình ảnh hoặc file layout

Notification Manager: Cung cấp khả năng hiển thị

custom alert trên thanh status bar

Activity Manager: Giúp quản lý vòng đời của một ứng

dụng

Libraries

System C library: một thể hiện đƣợc xây dựng từ BSD

của bộ thƣ viện hệ thống C chuẩn (libc), đƣợc điều chỉnh

để tối ƣu hóa cho các thiết bị chạy trên nền Linux

Media libraries: Bộ thƣ viện hổ trợ trình diễn và ghi các

định dạng âm than và hình ảnh phổ biến

Surface manager: Quản lý hiển thị nội dung 2D và 3D

LibWebCore: Một web browser engine hiện đại đƣợc sử

dụng trong trình duyệt của Android lần trong trình duyệt nhúng web view đƣợc sử dụng trong ứng dụng

SGL: Engine hổ trợ đồ họa 2D

3D libraries: Một thể hiện đƣợc xây dựng dựa trên các

APIs của OpenGL ES 1.0 Những thƣ viện này sử dụng các tăng tốc 3D bằng phần cứng lẫn phần mềm để tối ƣu hóa hiển thị 3D

FreeType: Bitmap and vector font rendering

Trang 24

SQLite: Một DBMS nhỏ gọn và mạnh mẽ

Android Runtime

Hệ điều hành Android tích hợp sẳn một tập hợp các thư viện cốt lõi cung cấp hầu hết các chức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java Mọi ứng dụng của Android chạy trên một tiến trình của riêng nó cùng với một thể hiện của máy ảo Dalvik Máy

ảo Dalvik thực tế là một biến thể của máy ảo Java được sửa đổi, bổ sung các công nghệ đặc trưng của thiết bị di động Nó được xây dựng với mục đích làm cho các thiết bị di động có thể chạy nhiều máy ảo một cách hiệu quả Trước khi thực thi, bất kì ứng dụng Android nào cũng được convert thành file thực thi với định dạng nén Dalvik Executable (.dex) Định dạng này được thiết kế để phù hợp với các thiết bị hạn chế về bộ nhớ cũng như tốc độ xử lý Ngoài ra máy ảo Dalvik sử dụng bộ nhân Linux để cung cấp các tính năng như thread, low-level memory management

Linux Kernel

Hệ điều hành Android được xây dựng trên bộ nhân Linux 2.6 cho những dịch vụ hệ thống cốt lõi như: security, memory management, process management, network stack, driver model Bộ nhân này làm nhiệm vụ như một lớp trung gian kết nối phần cứng thiết

bị và phần ứng dụng

Trang 25

Dưới đây là mô hinh hợp tác giữa máy ảo Dalvik và Navite code:

Hình 3 Mô hình hợp tác giữa máy ảo Dalvik và Navite code

JNI: Java Native Interface (Tương tự khái niệm Application Programming Interface)

Java Native Interface: là một bộ framework cho phép mã lệnh viết bằng Java chạy trên máy ảo java có thể gọi hoặc được gọi bởi một

ứng dụng viết bằng native code (Ứng dụng được viết cho một phần

cứng cụ thể và trên một hệ điều hành cụ thể) hoặc những bộ thư viện viết bằng C, C++ hoặc Assembly

Bằng cách sử dụng JNI, Android cho phép các ứng dụng chạy trên máy ảo Dalvik có thể sử dụng những phương thức được viết bằng các ngôn ngữ cấp thấp như: C, C++, Assembly Qua đó các nhà phát triển ứng dụng có thể xây dựng ứng dụng dựa trên các bộ thư viện viết bằng C, C++, Assembly nhằm tăng tốc độ thực thi của ứng dụng hoặc

sử dụng những tính năng mức thấp mà ngôn ngữ Java không hổ trợ

Trang 26

Tuy nhiên người phát triển ứng dụng cần phải cân nhắc sự gia tăng độ phức tạp của ứng dụng khi quyết định sử dụng các bộ thư viện này

I.2 Cấu trúc của một game

I.2.1 Game loop (vòng lặp của game)

Là thành phần quan trọng của bất kỳ game nào Game loop giúp game chạy ổn định hơn không bị ảnh hưởng bởi tác động của người dùng

Hầu hết các chương trình truyền thống đều đáp ứng thông điệp đưa vào của người dùng Ví dụ như: word thì định dạng và text theo nhưng gì người dùng nhập vào, nếu người dùng không nhập vào thì nó không làm gì

cả Nhưng đối với một chương trình game thì dù người dùng có nhập vào thông điệp hay không thi nó vẫn thực hiện theo một cấu trúc chương trình có sẵn đây chính là vòng lặp của game

Một vòng lặp game rất đơn giản nó có thể trông như thế này:

While ( user doesn't exit )

check for user input

Trang 27

I.2.2 Framerate (FPS)

Số lần vẽ khung hình trên một giây Framerate chậm sẽ làm cho người dùng không có cảm giác thật, ảnh hưởng đến sự tương tác của người dùng với trò chơi

Các yếu tố làm cho framerate chậm

Hình vẽ có kích thước lớn Tính toán trong game nhiều Lỗi của thiết

bị

Cách cải thiện framerate

Tối ưu hóa tính toán và các điều kiện thực hiện trong game:

Bỏ các hiệu ứng không cần thiết

Limit Frame rate

Là sự giới hạn lại số lần vẽ trên một giây của trò chơi Nhằm mục đích dùng trong những trường hợp ứng dụng có frame rate quá nhanh, sẽ làm cho ứng dụng không ổn định Ảnh hưởng đến quá trình xử lý, người chơi không chơi kịp và một điều nữa là nó dẫn đến việc nhanh hết pin của thiết bị

I.2.3 Bộ nhớ (memory)

Là kích thước bộ nhớ có thể dùng để chạy chương trình game của thiết

Trang 28

bị

Các yếu tố ảnh hưởng đến bộ nhớ trong game

• File ảnh dùng trong game

• Âm thanh dùng trong game

• Các file text, mảng chứa text trong game

Tối ưu hóa bộ nhớ

• Đơn giản hóa các frame và hình ảnh động

• Chia ảnh ra thành các module nhỏ

• Xóa các module của dữ liệu sau khi caching

• Dùng gói sound có dung lượng nhỏ, Load sound khi chạy sound và giải phóng (free) khi dừng sound

• Dùng mảng một chiều thay vì dùng mảng 2 chiều

• Chỉ giữ những đối tượng cần thiết trong bộ nhớ Để tránh vấn đề phân mảnh bộ nhớ (là các đối tượng thường dùng (fonts, main characters, common interface sprites, … ) )

• Load khi muốn vẽ và giải phóng khi đi ra khỏi màn hình

• Tránh phân mảnh bộ nhớ: load đối tượng có kích thước lớn trước Giữ cho bộ nhớ ổn định Không load và giải phóng quá nhiều lần

I.2.4 State

Là các trạng thái của một game Chúng có liên quan chặt chẽ với nhau.Thông thường một game thường có các trạng thái sau: mainmenu,

gamestart, gamewin, gameover, about, highscore, Exit…

I.3 Giới thiệu về SDK

Android SDK cung cấp cho bạn các thư viện API và các công cụ phát triển cần thiết để xây dựng, kiểm tra, gỡ lỗi và các ứng dụng cho Android

Trang 29

Android SDK bao gồm các gói mô-đun mà bạn có thể tải về một cách riêng biệt bằng cách sử dụng SDK Manager Android Ví dụ, khi các công cụ SDK được cập nhật hoặc một phiên bản mới của nền tảng Android được phát hành, bạn có thể quản lý sử dụng SDK để nhanh chóng tải chúng vào môi trường của bạn Chỉ cần làm theo các thủ tục được mô tả trong Thêm nền tảng

và trọn gói

Có những gói khác nhau có sẵn cho Android SDK

SDK Tools: Chứa các công cụ để gỡ lỗi và thử nghiệm, cộng với

các tiện ích khác được yêu cầu để phát triển một ứng dụng Nếu bạn vừa cài đặt khởi động gói SDK, sau đó bạn đã có phiên bản mới nhất của gói phần mềm này Hãy chắc chắn rằng bạn giữ này được cập nhật

SDK Platform-tools: Chứa các công cụ nền tảng phụ thuộc vào

việc phát triển và gỡ lỗi các ứng dụng của bạn Những công cụ này

hỗ trợ các tính năng mới nhất của nền tảng Android và thường được cập nhật chỉ khi một nền tảng mới trở nên có sẵn Những công cụ này luôn luôn tương thích với nền tảng cũ, nhưng bạn phải chắc chắn rằng bạn có phiên bản mới nhất của những công cụ này khi bạn cài đặt một nền tảng SDK mới

Documentation: Một bản sao của các tài liệu mới nhất cho các API

nền tảng Android

SDK Platform: Có một SDK Platform có sẵn cho mỗi phiên bản

của Android Nó bao gồm một tập tin android.jar với một thư viện Android hoàn toàn tuân thủ Để xây dựng một ứng dụng Android, bạn phải xác định một nền tảng SDK như mục tiêu xây dựng của bạn

Trang 30

System Image: Mỗi phiên bản nền tảng cung cấp một hoặc nhiều

hình ảnh hệ thống khác nhau (chẳng hạn như cho ARM và x86) Giả lập Android đòi hỏi một hình ảnh hệ thống để hoạt động Bạn nên luôn luôn kiểm tra ứng dụng của bạn trên phiên bản mới nhất của Android và sử dụng giả lập với hình ảnh mới nhất của hệ thống

là một cách tốt để làm như vậy

Sources for Android SDK: Một bản sao của các nền tảng mã

nguồn Android đó là hữu ích để đẩy mạnh thông qua các mã trong khi gỡ lỗi ứng dụng của bạn

Samples for SDK: Một bộ sưu tập các ứng dụng mẫu để chứng

minh một loạt các nền tảng API Đây là một nguồn lực lớn để trình duyệt Android mã ứng dụng Các ứng dụng API Demo đặc biệt là cung cấp một số lượng lớn các bản demo nhỏ, bạn nên khám phá

Google APIs: Một SDK add-on cung cấp cả một nền tảng mà bạn

có thể sử dụng để phát triển một ứng dụng sử dụng API của Google đặc biệt và một hình ảnh hệ thống giả lập để bạn có thể thử nghiệm ứng dụng của bạn bằng cách sử dụng các API của Google

Android Support: Một thư viện tĩnh, bạn có thể bao gồm trong các

nguồn ứng dụng của bạn để sử dụng API mạnh mẽ mà không có sẵn trong các nền tảng tiêu chuẩn Ví dụ, các thư viện hỗ trợ bao gồm các phiên bản của Fragment lớp tương thích với Android 1.6

và cao hơn (lớp ban đầu được giới thiệu trong Android 3.0) và

ViewPager các API cho phép bạn dễ dàng xây dựng một giao diện người dùng phụ swipeable

Bạn có thể thêm các trang web mới để tải về gói bổ sung từ bên thứ ba

Trong một số trường hợp, một gói phần mềm SDK có thể yêu cầu một

Trang 31

sự phụ thuộc giữa các Plugin ADT cho Eclipse và các công cụ gói SDK Khi bạn cài đặt các công cụ gói SDK, bạn cũng nên nâng cấp lên phiên bản yêu cầu của ADT (nếu bạn đang phát triển trong Eclipse) Trong trường hợp này, số phiên bản chính cho plugin ADT của bạn nên luôn luôn phù hợp với số phiên bản của Công cụ SDK của bạn (ví dụ, ADT 8.x yêu cầu SDK Công cụ r8)

Các công cụ phát triển sẽ thông báo cho bạn với các cảnh báo gỡ lỗi nếu

có sự phụ thuộc mà bạn cần phải giải quyết SDK Android quản lý cũng thực thi phụ thuộc bằng cách yêu cầu mà bạn tải về các gói phần mềm cần thiết bởi những người mà bạn đã chọn

Trang 32

CHƯƠNG II TRÒ CHƠI VÀ QUÁ TRÌNH LẬP TRÌNH,

KIỂM THỬ II.1 Trò chơi

Trò chơi bao gồm 4 trò chơi nhỏ tương ứng với 4 phần :

 Addition & Subtraction: Người chơi trả lời các câu hỏi được đưa ra là các phép tính cộng hoặc trừ xuất hiện ngẫu nhiên Người chơi có thể chọn các mức độ: dễ, trung bình, khó; Và các mức số lượng câu hỏi:

10 câu, 20 câu, 50 câu

 Multiplication & Division: Người chơi trả lời các câu hỏi được đưa ra

là các phép tính nhân hoặc chia xuất hiện ngẫu nhiên Người chơi có thể chọn các mức độ: dễ, trung bình, khó; Và các mức số lượng câu hỏi: 10 câu, 20 câu, 50 câu

 Brain Cruncher: Người chơi bắt đầu trò chơi với 1 con số cho sắn Sau

đó qua từng câu hỏi sẽ là những phép toán được đưa ra ngẫu nhiên Người chơi tính nhẩm và ghi nhớ kết quả qua từng câu hỏi và đưa ra đáp án cuối cùng Người chơi có thể chọn các mức độ chơi: thấp, trung bình, cao

 Math Blaster Challenge: Các câu hỏi là các phép tính cộng, trừ nhân, chia xuất hiện ngẫu nhiên và di chuyển từ phía trên xuống phía dưới màn hình Người chơi nhập câu trả lời đúng để chặn các câu hỏi di chuyển Với mỗi câu trả lời đúng, người chơi sẽ được 1 điểm Nếu để

2 câu hỏi vượt qua giới hạn phía dưới màn hình, người chơi sẽ thua

Trang 33

II.2 Quá trình lập trình

II.2.1 Phân tích chương trình

Dựa vào các phân tích,ta có thiết kế khung của chương trình:

Hình 4 Biểu diễn khung thiết kế của chương trình

Trang 34

Lớp Player : chứa các thông tin về người chơi

Lớp OptionScreen : thể hiện màn hình tùy chọn (option)

Lớp ChangePlayerScreen: thể hiện màn hình thay đổi người chơi

Lớp MainMenuScreen : thể hiện màn hình chính

Lớp CreditScreen: thể hiện màn hình credit

Lớp AddnSubScreen : thể hiện màn hình chuẩn bị vào màn chơi Addition &

Subtraction

Lớp AddnSubPlayScreen: thể hiện màn chơi Addition & Subtraction

Lớp MulnDivScreen: thể hiện màn hình chuẩn bị vào màn chơi

Multiplication & Division

Lớp MulnDivPlayScreen: thể hiện màn chơi Multiplication & Division

Lớp MathBlasterChallengeScreen : thể hiện màn chơi Math Blaster

Trang 35

II.2.2 Lập trình trò chơi

Chúng ta định nghĩa lớp ResourceManager để quản lý các biến đại diện đối

tượng và lớp Player để quản lý các thông tin người chơi, sau đó lần lượt cài

đặt các nội dung như sau:

 ResourceManager

Định nghĩa biến chứa các layout ID:

public static int screenXMLArr[ ] = {R.layout.changeplayer_screen,

R.layout.main_menu, R.layout.option_screen, R.layout.splash_screen, R.layout.addnsub_screen, R.layout.addnsubplay_screen, R.layout.alert_change_player, R.layout.addnsubfinish_screen, R.layout.mathblasterchallenge_screen,

R.layout.highscore_layout,

R.layout.chart_layout,

Định nghĩa biến chứa cái surfaceview ID:

public static int surfaceViewMBC_ID = R.id.SurfaceViewMBC;

Trang 36

public static int surfaceViewChart_ID = R.id.SurfaceViewChart;

Định nghĩa biến chứa các image resource:

public static int imgLogo = R.drawable.gcs_logo_copy;

public static int imgComplete = R.drawable.complete;

public static int imgAppName = R.drawable.appname;

public static int imgCredit = R.drawable.credit;

public static int imgMathBlaster =

R.drawable.mathblasterchallenge;

public static int imgLevelUpMBC = R.drawable.levelup;

public static int imgCount[ ] = { R.drawable.numcount0,

R.drawable.numcount1,

R.drawable.numcount2,

R.drawable.numcount3 };

public static int icCircle = R.drawable.circle;

public static int icNumber[ ] = { R.drawable.num0,

R.drawable.num2, R.drawable.num3, R.drawable.num4,

Trang 37

R.drawable.num6, R.drawable.num7, R.drawable.num8,

Định nghĩa các biến chứa các icon resource:

public static int icChkBoxTrue = R.drawable.chkbox_true;

public static int icChkBoxNormal = R.drawable.chkbox_normal;

public static int icChkBoxFalse = R.drawable.chkbox_false;

public static int icChkBoxOut = R.drawable.chkbox_out;

public static int icChangePlayer = R.drawable.change_player;

public static int icOption = R.drawable.option;

public static int icSoundOn = R.drawable.sound_on;

public static int icSoundOff = R.drawable.sound_off;

public static int icCredit = R.drawable.ic_credit;

public static int icOperator[ ] = { R.drawable.add,

R.drawable.sub, R.drawable.mul, R.drawable.div };

Định nghĩa các biến chứa các ImageView ID:

public static int splash_ID = R.id.imgSplash;

public static int AppNameMain_ID = R.id.imgAppMain;

public static int AppNameOption_ID = R.id.imgAppOption;

Trang 38

public static int AnSCount_ID = R.id.imgCountAnS;

public static int AppNameChangePlayer_ID =

R.id.imgAppChangePlayer;

public static int CompleteAnS_ID = R.id.imgCompleteAnS;

Các biến chứa TextView ID:

public static int edtPlayerNameCP_ID = R.id.txtPlayerNameCP;

public static int txtDesMain_ID = R.id.txtDesMain;

public static int txtDesOption_ID = R.id.txtDesOption;

public static int txtVersion_ID = R.id.txtVersion;

public static int txtNumQuesAnS_ID = R.id.txtNumQuesAnS;

public static int txtDiffAnS_ID = R.id.txtDiffAnS;

public static int txtAnSName_ID = R.id.txtNameAnS;

public static int txtplayerNameCP_ID = R.id.txtplayerCP;

public static int txtChangingRoomCP_ID = R.id.txtChangingRoomCP;

public static int txtTapBtn_ID = R.id.txtTapButtonCP;

public static int txtNoteCP_ID = R.id.txtNoteCP;

public static int txtTimeCountAnS_ID = R.id.txtTimeCountAnS;

public static int txtQuesAnS_ID = R.id.txtQuesAnS;

public static int txtAnsAnS_ID = R.id.txtAnsAnS;

public static int txtWrongAttempAnS_ID = R.id.txtWrgAtmpAnS;

Trang 39

public static int txtDiffNameAnS_ID = R.id.txtDiffNameAnS;

public static int txtDifficultAnS_ID = R.id.txtDifficultAnS;

public static int txtYourTimeAnS_ID = R.id.txtYourTimeAnS;

public static int txtYourTimeNameAnS_ID =

R.id.txtYourTimeNameAnS;

public static int txtNumDiffQuesHS_ID = R.id.txtNumDiffQues;

public static int txtPartNameHS_ID = R.id.txtPartName;

public static int txtAnsMBC_ID = R.id.txtAnsMBC;

public static int txtPosNoHS_ID[] = { R.id.txtPosNo1,

R.id.txtPosNo2, R.id.txtPosNo3, R.id.txtPosNo4, R.id.txtPosNo5 };

Các biến chứa Button ID:

public static int btnNoAnS_ID[] = { R.id.btnNo0AnS,

R.id.btnNo1AnS,

R.id.btnNo2AnS, R.id.btnNo3AnS, R.id.btnNo4AnS, R.id.btnNo5AnS,

Trang 40

public static int btnAddnSub_ID = R.id.btnAddnSub;

Ngày đăng: 09/05/2021, 17:06

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Trang web: http://docs.google.com/document/ Link
[3] Trang web: http://sinhvienit.net/forum/ebook-lap-trinh-android-tieng-viet.200357.html Link
[4] Trang web: http://sinhvienit.net/forum/hoc-lap-trinh-ung-dung-android-co-ban-ebook.129535.html Link
[5] Trang web: http://www.droidviet.com/forum/lap-trinh-android/ Link
[6] Trang web: http://developer.android.com/index.html Link
[7] Trang web: http://www.ibm.com/developerworks/vn/library/os-android-devel/ Link
[8] Trang web: http://android.vn/forums/21/ Link
[9] Trang web: http://stackoverflow.com/ Link
[1] Giáo trình lập trình mạng – Lê Văn Mỹ Khác
[10] Một số tài liệu khác và kinh nghiệm từ thực tiễn Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w