1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

85 11 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

Định dạng
Số trang 85
Dung lượng 0,92 MB

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

Nội dung

dөng cӫa Java trên mӝt hӋ ÿLӅu hành cө thӇ, cҫn phҧL ÿҥt máy ҧo WѭѫQJӭng cho hӋ ÿLӅXKjQKÿyx Application: Là mӝWFKѭѫQJWUuQKӭng dөQJÿѭӧc thӵc thi trӵc tiӃp trên các máy ҧo cӫa Java.. Bҩt k

Trang 1

ĈҤI HӐ&Ĉ¬1 ҸNG ĈҤI HӐ&6Ѭ3+ ҤM

Ĉ¬1 ҸNG, 05/2013

Trang 4

LӠI CҦ0Ѫ1

Tôi xin chân thành cҧPѫQFiFWKҫy cô giáo trong khoa Tin hӑc cùng toàn thӇ

thҫy cô cӫDWUѭӡQJĈҥi HӑF6ѭ3Kҥm ± Ĉҥi HӑFĈj1ҹQJÿmWUX\ӅQÿҥt cho tôi

nhӳng kiӃn thӭc quý giá trong suӕt nhӳQJQăPKӑc vӯa qua

Xin chân thành cҧPѫQF{3KҥP'ѭѫQJ7KX+ҵQJÿmWұn tình chӍ bҧo và

JL~Sÿӥ cho tôi KRjQWKjQKÿӗ án này

Cuӕi cùng tôi xin cҧPѫQFiFEҥn trong khoa Tin, nhӳQJQJѭӡLÿmJL~Sÿӥ, chia sҿ nhӳng kiӃn thӭc, kinh nghiӋm, tài liӋX«WURQJVXӕt quá trình nghiên cӭu

thӵc hiӋQÿӅ tài

Trang 5

7{L[LQFDPÿRDQ

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̫ RGQJWURQJEiRFiRQj\ÿ ͉ Xÿ˱ ͫc trích d̳n rõ ràng tên tác giá, tên công trình, thͥ LJLDQÿ ͓ DÿL ͋m công b͙

4 M͕ i sao chép không hͫ p l͏ , vi ph̩ m quy ch͇ ÿjRW ̩o, hay gian trá, tôi xin ch͓ u hoàn toàn trách nhi͏ m

Sinh viên thӵc hiӋn Phan ViӃW'NJQJ

Trang 6

MӨC LӨC

MӢ ĈҪU 13

1 Giӟ i thiӋ Xÿ Ӆ tài 13

2 Mө FÿtFKêQJKƭDF ӫDÿ Ӆ tài 14

3KѭѫQJiQWUL ӇQNKDLÿ Ӆ tài 14

&+Ѭ Ѫ1*,&Ѫ6 Ӣ 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ҧ QăQJF ӫa Java 16

I.1.2.3 Nhӳ QJÿ һ FÿL Ӈ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ө QJGѭ ӟ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Ӌ ÿL Ӆ 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

&+ѬѪ1*,,75Ñ&+Ѫ,9¬48È75Î1+/ ҰP TRÌNH, KIӆM THӰ 32

,,7UzFKѫL 32

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

,,3KkQWtFKFKѭ ѫQJWUuQK 33

II.2.2 Lұ SWUuQKWUzFKѫL 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

,,&jLÿ һ t hӋ thӕ ng trên Android 56

II.3.2 KiӇ m thӱ 57

&+ѬѪ1*,,,0 Ӝ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ҧ ÿ ҥ Wÿѭ ӧc 84

Trang 8

2 Nhӳ ng vҩ Qÿ Ӆ còn tӗ Qÿ ӑng 84

+ѭ ӟng phát triӇ n cӫ Dÿ Ӆ 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ͯ D/LrQPLQKGLÿ ͡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ͯ DFK˱˯QJWUuQK 33

Hình 6 K͇ t qu̫ demo bi͋ XW˱ ͫ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̫ GHPRPjQKuQKWKD\ÿ ͝LQJ˱ ͥLFK˯LF ͯa game trên Android 70

Hình 12 K͇ t qu̫ GHPRPjQKuQKÿ ͝LWrQQJ˱ ͥLFK˯LF ͯa game trên Android 70 Hình 13 K͇ t qu̫ demo màn hình chu̱ n b͓ YjRFK˯L$GGLWLRQ 6XEWUDFWLRQ cͯ a game trên Android 71

Hình 14 K͇ t qu̫ GHPRPjQKuQKFK˯L$GGLWLRQ 6XEWUDFWLRQF ͯa game trên Android 71

Hình 15 K͇ t qu̫ GHPRPjQKuQKFK˯L$GGLWLRQ 6XEWUDFWLRQNKLQJ˱ ͥLFK˯L tr̫ lͥ Lÿ~QJF ͯa game trên Android 72

Hình 16 K͇ t qu̫ GHPRPjQKuQKFK˯L$GGLWLRQ 6XEWUDFWLRQ NKLQJ˱ ͥLFK˯L 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̫ FK˯L$GGLWLRQ 6XEWUDFWLRQ cͯ a game trên Android 73

Trang 10

Hình 18 K͇ t qu̫ GHPRPjQKuQK[HPÿL ͋ 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͋ Xÿ ͛ ÿL ͋ 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͓ FK˯L0XOWLSOLFDWLRQ 'LYLVLRQF ͯa

game trên Android 74

Hình 21K͇ t qu̫ GHPRPjQKuQKFK˯L0XOWLSOLFDWLRQ 'LYLVLRQF ͯa game

Hình 24 K͇ t qu̫ demo màn hình xem l̩ i k͇ t qu̫ FK˯L0XOWLSOLFDWLRQ 

Division cͯ a game trên Android 76

Hình 25 K͇ t qu̫ GHPRPjQKuQK[HPÿL ͋ 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͋ Xÿ ͛ ÿL ͋ m cao Multiplication &

Division cͯ a game trên Android 77

Hình 27 K͇ t qu̫ demo màn hình ch͕ Qÿ ͡ khó Brain Cruncher cͯa game trên

Android 78

Hình 28 K͇ t qu̫ demo màn hình chu̱ n b͓ FK˯L%UDLQ&UXQFKHUF ͯa game trên

Android 78

Hình 29 K͇ t qu̫ GHPRPjQKuQKFK˯L%UDLQ&UXQFKHUFkXK ͗Lÿ ̯u tiên cͯa

game trên Android 79

Hình 30 K͇ t qu̫ GHPRPjQKuQKFK˯L%UDLQ&UXQFKHUFkXK ͗i ti͇ p theo cͯ a

game trên Android 79

Hình 31 K͇ t qu̫ GHPRPjQKuQKQJ˱ ͥLFK˯LQK ̵p k͇ t qu̫ cu͙ i cùng Brain

Trang 11

Hình 32 K͇ t qu̫ demo màn hình xem l̩ LPjQFK˯L%UDLQ&UXQFKHUF ͯa game

trên Android 80

Hình 33 K͇ t qu̫ demo màn hình xem l̩ i câu h͗ LYjÿiSiQ%UDLQ&UXQFKHU

cͯ a game trên Android 81

Hình 34 K͇ t qu̫ GHPRPjQKuQKFK˯L Math Blaster Challenge cͯ a game trên

Android 81

Hình 35 K͇ t qu̫ GHPRPjQKuQKFK˯L0DWK%ODVWHU&KDOOHQJHNKLQJ˱ ͥLFK˯L tr̫ lͥ Lÿ~QJF ͯ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

*LӟLWKLӋXÿӅWjL

Tҩt cҧ mӑLQJѭӡLÿӅu cҫQFiFWUzFKѫL7UzFKѫLÿӇ giӃt thӡi gian, tìm hiӇu thӃ giӟL[XQJTXDQKWăQJVӭc cҥnh tranh hay chӭng tӓ bҧn thân Qua

hàng triӋX QăP WLӃn hóa cӫD FRQ QJѭӡi và cӫa các loҥL WUz FKѫL Gѭӟi hình

thӭc này hay hình thӭFNKiFÿӅu mang theo tҩt cҧ nhӳng tiêu chí kӇ trên

Vӟi mӝt tӹ chiӃFÿLӋn thoҥi thông minh trên toàn thӃ giӟi và máy tính

bҧQJFNJQJÿmÿӃQWD\KjQJWUăPWULӋXQJѭӡLWLrXGQJÿk\FKtQKOjFѫKӝi vàng cho các nhà phát triӇn phҫn mӅPGLÿӝng tҥo ra sӵ thành công và phát

triӇn sӵ nghiӋp lâu dài vӟi game

&K~QJWDÿDQJӣ QăPWKӭ sáu cӫa cuӝc cách mҥQJÿLӋn thoҥLGLÿӝng

1KѭÿmÿӅ cұp ӣ trên, hiӋn có khoҧng 1 tӹ chiӃFÿLӋn thoҥLWK{QJPLQKÿDQJ

ÿѭӧc sӱ dөng trên toàn thӃ giӟi 1 tӹ chiӃF ÿLӋn thoҥi tiӃp theo dӵ kiӃn sӁ

ÿѭӧc nӕi mҥQJWURQJYzQJEDQăPWӟL&iFQѭӟc phát triӇn hiӋQÿmÿҥWÿӃn

ÿLӇm bão hòa, hҫu hӃt nhӳQJQJѭӡi tiêu dùng ӣ Mӻ YjFKkXÆXÿDQJVӣ hӳu

ÿLӋn thoҥLWK{QJPLQKÿӅu khҷQJÿӏnh rҵng hӑ sӁ tiӃp tөc nâng cҩSÿLӋn thoҥi

cӫa mình khi phiên bҧn mӟi xuҩt hiӋn Nhӳng thӏ WUѭӡng mӟi nәLQKѭҨQĈӝ,

Trung QuӕF Yj FiF QѭӟF Ĉ{QJ ÆX FNJQJ VӁ ÿҥW ÿѭӧc mӭF WăQJ WUѭӣng ҩn

Wѭӧng trong mӝWYjLQăPWӟi

HҫXQKѭWҩt cҧ mӑLQJѭӡi trên thӃ giӟLÿӅXÿDQJVӣ hӳu trong túi cӫa mình mӝt thiӃt bӏ ÿLӋn toán Và nhӳng ӭng dөQJKjQJÿҫXÿѭӧ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

JDPHWUrQÿLӋn thoҥLGLÿӝQJÿDQJWKӵ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ӑQÿӅ tài này nhҵm muӕn nghiên cӭu vӅ

kӻ thuұt làm game 2D trên hӋ ÿLӅX KjQK $1'52,' %ѭӟF ÿҫu xây dӵng

Trang 14

demo mӝWFKѭѫQJWUuQKJDPHÿѫQJLҧn phөc vө cho quá trình nghiên cӭu và

công viӋFWѭѫQJODLVDXQj\

0өFÿtFKêQJKƭDFӫDÿӅWjL

Cӫng cӕ nhӳng kiӃn thӭF ÿm Kӑc và nghiên cӭu: tìm hiӇu hӋ ÿLӅu hành

Android, nghiên cӭu công nghӋ làm game 2D

Xây dӵQJWUzFKѫL0DWK:RUNRXWWUrQKӋ ÿLӅu hành Android

Cӫng cӕ kӃt quҧ ÿmÿҥWÿѭӧc (bao gӗm kiӇm thӱ các module và chӭFQăQJ

cӫa hӋ thӕng, chӍnh sӱa lӛi nӃu có và tiӃn tӟi hoàn thiӋQFKѭѫQJWUuQKӣ mӭc

có thӇ)

Song song vӟLFiFJLDLÿRҥn trên là quá trình hӑc hӓi, tích góp tài liӋu và các

kiӃn thӭc vӅ các công cө liên quan nhҵm phөc vө cho viӋc xây dӵng và hoàn

thiӋQÿӅ tài

Trang 15

&+ѬѪ1 *,&Ѫ6Ӣ/é7+8<ӂ7 I.1 GiӟLWKLӋXFiFF{QJFөÿӇOjPJDPH

I.1.1 Eclipse

Eclipse là phҫn mӅm miӉQ SKt ÿѭӧc các nhà phát triӇn sӱ dөQJ ÿӇ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ӧ NKiFÿӇ Fyÿѭӧc mӝt bӝ công cө hoàn chӍnh

mà không cҫQGQJÿӃ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ӟL-'7(FOLSVHÿѭӧF[HPQKѭOjPӝt

P{L WUѭӡ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өF ÿtFK Fӫ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

NKiFGѭӟi dҥng Plug-in, bҧQWKDQ-'7FNJQJFyWKӇ ÿѭӧc coi là mӝt Plug-in

OjP FKR (FOLSVH QKѭ Oj Pӝt Java IDE (Integrated Development

Environment ± P{LWUѭӡng phát triӇn tích hӧp)

I*LӟLWKLӋXYӅQJ{QQJӳOұSWUuQK-DYD

I/ӏFKVӱSKiWWULӇQ 1ăP , 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ұS WUuQK ÿm Wҥ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ӕQJQKѭ&QKѭQJEӓ qua các WtQKQăQJQJX\KLӇm cӫD&QKѭtruy cұp trӵc tiwwsp tài nguyên hӋ

thӕng, con trӓÿӏQKQJKƭDFKӗng các toán tӱ«

Trang 16

Khi ngôn ngӳ 2DNWUѭӣQJWKjQK:::FNJQJÿDQJYjRWKӡi kǤ phát triӇn manh mӁ Sun cho rҵQJ ÿk\ Oj Pӝt ngôn ngӳ thích hӧp cho

,QWHUQHW1ăP2DNÿәi tên thành Java và sau ÿyÿӃn 1996 Java

ÿѭӧF[HPQKѭPӝt chuҭn công nghiӋp cho Internet

,.KҧQăQJFӫD-DYD

x Là mӝt ngôn ngӳ bұFFDRQKѭ&&3HUO6PDOO7DON«FKRQrQFythӇ GQJÿӇ tҥo ra các ӭng dөQJÿӇ giҧi quyӃt các vҩQÿӅ vӅ sӕ, xӱ lý

YăQEҧn, tҥRUDWUzFKѫLYà nhiӅu thӭ khác

x &yFiFP{LWUѭӡng lұSWUuQKÿӗ hӑDQKѭ9LVXDO-DYD6\PDQWHF&DIp

x 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

x 9jOX{Qÿѭӧc bә VXQJFiFWtQKQăQJFDRFҩp khác trong các phiên bҧn

sau

I1KӳQJ ÿһFÿLӇPFӫD-DYD

x Ngôn ngӳ KRjQWRjQKѭӟQJÿӕLWѭӧng

x Ngôn ngӳ ÿDQӅn cho phép mӝWFKѭѫQJWUuQKFyWKӇ thӵc thi trên các

hӋ ÿLӅu hành khác nhau (MS Windows, UNIX, Linux) mà không phҧi biên dӏFKFKѭѫQJWUuQK3KѭѫQJFKkPFӫD-DYDOj³9LӃt mӝt lҫn, chҥy trên nhiӅu nӅQ´ :ULWH2QFH5XQ$Q\:KHUH 

Trang 17

x Ngôn ngӳ ÿDOXӗng, cho phép trong mӝWFKѭѫQJWUuQKFyWKӇ có nhiӅu

luӗQJÿLӅu khiӇQÿѭӧc thӵc thi song song nhau, rҩt hӳu ích cho các xӱ

lý song song

x Ngôn ngӳ SKkQWiQFKRSKpSFiFÿӕLWѭӧng cӫa mӝt ӭng dөQJÿѭӧc

phân bӕ thӵc thi trên các máy tính khác nhau

x Ngôn ngӳ ÿӝng, cho phép mã lӋnh cӫa mӝWFKѭѫQJWUuQKÿѭӧc tҧi tӯ

mӝt máy tính vӅ máy cӫDQJѭӡi yêu cҫu thӵFWKLFKѭѫQJWUuQK

x Ngôn ngӳ an toàn, tҩt cҧ các thao tác truy xuҩt vào các thiӃt bӏ vào ra

ÿӅu thӵc hiӋn trên máy ҧo, nhӡ ÿyKҥn chӃ các thao tác nguy hiӇm cho máy tính thұt

x Ngôn ngӳ ÿѫQ JLҧn, dӉ hӑc, kiӃQ WU~F FKѭѫQJ WUuQK ÿѫQ JLҧn, trong sáng

I.0i\ҧR-DYD -90 ± Java Virtual Machine)

ĈӇ ÿҧm bҧo WtQK ÿD QӅn, Java sӱ dөQJ Fѫ FKӃ Máy ҧo cӫa Java

B\WHFRGHÿyOjQJ{QQJӳ máy cӫa Máy ҧR-DYDWѭѫQJWӵ QKѭFiFOӋnh nhӏ phân cӫa các máy tính thӵc

MӝWFKѭѫQJWUuQKVDXNKLÿѭӧc viӃt bҵng ngôn ngӳ Java (có phҫn mӣ

rӝng là java) phҧLÿѭӧc biên dӏch thành tұp tin thӵFWKLÿѭӧ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ӏ Gѭӟi dҥng mã Bytecode mà máy ҧo Java hiӇXÿѭӧc phҧi làm gì

Khi thӵc hiӋn mӝWFKѭѫQJWUuQKPi\ҧo Java lҫQOѭӧt thông dӏch các chӍ thӏ Gѭӟ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Ӄ ÿyOjPӝWFKѭѫQJWUuQKWK{QJGӏch Vì thӃ các hӋ ÿLӅu hành khác nhau sӁ có các máy ҧR NKiF QKDX ĈӇ thӵc thi mӝt ӭng

Trang 18

dөng cӫa Java trên mӝt hӋ ÿLӅu hành cө thӇ, cҫn phҧL ÿҥt máy ҧo WѭѫQJӭng cho hӋ ÿLӅXKjQKÿy

x Application: Là mӝWFKѭѫQJWUuQKӭng dөQJÿѭӧc thӵc thi trӵc tiӃp trên các máy ҧo cӫa Java

I%ӝSKiWWULӇQӭQJGөQJ-DYD -'. ± Java Development Kit)

JDK là mӝt bӝ công cө FKRSKpSQJѭӡi lұp trình phát triӇn và triӇn khai các ӭng dөng bҵng ngôn ngӳ -DYDÿѭӧ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Ӌ ÿLӅu hành khác nhau Các ҩn bҧn cӫa JDK không ngӯQJÿѭӧ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ӗPFiFFKѭѫQJWUuQKWKӵFWKLÿiQJFK~êVDX

x -DYDF&KѭѫQJWUuQKELrQGӏFKFiFFKѭѫQg trình nguӗn viӃt

bҵng ngôn ngӳ java ra các tұp tin thӵFWKLÿѭӧc trên máy ҧo Java

x -DYDĈk\OjFKѭѫQJWUuQKOjPPi\ҧo cӫa Java, thông dӏch

mã Bytecode cӫD FiF FKѭѫQJ WUuQK NLӇu application thành

mã thӵc thi cӫa máy thӵc

x Appletviewer: Bӝ thông dӏch, thӵF WKL FiF FKѭѫQJ WUuQK

Trang 19

x Javadoc: Tҥo tài liӋu vӅ FK~WKtFKFKѭѫQJWUuQKQJXӗn mӝt cách tӵ ÿӝng

x Jdb: Trình gӥ rӕi

x Rmic: Tҥo Stub cho ӭng dөng kiӇu RMI

x Rmiregistry: Phөc vө danh bҥ (Name Server) trong hӋthӕng RMI

I*LӟLWKLӋXYӅKӋÿLӅ u hành Android

I/ӏFKVӱ$QGURLG

Tháng 7/2005, Google mua lҥi công ty phát triӇn phҫn mӅm

ÿLӋn thoҥL$QGURLGQKѭQJFKѭDF{QJEӕ sӁ sӱ dөng cho mөFÿtFKJu

ĈӇ trҧ lӡi cho câu hӓLÿyWKiQJVDXQăPSKiWWULӇn, Google công bӕ hӋ ÿLӅu hànKÿLӋn thoҥLGLÿӝng mã nguӗn mӣ Android, cùng

vӟi sӵ thành lұS ³/LrQ PLQK GL ÿӝng mӣ´ 2SHQ +DQGVHW $OOLDQFH bao gӗPKѫQQKjVҧn xuҩt phҫn cӭQJÿLӋn thoҥi lӟn trên thӃ giӟi

QKѭ,QWHO+7&&KLQD0RELOH7-Mobile,

Hình 1 - Các thành viên cͯ D/LrQPLQKGLÿ ͡ng mͧ"

Trang 20

Tӯ QăP  KӋ ÿLӅu hành $QGURLG ÿm WUҧi qua nhiӅu lҫn cұp nhұt7tQKÿӃQWKiQJÿmFyNKRҧng 70 mүXÿLӋn thoҥLGLÿӝng

sӱ dөng hӋ ÿLӅXKjQK$QGURLGFKѭDNӇ các thiӃt bӏ ÿLӋn tӱ NKiFQKѭ

máy tính bҧng (tablet computers), ebook readers, Google TV,

I.KiLQLӋP$Q droid

Android là hӋ ÿLӅXKjQKÿLӋn thoҥLGLÿӝ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ӭQJQjRFNJQJÿӅu có thӇ tӵ do sӱ dөng hӋ ÿLӅu hành Android cho thiӃt bӏ cӫa mình, miӉn là các thiӃt bӏ ҩy ÿiSӭng

ÿѭӧc các tiêu chuҭQFѫEҧQGR*RRJOHÿһ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ӵ GRWKD\ÿә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ҧQ SKt QjR QKѭQJ SKҧL ÿҧm bҧR WtQK WѭѫQJ WKtFK QJѭӧc (backward compatibility) cӫa phiên bҧn chӃ ULrQJÿy

Android là nӅn tҧng cho thiӃt bӏ GLÿӝng bao gӗm mӝt hӋ ÿLӅ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ӝ WKѭYLrQFiFKjP $3,Fҫn thiӃWÿӇphát triӇn ӭng dөng cho nӅn tҧng Android sӱ dөng ngôn ngӳ lұp trình

Trang 21

x Optimized graphics: Hә trӧ bӝ WKѭ YLӋn 2D và 3D dӵ vào

ÿһc tҧ OpenGL ES 1.0

x SQLite: DBMS dùQJÿӇ OѭXWUӳ dӳ liӋu có cҩu trúc

x Hә trӣ FiFÿӏnh dҥng media phә biӃQQKѭ03(*+, MP3, AAC, ARM, JPG, PNG, GIF

x Hә trӧ thoҥi trên nӅn tҧng GSM (Phө thuӝc vài phҫn cӭng thiӃt bӏ)

x Bluetooth, EDGE, 3G và WiFi (Phө thuӝc vài phҫn cӭng thiӃt bӏ)

x Camera, GPS, la bàn và cҧm biӃn (Phө thuӝc vài phҫn cӭng thiӃt bӏ)

x Bӝ công cө phát triӇn ӭng dөng mҥnh mӁ

,.LӃQWU~F$QGURLG

/ѭӧFÿӗ sau thӇ hiӋn các thành phҫn cӫa hӋ ÿLӅu hành Android:

Hình 2 Mô hình ki͇ n trúc n͉ n t̫ ng Android

Trang 22

Applications

HӋ ÿLӅu hành Android tích hӧp sҷn mӝt sӕ ӭng dөQJFѫEҧQQKѭ

email client, SMS, lӏFKÿLӋn tӱ, bҧQÿӗ, trình duyӋt web, sә liên lҥc và

mӝt sӕ ӭng dөng khác Ngoài ra tҫQJQj\FNJQJFKtQKOjWҫng chӭa các ӭng dөQJÿѭӧc phát triӇn bҵng ngôn ngӳ Java

Application Framwork

Tҫng này cӫa hӋ ÿLӅu hành Android cung cҩp mӝt nӅn tҧng phát triӇn ӭng dөng mӣ TXD ÿy FKR SKpS QKj SKiW WULӇn ӭng dөng có khҧQăQJ Wҥ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өQJ ÿѭӧc tӵ do sӱ dөQJ FiF WtQK QăQJ FDR Fҩp cӫa thiӃt bӏ phҫn cӭQJQKѭWK{QJWLQÿӏnh vӏ ÿӏa lý, khҧ QăQJFKҥy dӏch vө

Gѭӟi nӅn, thiӃt lұSÿӗng hӗ báo thӭc, thêm notification vào status bar

cӫa màn hình thiӃt bӏ«

1Jѭӡi phát triӇn ӭng dөQJÿѭӧc phép sӱ dөQJÿҫ\ÿӫ 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ӫD$QGURLGÿѭӧc thiӃt kӃ nhҵm mөFÿtFKÿѫQJLҧn hóa viӋc tái sӱ dөQJFiFFRPSRQHQW4XDÿyEҩt kì ӭng dөQJQjRFNJQJFyWKӇcông bӕ FiF WtQK QăQJ Pj Qy PXӕ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 QăQJ Jӣi mail cӫD Qy  3KѭѫQJ SKiS WѭѫQJ Wӵ cho phép các thành phҫn có thӇ ÿѭӧc thay thӃ bӣLQJѭӡi sӱ dөng

Tҫng này bao gӗm mӝt tұp các services và thành phҫn sau:

x Mӝt tұp phong phú và có thӇ mӣ rӝng bao gӗP FiF ÿӕi

WѭӧQJ9LHZÿѭӧFGQJÿӇ xây dӵng ӭng dөQJQKѭ OLVWgrid, 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

x 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

x Resource Manager: Cung cҩp khҧ QăQJWUX\[Xҩt các tài nguyên non-FRGHQKѭKuQKҧnh hoһc file layout

x Notification Manager: Cung cҩp khҧ QăQJ KLӇn thӏcustom alert trên thanh status bar

x Activity Manager: Giúp quҧQ Oê YzQJ ÿӡi cӫa mӝt ӭng

dөng

Libraries

x System C library: mӝt thӇ hiӋQÿѭӧc xây dӵng tӯ BSD

cӫa bӝ WKѭYLӋn hӋ thӕng C chuҭQ OLEF ÿѭӧFÿLӅu chӍnh

ÿӇ tӕLѭXKyDFKRFiFWKLӃt bӏ chҥy trên nӅn Linux

x Media libraries: Bӝ WKѭYLӋn hә trӧ trình diӉn và ghi các

ÿӏnh dҥng âm than và hình ҧnh phә biӃn

x Surface manager: Quҧn lý hiӇn thӏ nӝi dung 2D và 3D

x LibWebCore: Mӝt web browser engine hiӋQÿҥLÿѭӧc sӱ

dөng trong trình duyӋt cӫa Android lҫn trong trình duyӋt QK~QJZHEYLHZÿѭӧc sӱ dөng trong ӭng dөng

x SGL: Engine hә trӧ ÿӗ hӑa 2D

x 3D libraries: Mӝt thӇ hiӋQ ÿѭӧc xây dӵng dӵa trên các APIs cӫa OpenGL ES 1.0 NhӳQJ WKѭ YLӋn này sӱ dөng FiFWăQJWӕc 3D bҵng phҫn cӭng lүn phҫn mӅPÿӇ tӕLѭXhóa hiӇn thӏ 3D

x FreeType: Bitmap and vector font rendering

Trang 24

x SQLite: Mӝt DBMS nhӓ gӑn và mҥnh mӁ

Android Runtime

HӋ ÿLӅu hành Android tích hӧp sҷn mӝt tұp hӧSFiFWKѭYLӋn cӕt lõi cung cҩp hҫu hӃt các chӭFQăQJFyVҹQWURQJFiFWKѭYLӋ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 ҧR-DYDÿѭӧc sӱDÿәi, bә sung các công nghӋ ÿһFWUѭQJFӫa thiӃt bӏ GLÿӝQJ1yÿѭӧc xây dӵng

vӟi mөFÿtFKOjPFKRFiFWKLӃt bӏ GLÿӝng có thӇ chҥy nhiӅu máy ҧo

mӝt cách hiӋu quҧ7Uѭӟc khi thӵc thi, bҩt kì ӭng dөng Android nào FNJQJ ÿѭӧc convert thành file thӵc thi vӟL ÿӏnh dҥng nén Dalvik ([HFXWDEOH GH[  Ĉӏnh dҥQJ Qj\ ÿѭӧc thiӃt kӃ ÿӇ phù hӧp vӟi các thiӃt bӏ hҥn chӃ vӅ bӝ nhӟ FNJQJ QKѭ WӕFÿӝ xӱ lý Ngoài ra máy ҧo Dalvik sӱ dөng bӝ QKkQ/LQX[ÿӇ cung cҩSFiFWtQKQăQJQKѭWKUHDG, low-level memory management

Linux Kernel

HӋ ÿLӅXKjQK $QGURLGÿѭӧc xây dӵng trên bӝ nhân Linux 2.6 cho nhӳng dӏch vө hӋ thӕng cӕW O}L QKѭ VHFXULW\ PHPRU\management, process management, network stack, driver model Bӝ

nhân này làm nhiӋm vө QKѭPӝt lӟp trung gian kӃt nӕi phҫn cӭng thiӃt

bӏ và phҫn ӭng dөng

Trang 25

'ѭӟL ÿk\ Oj P{ KLQK Kӧ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

-1, -DYD 1DWLYH ,QWHUIDFH 7ѭѫQJ Wӵ 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һFÿѭӧc gӑi bӣi mӝt ӭng dөng viӃt bҵng native code (Ӭng dөQJÿѭӧc viӃt cho mӝt phҫn

cӭng cө thӇ và trên mӝt hӋ ÿLӅu hành cө thӇ) hoһc nhӳng bӝ WKѭYLӋ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ӳQJSKѭѫQJWKӭFÿѭӧc viӃt bҵng các ngôn ngӳ cҩp thҩSQKѭ&&$VVHPEO\4XDÿyFiFQKjSKiWtriӇn ӭng dөng có thӇ xây dӵng ӭng dөng dӵa trên các bӝ WKѭYLӋn viӃt

bҵng C, C++, Assembly nhҵPWăQJWӕFÿӝ thӵc thi cӫa ӭng dөng hoһc

sӱ dөng nhӳQJWtQKQăQJPӭc thҩp mà ngôn ngӳ Java không hә trӧ

Trang 26

7X\QKLrQQJѭӡi phát triӇn ӭng dөng cҫn phҧi cân nhҳc sӵ JLDWăQJÿӝ phӭc tҥp cӫa ӭng dөng khi quyӃWÿӏnh sӱ dөng các bӝ WKѭYLӋn này

QJѭӡi dùng nhұp vào, nӃu QJѭӡi dùng không nhұp vào thì nó không làm gì

cҧ 1KѭQJ ÿӕi vӟi mӝt FKѭѫng trình game thì dù ngѭӡi dùng có nhұp vào

thông ÿLӋp hay không thi nó vүn thӵc hiӋn theo mӝt cҩu trúc FKѭѫQJWUunh có

sҹn ÿây chính là vòng lһp cӫa game

Mӝt vòng lһp game rҩWÿѫQ giҧn nó có thӇ trông QKѭ 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Ӂ OjPFKRQJѭӡi

dùng không có cҧm giác thұt, ҧQKKѭӣQJÿӃn sӵ WѭѫQJWiFFӫDQJѭӡi dùng

vӟLWUzFKѫL

Các yӃ u tӕ làm cho framerate chұ m

Hình vӁ FyNtFKWKѭӟc lӟn Tính toán trong game nhiӅu Lӛi cӫa thiӃt

Cách cҧ i thiӋ n framerate

TӕLѭXKyDWtQKWRiQYjFiFÿLӅu kiӋn thӵc hiӋn trong game:

+ Sӱ dөng ít vòng lһp

+ Dùng phép toán dӏch chuyӇn bit thay cho phép nhân và phép chia

+ Khai báo các biӃQYjSKѭѫQJWKӭc ӣ dҥng static

Caching module cӫa các file ҧnh, tӕLѭXKyDFiFPRGXOHGQJÿӇ vӁ sao cho sӕ Oѭӧng module vӁ ra là ít

Dùng Bacbuffer: Không vӁ tӯng sprite ra màn hình mà ta vӁ các sprite

lên mӝt ҧQKVDXÿyYӁ ҧQKÿyUDPjQKuQK

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ӫDWUzFKѫL1Kҵm mөFÿtFK

dùng trong nhӳQJWUѭӡng hӧp ӭng dөng có frame rate quá nhanh, sӁ làm cho

ӭng dөng không әQÿӏnh ҦQKKѭӣQJÿӃn quá trình xӱ OêQJѭӡLFKѫLNK{QJ

FKѫLNӏp và mӝWÿLӅu nӳa là nó dүQÿӃn viӋc nhanh hӃt pin cӫa thiӃt bӏ

I%ӝQKӟ PHPRU\

Là kích WKѭӟc bӝ nhӟ có thӇ dùng ÿӇ chҥy FKѭѫQJ trình game cӫa thiӃt

Trang 28

Các y͇ u t͙ ̫ QKK˱ ͧQJÿ ͇ 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͙L˱XKyDE ͡ nhͣ

‡ ĈѫQ 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 Oѭӧ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 Wѭӧng cҫn thiӃt trong bӝ nhӟ ĈӇ tránh vҩn ÿӅ phân mҧnh bӝ nhӟ (là các ÿӕi Wѭӧng WKѭӡng dùng (fonts, main characters, common interface sprites, « )

‡ Load khi muӕn vӁ và giҧi phóng khi ÿL ra khӓi màn hình

‡ Tránh phân mҧnh bӝ nhӟ: load ÿӕi Wѭӧng có kích WKѭӟc lӟn WUѭӟc Giӳ cho bӝ nhӟ әn ÿӏnh Không load và giҧi phóng quá nhiӅu lҫn

Android SDK cung cҩp cho bҥQFiFWKѭYLӋn API và các công cө phát

triӇn cҫn thiӃWÿӇ 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ô-ÿXQ Pj Eҥ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ө

6'.ÿѭӧc cұp nhұt hoһc mӝt phiên bҧn mӟi cӫa nӅn tҧQJ$QGURLGÿѭӧc phát hành, bҥn có thӇ quҧn lý sӱ dөQJ 6'. ÿӇ nhanh chóng tҧi chúng vào môi

WUѭӡng cӫa bҥn ChӍ cҫn làm theo các thӫ tөFÿѭӧ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

x SDK Tools: Chӭa các công cө ÿӇ gӥ lӛi và thӱ nghiӋm, cӝng vӟi các tiӋQtFKNKiFÿѭӧc yêu cҫu ÿӇ phát triӇn mӝt ӭng dөng NӃu bҥn

vӯD FjL ÿһt khӣL ÿӝQJ JyL 6'. VDX ÿy EҥQ ÿm Fy SKLrQ Eҧ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ӳ Qj\ÿѭӧc

cұp nhұt

x 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ӧ FiFWtQKQăQJPӟi nhҩt cӫa nӅn tҧQJ$QGURLGYjWKѭӡQJÿѭӧ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өQj\ OX{Q OX{Q WѭѫQJ WKtFK Yӟi nӅn tҧQJ FNJ QKѭQJ Eҥ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ҥQFjLÿһt mӝt nӅn tҧng SDK mӟi

x 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

x 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ӝWWKѭYLӋn Android hoàn toàn tuân thӫĈӇ xây dӵng mӝt ӭng dөng Android,

bҥn phҧL[iFÿӏnh mӝt nӅn tҧQJ6'.QKѭPөc tiêu xây dӵng cӫa

bҥn

Trang 30

x 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ѭ FKR $50 Yj [ Giҧ lұS$QGURLGÿzLKӓi mӝt hình ҧnh hӋ thӕQJÿӇ hoҥWÿӝ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ӕWÿӇ OjPQKѭYұy

x Sources for Android SDK: Mӝt bҧn sao cӫa các nӅn tҧng mã nguӗQ$QGURLGÿyOjKӳXtFKÿӇ ÿҭy mҥnh thông qua các mã trong khi gӥ lӛi ӭng dөng cӫa bҥn

x Samples for SDK: Mӝt bӝ VѭX Wұp các ӭng dөng mүX ÿӇ chӭng minh mӝt loҥt các nӅn tҧQJ$3,Ĉk\OjPӝt nguӗn lӵc lӟQÿӇ trình duyӋt Android mã ӭng dөng Các ӭng dөQJ$3,'HPRÿһc biӋt là cung cҩp mӝt sӕ Oѭӧng lӟn các bҧn demo nhӓ, bҥn nên khám phá

x Google APIs: Mӝt SDK add-on cung cҩp cҧ mӝt nӅn tҧng mà bҥn

có thӇ sӱ dөQJÿӇ 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ұSÿӇ 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

x Android Support: MӝWWKѭYLӋQWƭQKEҥn có thӇ bao gӗm trong các nguӗn ӭng dөng cӫa bҥQ ÿӇ 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өFiFWKѭYLӋn hӛ trӧ bao

gӗm các phiên bҧn cӫa Fragment lӟSWѭѫQJWKtFKYӟi Android 1.6 Yj FDR KѫQ OӟS EDQ ÿҫX ÿѭӧ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 QJѭӡ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ӕ WUѭӡ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ҥQFjLÿһt các công cө gói SDK, bҥQFNJQJQrQQkQJFҩp lên phiên bҧn yêu cҫu

cӫa ADT (nӃu bҥQ ÿDQJ SKiW WULӇQ WURQJ (FOLSVH  7URQJ WUѭӡ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ҧQOêFNJQJWKӵ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ӳQJQJѭӡi mà bҥQÿmFKӑn

Trang 32

&+ѬѪ1*,, 75Ñ&+Ѫ, 9¬48È75Î1+/Ұ375Î1+

.,ӆ07+Ӱ II.1 7UzFKѫL

7UzFKѫL bao gӗPWUzFKѫLQKӓ WѭѫQJӭng vӟi 4 phҫn :

x $GGLWLRQ 6XEWUDFWLRQ1JѭӡLFKѫLWUҧ lӡi các câu hӓLÿѭӧFÿѭDUDOj

các phép tính cӝng hoһc trӯ xuҩt hiӋn ngүXQKLrQ1JѭӡLFKѫLFyWKӇchӑn các mӭFÿӝ: dӉ, trung bình, khó; Và các mӭc sӕ Oѭӧng câu hӓi:

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

x 0XOWLSOLFDWLRQ 'LYLVLRQ1JѭӡLFKѫLWUҧ lӡi các câu hӓLÿѭӧFÿѭDUD

là các phép tính nhân hoһc chia xuҩt hiӋn ngүXQKLrQ1JѭӡLFKѫLFy

thӇ chӑn các mӭFÿӝ: dӉ, trung bình, khó; Và các mӭc sӕ Oѭӧng câu

hӓi: 10 câu, 20 câu, 50 câu

x %UDLQ&UXQFKHU1JѭӡLFKѫLEҳWÿҫXWUzFKѫLYӟi 1 con sӕ cho sҳn Sau

ÿyTXDWӯng câu hӓi sӁ là nhӳQJSKpSWRiQÿѭӧFÿѭDUD ngүu nhiên

1JѭӡLFKѫLWtQKQKҭm và ghi nhӟ kӃt quҧ qua tӯng câu hӓLYjÿѭDUD

ÿiS iQ FXӕL FQJ 1JѭӡL FKѫL Fy WKӇ chӑn các mӭF ÿӝ FKѫL WKҩp, trung bình, cao

x 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ӕQJSKtDGѭӟi PjQ KuQK 1JѭӡL FKѫL QKұp câu trҧ lӡL ÿ~QJ ÿӇ chһn các câu hӓi di

chuyӇn Vӟi mӛi câu trҧ lӡLÿ~QJQJѭӡLFKѫLVӁ ÿѭӧFÿLӇm NӃXÿӇ

2 câu hӓLYѭӧt qua giӟi hҥQSKtDGѭӟLPjQKuQKQJѭӡLFKѫLVӁ thua

Trang 33

II.2 Quá tUuQKOұSWUuQK

,,3KkQWtFKFKѭѫQJWUuQK

Dӵa vào các phân tích,ta có thiӃt kӃ khung cӫa FKѭѫQJWUuQK

Hình 4 Bi͋ u di͍ n khung thi͇ t k͇ cͯDFK˱˯QJWUuQK

Trang 34

p Player : chӭa các thông tin vӅ QJѭӡLFKѫL

p OptionScreen : thӇ hiӋn màn hình tùy chӑn (option)

p ChangePlayerScreen: thӇ hiӋQPjQKuQKWKD\ÿәLQJѭӡLFKѫL

p MainMenuScreen : thӇ hiӋn màn hình chính

p CreditScreen: thӇ hiӋn màn hình credit

p AddnSubScreen : thӇ hiӋn màn hình chuҭn bӏ YjRPjQFKѫL$GGLWLRQ 

Subtraction

p AddnSubPlayScreen: thӇ hiӋQPjQFKѫL$GGLWLRQ 6XEWUDFWLRQ

p MulnDivScreen: thӇ hiӋn màn hình chuҭn bӏ YjRPjQFKѫL

Multiplication & Division

p MulnDivPlayScreen: thӇ hiӋQPjQFKѫL0XOWLSOLFDWLRQ 'LYLVLRQ

p MathBlasterChallengeScreen : thӇ hiӋQPjQFKѫL0DWK%ODVWHU

p BrainCruncherPlayScreen: thӇ hiӋQPjQKuQKFKѫi Brain Cruncher

p BrainCruncherInputScreen: thӇ hiӋQPjQKuQKÿӇ QJѭӡLFKѫLQKұp kӃt

quҧ cuӕi cùng

p BrainCruncherReviewScreen: thӇ hiӋn màn hình xem lҥLPjQFKѫL

Brain Cruncher

Trang 35

II.2.2 /ұSWUuQK WUzFKѫL

Chúng ta ÿӏQKQJKƭDOӟS5HVRXUFH0DQDJHUÿӇ quҧn lý các biӃQÿҥi diӋQÿӕi

Wѭӧng và lӟS3OD\HUÿӇ quҧQOêFiFWK{QJWLQQJѭӡLFKѫLVDXÿyOҫQOѭӧt cài

ÿһt các nӝLGXQJQKѭVDX

x ResourceManager

ĈӏQKQJKƭDELӃ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,

ĈӏQKQJKƭDELӃ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;

ĈӏQKQJKƭDELӃ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,

ĈӏQKQJKƭDFiFELӃ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 };

ĈӏQKQJKƭDFiFELӃ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;

... tҧng Android

x 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ӝWWKѭYLӋn Android hoàn toàn tuân thӫĈӇ xây. .. ̫ QKK˱ ͧQJÿ ͇ n b͡ nhͣ game

‡ File ҧnh dùng game

‡ Âm dùng game

‡ Các file text, mҧng chӭa text game

T͙L˱XKyDE ͡ nhͣ

‡ ĈѫQ giҧn... load giҧi phóng q nhiӅu lҫn

Android SDK cung cҩp cho bҥQFiFWKѭYLӋn API công cө phát

triӇn cҫn thiӃWÿӇ xây dӵng, kiӇm tra, gӥ lӛi ӭng dөng cho Android

Trang

Ngày đăng: 26/06/2021, 13:17

TỪ KHÓA LIÊN QUAN

w