BQ CIAO DVC VA DAO T30

TRUtING D3I HQC THANG LONG

KHOA LUAN TOT NGHIEP

NGHIEN ctru ENGINE DA NEN TANG COCOS2D-X VA PHAT TRIEN (TNG DUNG LUYEN THI TOEIC TREN THIET Di SMART PHONE

Gilo viIn huomg din Sink viten thyc hien Mii sinh vien Clow& ngInh

: Ths. Le Minh Thin : Wog Thanh Ting : A16321 : Khoa hoe may tinh

HA NQI-2014

MVC LVC

(cid:9)

CHI TONG 1. GI& TH1$U DV AN

3

(cid:9)

1.1. Vii net vi smartphone Vift Nam-

3

(cid:9)

1.2. Tim quan tryng ala TOEIC

6

(cid:9)

1.3. Gifri thifn Ong dung Isola thi TOEIC tren smartphone (cid:9)

6

1.3.1. Giai thieu img dung (cid:9)

6

1.3.2. Lqi feh ala Ong dung luyen thi TOEIC tren smartphone (cid:9)

7

CHliONG 2. COCOS2D-X ENGINE.

9

2.1. Gibi thifn vi Cocos2d-X

(cid:9)

9

2.1.1. Su ra den cila Cocos2d-X vi Lich sfr ph& trien (cid:9)

9

2.1.2. Ti sao lai dung Cocos2d-X (cid:9)

11

2.2. KV& tree tong quan vi mai truing lint vile (cid:9)

14

2.2.1. Co du tit chat thu muc (cid:9)

14

2.2.2. Kien true Cocos2d-X engine (cid:9)

15

2.2.3. Mai truing llm viec (cid:9)

16

2.2.4. MOt s6 lop deg Wog thuong duce sfr dung (cid:9)

19

CHUONG 3. PHAN TECH flu CAU NGHI$P VV (cid:9)

32

32

(cid:9)

33

(cid:9)

3.1. Yin an nghifp vg 3.2. Su al User-Case cia ding clang 3.3. Anh zu yin au nghiep vg vi chic ning (cid:9)

34

3.4. Die ti chic ning hi thong (cid:9)

34

3.4.1. UC#01: Kiem tra kit nai man (cid:9)

34

3.4.2. UC#02: Deng nh$p silo he thong (cid:9)

35

3.4.3. UC#03: Deng Icy di khan (cid:9)

39

3.4.4. UC#04: !Gem tra phien ban vi cop nh$t du lieu (cid:9)

44

3.4.5. UC#05: To di WM vi ceu hdi tric nghiem (cid:9)

47

3.4.6. UC#06: Luyen tap (cid:9)

50

3.4.7. UC#07: Thi dui (cid:9)

56

CHUONG 4. THAT KE VA MIEN HMI UNG DUNG (cid:9)

63

(cid:9) (cid:9)

4.1. Kiin trtic hi thong..

63

(cid:9)

4.2. Thiit id chi tat chic ning thi thfr.

.64

4.2.1. Topic (cid:9)

65

4.2.2. MCQ (cid:9)

65

4.2.3. ConfigLoader (cid:9)

68

4.2.4. QuestionItem (cid:9)

69

4.2.5. FullTest (cid:9)

70

4.3. Thiit ki as sfr di lien

71

(cid:9)

4.3.1. Met hinh quan he (cid:9)

71

43.2. Danh sigh cic bang vi mel to (cid:9)

72

4.3.3. Cac bang de lieu (cid:9)

72

4.4. Cii dit.

.75

75

76

4.4.1. Lwa chon mei tmong (cid:9) 4.4.2. You ciu au hinh di at he thtmg (cid:9)

CHUtING 5. KET LUAN VA DJNH HUNG PHAT TRIEN (cid:9)

77

5.1. Kit qui dot iliac (cid:9)

77

5.2. Dinh hiring phit triin

77

(cid:9)

PHV LVC — CODE MOT SO alit NANG CHINO (cid:9)

1. Chic thing kiim tra kit not ming .

(cid:9)

79 .79

1.1. Native code (cid:9)

79

1.2. Android code (cid:9)

79

1.3. IOS code (cid:9)

80

2. Chic ning kiim tra tii tip tin vi ghi vio be nha sir clang HttpRequest —81

3. Chic Ming to di thi (cid:9)

82

TM lien tham khio

(cid:9)

86

DANH MVC 18 NH VI, SO DO VA BANG BLEU

13

Bing 2.1: So skit giea Cocos2d-X vi ck engine khic (cid:9) Bing 2.2: Co ciu t6 chet thu muc trong Cocos2d-X (cid:9)

15

19

Bing 2.3: Bing inh xa kieu de lieu glita Java vi Native code (cid:9) Bing 3.1: Bing inh xa yell ciu ng,hiep vp vi cher Wing (cid:9)

34

Bing 4.1: M8 ti cic bang trong co so de lieu (cid:9)

72

Hinh 1.1: Tec dO phit trien thi tru6ng smartphone tai Viet Nam (cid:9)

4

Hinh 1.2: T$' le stt dung smartphone phis theo khu Arc thenh thi vi nong thou tai Viet Nam 4

(cid:9)

5

5

Hlnh 1.3: TS, I¢ smartphone pit he dieu hanh tai Viet Nam (cid:9) Hinh 1.4: TS, le se httu Smartphone 6 m6i hia tutu tai Viet Nam (cid:9) Binh 2.1: M8 kith phit hien Cocos2d-X (cid:9)

9

Binh 2.2: NOi dung tep tin IDE sau ;chi giii nen (cid:9)

14

Hinh 2.3: Kien tnic Cocos2d-X (cid:9)

15

Hlnh 2.4: Mai truerng lam viec (cid:9)

16

Hinh 2.5: Cic dei brung dugc ke that tfr CCNode (cid:9)

21

Hlnh 2.6: Hlnh inh minh hua "Nine patch" (cid:9)

23

Filth 3.1: Su d6 user-case c ► ia ling dung (cid:9)

33

With 3 2• Man hinh ding nhap (cid:9)

39

Hlnh 3.3: Ciao dien ding kf (cid:9)

43

HIM 3.4: Giao dien ding kjr vi thong bio 16i (cid:9)

43

Hinh 3.5: Giao dien khi khoi chay (mg dung (cid:9)

47 Hinh 3.6: Giao dien de hal Bang van bin vi cilu hai tic nghiem sau khi ley de lieu tfr CSDL (cid:9) 54

Hinh 3.7: Man hinh hien thi dap an sau khi ngutri deng chcm dip in chinh xic (cid:9)

54

Hinh 3.8: Men hinh hien thi de bai clang am thanh kern hinh anh vi cau hal tic nghiem sau khi ley de lieu to CSDL (cid:9) 55

Filth 3.9: Min hinh hien thi dap in sau khi ngutri dung chop dap an bi sai (cid:9)

55

Hinh 3.10: Man hinh sau khi vio chirc rang thi thu (cid:9)

61

Binh 3.11: Min hinh hien thj dash sich cic cAu hal trong chic ring thi thfr (cid:9)

61

62

Hinh 3.12: Min hinh hien thi kit qui thi thfr sau khi holm thinh bii thi (cid:9) Hinh 4.1: Kiin Mk he thong (cid:9)

63

64

(cid:9)

35

Binh 4.2: Sa d8 lop chi tiet ch0c Ming thi So d6 3.1: So d61u6ng dog viec "ICiem tra kit n6i mpg" (cid:9) Sa Qe 3.2: Sc d8 lutong tong viec "Bang nh$p" (cid:9)

36

So d6 3.3: Sa d6 trInh to "Ding nh.p" (cid:9)

37

Sa d6 3.4: So d6 Wong ding viec "Ding 10" (cid:9)

40

41

45

46

48

49

51

52

So d6 3.5: So d6 trinh to "Ding kg" (cid:9) Sa d6 3.6: So Q6 1u6ng Gong viec "ICiem tra phiIn bin vi cop nh$t dit lieu" (cid:9) So d6 3.7: So d6 trinh to "'Clem tra phien bin vi cep nhOt de lieu" (cid:9) So M 3.8: Sa Q6 1u6ng &mg viec "Too de bii vi cfu hdi tric nghiem" (cid:9) Sa d6 3.9: So d6 trinh tir "Tao de bii vi clu hdi tic nghiem" (cid:9) Sc d6 3.10: So d61u6ng cong viec "Tao di bii theo chi di di chop" (cid:9) Sa d6 3.11: So d6 trinh to "Too di be' then chi di di chip" (cid:9) So d6 3.12: So d61u6ng ding viec "Thi the (cid:9)

57

58

Sa Q8 3.13: Sa d6 trinh to "Thi the (cid:9) Sa dB 4.1: M8 hinh dia lieu quan he (cid:9)

71

L(:11 NoI DAU

Ngay nay, dien thoai di dung di fro thanh mkt trong nhung cong cu lien lye thiet yiu mkt con ngubi. Ngoii chtk tang lien kw, cling vai str phut trier tins ding nghe, ket nOi man du, dien than di Ong dm thwe trong bi nhieu img dung gild tri, dinh vl, mua sim, thanh town truc tuyen,... vi trong bj ak img dung hqc tip nhu tir dien, chuong trinh office, luyen thi... Su bung n6 ye cit so luqng vi chat luqng ala smartphone (dien thooi di dOng thong minh) mot lin nfta lching (firth vj tri quan tong aim n6 trong cuOc song.

Viii rim tic lei (My tai Viet Nam, smartphone di c6 sit gia tang manh me ve mot so Mang. Da dang chafing loci vi nhieu =lc gin phi hqp yid nhieu phin khtk kWh hung. Hang loft citc smartphone giti re call Samsung, Nokia, LG... duqc bin nil thj tnrimg Viet Nam, lchien viec si him nhing chiec smartphone cang trb nen ph6 bien vide clang Mtn bao gib het. Theo khao sit colt Google, s6 ngubi clang smartphone di chiem den 20% din s6 caa Viet Nam 6 thin diem kheo sat qu5+1 niim 2013. Google cong b6 tb nghien aim Minh vi trac twin curt Ngubi tieu clang Viet 2014 do Ong ty TNS thvc hien, ty' le sir dung smartphone tang 61 20% len 36%. TS, le nay tuy thip hen t9 le truing binh 49% cult the gill, hay 40% cos Than Lan, 51% Malaysia vi 85% cult Singapore, nhung mirc thug truing cho they smartphone ngiy cang duqc chuOng clang d6i yeti ngubi tieu dung Viet. Ng,hien ciru coca Google can cho they 50% s6 ngubi duqc MN se khong bao gib rid khei nha me khong c6 smartphone trong fay. Dien thotti di dung vai nhieu tien ich va 6 ben ngubi clang m9i 18c m9i not Ben canh d6, told Viet Nam, PC va Laptop at.) dO phti khong rung biing dien thati. Do vey ma dien thoai di dung di va dang tre thanh phucmg tien d6ng vai tr6 quan trong trong dbi song cult ngubi Viet.

Trong se nhttng ngtrbi so hitu smartpone tai Viet Nam, nhanh cheng flip con va de tiep thu cong nghe mid, do d6, them ngubi tre to 16 - 24 mei s6 hOu smartphone nhiiu nhat, chiem tjr le han 50%. Tam d6 at ra ban tam cho cic nha cung cap dich vu tren smartphone nhim khai thac nhu ciu ctia them Mich hang 6 lira Si nay. Ngoai viec s* clung smartphone de ket noi Internet, tin Mem thong tin tut tuyen, nghe nhac... ngubi saY dung ce the hqc top moi Mc moi nai. Nim bit duqc biting do, ngay cang c6 nhieu nha cung cap dua ra img dung hqc tip tren smartphone, ngubi hoc co the chit dOng lam cho qua trinh hoc tip trir nen th6 vj vi lei coon hat. Trong so d6, ca9cc Ong dung hoc Tieng Anh rot duqc tra chuOng. Tnroc day Ltd Viet Nam, nhieu c8ng ty, doanh nghiep, to thubng sir dung chimg chi tieng Anh phin chia theo cap dO A, B, C (chimg chi ABC) nhu mot tieu chi ngoai net di dua ra quyet djnh ye tuyen dung, b6 nhiem, sip lip thin sit hay b6 tri

1

nhan vien to ng,hiep tai nu& ngoli. Tuy nhien trong ck nAm lit Iai day, chung chi TOEIC nei len nhu mUt tieu chain phi. biin hon di danh gia trinh dO thong thao ding Anh ngutri lao dung. Xuit phat tfr thvc ti do, nhieu trubng Dai hoc, Cao ding di dim TOEIC vac) chucmg trinh giang day Nit lva chon WU thi TOEIC di theo dOi sv tiin 130 trong viec hoc tieng Anh d6i vai sinh vien then thing h9c nAm hgc ho(ic sit dung lam chuin tau ra ding Anh cho sinh vien tot nghiep. Chink vi nhttng 15, do de nen viec hoc TOEIC, luyen thi TOEIC va tham dv kt thi TOEIC dung vai fro quan tong trong viec chuin bj Muth tang kien tittle v6i Watt sinh vien va ngueri di lam.

Tnrec nhu ciu hoc TOEIC ngay cang gia tang vet veri y twang hoc top hen smartphone, the gia chon di di: "My chmg ting Luyen thi TOEIC hen cac thiit hi smartphone". Sv than!' aping cua di tai mang 1pi cho cling ding meot Ong dung co tinh thvc tiin cao, glop nguai sir dung co them cong eta di hoc tip lien dung.

NOi dung ctla Idles Won nay duqc chive thanh 4 chucmg:

Chuang 1: Giai thieu ye dv an

Chuang 2: Ting quan vi Cocos2d-X Engine

Chuang 3: Phan tich yeu ciu bah town

Chuang 4: That ki va then ;dui

Chuang 5: Kit luin

2

CHUDNG 1. GIOI THICU DV AN

1.1. VII net vi smartphone tai Viet Nam

Cac chuyen gia cola Google cho rang smartphone da trey thanh mOt plan Icheong the thieu trong cuOc song vi hien tai ding dam ra mOt "cuOc cach mpg smartphone". Theo khao sat cola Google, so ngubi dimg smartphone di chiem den 20% din s6 COB Viet Nam 6 thbi diem Ichio sat, tic quf I nam 2013. Nghien dm cola Google cho they 70% s6 ngubi duqc hOi tra lbi h9 si dung smartphone de truy cop Internet, 50% se kung bao gib reri khOi nhi mi khong ceo smartphone trong tay. Dieu thy cho thay neu cac doanh nghiep hitt cic sir dung smartphone thich mOt phan cot lOi trong chi& Itrqc cis minh thi sa ket n6i vi tiep cAn duqc vii ngubi tieu ding mei. Simon Kahn, Tting giam d6c Marketing Google chau A Thii Binh Ducmg (Chief Marketing Officer, Asia Pacific) cho bi& smartphone di thay d6i hanh vi ngubi tieu dung. Theo khao sat cis Google, ceo den 92% ngubi dimg smartphone ce the lim nhieu viec cling lice Tai Dien din nap thi Truyen thong CMO Viet Nam nam 2013, doanh nhan cong nghe Bryan Pelz di khimg djnh, sox djch chuyen cia deri sting xi hOi vio Internet vi Mobile II tat yen.

Nam 2014, ngubi Viet Nam bit du e6 nhing buoy tien hon trong cong nghe khi tS, , le din se sir dung smartphone toi Viet Nam di le sir dung smartphone gia tang &mg Ice. TS tang len Iron 36%, gin gap dei so yea 20% cilia nam 2013, trong de gi6i tre to 16-24 tu6i chiem hon phan nth (58%), nhOm tu6i trung nien 35-44 tang 14% so v6i nam ngoitili 17%. Trong khi tSr le ding may tinh a bin (desktop PC) chi tang gin 5%, (fat 44% din so. Una theo bing khao sat, Viet Nam dimg thit 2 tong khu Arc Thing Nam A ve t6c dO dip con tilling cong nghe mOi theo thj truing, chi sau Philippines. Trong do, 59% ngubi Viet Nam chi ra ring cong nghe mOi mang den nhieu co hOi cho h9 hon rui ro. Nhing con so tang throng lac quan nay den to nhieu yeu t6, trong d6 chi yeu li thai dO lac quan, thich nghi nhanh vii cong nghe mai vi dO phi rung cola smartphone. Ben earth de gia thrInh smartphone new cang re. Phan khuc smartphone binh din hien rat da clang, gii 2-3 trieu &gig, um cc hOi cho m9i ngubi, bao gem h9c sinh sinh vier, ser hitu mOt chiec dien thotti thong minh. tang mang t4i Viet Nam cG dO phi rOng [dip ngubi ding len inimg de ding.

Dien Din Hiep HOi Mobile Marketing toi Viet Nam 2014 ngiy 30 thing 10 nam 2014 di dua ra nhUng con s6 thong k8 An urgng vi smartphone tai Viet Nam. Trong do: Viet Nam li thi truing smartphone c6 tec go phat thin I6n thir 2 Chau A vi deng thbi ding la thj truing cry mirc dO ph6 bien smartphone I6n thin 2 6 khu we Bong Nam A;

3

Hinh 1.1: Mc do phat trien thi Irwin smartphone tai Viet Nam

.sae'

a 0 (cid:9)

tam

Vietnam is the second most populated smartphone market in SA 34.3 alb n e. Afikvst..

Hinh 1.2: 7:9 le sti dung smartphone plan theo khu virc thanh thi vet ?Ong then tai Viet Nam

48.6% smartphone dimg hg dieu hi nh Android vi 19.7% dung hg dieu hanh IOS.

4

O mOi lira tu6i, tS/ I sir dung smartphone co str khac biet Ian. Trong do cao nhAt la nh6m tu6i tir 15 den 29 tu6i. Co 56,5% ngtrai trong dO Mei 20 — 24 tu6i dang so hftu smartphone.

Hinh 1.3: Ty 1e smartphone phiin he cli& hanh tai Viet Nam

Ty 'e se hut Smartphone trong moi Kra tad to Viet Nam

60.0

50.0

40.0

30.0

20.0

10.0

6.9

0.0

15-19 (cid:9)

20-24 (cid:9)

25-29 (cid:9)

30-34 (cid:9)

35-39 (cid:9)

40-44 (cid:9)

45-49 (cid:9)

50-54

Hinh 1.4: TS, le so hail Smartphone o mai hia tudi tai Viet Nam

Dan vi:

Nam dang co stir tang truemg an Ming. Nh(tng ngutri tre tu6i chiem (cid:9) Qua nhcmg con s6 va th6ng ke tren day, co the thAy thi traang smartphone tai Viet cao nhat trong s6

5

nhOng ngtrai se hau smartphone. Day cOng la Whom dal ttrqng c6 nhu c.Au 16n nhat lie hqc t#p va tich lily Icien that phoc vo cho cong viec, cho cic nhu au a nhan. Doa tren nhttng ca se d6, hoan toan c,6 tient &Mg de phit then de ling dung hqc top tren smartphone.

1.2. Tim quan trong cost TOEIC

Trong nOi dung Inc tieng Anh ce the tom chia lim hai loci• Anh ngft hqc thu$t (dung de xin hoc bang, du hqc...) va Anh net giao tikp (sir dung thtrimg ngay, phoc vo cho nhu au tong viec...). NM ming hqc thutt la din truing cim hai loci chimg chi TOEFL (colt Vien Kiem djnh giio doc Hoa Kjr) va IELTS (cart DH Cambridge — Anh), thi ming giao tiep chimg chi TOEIC dang dOc chiem so cOng thin cim tin throng sir (long lao dung the gi6i.

TOEIC (cOng cart Vien Kiem djnh giio doc Hoa K5' cep) kh8ng yeu ciu qui cao lie cic kien thin, ma chi can ngutri hqc dat duce muc dick sir dung tiling Anh. TOEIC da tra thanh *it trong nhttng chuong trinh kiem tra Anh net quick to duqc nhieu nguai biet din. Han 70 tong cOng ty, c8ng ty, cic to chirc trong nuOc va nuOc ngoiti hoot &Ong t in Viet Nam di sir clung TOEIC nhu mOt lieu chart bat buOc trong cOng tic lieu chain hea vi tuyen dung cin 1)0 nhu: Samsung, LG, FPT, Nein hang Sii Gen Thuong tin, Vietnam Airlines... Rieng trong linh voc cloy nghe, TOEIC Viet Nam phai hqp vai Ttmg coc Dor nghe )(ay dtmg thi diem lieu chain ye trinh dO sfr dung tieng Anh cho sinh vien nit nghiep hai nginh tin hoc va then dr 6 twang cao ding Icy thurit. Ngorli ra, mOt do an turn to gifts TOEIC Viet Nam phei hqp voi BO GD-DT vi Tang clic Du ljch nhim dinh gii vi xly thing tieu chuin trinh dO sir dung tieng Anh thong qua chuong trinh chuttn TOEIC cling ducat trien khai.

Diem TOEIC duqc tit ca cic ca quan nhi nuac, t6 chin queic te, doanh nghiep nuOc ngoai va cic Sp doin kinh to curt Viet Nam Gang nh#n nhim &nit gii trinh do ding Anh cim than so vai to cich la mOt thtrac do chain va ding tin coy nhat.

1.3. GM thiln ling dung luyin thi TOEIC train smartphone

1.3.1. Gidi Mien an dyng

"Luyen thi TOEIC tren smartphone" II ling dung luyen thi ding Anh tren dies thooi c6 bao g6m day dit cic bai on tip vi de thi min theo ciu trac mOt de thi TOEIC tieu chat Ong cluing duqc thiet Ice veri lieu chi nho gcm, a sir dung.

Ng clung duqc 18p trinh bang engine Cocos2d-X, li 1 engine ha trq lip trinh Game da nen tang: Mobile (I05, ANDROID, Blackberry, TIZEN, WP) Window, MacOS, HTML5... la 1 engine duqc dinh gii khi moth, da phit triers nhieu Game nam TOP cart

6

Appstore, CHPlay. Uu diem chi tiet ciut Cocos2d-X duqc trinh bay tai chuung 2 tea Ithea 14n.

Cocos2d-X la m0 engine mien phi, von Cocos2d-X tic gia c6 the )(ay dyng mOt img

dyng luyen thi TOEIC WA uu diem vuqt trOi:

—Dung lucmg thip (thip nhit c6 the la 1.5MB), khong drai hOi phien ban phin mem di dOng qua cao. Dieu nay se giep ngubi sir dyng c6 the cii at ung dyng ma thong can qua lo ling ve hi) nhe hay du hinh cea dien thoai.

—Ong dung chay da nen tang, vier code mOt lin, chay duqc cho nhieu h'e thin khic nhau. NM de, tac gia till kiem &gm thin gian, chi phi va tang hien qua sir dyng vi twang thich von nhieu he dieu hanh khic nhau, c6 the chay tren nhieu ding smartphone.

Tir d6, tac gia mong muOn se dui ra sin phim luyen thi TOEIC tat nhit tren

smartphone v6i chi phi va nguOn lyc thip nhit.

L3.2. Lai tech cda sing dyng luyen thi TOEIC trim smartphone

Huang dao to thyc dyng nhu TOEIC c6 thin gian tnmg birth de c6 the thi lay chimg chi la khoitng 18 twin cho den 2 nilm, phi thuOc vac fling lyc ngubi lye, mac diem muc tieu vi 300400 diem di duqc xem la "pass — dat" cho den 990 diem. Ong dung luyen thi TOEIC tren smartphone se la Ong cu hem fch cho ngubi hoc vi nheng uu diem sau day:

—De se' dung, tiet kiem then gian va chi phi Vi qua tranh luyen thi duqc thyc hien qua dien thoai, nen tiet kiem duqc nhUng khans; thin gian ma ngubi hqc phii lieu ten khi di chuyen den trung Ulm va di vi. Nhiiu ngubi can mat nhieu thin gian hcm de di den cac trtmg tam nim 6 xa. Nguiri sir dung c6 the chit dOng sip xep hoc tranh the thing khoang thei gian ninh n6i trong ngiy de hqc t$p. Ong dung duqc cii chit tren dien thoai, lien dung va kherng did Uri qua nhieu ve mot khong gian vi thin gian deti von ngubi sir dyng.

—Tinh ling dung va linh hot Luyen thi TOEIC chi bao gem do ky Wing nghe hien vi dqc hieu, rat phi hqp tan khai tren smartphone. Thyc to ngubi hoe thubng copy cite bai nghe Tieng Anh vac dien thoai de c6 the sir dung 6 mqi ncri, thong phi thuOc vito may tinh hay internet, sach v6... Vin (mg dyng luyen thi TOEIC, ngubi hqc holm town cit the chi can sir dung chiic dien thogi nhu mOt giao tranh he top hien qua.

7

Ngoii ra, tinh img dung vi linh host con the hien 6 mi diem khi nguiri dung co the Wen thi ma khong can mang quit nhieu Si lieu theo nguei. CM vii chiec dien thoai nhe gqn, ngtrei sir dung co the bit dill bid hgc 6 mgi dja diem vi thin gian, khong bj phu thuOc theo met then khoa bieu cg the. Tinh linh hog con the hien 6 fir djnh hues% vi fir dieu chinh.

— Txr djnh hueng vi dieu chinh

Trong qui trinh luyen tip, nimbi dung co the fir djnh huUng cho minh, Ming cich chgn khea bee ph4 hqp nhit d6i viii trinh dO, so thich, mix tieu cua bin than, dieu ray khic phuc dugc cic han the khi luyen thi 6 the lap hgc vi thing tam khi trinh dO hgc vien khong ding deu. Nprei hgc cOng chi dOng fir dieu chinh nhjp dieu khea hgc cho minh, ngbia li co the hgc chin hay nhanh do thin gian minh ty sip xep hay do khi thing tiep thu Iden thirc ala mirth.

8

CHUCING 2. COCOS2D-X ENGINE

2.1. Gild thilu ve Cocos2d-X

2.1.1. Sir ra 141 cda Cocos2d-X vd lick sir ph& trim

Thing 2 nlim 2008, tai thj tan "Los Cocos" gin Cordoba ar Argentina, Ricardo Quesada, met nha phit trien trO chai da tao ra met ding cu tr6 chai 2D cong vei nhom coa mInh. Ho at ten cho no la "Los Cocos". MOt thing sau, thorn phit hanh phien ban 0.1 va dOi ten thanh "Cocos2d".

Thing 11 Sim 2010, mot nhOm nha phit trien tfr Trung ()MSc la Walzer Wang, Minggo Zhang, James Chen va cOng su tfr ChuKong Technologies da phit trien Cocos2d- X din teen Cocos2d. ChuKong Technologies la tong ty hang diu ve nen tang, giai tri di dOng, vOi dei ngii hon 800 nhan vien, ngculi tru sir chinh tai Bic Kinh, Chu Kong cling c6 van pheng tai Menlo Park (USA), Tokyo (Japan), Seoul (Korea), va Taipei (Taiwan).

Cocos2d-X la mot cong cu ma nguen m6 theo gay pile') MIT. MIT la loci gay ph6p sir dung cho ctic phtm mem, cic ma ngu6n mer dirqc phit trien dtra ten' met loci gitty phop co ngtilin &tic tai Vien Ding nghe Massachusetts (Mn').

9

Minh 2.1: Mo hinh phdt trier Cocos2d-X

Cocos2d-X xuit xir to g6c li Cocos2d, engine game 2D viet tren Python, tuy nhien da duqc vOn chuyen sang rat nhilu neon nip khk, thu het nhieu ngtrai sir dung tren the gi6i, nhieu nhit li ban Cocos2d-X danh cho iOS. Cocos2d-X 11 ban port duqc vier bing C-FE, thay vi Objective-C nhu bin g6c, nut de ma nguei lop trinh c6 the xay dung game tren nhieu he may chi bling 1 lin code, cic he may bao gam Windows, Linux, Mac, iOS va Android. Cocos2d-X di chiem duqc su ling hO 16n trong giai game developer to khi phat hanh. Cocos2d-X c6 the ducrc sir dung di xay dung the Ire chai, ling dung vi c.ac chuang trinh tuang tic dtra tren nen tang giao dies khic nhau. Cocos2d-X la engine duqc se dung rung rai tren town the gi6i, v6i hart 400.000 nhi phit trien, bao gam cit cac nhit phat tan ctia the tr6 chai ding Top 10 ten the store 16n Whit the giai nhu AppStore, GooglePlay Store.

Ngay nay, nhieu nguai Cocos2d-X trong cac tr6 chcri thong tri bang xep hang Top doanh thu eta AppStore vi Google Play, &lc biet la 6 Trung Quec, Han Quec vi Nhot Bin. Ck Icy su to Chukong, Google, Microsoft, ARM, Intel vi BlackBerry dang tich cue them gia xay dung along ding Cocos2d-X Nhitng ten Si 16n nhu Zynga, Wooga, Glu, IGG, Big Fish Games, Fingersoft, Gamevil, GREE, DeNA, Konami, CT E & M, MIN, LINE, Square Enix,... a sir dung Cocos2d-X de phat trien tr6 chai cult hq.

Tom tit Lich sty ph& thin cim Cocos2d-X:

—Nam 2010: Thing 7 nam 2010, du an Cocos2d-X duqc din ra vi den thing 11

duqc phit birth phien ban 0.7.0.

—Nam 2011:

+ Thing 1 nam 2011, Cocos2d-X phien bin chinh thirc du tien duqc ph& hanh.

+ Thing 2 nam 2011, tro chai FishingJoy duqc ported tren Android.

+ Thing 10 nam 2011, thiet lop plan mem Coco, du to bOi Chukong.

+ Thing 11 nam 2011, chiem vi tri thin 1 va thir 2 tr6 chai Appstore.

—Nam 2012:

+ Thing 3 nam 2012, ra mit Cocos2d-html5

+ Thing 5 nam 2012, phat hanh v2.0 Cocos2d-X

+ Than 6 nam 2012, Ichai dung Cocos Studio

+ Than 9 nam 2012, Cocos2d-X chiem 6 trong se 10 tr6 chai hang dAu co doanh

thu cao nhAt a Trung Quec

10

—Nim 2013:

+ Thing 1 nim 2013, Cocos2d-X chiem 7 trong s610 tr6 chai hang dau c6 doanh

thu cao !that Trung Quec, 5 vi tri himg diu cho ci iPhone vi Wad.

+ Thin 3 ram 2013, sich Cocos2d-X duct mat bin.

+ Thing 4 nim 2013, game c6 doanh thu cao nhat tai Him Queic Google Play Store

phit trier tir Cocos2d-X.

+ Thing 10 nim 2013, tic gii cua Cocos2d-iphone gia nhop Chukong.

+ Thing 11 nim 2013, Cocos2d-X chiem 9 tren 10 vi tri hang diu trip chai ce

doanh thu cao nit& tai Hin Qua& Google Play Store.

—Nim 2014:

+ Thing 3 nam 2014, Cocos2d-X chi& 4 trong 11 vi tri hang du. trong de trip

chai c6 doanh thu cao nhit WeChat

2.1.2. Tgi sao igi ding Cocos2d-X

2.1.2.1. Liu diim cua Cocos2d-X

—Cocos2d-X la mOt engine da nen tang

Day li mOt lqi the rat len cos Cocos2d-X khi mi game lim ra az.) the chay tren cic nen Ling !chic nhau nhu Linux, Mac, Windows 8, Android, iOS, Windows Phone 8, BlackBerry hay ci HTML5. biet, t$p trung vio ba nen tang di dOng ph6 bien da to nen sat hap din cua engine nay khi ma thi phin tic thiet bi di dOng dan dang chiem linh may tinh ci nhan.

Hien tai, Cocos2d-X ha trq tic nhi phit trien game tren tic nem nga nhu C++, Javascript vi Lua tren tic Ong cu 1#p trinh ph6 Bien vi dy nhu Xcode, Visual Studio, ho#c Eclipse. Deng thbi no cho phip tic nhi phit tan game tren tic he dieu hanh khic nhau vi chuyin sang tic nen tang khic khOng may kW. khan. Chinh viec h6 trq the nen ting cho PC phuc At qui trinh xiy citing game, vsl khi Wing build cho 3 nen ling di dOng ph6 bien 'that dA to nen sot hip din c6a Cocos2d-X.

—Chi tiet cic nen tin h6 trq:

+ iOS 5.0 trh len cho tic trip chai iPhone / iPad

+ Android 2.3 tra len cho tic fro chai Android

+ Windows Phone 8 fro len cho tic fro chili WP

+ OS X v10.6 tra len cho tic trip chili Mac

11

+ Windows 7 tro len cho cac tr6 chai may tinh Windows

—La met enine ma nguan ma

Cocos2d-X hoan toan open source, ngutri sfr ding co the lam bit IcY dieu gi yeti code tha no, vi cling co the deng gop vao framework neu de giup Cocos2d-X phat trien hem. Cocos2d-X dugc xay dung hoan town bai cong deng phat then game, hoan Wan mien phi, luen luon duce chinh sfra, phat trien, tom be ma nguan caa Cocos2d-X c6 the tai tren trang chu cita Cocos2d-X.

—Da dirge kiem thing ben cOng dong Tinh den thtri diem hien tai, co hang tram nghln game da dirge phat trien doa tren nen tang Cocos2d-X trong de c6 nhung game n6i bat nhu Diamond Dash, Fishing Joy. 25% game 2D tren store ctia AppStore va Google Play Store sir dung Cocos2d-X... Hien tai, Viet Nam, kha nhieu thong ty cling dang sir dung engine nay trong do c6 nhieu ding ty nhu GSN, Egame, Afoli...

—Cocos2d-X la met engine c6 hieu suit cao Vai nen tang chit yeu huang den cac thiet bj di deng, day la yeu t6 hang dan ma met Engine di deng can phai dam boo, vi thiet bj di dOng co rat nhieu can hinh khac nhau. Duce xay dung tren nen tang d6 hoa OpenGL va ngon ngft lap trinh Javascript, Lua, nen Cocos2d-X co hieu suit kha cao, chay dirge tren ca nhCmg thiet bj ciu hinh rat thap cua Android. Dac biet dung lugng khi xuit file cai dot cho cac nen tang kha gen nhg so veri mat bang chung cua cac Engine khk. Tren the nen tang di deng, Cocos2d-X td r3 lqi the cult minh von de ttrcmg thich cao cho: Android, iOs, Windows Phone 8. Val cac nen tang nay, game, ling dung yeti khoi hrgng a hoa don trung birth, chay tren ciu hinh di dOng tam trung hien nay, c6 the dot dirge 60FPS — met con se kha cao ma nhieu engine khic kh6 c6 the dot &we.

—Nhieu cong co h6 trq

+ Engine vat ly: hai Engine thuong sir ding trong Cocos2d-X de me pheng cac quy the vat ly trong game la Chipmunk va Box2D. Khi nhac den Box2D chung to Idiong the nito kh8ng nhic den Angry Brids, Box2D cling deng thei cung cap cac ham vat IY lien quan den gia t6c, t6c dO, trcong loc coa tn& d6i tugng de ngtrei chai c6 cam giac giOng vii thus to nhit co the. Con Chipmunk mac dit mei dirge phat trien Al day nhung ve tinh 'tang cling khong thua kern gi so voi Box2D.

12

+ Texture Packer: c8ng co gifip gom nhieu Anti thanh min anti gOp phan lam tAng

hieu nang cho game vi thief 131 khong an xir 19 nhieu anh.

+ Sprite Helper: to cac animation (chuyen dOng) cho Sprite, tit dOng sinh code

cluing to chi can lam viec tren giao dien troc quan.

2.1.2.2. So sanh Cocos2d -X yeti cac engine khcic

+ Titled Map Editor: Too ban do (man chap cho game.

CO nhieu engineer lap trinh game di (long thong dung nhu Cocos2d-X, Libgdx, Unity

3D, Andengine... Ta co bang so sanh dac diem dm cac engine nhu sau:

Andengine Unity 3D Libgda STT Tlnh nang Cocos2d-X

x x 1 x

Full version phai tra phi Mien phi, ma ngulin met

8MB 1.5MB 2

Khong co thong tin Khong co thong tin Dung luqng game

2D 2D, 3D 3 HO trq

2D va 3D nhung chi yeu la 3D 2D va 3D nhung chit yeu la 2D

Android x x x Da nen tang

Java

Khong co thong tin C ++, Lua, Javascript, Nem ngO. chinh

C #, Javascript va Boo

TM lieu h6

Rat day du v6i Javadoc trt7

Day del, co video huang (fan, co litI trq Kh8ng co tai lieu co the

Day dit nhung khong co h6 trq

x x

Tich hop ding co dO hoa

TM Rat tat Tlit TM 4

Bang 2.1: So sanh gifra Cocos2d -X vet cac engine khcic

COng ding danh gid

13

Dpa tren bang so sanh cho thay, Cocos2d-X kh8ng phai la cong cu duy [that va tot nhat, tuy nhien day la cong cp phi) hqp nhat veri dp an dm tac gia a thOri diem hien tai. Cocos2d-X c6 lqi the ve chi phi, neon nga lip trinh, dung luqng xuat file thap va tang th&i ho trq da nen tang. Mac do khong c6 ho trq tir phia nha cung cap nhung nhiing thong tin ve Cocos2d-X duqc cong clang chia se kha day dir, c6 nhieu tai lieu tieng Anh de tham khao. Vi vay tac gia quyet dinh kra chqn Cocos2d-X la engine de thpc hien dp an.

2.2. Kiel' frac tang quan vi m8i trterng lim vi4c

2.2.1. Ca cJu ti char this- mite

Type

Size

Date modified

Name

File folder

11/211/201.3 1011 ...

I jc cocos2dx

File folder

11/28/2013 10:11 -.

CocosDenshion

File folder

11/28/2013 1011 ...

document

File folder

11/28/2013 1012 ...

k &tensions

File folder

11/28/20131012 ...

k eternal

11/28/20131012 ...

File folder

la licenses

File folder

11/28/20131012 ...

File folder

11/28/20131012 ...

ji Plu9in ja samples

11/28/20131012 ...

File folder

saiPtift9

11/28/2013 1012 ...

File folder

5 template

File folder

11/28/20131012 ...

5 tools

3 KB

9/26/7913 913 AM

Text Document

•Riciftre

Ted Document

1KB

9/26/2013 913 AM

'ML File

210

9/23/2013 1918 AM

File

17 KB

.gitmodules LJ •travis.yr1 AUTHORS

9/23/2013 1918 AM

SH File

1KB

9/23/20131018 AM

build-nadsh

3 KB

build-win32.bat

9/23/2013 1018 AM Windows Batch File

File

73 KB

9/26/201310:41 AM

LJ CHANGELOG

13 KB

cocos2d•win32.vc2010.sln

9/26/20131041 AM Microsoft Visual S...

13 KB

9/26/201310:41 AM Microsoft Visual S...

cocos2d-win32.vc2012.sln

18 KB

9/26/2013 913 AM Microsoft Visual S...

cocos2d-wind.vc2012.sln

16 KB

9/26/2013 9.13 AM Microsoft Visual S...

cocos2d-wp8.vc2012-sln

Hinh 2.2: NO1 dung tep tin IDE sau khi gidi nen

14

Nai chira toan be dc ther vien chinh ma Cocos2d-X cung

Cocos2d-X

cap

tep tin da phuomg Hen nh

Cocos6reeshiorC:c:

Chose this Wen, am thanh va ill

Cung cep cac this vien Oat trign ve GUI, cac this vien kgt

Extensions

naafi mang then 2 kigu chinh la HttpRequest va socket.

Cho dc thv vi

A (a5 2 thirvien Vat l chtnh

-X la Box2d va Chipmunk), cac this

sus dung trona

vien ha trot 3D

Sample

Chita cac dv an miu.

Bang 2.2: Co clu to chirc this myc trong Cocos2d-X

\pplicoion

S,

Platform Laker

1r.

Platform Lacer

2.2.2. Kiln tree Cocos2d-X engine

III (cid:9)

IIIII

Hinh 2.3: Kiln frac Cocos2d-X

Cocos2d-X dirge chia thanh 3 tang chInh: Ting ting dung, tang this vien va tang he

dieu hAnh.

a. TAng img dung: la tang china cac (mg dung dirqc phat trien bed IAp trinh vien, cac nhi phit trien phAn mem. Ngoli met s6 (mg dung duqc Android tich hqp sin nhu email,

15

SMS, trinh duyet web, danh be... thi ngutri dimg ci the a ding cli dat them cac 1mg dung tit Google Play hay cac chq (mg dung khk.

b. Tang thu vien: Day la not chin cac 1)0 cac thu vien xay dung nen cac chile nAng chinh

cia Cocos2d-X. Trong tang nay duqc chia thanh 4 nh6m chinh:

—Graphics: chin thu vin do hoa. M6i mat khung hinh, Cocos2d-X se ve lai anh len man hinh bang OpenGL (d6i v6i windows) hok OpenGLSurface — phien ban thu nh6 cua OpenGL giip giam mirc dO tieu hao ning Itrong va tang hieu nang cho thiat bi smartphone (tren thiet 1)1 smartphone).

—Audio: Thu vien ma rang ding de thuc thi cac rep tin am thanh c6 djnh clang *.mp3

—Physic: chin thu vien vat ly. Cocos2d-X sir dung 2 thu vien vat ly chinh la box2D(dtrot phat trim ben Erin Catto — Tien si Toan hoc IY thuyet vi img dung — Dai hoc Cornell New York) va Chipmunk (duqc phat trim beri Scott Lembcke).

—Scripting: Thu vien ding de bien djch cac tap tin javascript

c. Tang ha dieu hinh: la tang ducx viet rieng cho mai h0 dieu hanh nhu iOS, Android,

WindowPhone 8...

2.2.3. Midi truing lam vile

i=br> WinS2 Application

'.exe

Visual Studlo 2012

*.apk

Window

ega E ci> Android Applicaiton

lOS Applicaiton '.ipa

tac

Hinh 2.4: Moi twang lam viec

16

2.2.3.1. Ngon ngu lap trinh

Ng& nga lap trinh chinh thirc cua Cocos2d-X la (cid:9)

Tuy nhien de chay dugc tren cac he dieu hanh khac nhau, lap trinh vien phai bien dich Lai ma ngut‘in ting yeti nen tang ttrcmg img. Cu the nhu sau:

—De img dung c6 the chay dirge tren he dieu hinh Android, sau khi xay dung ma ngu6n lap trinh vien sir dung trinh bien dich G++ phien ban dac biet do Google phat trien dinh cho Android NDK (Android NDK la ding cu cho phdp Iap trinh vien phat trien mOt phan img dung cda minh th8ng qua native code) de bien dich chay rieng cho nen tang Android. Do G++ bien dich ten mid twang nao se xay dung tap tin tucmg *fig cho nen tang dO, vay nen de xay dirng tep tin *.APK cho cac may chay Android lap trinh vien phai sir dung mid truerng Cywin gia lap Linux tren Window.

—Doi vai cac thiet bi chay tren he dieu hanh LOS, sau !chi xay dung ma ngu6n, lap trinh vien sir dung mai trutmg phat trien Xcode tren MacOX bien dich sinh ra tap tin *.IPA cho may chay he dieu hanh IOS.

2.2.3.2. Java Native Interface

a. Dinh nghia: JNI (Java Native Interface) la mOt framework cho phip ggi cac Mm Java trong Java Virtural Machine (JVM) tir cac nem ngt1cAp thap nhu C, C++ hay assembly. Do Cocos2d-X sir dung C++, nen de ggi cac ham native dm Java (cu the la Android) to can phai gqi thong qua JNI.

b. Cach thirc host &Ong:

JNIEXPORT void JNICALL Java ClassName MethodName

(JNIEnv *env, jobject obj)

/*Implement Native Method Here*/

—Trong JNI, cac ham a tang native dugc djnh nghia trong tep tin *.c hoac*.cpp rieng brat. Dac biet, did tied nen ngt/ C++ thi JNI cung cap mOt giao dien Wang diM don gian. Khi may ao Java (NM) ggi ham, JNI se girl mOt con to JNIEnv va mOt d6i tugng jobject, va bAt ki doi so nio nhung phai theo chuAn cita Java. Vi du:

+ Trong da ClassName vi MethodName la ten lap va ten phuong tittle ttrcmg img

dugc khai bac) a ten tin *.c ho4c *.cpp.

17

+ Con tr6 *env li met con tr6 struct JNIEnv c6 china cac giao dien tai may ao Java (JVM). N6 bao gem cac chirc nang can thiet de tucmg tic vai JVM vi lim viec veri the dei hrgng trong Java. Vi du nhu the ham truyen gia tri kieu mang trong Native sang gia trj kieu ming trong Java hoic truyen gia trj kieu chuoi, del Wang cling nhu thong bao the ngoai le (exceptions). ye ca bin Java co the thuc hien mei ma ngutm tin tang Native thong qua viec sir dung JNEnv.

+ Doi se obj la met tham chieu den cac dei tueng trong Java ma da duce khai bio

trong tang Native.

//C++ code

extern "C"

JNIEXPORT void JNICALL Java ClassName MethodName

(JNIEnv *env, jobject obj, jstring javaString)

//Get the native string from javaString

const char *nativeString = env -> GetStringUTFChars(javaString, 0);

//Do something with the nativeString

//DON'T FORGET THIS LINE!!!

env->ReleaseStringUTFChars(javaString, nativeString);

+ Vi du truyen met gii trj kieu chulii (string) tir Java sang tang Native (C++)

— De bien dich ma nguen da viet bang C++ sang Java sinh ra file *.APK dung cho thief bj chay hg lieu hinh Android, lap trinh vien can viet lui duang dan tai cac tep tin ma ngutm (*.h) trong tep tin "Android.mk". Sau do sir dung trinh bien djch V* ten mei twang Linux de bien dich lai town be ma nguen co trong tep ten "Android.mk".

18

c. Anh xa kieu du Ru glita Java va Native

unsign cher

signed char signed 8 bits

short"`,

unsign qnsigned 16 bits

jshort signed 16 bits (cid:9) S short

signed 32 bits

J

jlong signed 64 bits

jfloat jdouble

long long int64

F D

32 bits 64 bits

Bang 2.3 . Bang anh xa kieu diet lieu eta Java va Native code

float double void

Ngoii ra, signature "L fully-qualified-class ;" c6 nghia cac 16p xac dinh duy nhAt bai ten dm 16p do. Vi di: "Ljava/lang/String;" tham chieu trti lop java.lang.String. amg nhukY to "[" duqc ding de xac dinh cho kieu ming.

Luu Anh xa kieu du lieu String vi ming trong Java sang kieu der lieu String vi ming trong Native code li khac nhau. Neu nhu khong kiem soat tot, chuong With se bi 16i nghiem thing (CRASH). 2.2.4. Mit si lap dii tuvng thitang duvc mi. dung 2.2.4.1. CCDirector

—Dinh nghia: la Singerton quin ly Scene, viec chuyen d6i giaa cac scene thong qua viec pop hoic push. Ngoii ra CCDirector can chiu trach nhiem khoi tao OpenGL ES.

—Cac phucmg thirc chinh:

+ CCSize getWinSize():

19

Tra ve kich that man hinh that id

+ CCSize getVisibleSize(): Tra ve kich that hiln thj thgc d tren thilt bj

+ CCPoint getVisibleOriginO:

Tra ve tpa dO diem gac tpa dp hien thi tren man hinh that bt.

+ void popSceneO:

Lay ra Scene mai cling trong stack

+ void pushScene(CCScene *scene):

flea mot Scene vao stack

+ void replaceScene(CCScene *scene):

Thay Scene hien tat bang mot Scene Vick

Dtra vao 3 phuong [hire tren: to c6 the giii quyet duqc bai town da man hinh tren ck

thiet bj smartphone.

20

2.2.4.2. CCNode

CCAtlasNode

CCTIeMspAtIss

COlentaltenAtinFont

Coietwitemlabel

CalentstwiFent

CCTNaitianFaMBL

CCMenultem

CO4enultemSpnle

cosenunemirnage (cid:9)

CCMonultemiogglo

Catanitionfado

CaransitionFadellown

Ca4o1ion4reak

CCParalazNode

catansmonFod•lt

(cid:9)

I Celtan bonFadeup

CCTransitionJurnpZeam

CaransitionMovelne

CCPorticloSystern

CCParticle9/st•nillusd

CCProgressTimm (cid:9)

CCTransitionMovalnL

CCTransitionPageum

CCTransitionMovelnT

CCRenderTexture I (cid:9)

CCIrsnsitionRadmICV/

CCRibbon (cid:9)

CarrantationRadisICCW

CatansibonRotoZoom

CC5con• (cid:9)

CClionsitionScene (cid:9)

CCSprite

CCLaboITTF

CCTransibonShrinkGrow

CCUthelBMFant

CCSprit•atchNode

CCM/ailedMap (cid:9)

CCTMXisyer

Canons:bonShda

Hinh 2.5: Ccic del tuvng duvc ket thica tic CCNode

—Dinh nghia: CCNode la mOt d6i tucmg c6 cac yeu to chink. Bet ke mot d6i ttnyng nao dirqc kheri tao deu c6 kieu di lieu la CCNode. CCNode Muting la: CCScene, CCLayer, CCMenu, CCSprite, CCLabel...

—Cac phucmg that chinh:

+ static CCNode * create(void);

nghia: Kheri tgo mot dal tuvng CCNode

+ virtual void addChild(CCNode* child); Y nghia: them mot del tuvng CCNode Mute vim trong doi tuimg CCNode nay.

Y nghia: xon mat dal &Ting CCNode ni m trong CCNode nay.

+ virtual void removeChild(CCNode* child);

+ virtual void onEnter();

21

nghia: Ham nil)", en; kien khi no &cc addChild

+ virtual void onExit();

nghia: Ham nib', sit kien khi no hi removeChild

+ virtual CCNode * getChildByTag(int tag); nghia: Trci ve mat CCNode có tag bcing vol tham so truyEn vao. + virtual CCArray* getChildren();

nghia: Tra ve wan bo CCNode cluvc addChild tren CCNode nay.

+ void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat,

float delay);

t nghra: Tao ra mot lich o Tham (cid:9)

selector: him xir ly lich

o Interval: thai gian 1Rp lai lich o Repeat: s6 lan lop lich. Sir dung kCCRepeatForever neu mulm lich chay mAi

mai

o Delay: thbi gian tee

+ void unschedule(SEL_SCHEDULE selector);

nglita: Hay lich

2.2.4.3. CCScene

—Dinh nghia: La mOt doi tirang hoat dOng dOc (cid:9)

trong chu trinh img dung. MOt ang dung c6 the c6 ?At nhieu Scene nhung trong mOt thei diem nhit djnh chi c6 mOt Scene dugc hoat dOng. MRc du la d6i tugng dirge ke thira tir CCNode thy nhien CCScene la mOt doi twang dRc biet. CCScene chi nap cheing lai duy nhAt phuang thac create() ngoli ra kh8ng nap ching lai bit ke phucmg thirc nao.

2.2.4.4. CCSprite

—Dinh nglaa: CCSprite trong Cocos2d-X cling gitmg nhu Sprite trong cac engine khac. NO la mOt hinh anh 2D co the xoay, di chuyen, thay dOi kich thu6c, tao cac animation vi thuc hien cac phep Bien deti khac. Do CCSprite dirge ke thira tir CCNode nen n6 dirqc thira huang toan b0 tinh chit ma CCNode cho phip nhu addChild, removeChild, scheduler...

—Cac phucmg that chinh

static CCSprite* create();

22

nglaa: No co the khol tgo cling voi mOt hinh anh 2D hock 1 phan hinh chit nlgit

trong mot hinh anh ban &lit.

+ virtual void setDisplayFratneWithAnimationName(const char animationName,

int framelndex);

nglifa: claw sit dung de tgo chugi anh ding animation

+ void setFlipX(bool bFlipX); va void setFlipX(bool bFlipX); Y nghia: kit anh theo tryc X hoac tryc Y + virtual void setScale(float fScale); Y nghta: keo gidn hinh anh theo mOt ti l'e ificale. Hinh anh ban clau co ti le la 1.

22.4.5. CCScale9Sprite

— Dinh nghia: CCScale9Sprite giting nhu viec tao mot hinh anh "Nine patch" tren

android. VOy anh "Nine patch" la gi?

Anh "Nine patch" IA anh ma ce mot so yang duqc dinh nghia (defined) ce the keo cang ra (stretchable) ma khong bi va hat. Vimg dinh nghia limOt lueri (grid) c6 kich thuerc 3 x 3 de dam bao rang viec keo dan hinh anh khong bi ver.

scalable area

9-patch guides what do they do?

scalable area

fill area

fill area

Hinh 2.6: Hinh anh mink hpa "Nine patch"

Wing (firth nghia c6 the keo can 11 mot du6ng bao mau den c6 dO day 1 px, nim

vien ngoai cling dm anh. Le ben phai va day gqi IA Fill Area, c6 the bleu dieu nay nhu la ban ce 1 sqi day chun, ban co dinh mOt dAu vi keo dan dAu con lai. Le ben tren va ben trig tty thuOc vao ban chAm ve diem den nhu the nao ma yang anh de se duqc kto dan.

23

Vay tai sao can sir dung dan CCScale9Sprite?

Nhu da noi a ten, anh "Nine patch" co the keo dan ma khong bi vet hat. Dieu nay glop giam dung lugng tai nguyen cling nhu dung lugng de tau trir hint' kill teen b() nha RAM.

—Cac phucmg that chinh

+ virtual void setPreferredSize (CCSize size); f nghia: Cal tat kich thwerc del ming can dat den. Mdc dinh being kich think ban

dau ctia /fifth anh.

+ virtual void setCapinsets (CCRect value);

+ virtual void setInsetLeft (float value);

+ virtual void -setInsetTop (float value);

+ virtual void setInsetRight (float value);

+ virtual void setInsetBottom (float value); k nghia: Nhu dd giai thief' a Men. V'ung dinh nghia lit mOt hied c6 kich thy& 3x3.

phtrang thav men gitip chang to quy dinh Wing can keo dein.

2.2.4.6. CCLayer

—Dinh nghia: CCLayer la mOt d6i tugng dugc hieu nhu mOt CCNode. Tuy ninon CCLayer cho phep zit ly cac sg kian touch cling nhu cam bin Accelerometer ten cac thiet bi smartphone.

—Cac phucmg thac chinh:

+ virtual void setTouchEnabled(bool value); Y nghia: Cal dat touch ca &tor sir dyng men layer nay hay khcing.

+ virtual void setTouchMode(ccTouchesMode mode); ngliTa: cal tett chez dO touch la clan touch hay da touch

+ virtual void setTouchPriority(int priority); Y nghia: Cal dat mar dO touch uu lien. Do mat Scene ca thi chira nhieu CCLayer, dieu nay ca thi gay anh Throng din viec khi to touch veto mOt doi tuemg thuOc Layer nay nhung cling ca thi no gay anh Song tai layer khcic. Vic setTouchPriority la can thik de r trcinh viec xung dqt do.

+ virtual void setAccelerometerEnabled(bool value);

24

Y nglita: Chi d'at su dung Accelerometer + virtual void onEnter();

tnglaa: Nhu del not u tren, CCLayer &cc ki that: lei to CCNode viz co them mOt

so tinh ming mat nen phirang thac onEnter0 dirge ngp chOng lqi de cai *flat arc tinh ruing

tren.

+ virtual void onExit();

nglea: Cling nhir phuang thac onEnter0, phuvng thlic onExit duac nap cluing

lgi di )(Oa bo cac cai tat cac tinh niing dQc biit

2.2.4.7. Label

—Dinh nghTa: Label la met kieu dU lieu dimg de kheri tao met doan van ban hien thi len man hinh. CO hai kieu Label thubng dtrqc sir dung la CCLabeITTF va

CCLabelBMFont

+ CCLabeITTF: Sir dung font *.ttf (TrueTypeFont)

o Uu diem: CO the toy chinh kich thirem ma khong sq ver anh. o Nhuqc diem: RAI chum khi gen vao chuyen deng

+ CCLabeIBMF ont: Sir dung file anh va file djnh dung *.fnt de the hien chn

o Liu diem: C6 tec de nhanh khi thuc hien cac animation, mau sic dep do duqc

xuAt to file anh

o Nhuqc diem: CM c6 met kich thuerc theo file anh, viec pheing to thu the, c6

the gay vat anh.

—Cac phircmg thirc chinh:

+ virtual void setString(const char *label);

nghia: thay doi n5i dung dogn van ban dil duTrc khiri 4w truac do being dogn van

ban khac.

+ virtual void setColor(const ccColor3B& color);

nghia: thay dei mau sac dogn van ban.

+ virtual void setOpacity(GLubyte opacity) = 0; Y nghia: thay dot dQ trong suit czia van ban. + void setFontName(const char *fontName); vi void setFntFile(const char*

fntFile);

25

Y nghia: thay dor font chit dang sir dung trong van ban

+ void setFontSize(float fontSize)

nghia: thay dot kich thwerc font chit trong van ban. Chi c6 trong CCLabeITTF

+ void setDimensions(const CCSize &dim);

nghia: thay doi kich thwor khung Min tht van ban. Chi c6 trong CCLabeITTF

+ virtual void setWidth(float width);

nghia: may dal do r Ong khung hien thi van ban. Chi c6 trong CCLabellThifont

+ void setVerticalAligrunent(CCVerticalTextAlignment verticalAlignment); k neat,: thay dOi can le theo chiiu dgc. Chi c6 trong CCLabeITTF + void setHorizontalAlignment(CCTextAlignment alignment);

nghia.: thay dor can le theo chidu ngang.

2.2.4.8. CCMenu

—Dinh nghia: CCMenu la mot doi ttrqng dimg a chfra cac button. Button trong Cocos2d-X c6 kiln dU lieu la CCMenultem duqc k'e thira tit CCMenu. CO 2 loai CCMenultem thuang dime sir citing la CCMenultemSprite va CCMenultemLabel

d. CCMenultemSprite: duqc ke thira dr CCMenultem. Day la met kieu button duqc the

hien bang Sprite

e. CCMenultemLabel: duqc ke Mira tir CCMenultem. Day le kieu button duqc the hien

bang down van ban

—Cac phucmg tittle chinh:

+ static CCMenuItetnLabel * create(CCNode*label, CCObject* target,

k nglifa: khol tgo button kiiu dogn van ban.

SEL MenuHandler selector);

o Label: la down van ban hien thj tren button

o Target: mvc tieu trO den cita dOi film

o Selector: ham xi: ly stir kin khi touch vio button

+ Static CCMenultemSprite *create(CCNode* normalSprite, CCNode* selectedSprite, CCNode* disabledSprite, CCObject* target, SEL_MenuHandler

selector);

neat,: kh6i tgo button kilu hinh tinh

26

o normalSprite: Hinh anh a tong thai binh thirerng

o selectedSprite: hinh anti 6 tong thai khi dang touch

o disabledSprite: hinh anh a tong thai khi bi v8 hieu h6a

+ virtual void setEnabled(bool value); t nghia: cho phip button hogt tong hoc bi vo hleu Ma.

2.2.4.9. CCAction

— Dinh (cid:9)

CCAction la lap ca ban cho cac doi ttrqng action. Cac del turqng dimg a Neu din hanh dengdeu duqc ke thira loi to CCAction. MOt sii action thuArng duqc sir dung

a. CCMoveTo: di chuyen din tuqng den met diem biet truerc v6i met khoang thin gian nhat

dinh theo duArng thing.

+ static CCMoveTo* create(float duration, const CCPoint& position);

b. CCMoveBy: di chuyen den tucmg theo met huemg trong khoang th&i gian nhAt dinh. Dich

den la king vector hai chieu coa vi tri hien tai va vi tri truyen vio

+ static CCMoveBy* create(float duration, const CCPoint& position);

c. CCRotateTo: Xoay den met gee biat truerc tai tam anchorpoint trong khoang thtri gian

Wet tem

+ static CCRotateTo* create(float duration, float fDeltaAngle);

d. CCRotateBy: Xoay them met g6c biat nu& tai tam anchorPoint tir gee hien tai ciut dei

tirqng trong khoang thin gian Wet truck

+ static CCRotateTo* create(float duration, float fDeltaAngle);

e. CCScaleTo: Keo dan kich aurae drii Wog n lan trong khoang thin gian nhAt dinh

+ static CCScaleTo* create(float duration, float fDeltaScale);

f. CCScaleBy: Keo dan kich thu6c dei hum them n Ian tit de dun hien tai trong khoAng

thai gian nhAt dinh.

+ static CCScaleTo* create(float duration, float fDeltaScale);

tuqng g. CCShow: Hien till (cid:9)

+ static CCShow* create();

h. CCHide: An &Si ttnyng

+ static CCHide* create();

27

i. CCFadeln: tang dO trong suOt dad tuqng len t& da trong khoang thai gian nhat djnh

+ static CCFadeIn* create(float d);

j. CCFadeOut: giam dO trong sulk doi Wang va thip nhat trong Ichoang thai gian nhat djnh

+ static CCFadeOut* create(float d);

k. CCFadeTo: tang dg trong sulk dai hrgng den mOt gia tri Wet truerc trong khoing than

gian nhat djnh

+ static CCFadeTo* create(float duration, GLubyte opacity);

1. CCBezzierTo: Di chuyan din tuqng den mot diem Nat truem di qua 2 diem biet truerc trong khoing thai gian nhat djnh. Doi Prang di chuyan qua cac diem theo hinh yang cung. IChoang thai gian (Ian cac diem la bang nhau.

+ static CCBezierBy* create(float t, const ccBezierConfig& c);

m.CCBezzierBy: Di chuyen d6i hum theo mOt huemg bier truck thong qua 2 huOng bitt truac trong Ichoang thai gian nhat djnh. Dad tuqng di chuyan theo cac hugng theo hinh yang cung. Khoing thai gian moi diem den 11 bang nhau. Diem den moi not la tong vector dm vi tri hian tai so veri vi tri duqc nhap vao.

+ static CCBezierBy* create(float t, const ccBezierConfig& c);

n. CCSequene: Thac hian mOt chu6i hanh along c6 than ta

+ static CCSequence* create(CCFiniteTimeAction *pActionl, ...);

o. CCSpawn: That hian d6ng thai mOt chuOi hinh dOng

+ static CCSpawn* create(CCFiniteTimeAction *pActionl, ...); p. CCRepeat: That hian mot ha/1h lap Ili mOt hanh dOng veri so Ian Wet truck

+ static CCRepeat* create(CCFiniteTimeAction *pAction, unsigned int times);

q. CCRepeatForever: That hian Idp mOt hanh Ong va han

+ static CCRepeatForever* create(CCActionlnterval *pAction);

r. CCCallFuntion: Thac hian mOt hanh dOng ggi den mOt phucmg thirc khac. Harsh dOng

nay thuang dirqc sir clang kat hqp vei CCSequence

+ static CCCallFunc * create(CCObject* pSelectorTarget, SEL_CallFunc

selector);

s. CCDelayTime: Thac hian mOt hanh dOng gay tre trong *it khoing thai gian nhat djnh.

Hanh dOng nay thuang duqc sir clang kat hqp vai CCSequence.

28

+ static CCDelayTime* create(float d);

t. CCAnimate: Thuc hien chuyen dOng mot chuoi hinh anh dOng caa 461 Wong van 40 tre

moi khung hinh biet truck.

+ static CCAnimate* create(CCAnimation *pAnimation);

u. CCRemoveSelf: removeChild 461 tuong fir lop chfra no. Hanh dOng nay thin:mg se clung

ket hop vei CCSequence.

+ static CCRemoveSelf * create(bool isNeedCleanUp = true);

—Cac phucmg thirc chinh:

+ virtual bool isDone(void); Y nghia: Kam tra xem himh Ong chgy xong hay chug

+ inline void setTag(int nTag); t nghia: gan mot the cho action di qudnij + inline float getDuration(void);

nghia: Loy theta gian thgc hien hanh tong. Chi Op dung cho action thuac nhom

CCFiniteTimeAction

+ virtual CCFiniteTimeAction* reverse(void);

nghia: Chgy himh Ong dtho nglrgr Iqi so vol hanh d6ng do.

Kit not mgng th6ng qua HttpRequest 2.2.4.10. (cid:9)

a. CCHttpRequest

—Dinh nghia: CCHttpRequest la giao thee cho phdp gfri met yeu cAu tir smartphone len server thong qua dei tugng CCHttpClient vi nhOn gia tri tra ve fir Server th8ng qua dei Prong CCHttpResponse. CCHttpRequest trong Cocos2d-X co 4 kieu ket n6i tai Server II GET, POST, PUT, DELETE.

—Cac phucmg thin chinh:

+ inline void setRequestType(HttpRequestType type)

Chgn kilu kit not

+ inline void setUrl(const char* url)

3'nghia: Cal ddt dia chi Server va cang giao flip.

+ inline void setRequestData(const char* buffer, unsigned int len)

29

f nghia : Gan die lieu can truyen tai Server dai vai trvang hop sei dung kiiu kit not

POST

+ inline void setResponseCallback(CCObject* pTarget, SEL_HttpResponse

t nglita : Cai dpt mgc tieu va pheamg thew mu khi nhan phan hai tir Server.

pSelector)

b. CCHttpClient

—Djnh nghia: CCHttpClient IA met Singerton xir IS, viec d6ng bo hem you au tir Client ten Server. Vai min mi?'t you au hall tat, no se goi tra lai phucmg that chinh da duqc cung cap a tren (setResponseCallback).

—Cac phucmg thac chinh:

+ static CCHttpClient *getInstance(); f netts: tra ve Singerton CCHtpClient + static void destroyInstance();

nghia: Giai phong yang nher cho Singerton

+ void send(CCHttpRequest* request); Y nghia: Thvc hien viec grii yeu cau len Server + inline void setTimeoutForConnect(int value); V nghia: cal dat Timeout cho viec kit nal tai Server + inline void setTimeoutForRead(int value)

nghia: Cai tat Timeout cho viec tai die lieu tic Server

c. HttpRespone

—Djnh nghia: HttpRespone IA del tuqng ma ngtrai dimg se nhan da lieu tra YE tir

Server trong phtrong thIrc dtrqc ai dat 8 CCHttpRequest

—Cac phuoing that chinh:

+ inline std::vector* getResponseData() Y n edit: Lay dir lieu tra ve tic Server. Dir lieu tra ve la die lieu dgng tho (RA09 + inline std::vector* getResponseHeader()

nglea: Lay phan header caa lieu tra ve. Dit lieu header nay M dii lieu dgng

tho.

+ inline int getResponseCodeO

30

f near: Lay mil phem hal sau khi hoop tat yeu cau kit nal Ynghia mot so mar 200 - Kit nal thanh cong, 404 — Dia chi kit nal khang tan tot 405 — Kiiu kit not khang dupv phip

+ inline bool isSucceed() Y (cid:9) tra xem yeu C I I at not ca thirnh cOng hay kh6ng. Kit nal duce gpi

la thanh cang niu getResponseCode0 tra ve gi6 tri 200 hoc 2xx.

31

CHUONG 3. PHAN Tin' YEU CAU NGHIEP VI)

3.1. Yen au nghiep vy

Sau khi khao sat nhu au ngutri sir dung (NSD), dac diem cac img dung luyen thi, va nham dim bao viec quan ly, yen img dung luyen thi TOEIC tren smartphone, tic gia da xac dinh nhftng yeu cau nghiep vtt can this& Tic gia tham khao, xay dung du lieu luyen thi bao gem hinh anh mirth hqa, am thanh, down van ban... sau 46 nhap dtt lieu vao ca s6 der lieu MYSQL. Tac gia sir dung ng6n ngft server PHP de pharse du lieu tir CSDL theo cau frac json vao tap tin alldata.json tren server (du lieu tir hat bang MCQ va TOPIC).

Doi vai NSD, sau khi cai (fat chuong trinh, 6 Fan sir dung dau tien, chuong trinh se you eau ket not mang de tai du lieu. Ve bin chat, khi NSD thuc hien thao tic tai du lieu, chuong trinh se to (Ong tai file alldata.json, phan tich va xir 15, dft lieu c6 trong file, tai them cac dfr lieu chua c6 trong bet nh6 ctia thiet bi, nhu vay dim bao dit lieu duqc cap nhat khOng thing lap. CI nhiing ran sir dung tiep theo, chuong trinh duqc thiet lap to tieing kiem tra ket n6i mang. Neu thiet bi c6 ket n6i mpg: chuang trinh to cap nhat da lieu; neu ;thong c6 kat not mang, ngutri sir dung vao chuang trinh va bat S luyen tap. Nhu vay, yeu cau kiem tra ket n6i mang la can thiet de chucmg trinh hoot Ong duqc tat nhat.

Ngoai ra, 461 vtri chirc nang Full test, de sir dung, NSD can dang Icy tai khoin trwc tuyen. Mutm fruit hien bai thi, chuang trinh yeu cau user phai clang nhap vao he thling sau 46 he th6ng kh6i tao du lieu de thi, tao de bai va cau heti frac nghiem de NSD tin harth thi thin. Neu thiet bi c6 ket n6i mang, khi NSD hoan thanh bai thi (het gi6) hoac xac Akin (submit), chuong trinh se tinh diem vi girl diem len he th6ng.

136i vori chirc nang luyen tap, NSD chon cac chit de luyen tap theo nhu au sir dung.

Nhu vay, chimg to c6 cac yeu cau nghiep At chi tiet nhu sau:

—BR1: Kiem tra ket n6i mang: Chic nail nay duqc dimg de kiem tra xir ly ngoai

cho cac chirc can kat n6i mpg gin') chuang trinh et) hieu nang Mt hon.

—BR2: Quin 19 tai khoin ctia ngutri dimg: Ngu&i sir dung c6 the clang k9 tai khoin Ngutri sir dung can c6 tai khoin m6i c6 the sir dung mOt s6 chirc nang ciut

chuang trinh.

—BR3: Cap nhat der lieu: Khi Ichoi chay 1mg dung, chuong trinh se kiem tra phien

ban dft lieu de cap nhat mei der lieu lam cho ngan hang cau h6i phong phit

32

—BR4: Tao a hal va cau h6i frac nghiem: Chirc 'tang nay IA chirc nang nen tang de ma reng cho cfic loai cau heti trac nghiem. N6 dirge ap dung cho hai chile MIT chinh trong chuang trinh la chirc nang "Luyen tap" va chive nang "Thi the

—BR5: ChIre nimg luyen tap: Cho phep ngtalri dung co the luyen tap cac ki nang dugc

phan theo cau true de thi Toeic hien nay, bao gtm:

+ Nghe to tranh

+ Nghe hei thoai

+ Nghe doan thOng tin

+ Nghe hen dap

+ Hoan thitnh cau

+ Hoin thanh doan van

+ Dgc hieu

—BR6: Chat nang thi (cid:9)

Chuang trinh sinh ra met de thi niau nhien co eau true theo de thi Toeic hien nay veri thbi gian 120 phut. Ngu&i dimg can clang nhap de sir dung clurc nang nay. Chuang trinh tinh diem sau khi ngutri ding hoin thanh bid thi va luu lai thiuth tich tot nhat ngu?ri dOng dat dirge len server.

3.2. So' 46 User-Case dm sing dung

Hinh 3.1: So. do user-case ctia sing dung

33

3.3. Anh xa yen au nghiep vu sr* choir tang

UC 11/8 hi BR (cid:9)

r

UC#01

Kiem tra ket n6i mpg BR I

UC #02 MIT nhap vio N tho'ng BR2

UC #03 Dang kj, tai Ithoin BR2

UC#04 Cap nhat dil lieu BR3

Tao de bai vi cau hal tic nghiem UC#05 BR4

UC#06 Chile nang luyen top BR5

y vchuc Hang u va

Bang 3.1: Bang anh xa yeu cdu ng (cid:9)

UC #07 CFI& nang thi thu BR6

3.4. Dae to chic fling he thong

3.4.1. UC#01: Kiim tra kit not Ewing

Kiem tra ket not mang DO phire tap: 1/5 UC #01

Chat nang nay duqc dung de kiem tra xir 5, ngoai le cho cac Ma ti eh& can ket n6i mang gill') chucmg trinh c6 hieu nang tot hon.

Chfnh Chat nang pi den ne

Tac nhan

Operation System Services ph,

Tien dial' kien Can c6 quyen truy cap cac services Gila m6i he dieu hanh

Cap nhat them mai da lieu trong b0 nhcce caa Client Thinh cOng

Lai IChang c6 Hu diiu kien

34

Sa (16 Luang cong rife

Function

Controller

Program Services

Operation Sysytem Services

n.

sit deu

katmnitrila

You cau kiem tram kat nai mang

kat nta meng

' m ,

, You cau Ham tra 1".

No

,

KM them (cid:9) >

Trill kat qua kiem Ira

Yes

mgng" "Kilm tra kat not Sa dd 3.1: Sc dii lu long cong viec

Phuang phip thyc hien

Chuang trinh xi It

Cong viec nay you cAu geri-nh4n ket qua Ur Services thong qua API dm he dieu

hanh. Cac cong viec chucmg trinh an thut hien:

— Girl you cau kiem tra ket not mpg den Services coa chtrcmg trinh

— Giri you au kiem tra ket n6i mpg den Operation System Services

— Nhan ket qua tra ve Ur Operation System Services

— Nh4n ket qua tra ve tir Operation System Services

— Thuc hien tiep chirc nAng Mr& d6

Cic yeu ciu dec biet khic

IChong c6

3.4.2. UC#02: Bang nhPp vdo Mang

DO phic tgp: 2/5 Ding nh#p UC #02

MO ti

Chile :pang nay cho phep ngtroi dimg nhop ten tai khoan va mat Ichau de truy c#p vao he th6ng. Neu nguiri dimg chua co tai khoin thl can i dAng k9 tai !Moan. Chirc nAng dang k9 se ducc de Op 6 phan sau.

35

Ngutri dimg can phai (tang nhap meri c6 the sir dung cac chirc nang

Idiac cila chuong frith.

chinh Ngutri sir dung

Tac nhIn

Phy

Tian dieu hien Ngutri sir dung can c6 tai khoan de clang nhap, c6 ket not mpg

Ngutri clang truy cap duqc vim giao din chinh dm chucmg trinh

Thenh cong

( a p e %

Ngutri dimg khong truy cap duqc vao 4 th6ng, trang thai tai ►

Z O a

) ( 4

: i i 2

L61 khoan ngutri dimg khong thay d6i.

Scr dii luang cong vile

Hancffing

Smart phone

User

Bet deo

Hien tht man hInh ding nhep

No

I.

Dien thOng tin dang nhep

4

Nhen not "Deng Wet

Giri thong tin tam nhen

es

V

Kit thac

Nhin nut 'Hey"

--ro

So do luang cong viec "flung nhap"

Sc' do 3.2:

36

Su di, trinh ty

KD (cid:9)

0 0 0 sus=

:

1 : Chco chit ;rig ding Sap° (cid:9)

2 : lYnil Vivra donli nhaP0

3 :141ap thong tki j

4 It aan nut de ding rripi) s obuc hien ding ninu

;Tao dui

6:1 tang°

7: tad than;

thloril tr: Orn20

8 :

. (cid:9)

U

9.11x041-7. d Imo ket 0.,e0

10 :Thavibio ket qua()

Lfill: lien td ket qua dry

Sa do 3.3: Sa do trinh t!r "Eking nhdp"

Hwang phip thyc hit'n

Nwrivi sir dyng

Chuang trinh se hien giao dien de ngutri dung nhap tai khoin va mat khan. Sau khi hoan thanh thao tic nay, nguoi dung se barn vao nut "Hang nhap" hoac "Login". Luc nay ngutri dimg chi can chat chucmg trinh phan hei Iai. Neu clang nhap thanh cling, chucmg trinh se cho phep nguai dung sir dung cac elite nang tiep theo dm he thong.

Chuang trinh air it

Sau khi ngu?ri dung nhap thong tin can 1 thiet va bam nut Bang nhap, chuong trinh

se thuc hien cac cong viec sau:

— Lay ra gia tri ten (tang nhap va mat khau cCia ngueri &mg

— Ma boa mat khau bang ming barn mOt chieu M135

— Sir dung HTTP Request theo clang POST truyen goi dft lieu tren den Server

— Cher dqi server phan hoi va tra ket qui ve cho ngtari dung. Neu clang nhap that bai chuong trinh se hien thi thong bao kern theo lei thy ra. Neu clang nhap thanh cong chucmg trinh se chuyen den chirc nang tiep theo.

37

Server

Server sE ling nghe you au tir phia client.

— Sau khi ratan dien duqc menh lenh ding nhap dm client, server se thvc hien cong viec sau: Server se tien hanh truy cap vao CSDL va tim kiem xem co email va mat khau trong CSDL c6 thing khop yen email va mat khau(da duqc ma Ma) &we gin tir Client khong. Neu c6 Server se giri thong bao xuang Client la Ding nhap thanh ding, chuong trinh se tu dOng chuyen sang eh& ning tiep theo nguqc lai Server se girl thong bao that bai xu6ng Client, chuong trinh hien thj thong bao toi va lam sach 0 mat khau trong trang ding nhap.

— Ltru y: Mat khau duqc gfri tir Client len Server la mat khan di duqc ma boa bang ming barn molt chieu MD5, khong phai mat khan ngutri ding nhap vao. Day la molt buck quan trong de dim bao an toan thong tin nguai dimg.

Cie yeu au dtic biet khic

Can co kat mai mang khi thuc hien cac you au teoi Server

38

Giao dien minh has

You must login before exam

Hinh 3.2: Man hinh clang nhap

3.4.3. U0103: Bang 10 tai khoan

DO phut t;p: 2/5 Ding 4 tel khoin UC #03

Mo ti

Chirc nang nay cho phop ngulyi dAng ding ky met tai khoan mai de sir dung chucmg trinh. Sau khi c6 tai khoan ngueri ding co the tien hanh ding nh#p va su dung cac chirc !tang khic dm he thting.

ChInh Ngutri sir dung

Tic nhin Kh6ng cif) phm

Tien (lieu kiln Chucmg trinh phai duqc khai dOng binh thu?mg, phai co ket n6i mang Iii khoan mil duqc dang 4, ngubi citing co the sir dung tai

khoan nay de dang nhip. Thlnh cang

TM khoan men khong dirge ding k9, du lieu kh8ng bj thay d6i L61

Htu dial kiln

39

Su dO tang cong viec

Bat dau

Hiin thj man hinh Rang k9

Olen thong tin tai khoan mat

Man nut "Bang kr

Girl thong tin too tai Moan

Kit thtic

Nhan nut 'Huy

Sc (14 3.4: So. da hciing cong viec "Dcing

40

Se 46 trinh ti

Son --(..-...) (cid:9) CD (cid:9) 0 0 (cid:9)

I: awn ducnong ding kyo • : ' 1 2 ittinjhi 'rang dam; Icy()

3; Nhap thong tato

1 +

4 : Nhan nut de dam Icy0

5 :Thor hien clang

(cid:9)

: Tao dol telt doi 7: Gul thong

Luu vao CSClit

blhong bao ket casa()

10 :7bong bap ket q.aa)

F : hien It ket am &rya kV( Sc clii 3.5: Sc coo trinh tz, "Dting Icy"

Phirang phip thyc hien

Nguiri mi dyng

Ngirtri clung se lien hanh nhap ck thong tin sau:

— Email

— Password

Sau khi dien day do ck thong tin, ngtkri dung se ham vao nut "DAng Icy" Mac "Register". Neu clang 1c9 thanh ding, chtrang trinh se tit ve man hinh clang nhap. Neu clang Icy kh8ng thanh Gong, chucmg frith se hien th8ng bao va nguiyi dimg se nhap thong

tin tai lchoan khk.

Neu muOn dimg viec clang k9 vi tra vi mini hinh clang nhap, nguai dimg se barn

vao nut "Hit)," hoac "Cancel"

Chuang triith x* 1f

Sau khi ngtrai dimg nhap day di thong tin va barn nut clang 14, chuong trinh se

lam nhfrng °Ong viec sau:

— Kiem tra ring bubc dr client(Dimg djnh dang email, password...)

— Lay ra ck gia tri ngubi dimg da nhap vao

41

— MA hea mat khau bang ham bAm met chieu MD5 — Sir dung HTTP Request theo clang POST truyen goi du lieu tren den Server

— Nhan ket qua tra ve tir server

— Thuc hien phin Nil cho ngutri dung

Twang hqp clang 1(9 thinh cling, chucmg trinh se hien thong bao "Hang lcy thanh eating" deng th&i chuyen den man hinh clang nhap. Neu server tra lei la clang nhap khong thanh ding, chucmg trinh se hien thong bao cho ngtrai dung va yeu cau ngtrei clang nhap

lai thong tin.

Server

Sau khi nhan duqc you cau Clang 1(9 tir client, server se tien hall cac cong viec sau:

— Phan tich you cau tir client vi lay ra cac gia tri:

+ Email

+ Password

— Kiem tra xem ten clang nhap da ten tai hay chua. Neu ten clang nhap dA ten tai

thi tra ve cho client ket qua clang k9 that bai

— Neu ten dAng nhap chua ten tai, Server lien birth them mod ban ghi vao ca se

dU lieu. Cac bang User se duqc 4p nhat:

+ Email: Ten clang nhap cita nguei dung

+ Password: Mat khau clang nhap

+ RegAt: Thei diem hien tai tren server

+ Latest: Thiri diem hien tai lien server

+ HighScore: 0

— Sau khi them ban ghi thanh cong, server tien birth tra ket qua thong bao viec

Clang k9 thanh cong cho client.

Cac yeu au dtc bi%t Idnic

Thiet hi can duqc ket not mang de tien hanh giao tier) voi Server

42

Giao dien minh hip

4

,

. (cid:9)

EMIt

'OMNI

frAltWORD

flinh 3.3: Giao din citing ki

4

1116121441MILCOM

Check password again1

Hinh 3.4: Giao dien clang 10 vit thong btio

43

lieu

3.4.4. UC#04: Kane Ira plain bdn vd ejip nisei da

Kam tra phien bin vi cep nhet de lieu

UC #04

Me ti

DO phut tap: 5/5 Day la cling viec chuang trinh thac hien mat cach to clang miii khi ngueri dung kheri clang chuong trinh va co ket not mang, khong yeu cAu thao tac !lac) tir phia ngtreri dung. Chirc nang nay co nhiem vu kiem tra phien ban Tang dung va phien ban du lieu hien tai dm ngueri dung. Neu phien ban hien tai khong phai phien ban meri nhAt, chuong trinh se Wen hanh cap nhat der lieu med.

Chinh Chile nang trong chuong trinh

Tic nhan

Ngutri clUng

Phu

Tien dieu Idea CAn có kelt not mang

CO nhat them mai du lieu trong b# nher dm Client

Khong có thay dei du lieu trong b0 nher dm Client

Thenh cang Lai

Diu di& kien

44

So. d6 luting cling vi§c

Handling

Smart phone (cid:9)

User

( BM diu)

4,

Nem Ira kid ned mang

Hien thl man hlnh loading

Kheri dOng chinng VIM

Ksim tra version

$

Tai dirt riem

nhet progress

d Hien thl vi cep

Ghi dD Ku xuang be nh&

Thong bao thinh cOng

KAI 'Mk

So. dd 3.6: Sa do fusing cling viec "Kilm tra phien ban va cap nha't die' lieu"

45

Sit 46 trinh ttr

0

0

S

S

(cid:9)

. (cid:9)

itariathel _atm

1:: Kiwi done chuong trathd

Zink Firth loack•O

2 114: 4

: Yey cau kien ira ket rid rnant)

5 ,Tra le ariquiraacteinnAgtigong0

yeu cau

check Yera000.1

?

U • 7 :jit ye ket qua chedc wain 8 ts0 yeu cau download (cid:9)

allot progress download() i

9 : Igen thl vatai

.7

:

I •: GU data() 11 Ma- vao loo nhotj 1,11 • • 0

Ill • ban Ivan tat qua Din h • • Ili

nluit clii lieu"

tra phien ban va cap

do trinh ty "Krim

So. cili 3.7: So.

Phirong phip there hien

Chuang trinh xi If

Cong viec nay you cau giri-nhan ket qua tir server va xir 1S, logic trong thoi gian suet thiri gian thuc hien cho nen can phAi sir dung 2 luEng.de tien trinh hien thj giao dien lchong bj treo trong khi thuc hien logic. Cfic cling viec chucrng trinh can thuc hien:

— Giri yeu cau ten Server de check version

— Nhan ket qua checkup version dr Server

— Gin you cau download data

— Nhan data duqc truyen tir Server

— Ghi data vao bel nha

— Hien thj phan tram download tren thiet bi

Server

46

Server se ling nghe you cAu tir phia client va tra ve cac ket qua theo yeu eau tir

phia Client.

Cie yen an tric bitt khic

Can do ket n61 mang khi thuc hiOn cac you dm va nh#n phan h6i tir Server

Mao diOn milth hya

• • 0 Of

dung

3.5: Giao then khi Mei dray zing

Hinh

3.4.5. UC#05: Teo de bid via cau hoi trek nghtent

To di bli va ciu hal tric nghiem

UC #05

DO phirc tam: 3/5

M8 ti

Khi ngueri dung thao tac chip the lo4i de luyOn t#p hoAc thi Mfr. Chuang trinh se gqi den chat nAng ma nguari dung Mang tac. Tuy nhien cac chic nAng d6 duqc se to dung gqi den chic nAng nay de kberi tao MI liOu. Chic nAng nay IA can thiet va co the coi la nen tang hay chinh la tinh ke thira trong 1#p trinh huerng cthi tucmg

Chic nAng LuyOn t#p/Thi TThu

Tic shin

p (cid:9)

s Khong co

47

Tien dieu kiln Chuang trinh phai duqc ;chili dOng binh thirimg

Hien thj de bid va cau hoi tric nghiem

Hu kiln

Ithong co da Ro

Thbah cong fing Lid

So' la luting cong vilc

Handing

Smart phone

(cid:9)

Lisa

Function

Database Chant

I 4 Gtai thd

d (cid:9)

440Ip)Oe•

. :

. IG6m tra di)

BAt du (cid:9) ) ( (cid:9) / 4kb) a /

bithd Iosi cd to %kh eing

an tao

i Kw too 1191u Side di bill ve dm hdi Irak isaNdm c6 wag CSDL

!

au hail Ink /

Die rat at cau trd RA

taro lei au tri ifri Inio (cid:9) nhdr

4—

Chan dip de

4--

bo lent

tan thi dli bid II cau ha Irk ntitedin

Wake tni kat qui

H

X i) It Icid dud

)4 —

K

these

Gal Dive lit ma di chOn va dip an dm kw a Ell ehtrtem kk kilt

( (cid:9)

Min tad tblp in dichitin vii hat qui

So' dá 3.8: Sc coo hieing cong viec "Too de' bai va cciu hoi trcic nghifm"

48

So dil truth hi

isminbilm

. Took

Ki) (cid:9) 0 (cid:9)

41 (cid:9) , s

siltict

.i.aanign 1: as chu de and Lao° (cid:9)

on: 2 :10em Ira chu deco ton tal 1-1

de bai theo do de()

3 : to (cid:9)

5 :baa tat lucau

• Tao dc4

6 : GU dal Una°

-`f

7 : 4 thi de bat vi, cau hai frac • (cid:9)

• hay aaip

an da anon • (cid:9)

9 • (cid:9)

2 : Chan dap an 1 - (cid:9) C

hot trot nghiem"

1 1 : Hen ei dap anq cla trinh to "Tgocij bat va cau

So. da 3.9: Sa

Phirong phip thyc himn

Chuang trinh xur If

— Nhan chit de can tgo tir tic than gui din ten — Kiem tra xem cif) chi a d6 trong CSDL tren may kh8ng — Neu khOng: thong bio du lieu chua c6 tren min hinh cim ngueri dung, ket thic

chirc nang tai day

— Neu c6: se thy ngau nhien mOt de bii theo chi de tic than gfri tea ban du.

— Chucmg trinh se dio tat tit cau tri Rd, vi gin lai gia tri dap in van b0 nh6 tam. — Hien thj de bli vi du h6i tric nghiem tren min hinh — Ngueri dimg chon eau tra Itri cia minh

— Chuong trinh so sank cau tra Rd dm ngteri dimg vi dip In vita hm trong b0 TIM

tam

— Hien thi ket qui vi dip in ngtrei dung da chqn len min hinh. Neu ngueri dung chon ding, chucmg trinh se c6 nhac bio "Tinh tinh" deg thin din miu nen mia dip in d6 sang mitt xanh li cay, ngtrqc lai se boo "Teeeeee" demg thin dOi mitt

49

nen dap an ngtreri dung da chin sang mau do, mau nen dap an dung sang mau

xanh la cay. Cie yeu ciu dOc met kink IChong c6

3.4.6. UC#06: Luyen 42p

DO phut tap: 3/5

Luyen tap

UC #06

MB ti

Chirc fling nay cho phep ngu&i dung chon chit del de luyen tap. Sau khi lua chat.' chi" de, chuang trinh se gal den chirc nAng tao de bai de lay than be der lieu theo cho de ngtreci dung &A chip va hien thi nil dung a bai de ngtrai dimg luyen tap.

Chfnh Nguai sirdung

Tec nhan

UCO5

Phu

Tian dirk kiln Chuang trinh phai duqc khai ding binh thuang

Hien thi giao dien chirc nang luyen tap va cac tuong tac host

t t o . , o

ding binh thu?mg

ThInh cling

: ? I S : 2

0 0 u 0

4 4 0

!Chong c6 L8i

50

Su a tang ang viec

(cid:9) (cid:9)

Function API

Handing

Smart phone

User

(sings

Gdditi

1

tAydoiud4 NI Moo dui de

Ction chd 06 luyen t$p

1 cau h61 trlic 0910Orn

hr

4

Lou via In) nh6 tern

Lay de Ku dr nit rem

Nhan nit ciwydn au Sep the°

Hien rhI the:" tin de Uri va cats Mi tree nghlem

Hien IN dip an

h) bit qua (cid:9)• dip an di chip

st

Chi* dlip an Fa

chin

Wm Sal

NMnniltBack 4

Hien thi kat qua a thong bao • (cid:9) nhec di kern

Kit thdc )

So. d 3.10: Sc dO luting cong viec "Tgo dJ bai theo cha d'J dci chpn"

51

Su dó trinh tn.

1-0

(cid:9)

souk

.

luyen

chuck can (cid:9)

-"khan (cid:9)

eu eau tao de bar theo dlirlk0 (cid:9)

3 : Gt, chu de chn tao de lay date°

1111

:'

(cid:9)

4: Tao dotheing()

-11 va° bcbrihcl de t (cid:9)

6 : He np de bat va cau hal trac 4 0

71thandapanO

8 • Cap 4111 Irargi thai dap an da chant (cid:9) LA Yeu cau xu ly dung sago

10 :Kee tra dap an()

11: teen thi dap an va Neu 0:190

(cid:9) (cid:9)

:

Chuyen cau ben theok

: Lay du btu tong bo

ri

Lrill 1j3

trthi de bai va cau hoi trac

14:

1.5 : Nhan nuteadd)

' (cid:9)

drop chuc nang0

16 :

de da chon"

trinh ty. "Tgo td bai theo chti

Sa ad 3.11 Sc ad

Phtrung phip thyt hien

Ngtriri sfr dung

Sau khi chip chu de tie luyen tap, chuong trinh se tai du lieu len man hinh ciia

ngu&i dung. Tai day ngueri dung c6 the ca the thao tic sau:

— Chan dap in.

— Chuyen cau tiep theo

— Quay lai giao dien chinh

Chuang trinh milt

— Sau khi nguai dung chin chi* de luyen tap. Chuang trinh se pi den chile nang tao di bai va cau hoi tic nghiem (UCO5) de khai tao va Itru vao hi) TIM tam.

52

Sau da chuang trinh se hien thj len man hinh ni)i dung de bai trong trang giao dien caa chirc fling luyen tap.

—Sau khi ngtreri dung chan dap an. Chuang trinh se lciem tra dap an da chan vai cau tra 1&i duce luu trong be 66 Lam. Neu Wing se c6 tieng "Tinh tine, neu Sai se c6 tieng "Te" va thing th6i hien till dap an Clang bang hinh

—Sau khi ngtrai dung chuyen cau tiep theo, chtrcmg trinh se lay titp 1 de Hi khic

da duce luu trong ha' thief tam

—Sau khi ngtrai thing chcm chic nazi); Quay lai giao dien chink. Toan b4) du lieu duqc luu trong b0 nha tam se dirge gig phUng, deng thth chucmg trinh se chuyen ve giao then chinh.

Giao dien minh hos

53

0

Claim 1: hesthopurporaftherwal

0

Hinh 3.6: Giao dinbai dung van ban va eau hot mac nghiem sau khi lay du lieu tit CSDL

Itotsikepoparoliletreol

Gaol

S

Hinh 3. 7: Man hinh hien thi dip an sau khi fly:6i dung chon dcip an chinh xac

54

Galion 1: S aid doom aster

0

Hinh 3.8: Man hinh hien thi de bai dan$ am thanh kern hinh anh va cau hei trot nghiem sau khi lay dir lieu tit CSDL

Question 1: S ad door one

Hinh 3.9: Man hinh hien thj dip an sau khi nguiri &mg dun; dap an bi sai

55

3.4.7. U0107: Thi thtt

DO phfrc tap: 3/5

Thi thir

UC #07

MO to

Chuang trinh se tao ra mot de thi c6 cau true gi6ng deng then tinh th&i gian lim bii. NOi dung de thi ce eau true gi fang vei de thi Toeic hien nay g6m 7 phan Luang img vai so Wang cau m6i phlin trong d'e thi Toeic vi then gian lam bii li 120 phut. Ket thic bai thi nguiri dung se biet diem mirth ngay1ap tirc vi c6 the xem1ai bii lim

c6 hien thi ket qui Dimg/Sai.

Chfnh Nguiri sir dung

Tit '• nhin

UCO5

Phi)

Tien dieu hien Nguai sir dung can phii Bang &fop vao he thting

Tao ra mot de thi thir co du true gi6ng vol de thi Toeic hien nay

Thhnh cam

0 1 0 4 4 )

Kh8ng c6

4 4 0

i 6 : 2

0 0 0

56

So d iang ding viec

Function API

&nett phone

User

sk Mu

Olen di) de nein 1PP

Cheek thin ceu Ithic

Chen eep en

then nig Submit

Whin net Beek

1

Sc da 3.12: Sc chi luting cong viec "Thi this."

57

(cid:9)

So. d6 trinh

SEM

ante mg IN et ;

05elegeltrua

3: (cid:9)

11011 rill' a bedanlin • te ,eu go 50 et te r- Mtge

. • (cid:9)

II

: te a Og

Ta

ray tombs= rag.

P

• (cid:9)

- -Heel deal DI : Tao dd terea

Ire (cid:9) am to we eep

tar go stg 10 dm MI qp-w map 1 : Te Unk

rarkdalea; Nag

tee)

; -Si O de le am Ig 00Q

: Lu ce to mie (cid:9) : (cid:9)

Ta tereallij

rti_Ctlegteggai

go 46 It Mg olso vs0

Tam 0v0

ce Id Inc aitinal

t

To Sava

Le ea le a Sc

'aeons 24•403.

: Tit as tmi 01100u

E: Ye g On to le V aga

: dos MI 101 Snail j

So do 113: Sa coo trinh to "Thi the."

58

Phuang phaip thwc hien

Nguivi sir thing

Sau khi chon chirc nang Thi the, chuang tranh se tai du lieu len man hinh cea nguai

ding dOng then tinh then gian litm bal. Tai day ngtrei dimg di the ea the thao tac sau:

— Chan dap an.

— Chuyen eau flip theo

— Hoan thanh bii kiem tra khi chtra het gib

— Quay lai giao dien chinh

Chuang trinh zit If

— Sau khi ngueri thing chirc nang thi the. Chuang trinh se gqi den chile nang tao de bai va cau heti tic nghiem (UCO5) de khoi tao va luu vao bQ nher tam. Chuang trinh se sir dung nang Tao de bid vi cau hei frac nghiem 07 tan veri thir

tong so cau h6i frac nghiem la 48 du

tu nhu sau: + Tao ngau nhien 10 de bai veri chit de: "Nghe — Ti tranh" + Tao ngau nhien 30 de biti voi chit de: "Nghe — Heti dap" + Tao nglu nhien 10 de hal vei chit de: "Nghe — Hui thoai" + Tao ngiu nhien 10 de bli veri chit de: "Nghe — Doan thOng tin" + Tao ngau nhien 40 de Hi v6i che de: "Dqc hieu — Doan thanh cau" + Tao ngiu nhien 4 de Hi yeti che de: "Dqc hieu — Hoin thanh doan van" + Tao ngau nhien n de Hi yea chit de: "Doc hieu — Tra leri cau heti" sao cho

+ Luu 5r: m6i cau hei frac nghiem sau khi tao ra duqc danh s6 the ttr tang tiep

eau twee. S6 bit d'Au tir 1.

— Sau khi ngueri dung chop dip an. Chuang trinh se luu lai dap an dA chqn vao b0

nhe tam dung de cham diem sau nay.

voi so thu to du dtrqc luu trong NI nhe tam

— Sau khi ngutri thing chuyen du khic, chtrcmg frith se lAy de bai co eau heli img

— Sau khi ngued thing chip chirc Ming holm thanh bii thi, chucmg trinh se idem tra ket not mpg dring then tao mOt flan trinh khic tien hanh chAm diem vi thong bao diem cling nhu ket qua cac dip an cea de bai cho ngtrei dimg. Neu ket qua

59

kiem tra ket not man la c6 chtrcmg trinh sE girl diem le'n Server de xfr ly ngtrqc lai lien trinh nay se hi buy bet.

— Sau khi ngutri dung chip chfrc nAng Quay lai giao din chinh. Toil .% N du lieu duqc luu trong b0 rilie tam se duce giAi phi:mg, ding thei chtrcmg trinh se chuyin

v'E giao din chinh. Cac yen au d$c biet 'chic

Khong c6

Giao dien minh hya

60

119:91 (cid:9)

0 (cid:9)

=D

anon 1: talen rd dinar wan

Hinh 3.10: Man hinh sau khi vac) char nang thi this.

11r - 4

QUFTTION 75. C

QUESTION 76:

QUFTTION 77: P

QUFTTION 79: 8

QUESTION 79: P

QUESTION Al:

QUFTTION

QUFTTION 91:

QUFTTION 94 :

QUFTTION 95.

QUFTTION

Hinh 3.11: Man hinh hiern danh sach cac aiu hot trong chac nang thi this.

61

Hinh 3.12: Man hinh hiAn thi kit qua thi thzi sau khi hoan thank bai thi

62

CHUUNG 4. THIET ICE VA TRIEN KHAI UNG DUNG

4.1. Kien true he thing

Ting thu vien

Ting Androi Ting giao dien

Ting platform Tin,g then khain

Ting IOS

Ting de lieu t Ting CSDL

Hinh 4.1: Kiln Ink he thting

ling dung "Luy'en thi Toeic" duqc xay dung theo kien true phan tang duqc cai tien tir

mo hinh MVC, duqc mo hinh nhu ten:

—Ting thu vien: la tang cung cap cic thu vien duqccung cap tir Cocos2d-x ve cic thu vien ma rOng do tic giA dinh nghia. Tang nay giao tiep mgt chieu ten tang giao dien nhim cung cap cic lap va phuang thuc lien ich yeti row dich chinh la tai sum

dung.

—Tang giao dien: la tang cung cap cic 16p giao dien, c6 nhiem vu chinh la than tucmg tic, giao tiep va xi. 19 logic tir tacmg the dm ngu&i dimg. Tang nay duqc giao tiep hai chieu vtri fang dieu khien de than vi truyen dD lieu.

—Tang dieu khien: la tang giao tiep gifra tang giao dien va tang oar lieu hoac giCra tang giao dien va'tang Platform. Tang nay se glop truy xuAt du lieu theo you du tir 'tang giao dien, hoic gfri/nhan yeu eau tir tang platform.

—Tang rift lieu: la tang giao tiep giCra tep tin du lieu va tang dieu Wen. Tang nay

nhiem vu doe der lieu tir tep tin da lieu c6 cau frac JSON, sau d6 phan tich da lieu va tra lai dry lieu theo you du tir tang dieu khien.

—Tang co s6 dft lieu (CSDL): la nai luu Uri dft lieu ten Server va ten Client. Co the

nhu sau:

63

+ Server: Nha cung cap (NCC) se nhap dft lieu de bai vao he quan tri CSDL MySQL. Sau d6 NCC se sir dung nen ngti Server PIS de tao dCt lieu theo can trite JSON luu thanh tep tin "allDatajson" tren Server.

+ Client: Nguai sir dung (NSD) sau khi kh?ri dOng chuong trinh, chuong trinh se to dOng tai ve tep tin da lieu "allData.json" va phan tich de tai them the tep tin hinh anh va am thanh chua co trong be nher may.

—Tang Native: la tang dinh nghla cac ma nguan c6 the sir dung chung duce tren cac

nen tang

—Tang Platform: la tang nhan dinh de dieu lchien gifta tang Native van cac nen tang

IOS hoic Android. + Tang Android: Chira ma ngu6n cua he Alien hanh Android + Tang IOS: Chira ma ngu6n cua he dieu hanh IOS

4.2. Thiet ke chi Het chat ning thi thir

Is*

CannINgiss

"stjaWilat aart Cemodran

.ttbNS Caimbelpiet blthor COSalSpis

Ana tears NOmp a. ApeinitOwn

TSIOIONIS

!Ms* (Oatalffsa pulthdaspi ks* Twic

1.1

dsdrilig) ant Thig...bni) odble/aCiTysi

.-- Mop Ma" ...oh slain

celbnesidebesitair kat

7 ..S.a041010.0

Ow eilotiamer IS ti enesiQuiria ft_rofigilagar Ils_MAIINet raffiacola Pktddelt COSthaipis raislIek COMpIrdpis Seiniallogr StwarcQtatithae

:::).="")

Pars

• As igesi • 4 at 5.•

Owlylair

n-•••c* Aga ..uomegfte 41.1

' >tkalget

4 (cid:9)

det.>WMEM4

at klis".•4 ===

nibnasesftwedi COMWO aranOmile 4 =6

adb>e0 ..is selameadr ONS Swim WIS. 444.S•44) asininneet aSnisaislatTabsilAds abeci•) anneMe0 diers~.00

cchog..+41044) 44446.+NaCk4464 ambryslressfra30 ava6>Seadert40:04•0 • n wit•kilsedt Mart) oUttohis) et4ato3/41friebk altaIrstalst olne011istAwne0 «.d6NpTS.b(t iD ,apaialeskamlaspiebsehairalkainp(qemiND “witoftellutialcbrok WNW exilitaftelkiclatral) tmitotailaistatberai CC010) apilikdbMI)

<4443rieplabillig044Qoplatle

Hinh 4.2: So JO lop chi tilt char Wing thi ante

Mo ti

tilt dm chic nang "Thi thir". Chirc nang nay dtrqc thiet ka bed cac kip dei tuqng sau:

Sau khi dic to yeu cau cac chirc nang dm he tilting, tac gia dua ra duqc so di) lop chi

64

- Topic: Day la lop thuOc tang giao dien, ce nhiem vu hien thi du lieu de bai (nOi dung down van, Milli anh hay tep tin am thanh) vi xi' 19 twang tae dui ngu6i dung.

- TopicContent: Day 11 mOt kieu du lieu do tac gia dinh nghia, dimg de d6ng gel der

lieu tir cac kieu di: lieu nguyen

- MCQ: Nhu da dAc to yeu cau a chtrcmg 3, chirc nang "Thi the duct ke thira tir chirc nang "Tao de bii va cau hoi tic nghiem". Lap nay thuOc tang giao dien, thy nhien de tang toe dq xir 19 cling ram giam thai gian build (xay dung cac ban cac ban a milli nen tang), 16p nay con c6 nhiem vp xi: 15f logic cac tuang tic vela ngueri &mg. Giao dien 16p nay dtrqc chia that'll 2 phan chinh gem: giao dien lap Topic va giao dien cau hei tic nghiem (chira not dung cau h6i, dap an, cac nut ttrcmg tac

chuyen cau va quay Lai giao dien chiral).

- ConfigLoader: Day 1116p thutjc'tang du lieu, c6 nhiem vu phan tich dir lieu va cling

cAp cac phuong that a thy cm Ru.

- Questionitem: Day la 16p thuc the, chin cac thuOc tinh can thiet de tao cau hei tic nghiem, lop nay cung cAp 2 phuong ditic cai dAt va !Ay du lieu cho m8i thuOc tinh. - FullTest: Day la 16p cluqc ke thira tir lop MCQ, lap nay c6 nhiem vu chinh la khei

tao de thi vi lAy du lieu tir ding du lieu .

4.2.1. Topic

a. Phuong thirc

1' nghia : Phuong thac nay dimg de Ichei tao giao dien

- Bool initO;

- Static Topic* create(); Y nghia : Phuong tithe c6 nhiem vu tao doi tucmg Topic

- Void onBtnPlay(CCObject *obj);

phuang thirc co nhiem vu nhAn Wang tic tir ngtari dimg vi xir 19 logic sau Ni" (cid:9)

khi nhan nut Play tep tin am thanh tren man lfinh Void updateStnState(CCObject *obj)

- Void updateContentTopicO;

ngl ► a: phuong thirc c6 nhiem vp cAp nhAt nOi dung de bai

4.2.2. MCQ

a. Phuong thUc:

- Virtural bool initData() = 0;

65

• nghia: Day la lap thuan lo, cac 16p ke thira tir 16p nay buOc phai dinh nghia lai phucrng thirc nay. Phucmg thirc nay co mvc dich khai tao toan bq aft Ro can thief de luu tra trong b6 nha dem (du lieu duqc luu vao mOt vector, vector se tv dOng giii phOng b0 nha khi thoat khei chile nang nay).

—Virtual void onAnswerClicked(int id) = 0; • nghia: Day II lop thuan lo, cac 16p ke thira tir 16p nay buOc phai dinh nghia lai phucmg thin nay. Phucmg thirc nay co mvc dich xir 19 logic sau khi ngtrici dung chqn dap

in.

—Void pushQuestionID() = 0; • nghia: Day la lap thuan lo, cac 16p ke thira• tir lop nay buOc phai dinh nghia lai

phucmg thirc nay. Phucmg tithe ply c6 mvc dich day du lieu vao b0 nh6 tam.

—Void onAnswerClicked(CCObject *obj);

nghia: Phuong thirc co nhiem vv phan tich xem ngutri dung da chon dap in nio

—Void loadQues(int id);

nghia: cap nhat du lieu de hal vi cau had frac nghiem img vtri tham so truyen vao

la vi tri chi s6 thin tp duqc luu trong b4 nhe dem.

—void onPushDataO; 1.1 nghia: Nap them da lieu vao b0 TIM tam

—Void onClose();

nghia: D6ng lai chic nang dang sir clang, quay lai giao dien truck do.

—Bool initO;

nghia: phuong thirc nay dimg de Ichai tao giao dien

—Void loadText(CCLabelBMFont *lbl, std::string text);

nghia: cap that niji dung doan van ban yen tham s6 truyen vao la ddi tuqng can cap

nhat (*lbl) va On dung doan van ban mai (text).

—bool showAnswerO;

nghia: kiem tra dap an ngutri dung da them et) dung khong. Neu dim tra ve gift ti

la "True" nguqc lai tra gift 14 "False"

—void gotoQues(int id);

nghia: nhay den cau hei nao de v6i tham so truyen vao la vi tri cau h6i trong 130 nha

dem

66

—int getTopicIDByQuestionID(int questioniD); Nit nghia: lay topiclD theo questionID yeti tham s6 truyen vao la questioniD

—int getTotalQuestionInToPicByQuestionID(int questioniD);

nghia: Lay tong s6 cau heti ce cong topic yeti tham s6 truyen vao la questionlD

—void pushAllQuestionDataInTopicFrotnJsonToDataTemp(int questionlD);

nghia: Day tom b0 dU lieu c5 cimg de bai WA de bai cua questionlD duqc truyen

vao

—virtual void onBtnNextClicked(CCObject *obj); nghia: Xir ly chuyen cau tiep theo cau hien tai

—virtual void onBtnBackClicked(CCObject *obj); N./ nghia: Xir IY quay lai cau tram cau hien tat —virtual void onBtnSubmitClicked(CCObject *obj);

nghia: Xu ly hoan thanh bai thi (d6i vbi chirc nang thi alit)

—void updateStnStatusO; Nett nghia: Cap nhat tinh trang ck nut sau khi chyn dap an hoc chuyen sang cau h6i

tic nghiem khac.

—bool isChangeTopic();

nghia: Kiem tra xem viec chuyen cau hen c6 thay d6i de bai hay khong. Neu c6 tra

ve la "True" ngugc lai la "False"

—void sortData( Questionliem &qsData ); nghia: Dao tat tir dap an trong cau hei

—std::string getAnsByKey( Questionitem data, int id );

nghia: phucmg thirc nay hit try cho phucmg thirc "sortData" c6 nhiem vy lay dimg

di lieu sau khi dao tat to dap an

b. Thu0c tinh:

tai tren man hinh ngubi thing

—CCMenultemSprite *m_btnNext: dung de ye nut chuyen cau hei tiep theo cau hien

—CCMenultemSprite *m_btnPre: dung a ye net chuyen cau Wu& du hien tai tren

man hlnh ngutri dimg

67

—CCLabeIBMFont *IblWaming: dung de hien thi mOt down van ban nh&c ngutri

dimg.

—int quesIndexInTopic: km s6 thin tv cua cau hoi hien tai trong danh sach cac cau

hoi thuOc de bai nao do.

—Topic *mtopic: dung a dieu khien cop nhat de bai —CCLabeIBMFont *m_lblQues: dimg de hien thi neri dung cau hen

—CCLabeIBMFont *m_lblAnsA: dung de hien till nOi dung dap an A sau khi dio treat

to cau

—CCLabeIBMFont *m_lblAnsB: dimg a hien thi nig dung dap an B sau khi dao treat

tv cau

—CCLabeIBMFont *m_lblAnsC: dung de hien till nOi dung dap an C sau khi dio trot

ty cau

—CCLabeIBMFont *m_lblAnsD: dung de hien thi nOi dung dap an D sau khi dao trot

tv cau

—std::vector m_vDataTemp: dung a tau tra cau hoi trong b0 nher

tam

—bool m_isShowAnswer: dung Idem tra co hien dap an sau khi ngutri dimg chon

dap an hay khong

—int m_currentQues: luu vi tri chi s6 hien tai cim cau hoi trong danh sach cau hoi

ducrc luu trong b0 nher tam

—int m_questionLastChange: km vl tri chI s6 cau h6i vira xem gan that trong danh

sach cac can hoi dugc luu trong b0 nher tam

—int m_totalQues: luu king s6 cau hoi trong chirc nang

—CCMenu *m_pMenu: chua danh sach cac nut —CCMenultemSprite *m_btnSubmit: dimg de ve nth hoin thinh bai thi tren man

hinh ngutoi dung

—CCMenuItemSprite *m_btnBack: thing de ye nut quay lai giao dien tusk de curt ngu6i dimg, ding thbi se giii ph6ng toan b0 b6 nher &Km sir d‘mg cho chirc nang

nay.

4.2.3. ConfigLoader

a. Phucmg thirc:

68

—Static ConfigLoader* getInstance()

nghia: fra ve singerton cua doi ttumg ConfigLoader

—Void loadLookupData()

nghia: doe va phan tich du lieu tir tep tin dii lieu co djnh Bang JSON da ducc tai ve

may.

4.2.4. Questionitem

a. Phuong thfrc:

—Void setter( value)

dat.

nghia: cal dat gie tri co kieu dii lieu img voi kieu dii lieu clia thuOc tinh dtrorc cai

getter()

nghia: liy gia tri cua thuOc tinh, kieu tra ve Cmg yen kieu de lieu cila thuOc tinh.

b. ThuOc tinh:

—Std::string m_question: nOi dung cau hoi trac nghiem trong tep tin de lieu —Std::string m_ansA: noi dung dap an A trong tep tin da lieu —Std::string m_ansB: nOi dung dap an B trong tep tin de lieu —Std::string m_ansC: nOi dung dap an C trong tep tin du lieu —Std::string m_ansD: nOi dung dap an D trong tep tin de lieu —Std::string m_topic: nOi dung de bai trong tep tin de lieu —Std::string m_soundURL: dtremg dk tucmg doi cfla tep tin am thanh ductc km tep

tin de lieu

—Std::string m_ImgURL: throng clan tucmg dOi cua tep tin hinh anh ductc luu tep tin de lieu Int m_ans: dap an dung dm du hoi troc nghiem. De lien so sanh n'en dap an ducc luu dual clang sit "0, 1, 2, 3" tuong img yeti dap an "A, B, C, D"

—Int m_choice: (king de lint dap an da chip. Mic dinh bang "-1" tucmg Ung veri chua

chon.

—Int m_quesID: luu questionID tucmg 1mg trong tep tin de lieu —Int m topicID: luu topiclD tucmg (mg trong tep tin de lieu —Int m totalQues: luu tong so cau hoi c6 ding de bai tucmg img trong tep tin de lieu —Int m_topicType: luu chit de tucmg Ung trong tep tin da lieu

69

4.2.5. FullTest

a. Phuang Mire:

—boo[ initDataO;

nghia: kited to giao dien

—static FullTest* create();

nghia: to dai tugng FullTest

—virtual void onBtnNextClicked(CCObject *obj); "Cr nghia: xir ly logic viec chuyen den cau tiep theo(neu c6)

—virtual void onBtnBackClicked(CCObject *obj);

nghia: xir ly logic viec chuyen den cau truck da (neu co)

—void onShowMenu(CCObject *obj); )1( nghia: Hien thi danh sach the eau hoi trong de thi. Danh sach nay co china dap an

da chgn tucmg Ung vgi eau tra Ibi

—void onAnswerClicked(int id); 1' nghia : xir ly logic sau khi nguai dung chgn dap an

—void onQuestionClicked(CCObject *obj); Y nghia: chuyen den eau hoi ma ngu&i climg chgn tin danh sach cau hei

—void onBtnSubmitClicked(CCObject *obj);

nghia: xir IS, logic sau khi ngueri dung chgn hoan tat bli thi

—void sendRateToServerO;

ket qua coo ngued dimg len Server (neu c6 mang).

—void onHttpResponse( CCHttpClient *sender, CCHttpResponse *response );

—void update(float dt);

nghia: cop nhat th6i gian lam bai

—void generateToeicTest();

nghia: Kh6i to toan b0 bai thi

—int getRate();

nghia: Tinh diem

70

b. Thuac tinh:

—std::vector m_vListQuestion1D[7]: chfra danh sach chi so vi tri cac eau hoi

thuac tong chit de

—int m choice[200]: chim dap an da chqn cim mot cau h6i. Mac dinh la -1

—int m_rate: diem s6 dat duqc —int m_correct[7]: so cau tra lari sai trong mot chit de

—int m_totalEachPart[7]: s6 diem dat duqc 8 mot chit de

4.3. Thief he co sfr dfr lieu

4.3.1. Ate hinh quan he

Isaitisthis questIonID: int(11)

userld : int(11) g email : varchar(50) ® password : varcha450) p joined : datetime

Basaitthim • topicID: int(11) # typelD: int(3) ® content : text g imgUd : varchar(150) g soundUd : varchar(150) # totaiQues : int(1)

# topicID: int(11) g question : varchar(200) g a : varchar(55) • b : varchar(55) g c : varchar(55) ▪ d : varchar(55) g answer : int(1)

(cid:9) 1

• id : int(11) # usedD: int(11) is score : int(4) p time : datetime

lassagestittesk • typelD: Int(3) is subjectID: int(3) 0 typeName : varchar(55)

• subjectID: int(3) • sullectName : varchar(50)

Sa do 4.1: MO hinh die lieu quan he

71

s6 dia figiteri dung sau kin thi the!

Lim di

4.3.2. Danh sack Sc bdng viz mo td

Bang 4.1: Mo to cac bang trong ca so' chi lieu

4.3.3.1. Bang Subject a. Cali true bang

n 11ii c (11111 1

Ten trite fp , (cid:9)

Tit tang

6a chinh

subjectID

(1 11 )1)1 1 (1) I1icu tlir lice (cid:9) IMO) non Varchar(30) Khong

subjectName

b. t nghia cua cac gia tri

—subjectlD: Gia tri cda kh6a chinh djnh danh, gia trj nay duce sinh tit dOng. —subjectName: Mo to ten mon hoc ho4c

72

4.3.3. Cdc bang dfr lieu

4.3.3.2. Bang Topic

hie d inh

Kluia (cid:9)

Kier' dir lieu (cid:9) Chu pliep Nil I I.

Ten tritiniv, (cid:9)

a. Cau tree bang

It

hit(11)

6a chinh Kheng opicID t

Khea ngoai Khong Int(3) typelD

Text Content

Co Varchar(50) ImgUrl

C6 Varchar(50) SoundUrl

Khong Int(1) Totalques

b.t nghia cac gia tri

—topiclD: Gia tcj kh6a chinh dinh danh, gia tri nay duqc sinh to dOng —typelD: gia tri khea ngoai lay tir bang Type dung de xac (filth the loai cim mon thi —content: china nei dung de bli (nett co) —imgUrl: chim lien ket ten tep tin hinh Anh tren server duqc sir dung trong de bai do. —SoundUrl: chin lien ket tai tep tin am thanh tren server duqc sir dung trong de bai

do.

—Totalques: china tong s6 cau hod trac nghiem sir dung chung de bAi do.

4.3.3.3. Bang Type

a. Cau tree bang

) 15 c d in h

Met! dii lieu (cid:9) Chu phut) Al I.I.

Ten tr116112

Int(3)

(cid:9) (cid:9)

Int(3)

subjectlD

Varchar(50)

tYPeName

b. lir nghla cfic gia tri

—typelD: gia tri khea chinh dinh danh, gii tri nay duqc sinh ttr dOng —subjectID: gia tri khea ngoai lay tir bang Subject &mg de xac dinh mon thi tuong

(mg.

—typeName: dien gal ten the loci img vesi mon hqc 73

a. Cau true bang

\lac Minh

Kli o a (cid:9)

Kieu dir him ( ho phip

"Fen

4.3.3.4. Bang MCQ

KhiSa c Kitting Int(11) .

questionffl

:

Topic.topicID Khea ngoai Khong Int(11)

topicID

Varchar(200) Kheng

Question

CO Varchar(55) A

C6 Varchar(55)

C

Co Varchar(55)

-

. (cid:9)

Varchar(55)

Khong Int(1) Answer

b. t nghTa cac gia tri

—questionID: Gia tri djnh danh khea chinh, gia tri nay &roc sink tg dOng.

—topicID: Gia tri khoa ngoai lay tir bang topicID dimg xac dinh de bai tuong CEng.

—Question: Chira nOi dung cau hoi tric nghiem

—A, B, C, D: Chua nOi dung cau tra Itri

—Answer: VOri met s6 de bai, dap an duqc doe trong nOi dung bai nghe, nen trat ttr dm dap an khong the thay d6i. Gia tri bang -1 (mg tied cau h6i do dap an kh6ng bj

c6 djnh do de bai.

4.3.3.5. Bang User

'tic (filth

khira (cid:9)

(110 phcp AI 1 1 (cid:9)

Kicu dfi lieu (cid:9)

Ten 111E0112 (cid:9)

a. Cau true bang

UNIQUE Varchar(50) Khong Email

Gia he th6ng Khong Datetime Joined

74

b. t nghia cat gia tri

—userlD: Gia tri djnh danh kh6a chinh, gia tri nay duqc sinh tu do, ng —email: Ten tai khoan cua ngutri dung. Gia tri nay la duy nhat va khOng phan biet

chic hoa thutmg.

—password: Mat khau clang nhap cua ngutri dung da duqc ma him bang mang barn

MD5

—Joined: Ngay clang ky tai khoan. Thtri giand dang ky ducce lay yeti gia tren Server

4.3.3.6. Bang History

dish

Mina

('ho pliep At LL

ben

Mica (cid:9)

Ten truong

a. Cua true bang

► Ong

IMO 1)

g Tv (cid:9) 6a Chinh Id

User.userID Kb:5a ngoai Khong Int(11) UserID

Itheng Int(4) Score

Gitt hg tilting Khong Datetime Time

b. N./ nghia cac gia tri

—ID: Gia tri djnh danh kh6a chinh, gia tri nay to dOng tang —UserID: Gia tri kh6a ngoai lay dr bang UserID clUng de xfic djnh user tucmg img. —Score: Diem s6 nguta dung sau khi holm tat bai thi. —Time: Th6i diem ngutri dimg hoan tat bai thi. Then gian nay duqc lay theo gia tren

Server

4.4. CM d$t

4.4.1. Lyra atm mei truning

—Ng8n ngil lap trinh:

+ Native: C++

+ Android : Java

+ Los: Objective C

—Cong cu phat trien lap trinh:

+ Native: Visual Studio 2012 + Android: Eclipse Indigo Service Release 2 75

+ LOS: Xcode

—Android SDK

—IOS SDK

—Cywin

4.4.2. Yeu du du kink chi a#1 he Mang

—Thiel bi sir dung he dieu hanh IOS (phien ban 5.0 ire; len) hoac he dieu hanh

Android (phien ban 2.3 ire! len)

—Dung lugng 130 niter kha dung t61 thieu: 256Mb —RAM: 256Mb hoac cao han

76

CH1YONG 5. 'CET LU4N VA DJNH HISONG PRAT TRIEN

5.1. Ket qui dat dirge

Sau thai gian tier hanh du an, tac gia dA lap trinh thanh tong de tai cua minh vai san pham la img dung hfru ich "Luyen thi TOEIC tren dien thoai di (ging" — chucmg trinh bao gem day di' the phan fir ly thuyet den thuc hanh yen cac phan nOi dung kha chi tiet, eau hei da clang, phong phu. Chucmg trinh khong chi giap ngueri sir dung luyen thi TOEIC ma can giop luyen nghe tieng Anh tat ham ten thief bj smartphone.

— Cu the cac ket qua dat duqc nhu sau:

+ Xing dung luyen thi co day du cac phan de nguai sir dung hoc tap theo tieu

chuin vi eau true bai thi TOEIC.

+ Ngoiti nOi dung luyen thi, img dung co the tao ra cac bai thi thir theo ding tieu chain bai thi TOEIC. Day la diem khac biet caa img dung so yeti cac san pham khk ve luyen thi TOEIC tren smartphone dA duct phat hanh truk de tren thj

twang.

+ San phim co dung luqng nhe (-2.5mb) rat phu hqp voti cai dat tren smartphone. + San pham c6 du lieu dOng, nhCmg update ve du lieu duqc cap nhat bang viec download ttr server ve may, khong can phai update phie'n ban maxi cua img dung. Liu diem la nguai sir dung c6 the cap nhat dft lieu nhanh thong, khong can qua trung gian ben thir 3.

5.2. Dinh hirOng phit then

a. Hoin thien ang dung

Ling dung se co than gian chay thu nghiem nham lay y kien danh gia cua nguai sir dung. Tir do Lk gia se tang hqp cac Iai va hoan thien img dung. Viec chay thir la can thiet, giftp tac gia cai thien ling dung sao cho dap ung cao nhat cac nhu au Gila nguai sir dung. Ben canh de, img dung can hoan thien ve mat du lieu de cung cap cho nguai dimg mOt chucmg trinh luyen thi co nOi dung phong phi! nhat. Do vay, tee gia se chit y dua ra cac bin cap nhat du lieu phi' hqp vai nhCmg thay doi nOi dung dm bai thi.

b. Da dang hea san pham

Thanh citing Gila ling dung la ea so de tic gia tiep tuc cac do an ve cac chuong trinh hoc tap, luyen thi tic nghiem tren smartphone. Ling dung luyen thi TOEIC la nen tang ca

77

ban, tir d6 tic gia co the ma rang hem va mo hinh va thiet ke cac san pham incti vii tinh nang tucmg ty. Sin pham dip img you eau cac mon hoc c6 nOi dung thi frac nghiem.

Vi du: Luyen thi dai hoc cac mon thi trac nghiem; cac phan thi tic nghiem cia chuong

trinh TOEFL hose IELTS... c. Tang tinh bao mat du lieu

D8 lieu c6 the cap nhat bang viec download tir server a may se gay rui ro ve that thoat dit lieu, khi d6 da lieu se de" ding bi sao chap danh cap. Vi vay a sin pham ducic bao ye, tic gia can tinh den phuong in ma hoa dit lieu dam bao bio mat dir lieu.

Ben canh 46, de tang them tinh bao mat, an tinh den bao mat dft lieu ngay i khau nhap du lieu len he thong. Vi vay can thiet c6 chuong trinh ha try nha cung cap nhap der lieu len server gill!, tang tinh bao mat vi an town da lieu. Sau khi hoan thien co ban irng dung, tac gia se nghien cuu tim hieu xay dung chuong trinh rieng de nhap da lieu. Dieu nay khong chi phuc vu cho dy an san pham Luyen thi TOEIC ma can phuc vu cho cac du in sau di ve chuong trinh luyen thi frac nghiem tren smartphone.

d. Dua img dung len cac kho img dung Dye tuyen

MOt img dung den duce yin ngueri dung nhanh nhat thi an phai dua len cac kho fing dung true tuyen nhu CH play vi cac Apps strore. Day la nhIIrng kho true tiep de ngtesi ding mua hoac tai img dung. Ngoai viec dau Or de dua img dung len cac kho tare tuyen, trong thai gian Mu ding can phai quang cao yeti ban be de to met cong dang nguti sir dung, beci vi met Inv dung c6 so luqt tai vi danh gia cao se thu but ngtrei sir dung hon.

78

PHD LUC — CODE MOT se CH& NANG CH1NH

1. Chat nang kiem tra kit not mang

1.1. Native code a. Giri you cau kiem tra ket not mang ten eic thiet bi

void PlatformInterface::callOutCheckNetworkConnection ()

Document document; Document::AllocatorType& allocator = document.GetAllocator();

Value objParams(kArrayType);

Value objPost(kObjectType);

objPost.AddMember("functionName", THIRTPARTY CHECK INTERNECT,

allocator);

objPost.AddMember("params", objParams, allocator);

//convert to json string

StringBuffer strbuf;

Writer writer(strbuf);

objPost.Accept(writer);

string strPostData = strbuf.GetString();

PlatformInterface::getIns()->callOut(strPostData.c str());

]

b. Nhan ket qua tra ve

bool PlatformInterface::callOutIsNetworkAvailible()

callOutCheckNetworkConnection();

return isNetworkAvailable;

boolean isNetworkConnectionAvailable() (

(ConnectivityManager)

cm (cid:9)

ConnectivityManager (cid:9)

getSystemService(Context.CONNECTIVITY SERVICE);

Networkinfo info = cm.getActiveNetworkInfo();

if (info == null) return false;

State network = info.getState();

1.2. Android code

79

= =

return (network == Networklnfo.State.CONNECTED II network

NetworkInfo.State.CONNECTING);

1.3. IOS code

BOOL networkReachable()

struct sockaddr in zeroAddress;

bzero(&zeroAddress, sizeof(zeroAddress));

zeroAddress.sin_len = sizeof(zeroAddress);

zeroAddress.sin_family = AF INET;

reachabilityRef

SCNetworkReachabilitYRef (cid:9)

SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault , (const struct sockaddr *) &zeroAddress);

SCNetworkReachabilityFlags flags;

if (SCNetworkReachabilityGetFlags(reachabilityRef, &flags)) (

if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)

// if target host is not reachable

return NO;

if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)

// if target host is reachable and no connection is required

// then we'll assume (for now) that your on Wi-Fi

return YES; // This is a wifi connection.

if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) !=

0)

II(flags & kSCNetworkReachabilitYFlagsConnectionOnTraffic) !=

0))

// ... and the connection is on-demand (or on-traffic) if the

calling application is using the CFSocketStream or

// (cid:9)

higher APIs

if ((flags & kSCNetworkReachabilitYllagsInterventionRequired)

== 0) (

// ... and no (user] intervention is needed

return YES; // This is a wifi connection.

1

80

kSCNetworkReachabilityFlagsIsWWAN)

((flags (cid:9)

if (cid:9)

& (cid:9) kSCNetworkReachabilityFlagsIsWWAN) (

// ... but WWAN connections are OK if the calling application

is using the CFNetwork (CFSocketStream?) APIs.

// (cid:9)

return YES; // This is a cellular connection.

I

return NO;

I

2. ChuningkiemtratiiteptinveghivalobOnhtfrsirdyngHttpRequest

a. thriyeucau

void ImageUr1LoaderUtil::downLoadFile( std::string url, CCObject* target

,SEL CallFunc0 fuac, std::string tag )

ImageUr1LoaderUtil* loader = new ImageUr1LoaderUtil();

loader->retain();

loader->target = target;

loader->selector = func;

loader->tag = tag;

CCHttpRequest* request = new CCHttpRequest();

request->setUrl(url.c str());

request->setRequestType(CCHttpRequest::kHttpGet);

request->setResponseCallback(loader, callfuncND selector(ImageUr1LoaderUtil::onHttpDownLoadRequestCo

mpleted));

request->setTag(tag.c str());

CCHttpClient::getInstance() - >send(request);

request->release();

void Download::downloadFileCallBackComplete( CCObject* obj )

AsyncData* aData = (AsyncData*)obj;

if(aData->error == 200 )

if(writeFile(aData->data, aData->size, aData->tag.c str()))

b. Nhan phin hoi tir Server

81

ErrorDowload* errorDowload = new ErrorDowload(); errorDowload->fileName = this->tag.c str();

errorDowload->index = this->index;

(target->*selector)(errorDowload);

else

I

returnError(aData);

bool Download::writeFile( unsigned char* data, long size, const char*

fileName )

I

std::string filePath; filePath = CCFileUtils::sharedFileUtils() - >getWritablePath() fileName; FILE *fp = fopen(filePath.c str(), "wb+"); //CCLog("1.d sizeof data", sizeof(*data));

if(fp) I

[write (data , sizeof(unsigned char), size, fp);

fclose(fp);

return true;

CCLog("thu muc ko ton tai");

return false;

c. Ghi tip tin vao 60 nith

3. Chtic niing ttio da thi

void FullTest::generateToeicTest()

I

//Lay du lieu trong moi part vao m vListQuestionlD tuong ung

for (int i = 0; i < 7; i++)

a. Tao toan bel de thi

82

for (int j = 0; j < ToeicData::getIns()->s_vDatari].size();

j++)

mvListQuestionIDM.push_back(ToeicData::getIns() - >svData[i].at(j));

//Tao de thi to m vListQuestionID

for (int i = 0; i < 7; i++)

std::vector data = m vListQuestionID(i];

switch (i)

default:

break;

case 0:

generateToeicTest(10, data);

break;

case 1:

generateToeicTest(30, data);

break;

case 2:

generateToeicTest(10, data);

break;

case 3:

generateToeicTest(10, data);

break;

case 4:

generateToeicTest(40, data);

break;

case 5:

generateToeicTest(4, data);

break;

case 6:

int totalQs = 0;

do

data.size();

int ran = rand() (cid:9)

83

int questionID = data.at(ran); Value &IkData = ConfigLoaderngetInstance() -

>1kReadin g;

Conf gLoader::getInstance() -

&val

Value (cid:9)

>getItem(lkData, ran);

if (totalQs >= 43)

if (val("numn).GetInt() + totalQs == 47)

continue;

I totalQs +- val("num").GetInt(); pushAllQuestionDataInTopicFromJsonToDataTemp(questionID);

+ ran);

data.erase(data.begin()

I while (totalQs < 48);

break;

(cid:9)

I

b. Lay a bai ngau nhien trong cu s& dU ligu

void FullTest::generateToeicTest( int num, std::vector &data )

for (int j = 0; j < num; j++)

int ran = rand() % data.size();

int questioniD = data.at(ran);

pushAllQuestionDataInTopicFromJsonToDataTemp(guestionID);

data.erase(data.begin() + ran);

I

I

c. Dua de bai vio b0 nit tam

void MCQBase::pushAllQuestionDataInTopicFtomJsonToDataTemp( int questionID )

int totalQuestion getTotalQuestionInTopicByQuestionID(questionID);

int topiciD getTopicIDByQuestionID(questionID);

int searchFirst = questionlD - totalQuestion;

if(searchFlrst < 0)

84

I

searchFirst = 0;

Value 61kData - Con f igLoader: : getIns Canoe ()->IkReading;

int temp = 0;

for (int i = sea rchFirst; i c questionID + totalQuestion; i++)

temp++;

totalQuestion + 1)

if (temp (cid:9)

break;

Value 6va 1 = ConfigLoader:: getlnstance (1 ->getItem ( lkData , i);

if (topiciD )- val ("id") .GetInt 0)

temp--;

continue;

QuestionItem qsData;

//Client

qsData setChoice (-1);

//14C4

qsData. setQuestion (val ("qs").GetString () ) ;

qsData.setAnswerA(val("a") GetString O ) ;

qsData.setAnswerB(val "b" j GetString O);

qsData.setAnswerC (val("c") .GetString (I I ;

qsDa ta . setAnswerD (val("d") . GetS [ring O);

qsData. setAnswer (val(mans") . Getlnt 0 ) ;

//Topic

qsData. setTopicID(val ("id") .Getlnt 0 ) ;

qsDa ta . setTotalQuestion (val ("num") . Getlnt 0 ;

qsDa ta . setImageURL (vat( "img") .GetString 0 ) ;

qsDa ta . setSoundURL (val( "sound") . GetString O);

qsData. set Topi cContent (val ("txt").GetString ());

qsData.setTopicType (val ("type") .Getlnt O);

if (qsData.getAnswer () -- -1)

sortData (qsData);

m vDataTemp.push back (qsData);

85

TAI LIEU THAM ICHAO

Sich

Wrox, 2012

1. Jeff McWherter va Scott Gowell, Professional Mobile Application Development,

2. Roger Engelbert, Cocos2d-X by Example Beginner's Guide, Packt, 2013 3. Frahaan Hussain, Arutosh Gurung va Gareth Jones, Cocos2d-X Game

Website

Development Essentials, Packt, 2014

86

1. htto://www.Cocos2d-X.ora/ 2. httos://developer.android.comitools/sdkindk/index.html