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
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:
— 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:
+ 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
<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
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(
dat.
nghia: cal dat gie tri co kieu dii lieu img voi kieu dii lieu clia thuOc tinh dtrorc cai
—
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
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
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
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
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