Tải bản đầy đủ (.pdf) (326 trang)

NGHIÊN CỨU XÂY DỰNG ỨNG DỤNG TRÊN NỀN TẢNG IOS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (13.26 MB, 326 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN

LUẬN VĂN TỐT NGHIỆP
NGHIÊN CỨU XÂY DỰNG
ỨNG DỤNG TRÊN NỀN TẢNG
IOS

Ngành
: Công Nghệ Thông Tin
Niên khoá
: 2009 - 2013
Lớp
: DH09DT
Sinh viên thực hiện : Lê Võ Minh Tâm
Trần Thị Dinh

TP.HỒ CHÍ MINH, tháng 9 năm 2013


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN

LUẬN VĂN TỐT NGHIỆP
NGHIÊN CỨU XÂY DỰNG
ỨNG DỤNG TRÊN NỀN TẢNG
IOS
Giáo viên hướng dẫn:


Sinh viên thực hiện:

TS. Phạm Văn Tính

Lê Võ Minh Tâm
Trần Thị Dinh

TP.HỒ CHÍ MINH, tháng 9 năm 2013


CÔNG TRÌNH HOÀN TẤT TẠI
TRƢỜNG ĐẠI HỌC NÔNG LÂM TP . HCM


Giáo viên hƣớng dẫn: TS. Phạm Văn Tính

Phản biện: ThS. Lê Phi Hùng

Luâ ̣n văn kỹ sƣ đƣơ ̣c bảo vê ̣ ta ̣i HỘI ĐỒNG CHẤM LUẬN VĂN KỸ SƢ
TRƢỜNG ĐẠI HỌC NÔNG LÂM TP. HCM ngày tháng năm


Bộ Giáo Dục và Đào Tạo
Trường ĐH NÔNG LÂM TpHCM

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập-Tự Do-Hạnh Phúc

NHIỆM VỤ LUẬN VĂN CỬ NHÂN


Họ tên sinh viên:LÊ VÕ MINH TÂM
Ngày tháng năm sinh: 19/11/1991
Chuyên ngành: Công Nghệ Thông Tin

Phái: Nam
Nơi sinh: Đồng Nai

Họ tên sinh viên: TRẦN THỊ DINH
Ngày tháng năm sinh: 25/12/1991
Chuyên ngành: Công Nghệ Thông Tin

Phái: Nữ
Nơi sinh: Ninh Bình

I. TÊN ĐỀ TÀI: Nghiên cứuxây dựng ứng dụng trên nền tảng iOS
II. NHIỆM VỤ VÀ NỘI DUNG
- Nghiên cứu xây dựng ứng dụng trên nền tảng iOS
- Nghiên cứu xây dựng ứng dụng trên iOS với hai framework
Cocos2D và Box2D
- Tim hiểu về mô phỏng vật lý trên ứng dụng iOS
- Ứng dụng kiến thức tìm hiểu đƣợc xây dựng một game mô phỏng
vật lý trên iOS
III. NGÀY GIAO NHIỆM VỤ: 15/3/2013
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 15/8/2013
V. HỌ VÀ TÊN CÁN BỘ HƢỚNG DẪN: TS. Phạm Văn Tính
Ngày…./…./….

Ngày…./…./….

Ngày…./…./….


CÁN BỘ HƢỚNG DẪN

CHỦ NHIỆM CHUYÊN NGÀNH

KHOA CNTT


LỜI CẢM ƠN

Sau thời gian nghiên cứu luận văn, chúng em cũng đã đạt được những kết
quả nhất định. Để đạt được điều này thì ngoài sự cố gắng và nổ lực của từng
thành viên trong nhóm, chúng em còn nhận được rất nhiều sự quan tâm và chỉ
bảo của nhà trường, quý thầy cô, gia đình, bạn bè,…
Chúng em xin chân thành cám ơn Khoa Công nghệ thông tin Đại học
Nông Lâm Thành phố Hồ Chí Minh đã tạo điều kiện cho chúng em thực hiện đề
tài này.
Chúng em chân thành cám ơn quý thầy cô là những người đã tận tình chỉ
bảo và truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian
qua.
Chúng em xin chân thành biết ơn Thầy Phạm Văn Tính đã tận tình hướng
dẫn, chỉ bảo và giúp đỡ chúng em trong suốt quá trình thực hiện đề tài nghiên
cứu này.
Chúng em chân thành cám ơn anh Phạm Trung đã tận tình giú p đỡ chúng
em trong suố t quá trình tìm hiểu và thực hiện đề tài này.
Ngoài ra chúng em còn xin gửi lời cảm ơn tới nhà Trường, văn phòng
Khoa Công nghệ thông tin và bạn bè là những người đã chân thành giúp đỡ
chúng em trong thời gian qua.
Trong quá trình thực hiện đề tài nghiên cứu, mặc dù các thành viên đã cố
gắng nỗ lực thực hiện nhưng chúng em chắc không thể tránh được những sai sót

nhất định. Kính mong sự thông cảm và tận tình chỉ bảo của quý Thầy Cô.
Sinh viên thực hiện
Lê Võ Minh Tâm
Trần Thị Dinh

GVHD: TS. Phạm Văn Tính

I

SVTH: Tâm, Dinh


DANH SÁCH CHỮ VIẾT TẮT
HĐH

Hệ Điều Hành

J2ME

Java 2 Platform, Micro Edition
Java phiên bản nhỏ gọn

API

Application Programming Interface
Giao diện lập trình ứng dụng

MVC

Model-View-Controller


SDK

Software Development Kit
Bộ phát triển phần mềm

IB

Interface Builder
Công cụ xây dụng giao diện

GVHD: TS. Phạm Văn Tính

II

SVTH: Tâm, Dinh


MỤC LỤC
LỜI CẢM ƠN ................................................................................................. I
DANH SÁCH CHỮ VIẾT TẮT .....................................................................II
MỤC LỤC .................................................................................................... III
DANH MỤC CÁC HÌNH ............................................................................ VII
DANH MỤC CÁC BẢNG ..........................................................................XV
TÓM TẮT ................................................................................................ XVII
CHƢƠNG 1: MỞ ĐẦU .................................................................................. 1
1.1. LÝ DO CHỌN ĐỀ TÀI........................................................................... 1
1.2. MỤC TIÊU NGHIÊN CỨU .................................................................... 1
1.3. NỘI DUNG NGHIÊN CỨU .................................................................... 2
1.4. PHẠM VI NGHIÊN CỨU ...................................................................... 2

1.4.1. VỀ THỜI GIAN ................................................................................ 2
1.4.2. VỀ KHÔNG GIAN ........................................................................... 2
1.4.3. VỀ NỘI DUNG ................................................................................. 2
CHƢƠNG 2: TỔNG QUAN........................................................................... 3
2.1. ĐẶT VẤN ĐỀ ........................................................................................ 3
2.2. TỔNG QUAN VỀ LẬP TRÌNH TRÊN iOS ............................................ 3
2.2.1. TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG ........... 3
2.2.2. TỔNG QUAN VỀ LẬP TRÌNH TRÊN iOS ...................................... 6
2.2.3. LẬP TRÌNH CHO THIẾT BỊ iOS Ở VIỆT NAM ............................. 9
CHƢƠNG 3: NỘI DUNG NGHIÊN CỨU ................................................... 11
3.1. LẬP TRÌNH TRÊN iOS........................................................................ 11
3.1.1. GIỚI THIỆU VỀLẬP TRÌNH TRÊN iOS ....................................... 11
3.1.2. TỔNG QUAN QUÁ TRÌNH PHÁT TRIỂN MỘT ỨNG DỤNG
TRÊN iOS ................................................................................................ 11
3.1.3. KIẾN TRÚC PHÂN LỚP CỦA iOS................................................ 30
3.1.4. LÀM VIỆC VỚI XCODE VÀ TẠO MỘT PROJECT ĐƠN GIẢN . 32
3.1.5. NGÔN NGỮ LẬP TRÌNH OBJECTIVE-C ..................................... 35
3.1.6. VIEW VÀ VIEW CONTROLLER .................................................. 53
GVHD: TS. Phạm Văn Tính

III

SVTH: Tâm, Dinh


3.1.7. MỘT SỐ VIEW CƠ BẢN ............................................................... 59
3.1.8.

THAO


TÁC

CHẠM

TRÊN

MÀN

HÌNH



GESTURE

RECOGNIZERS ....................................................................................... 62
3.1.9. STORYBOARD .............................................................................. 75
3.1.10. SEGUES ....................................................................................... 76
3.1.11. TOOLBAR .................................................................................... 82
3.1.12. IMAGE/SCROLL/WEBVIEWS .................................................... 83
3.1.13. TABLE VIEW............................................................................... 87
3.1.14. CORE LOCATION, MAPKIT ...................................................... 98
3.1.15. PERSISTENCE ........................................................................... 101
3.1.16. MOTION EVENT ....................................................................... 115
3.1.17. iCLOUD ...................................................................................... 122
3.2. GAME ENGINE COCOS2D .............................................................. 123
3.2.1. GIỚI THIỆU GAME ENGINE COCOS2D iPHONE .................... 123
3.2.2. CÀI ĐẶT VÀ SỬ DỤNG ARC TRONG COCOS2D .................... 125
3.2.3. KHÁI NIỆM CĂN BẢN TRONG COCOS2D iPHONE ............... 133
3.2.4. SPRITE ......................................................................................... 151
3.2.5. MEMORY MANAGER COCOS2D ............................................. 162

3.2.6. COCOS2D API REFERENCE ...................................................... 163
3.3. PHYSIC ENGINE BOX2D ................................................................. 164
3.3.1. TỔNG QUAN VỀ PHYSIC ENGINE ........................................... 164
3.3.2. GIỚI THIỆU BOX2D ................................................................... 166
3.3.3. HELLO WORLD, BOX2D! .......................................................... 167
3.3.4. KHÁI NIỆM CĂN BẢN CỦA BOX2D ........................................ 169
3.3.5. THÀNH PHẦN CỦA BOX2D ...................................................... 172
3.3.6. BOX2D API REFERENCE ........................................................... 224
CHƢƠNG 4: ỨNG DỤNG GAME ENGINE COCOS2D VÀ PHYSIC
ENGINE BOX2D PHÂN TÍCH THIẾT KẾ GAME TRÊN iOS ................. 225
4.1. MÔ TẢ BÀI TOÁN ............................................................................ 225
4.1.1. Overview ....................................................................................... 225
GVHD: TS. Phạm Văn Tính

IV

SVTH: Tâm, Dinh


4.1.2. Gameplay ...................................................................................... 225
4.1.3. Levelling ....................................................................................... 225
4.1.4. Ball................................................................................................ 227
4.1.5. Obstacles ....................................................................................... 227
4.1.6. Types of Obstacles ........................................................................ 227
4.2. YÊU CẦU BÀI TOÁN ....................................................................... 227
4.2.1. YÊU CẦU CHỨC NĂNG ............................................................. 227
4.2.2. YÊU CẦU PHI CHỨC NĂNG ...................................................... 228
4.3. PHÂN TÍCH BÀI TOÁN .................................................................... 229
4.3.1. MÔ HÌNH USECASE ................................................................... 229
4.3.1. MÔ HÌNH CLASS MODEL ......................................................... 243

4.4. USER INTERFACE ............................................................................ 244
4.4.1. Bố cục các màn hình...................................................................... 244
4.4.2. Main Menu .................................................................................... 244
Levels Menu........................................................................................... 244
Play Game.............................................................................................. 244
Pause Menu ........................................................................................... 244
Victory Menu......................................................................................... 245
Change Setting ...................................................................................... 245
View Credits .......................................................................................... 245
4.5. HIỆN THỰC BÀI TOÁN ................................................................... 245
4.5.1. Di chuyển viên bi trong Game với UIAccelerometer và Box2D .... 245
4.5.2. Xử lý các sự kiện khi xảy ra va chạm ............................................ 247
4.5.3. Chơi nhạc nền và âm thanh hiệu ứng trong Game .......................... 250
4.5.4. Thao tác với Property List để đọc và ghi File................................. 250
4.5.5. Lắng nghe và xử lý các sự kiện khi xảy ra va chạm ....................... 253
4.5.6. Pause và Resume Game ................................................................. 256
4.5.7. Slider Picker cho việc điều chỉnh âm lƣợng (tham khảo tại Vấn Đề
Gặp Phải) ................................................................................................ 257
4.5.8. Popup Menu trong game ................................................................ 257
GVHD: TS. Phạm Văn Tính

V

SVTH: Tâm, Dinh


4.6. CÁC VẤN ĐỀ GẶP PHẢI.................................................................. 259
4.6.1. MÔ PHỎNG CHUYỂN ĐỘNG VẬT LÝ CỦA BALL ................. 259
4.6.2. XÁC ĐỊNH HƢỚNG CHUYỂN ĐỘNG CỦA BULLET, CANON
............................................................................................................... 266

4.6.3. SLIDER PICKER TRONG COCOS2D V2.X ............................... 267
4.6.4. MENU GRID CÓ KHẢ NĂNG CUỘN TRONG COCO2D V2.X 272
4.6.5. ĐỒ HỌA TRONG GAME ............................................................ 274
4.6.6. THAY ĐỔI TRẠNG THÁI, THUỘC TÍNH CỦA PHYSIC BODY
KHI ĐANG THỰC HIỆN MÔ PHỎNG VẬT LÝ VỚI BOX2D ............ 274
4.6.7. LỖI DO SAI ĐỊNH DẠNG FILE MÃ NGỒN............................... 275
4.6.8. LỖI KHI BIÊN DỊCH FILE CỦA C++ ......................................... 276
4.6.9. TRIỂN KHAI TRÊN THIẾT BỊ THẬT ......................................... 276
4.6.10. THIẾU TRANG THIẾT BỊ CẦN THIẾT .................................... 280
4.6.11. MỘT SỐ KHÓ KHĂN KHÁC .................................................... 280
CHƢƠNG 5: KẾT QUẢ ĐẠT ĐƢỢC VÀ HƢỚNG PHÁT TRIỂN .......... 282
5.1. KẾT QUẢ ĐẠT ĐƢỢC ...................................................................... 282
5.1.1. KIẾN THỨC ................................................................................. 282
5.1.2. SẢN PHẨM .................................................................................. 283
5.2. HẠN CHẾ VÀ HƢỚNG PHÁT TRIỂN.............................................. 287
5.2.1. HẠN CHẾ: .................................................................................... 287
5.2.2. Hƣớng phát triển: .......................................................................... 287
TÀI LIỆU THAM KHẢO .......................................................................... 289
SÁCH THAM KHẢO ................................................................................ 289
TRANG WEB THAM KHẢO ................................................................... 289
VIDEO....................................................................................................... 290
PHỤ LỤC A : Đƣa ứng dụng lên App Store ............................................... 292

GVHD: TS. Phạm Văn Tính

VI

SVTH: Tâm, Dinh



DANH MỤC CÁC HÌNH
Hình 2.1Điện thoại E71 chạy J2ME ............................................................... 4
Hình 2.2Samsung Galaxy, Optimus L9 chạy Android .................................... 4
Hình 2.3Nokia Lumia 920 chạy Windows Phone........................................... 5
Hình 2.4iPhone 5 chạy iOS ............................................................................ 6
Hình 2.5 Màn hình home screen .................................................................... 7
Hình 2.6Switching applications iOS 7 ........................................................... 8
Hình 3.1Chọn App Development từ App store............................................. 13
Hình 3.2 Download và cài đặt Xcode từ App Store ...................................... 14
Hình 3.3Mở Xcode từ Applications ............................................................. 14
Hình 3.4Mở Xcode ...................................................................................... 15
Hình 3.5Giao diện Xcode ............................................................................ 15
Hình 3.6iSimulator ...................................................................................... 16
Hình 3.7Sử dụng Instruments kiểm tra hiệu suất ứng dụng .......................... 16
Hình 3.8Giao diện Instrument ...................................................................... 17
Hình 3.9Các bƣớc để đƣa ứng dụng lên App Store ...................................... 20
Hình 3.11Nhập thông tin thanh toán ............................................................ 22
Hình 3.12Xác nhận thanh toán ..................................................................... 23
Hình 3.13Nhập các thông tin vận chuyển. .................................................... 23
Hình 3.14Hoàn thiện thông tin thanh toán.................................................... 24
Hình 3.15iOS ProvisionPortal ...................................................................... 25
Hình 3.16Request Certificates ..................................................................... 25
Hình 3.17 Nhập thông tin certificate ............................................................ 26
Hình 3.18Upload Certificates ...................................................................... 26
Hình 3.19Download Certificate do apple tạo ............................................... 27
Hình 3.20Cài đặt Certificates của Apple vào keychain................................. 27
Hình 3.21Add device ................................................................................... 27
Hình 3.22Lấy UDID của thiết bị từ iTunes .................................................. 28
Hình 3.23Submit UDID ............................................................................... 28
Hình 3.24 Submit App ID ............................................................................ 29

Hình 3.25Provisioning ................................................................................. 29
Hình 3.26 Nhập thông tin cho provisioning profile ...................................... 29
GVHD: TS. Phạm Văn Tính

VII

SVTH: Tâm, Dinh


Hình 3.27Download profile ......................................................................... 30
Hình 3.28Kiến trúc phân lớp của iOS .......................................................... 30
Hình 3.29Mở Xcode .................................................................................... 33
Hình 3.30Chọn templet cho project ............................................................. 33
Hình 3.31Nhập các thông tin cho project. .................................................... 34
Hình 3.32 giao điện xcode sau khi tạo project .............................................. 34
Hình 3.33 Cấu trúc project iOS ................................................................... 35
Hình 3.34Khai báo một lớp trong Objective-C (file .h) ................................ 36
Hình 3.35File .m implementation ................................................................ 37
Hình 3.36 Bảng liệt kê các định dang dùng trong NSLog............................. 41
Hình 3.37 Reference counting...................................................................... 47
Hình 3.38 Sử dụng ARC rút ngắn thời gian xử lý cho ngƣời lập trình .......... 48
Hình 3.39 Lựa chọn tạo project có sử dụng ARC trong XCode .................... 48
Hình 3.40 Mô hình MVC ............................................................................. 49
Hình 3.41UIViewController tuân thủ 2 protocol UITableViewDataSource và
UITableViewDelegate. ................................................................................. 50
Hình 3.42Ví dụ phân lớp của view ............................................................... 54
Hình 3.43Ví dụ về kiến trúc của view .......................................................... 54
Hình 3.44So sánh các content model của view ............................................. 55
Hình 3.45Hệ toạ độ iOS............................................................................... 55
Hình 3.46Quan hệ giữa frame và bound trong view. .................................... 56

Hình 3.47Các lớp View Controller trong UIKit ........................................... 57
Hình 3.48 Mô tả vòng đời một view controller ............................................ 58
Hình 3.49 Tạo label ..................................................................................... 60
Hình 3.1 Tạo text field và text view .............................................................. 61
Hình 3.2 Tạo một button ............................................................................... 61
Hình 3.50Mô tả các Gesture. ....................................................................... 62
Hình 3.51Decrete và continouse gesture ...................................................... 64
Hình 3.52Các trạng thái của decrete và continouse gestureCác trạng thái của
decrete và continouse gesture ....................................................................... 64
Hình 3.53Panning Gesture ........................................................................... 65
Hình 3.54Panning Gesture ........................................................................... 67
Hình 3.55Rotate Gesture.............................................................................. 69
GVHD: TS. Phạm Văn Tính

VIII

SVTH: Tâm, Dinh


Hình 3.56Rotate Gesture.............................................................................. 71
Hình 3.57Long Press Gesture ...................................................................... 71
Hình 3.58Tap Gesture.................................................................................. 74
Hình 3.59 Storyboard................................................................................... 76
Hình 3.60Bắt đầu tạo một Segue .................................................................. 77
Hình 3.61Các thuộc tính của Segue ............................................................. 78
Hình 3.62Các kiểu Segue – iPhone .............................................................. 79
Hình 3.63StoryBoard đƣợc thu nhỏ lại......................................................... 80
Hình 3.64Thêm Navigation Controller cho StoryBoard ............................... 80
Hình 3.65Pointer giữa Navigation Controller với View Controller hiển thị .. 81
Hình 3.66Standard toolbar và Custom toolbar ............................................. 82

Hình 3.69Toolbar item................................................................................. 83
Hình 3.67Kéo thả toolbar trên Xcode........................................................... 83
Hình 3.68 Thay đổi các thuộc tính cho toolbar item ..................................... 83
Hình 3.70Tạo UIImageView........................................................................ 84
Hình 3.71 Tạo Web view ............................................................................. 85
Hình 3.72Scroll view ................................................................................... 86
Hình 3.73Các Table View dùng để hiển thị data trong Setting, iPod và ứng
dụng YouTube .............................................................................................. 88
Hình 3.74Table view và Table view Cell trong iOS Table ........................... 88
Hình 3.75Kiểu Grouped và Plain của Table View ........................................ 89
Hình 3.76 Thành phần của UITableView – Plain Style ................................ 90
Hình 3.77 Thành phần của UITableView – Grouped Style .......................... 90
Hình 3.78Table view không phân section – index list .................................. 90
Hình 3.79Table view có phân section – section list ...................................... 90
Hình 3.80Subtile .......................................................................................... 91
Hình 3.81Basic ............................................................................................ 91
Hình 3.82Right Detail .................................................................................. 91
Hình3.83 Left Detail ..................................................................................... 91
Hình 3.84 Kéo và thả UITableViewController vào Storyboard .................... 91
Hình 3.85Tạo một Table View Controller .................................................... 92
Hình 3.86Một số thuộc tính trong Identity Inspector của Table View Cell ... 93
Hình 3.87 Một số thuộc tính trong Identity Inspector của Table View ......... 93
GVHD: TS. Phạm Văn Tính

IX

SVTH: Tâm, Dinh


Hình 3.88 Một số thuộc tính trong Identity Inspector của Table View ........ 93

Hình 3.89Thay class trong Inspector thành class vừa tạo ............................. 93
Hình 3.90Thêm button vào trong Table View Cell và tạo segue cho button . 94
Hình 3.91Link framework vào project ......................................................... 99
Hình 3.92Link framework CoreLocation vào project ................................... 99
Hình 3.93 Property List trong Xcode – Open with XML............................ 101
Hình 3.94Property List trong Xcode – Open with Property List ................. 101
Hình 3.95 Quản lý các đối tƣợng trực quan trong Core Data Model ........... 107
Hình 3.96Chọn Data Mode ........................................................................ 108
Hình 3.97Thành phần của Data Model trong Core Data ............................. 108
Hình 3.98 Các Attributes trong Core Data ................................................. 109
Hình 3.99 Liên kết ảo giữa hai Entity trong Core Data .............................. 109
Hình 3.100 Entity dƣới dạng đồ thị trong Core Data ................................. 109
Hình 3.101Thiết lập mối quan hệ cho liên kết của Photographer ................ 110
Hình 3.102Tuỳ chọn khi tạo các lớp con của NSManagedObject cho Entity113
Hình 3.103 accelerometer .......................................................................... 116
Hình 3.104 gyroscope ................................................................................ 116
Hình 3.105 Trạng thái của thiết bị............................................................. 117
Hình 3.106Minh hoạ Roll, Yaw và Pitch của CCDeviceMotion trên máy bay121
Hình 3.107 Minh hoạ Roll, Yaw và Pitch của CCDeviceMotion trên iDevice121
Hình 3.108 Đồng bộ hoá iCloud sử dụng Daemon ..................................... 122
Hình 3.109Chuyển đến thƣ mục chứa cocos2d .......................................... 126
Hình 3.110Tạo Project cocos2d từ templete ............................................... 127
Hình 3.111Information project................................................................... 127
Hình 3.112Click Run để build và run project với iOS simulator ................ 128
Hình 3.113 Project cocos2d tạo từ templete ............................................... 128
Hình 3.114 Xoá bỏ liên kết của libs group với project ............................... 129
Hình 3.115Thay đổi Always Search User Paths sang Yes and User Header
Search Paths thành ./** ............................................................................... 129
Hình 3.116 Tuỳ chọn sau khi thêm Target cho project ............................... 129
Hình 3.117 Chọn original target và mở rộng danh sách Link Binary With

Libraries ..................................................................................................... 130
Hình 3.118 Thêm lại library cho project .................................................... 130
GVHD: TS. Phạm Văn Tính

X

SVTH: Tâm, Dinh


Hình 3.119Chọn và thêm thƣ mục libs cho cocos2d-library target ............. 131
Hình 3.120Chỉ chuyển đổi project‘s target, không chuyển đổi cocos2dlibrary target ............................................................................................... 131
Hình 3.121Chọn file trong dialog box ........................................................ 132
Hình 3.122Mở công cụ chuyển đổi ARC trong Xcode ............................... 132
Hình 3.123An exploded view illustrating a typical cocos2d game scene
layout ......................................................................................................... 133
Hình 3.124A shoot ‘em up game ............................................................... 133
Hình 3.125The node hierarchy of the scene illustrated ............................... 134
Hình 3.126The CCNode class hierarchy .................................................... 135
Hình 3.127The CCMenuItem class hierarchy ............................................ 145
Hình 3.128 Kết quả tạo menu ................................................................... 146
Hình
3.129The CCAction class hierarchy with subclasses of
CCActionInstant and CCActionInterval omitted ......................................... 147
Hình 3.131The CCPageTurn3D action in action ........................................ 150
Hình 3.130The CCActionInstant class hierarchy ....................................... 150
Hình 3.132The ship‘s animation—five frames with different flames ......... 156
Hình 3.133 Texture Atlas........................................................................... 160
Hình 3.134 Texture packer tool ................................................................. 160
Hình 3.135 Zwoptex Tool .......................................................................... 160
Hình 3.136.plist file ................................................................................... 161

Hình 3.137Màn hình trống......................................................................... 169
Hình 3.138Rectangle body – Box2d .......................................................... 176
Hình 3.139Static body – Box2d ................................................................. 177
Hình 3.140 Kinematic body contact with Static body ................................ 178
Hình 3.141Kinematic body contact with Dynamic body ............................ 178
Hình 3.142Circle shape.............................................................................. 180
Hình 3.143Polygon shape .......................................................................... 181
Hình 3.144Multiple Fixture shape + configed position .............................. 183
Hình 3.145Multiple Fixture shape ............................................................. 183
Hình 3.146Distance Joint ........................................................................... 192
Hình 3.147Rope Joint ................................................................................ 193
Hình 3.148 Pulley joint .............................................................................. 193
Hình 3.149 Pulley joint .............................................................................. 193
GVHD: TS. Phạm Văn Tính

XI

SVTH: Tâm, Dinh


Hình 3.150Gear joint ................................................................................. 194
Hình 3.151Weld joint ................................................................................ 195
Hình 3.152Wheel joint............................................................................... 195
Hình 3.153Collision callbacks flow ........................................................... 202
Hình 3.154 Contact between fixtures ......................................................... 203
Hình 3.156Ứng dụng với Sensor ................................................................ 208
Hình 3.157Finally simple demo ................................................................. 209
Hình 3.158All body of the demo ................................................................ 212
Hình 3.159Ray Casting – ví dụ .................................................................. 214
Hình 3.160Minh hoạ b2RayCastInput trong Box2D .................................. 217

Hình 3.161Normal Force and Friction ....................................................... 217
Hình 3.162AABB của một số fixture ......................................................... 219
Hình 3.163All body of the demo ................................................................ 220
Hình 4.1 Use case game ............................................................................. 229
Hình 4.2Sequence Diagram to illustrate start game .................................... 233
Hình 4.3 Sequence Diagram to illustrate playing game .............................. 234
Hình 4.4Activity Diagram of game play .................................................... 235
Hình 4.5 Activity Diagram of Change Setting............................................ 237
Hình 4.6Activity Diagram of change setting game ..................................... 237
Hình 4.7 Mô hình class model ................................................................... 243
Hình 4.8 bố cục màn hình .......................................................................... 244
Hình 4.9Game Platform (trái)và Top-down (phải) mô phỏng vật lý theo
phƣơng dọc và ngang.................................................................................. 259
Hình 4.10Inclined plane force components ................................................ 261
Hình 4.11Công thức tính Fg vuông gócvà Fgsong song ............................... 261
Hình 4.12Friction Force on Circle shape.................................................... 263
Hình 4.13 3-axis Accelerometor in iDevice ............................................... 265
Hình 4.14 Vòng tròn .................................................................................. 266
Hình 4.16Sự khác nhau giữa góc trong Cocos2D và Box2D ...................... 267
Hình 4.15Hƣớng của vector vận tốc Bullet ................................................ 267
Hình 4.17Sample Slider Picker .................................................................. 268
Hình 4.18Menu Grid Scrollable when not scrolling (left) and scrolling (right)273

GVHD: TS. Phạm Văn Tính

XII

SVTH: Tâm, Dinh



Hình 4.19Lỗi khi thay đổi trạng thái active của body trong lúc timeStep
Box2D ........................................................................................................ 275
Hình 4.20Lỗi khi tồn tại file có đuôi .m thay vì .mm ................................. 276
Hình 4.21Lỗi khi biên dịch project có chứa file .cpp nhƣng thiếu phƣơng
thức khởi tạo ............................................................................................... 276
Hình 4.22Options for create a certificate code-signed ................................ 278
Hình 4.23Contents of file Info.plist after edited ......................................... 279
Hình 4.24Change Code Signing for project................................................ 280
Hình 5.1Main Menu .................................................................................. 283
Hình 5.2Levels Menu – static .................................................................... 283
Hình 5.3Levels Menu – Scrolling .............................................................. 284
Hình 5.4Play Game.................................................................................... 284
Hình 5.5Pause Popup appear after touch screen ......................................... 285
Hình 5.6Pause Menu after select Pause ...................................................... 285
Hình 5.7Victory Menu ............................................................................... 286
Hình 5.8Play Game.................................................................................... 286
Hình 5.9View Credits ................................................................................ 287
Hình 0.1 Xcode Organizer ......................................................................... 292
Hình 0.2 Sau khi đăng nhập vào tài khoản developer ................................. 292
Hình 0.3 Cấu hình project .......................................................................... 293
Hình 0.4 Bundle identifier ......................................................................... 293
Hình 0.5 Chọn signning ............................................................................. 293
Hình 0.6 Chọn Build project ra thiết bị thật ............................................... 294
Hình 0.7 Sau khi đăng nhập vào iTunes Connecter .................................... 295
Hình 0.8 Chọn request Contracts ............................................................... 295
Hình 0.9 Set Up Contact Info..................................................................... 296
Hình 0.10 Nhập các thông tin liên lạc ........................................................ 296
Hình 0.11 Add Bank Acount...................................................................... 296
Hình 0.12 Nhập các thông tin của ngân hàng sủ dụng giao dịch ................. 297
Hình 0.13 Chọn ngân hàng mới tạo làm ngân hàng giao dịch..................... 297

Hình 0.14 Chọn ―Set up‖ tax form ............................................................. 297
Hình 0.15 Nhập các thông tin yêu cầu về Tax ............................................ 298
Hình 0.16 Hoàn thiện thông tin Contract, Tax, Bank ................................. 298
GVHD: TS. Phạm Văn Tính

XIII

SVTH: Tâm, Dinh


Hình 0.17 Chọn ―Manage Your Applications‖ ........................................... 299
Hình 0.18 Nhập thông tin ứng dụng ........................................................... 299
Hình 0.19 Chọn ngày ứng dụng phát hành và thông tin về giá ứng dụng .... 300
Hình 0.20 Thông tin mô tả ứng dụng ......................................................... 300
Hình 0.21 Upload icon và Scrennshots ...................................................... 300
Hình 0.22 Chọn view details ...................................................................... 301
Hình 0.23 Chọn ―Ready to Upload Binary‖ ............................................... 301
Hình 0.24 Trạng thái chờ upload của ứng dụng.......................................... 302
Hình 0.25 Chọn ―Submit‖ để gửi ứng dụng ............................................... 302
Hình 0.26 Chọn Identity chính xác ............................................................ 303
Hình 0.27 Trạng thái của ứng dụng trên iTunes Connect là ―Upload
Received‖ ................................................................................................... 303
Hình 0.28Trạng thái của ứng dụng trên iTunes Connect là ―Waiting For
Review‖ ...................................................................................................... 304

GVHD: TS. Phạm Văn Tính

XIV

SVTH: Tâm, Dinh



DANH MỤC CÁC BẢNG

Bảng 1:

Các kiểu file theo phần mở rộng file ............................................. 36

Bảng 2:

Một số phƣơng thức phổ biến của NSString ................................. 53

Bảng 3:

Các định dạng hình ảnh iOS hỗ trợ ............................................... 84

Bảng 4:

Các kiểu dữ liệu trong Property List ........................................... 102

Bảng 5:

Các thƣ mục trong một ứng dụng iOS ........................................ 105

Bảng 6: Một số phƣơng thức đƣợc sử dụng thƣờng xuyên trong
NSFileManager .......................................................................................... 106
Bảng 7:

Các phiên bản cocos2d ............................................................... 124


Bảng 8:

Một số phƣơng thức của CCNode .............................................. 135

Bảng 9:

Một số phƣơng thức của CCAction ............................................ 136

Bảng 10:

Các phƣơng thức touch event ................................................. 140

Bảng 11:

Thông số kỹ thuật về màn hình hiển thị của các thiết bị iOS ... 153

Bảng 12:

Bảng mô tả cách thức hoạt động kiểm tra đụng độ Box2D ..... 201

GVHD: TS. Phạm Văn Tính

XV

SVTH: Tâm, Dinh


GVHD: TS. Phạm Văn Tính

XVI


SVTH: Tâm, Dinh


TÓM TẮT
TÊN ĐỀ TÀI
Xây dựng ứng dụng trên nền tảng iOS
MỤC TIÊU NGHIÊN CỨU
- Nghiên cứu lập trình trên nền tảng iOS.
- Từ đó phát triển một game mô phỏng chuyển động vật lý trên nền tảng iOS.
- Xây dựng tài liệu hƣớng dẫn lập trình trên iOS.
NỘI DUNG NGHIÊN CỨU
1. Đề tài tập trung nghiên cứu phát triển ứng dụng trên nền tảng iOS. Tìm hiểu quy
trình phát triển một ứng dụng trên nền tảng iOS từ việc lập trình xây dựng ứng dụng
đến cách phân phối ứng dụng trên nền tảng iOS. Với việc lập trình xây dựng ứng
dụng trên nền tảng iOS đề tài đã thực hiện tìm hiểu:
* Thiết lập môi trƣờng lập trình trên iOS
* Ngôn ngữ lập trình Objevtive-C
* Các design pattern của Objective-C sử dụng lập trình trên iOS: Model-ViewController, Delegate, Target-Action...
* Một số vấn đề quan trọng khi lập trình iOS nhƣ:
- Sử dụng framework UIKit tạo và quản lý giao diện cho ứng dụng với
storyboard, sử dụng các view và view controller tạo ứng dụng (các view cơ
bản:button, text, label..., toolbar, table view, images/scroll/web view,...), trao đổi dữ
liệu giữa các view với segues, phát hiện xử lý các sự kiện chạm trên màn hình Gesture recognizers...
- Định vị thiết bị trên bản đồ với các framework: CoreLocation, MapKit
- Persistance lƣu trữ, truy xuất dữ liệu cho ứng dụng sử dụng các cách khác
nhau nhƣ: Property List, Archiving Objects, File System, SQLite, Core Data
- Bắt các sự kiện di chuyển thiết bị nhƣ di chuyển – move, lắc – shake, nghiêng
– tilt sử dụng UIDevice, UIEvent, Core Motion.
- iCloud

2. Với mục tiêu xây dựng một game mô phỏng chuyển động vật lý trên nền tảng iOS
đề tài đã thực hiện nghiên cứu hai engine là game engine Cocos2D và physic engine
Box2D để xây dựng game.
* Game engine Cocos2D: hỗ trợ đồ hoạ cho game với hiệu năng cao. Đề tài nghiên
cứu sử dụng một số tính năng của game engine này nhƣ: tạo các màn hình - Scene
với các lớp - Layer cho màn hình, tạo các label, menu cho game, tạo các đối tƣợng
trong game - Sprite tạo và kiểm soát các chuyển động của các đối tƣợng, kết hợp
Cocos2D với iOS và physic engine,...
* Physic engine Box2D: hỗ trợ mô phỏng vật lý cho các đối tƣợng trong game. Tạo
ra một môi trƣờng vật lý giống ngoài thực cho game sử dụng World, tạo các Body
với các thuộc tính vật lý cho các đối tƣợng, mô tả lại các đặc điểm của đối tƣợng
trong môi trƣờng thật với Fixture, áp dụng các lực lên các đối tƣợng làm chúng di
chuyển, tạo các kết nối - Joint giữa các body để tạo một đối tƣợng phức tạp, phát
GVHD: TS. Phạm Văn Tính

XVII

SVTH: Tâm, Dinh


hiện và xử lý va chạm giữa các đối tƣợng - Collision, ...
* Áp dụng các kiến thức lại đề tài đã hiện thực phát triển một game mô phỏng
chuyển động vật lý trên nền tảng iOS. Game mô tả trò chơi vật lý marble
maze/labyrinth ngoài đời thực. Đây là trò chơi yêu cầu sự khéo léo của ngƣời chơi
để đƣa một trái cầu nhỏ từ vị trí xuất phát vƣợt qua một ma trận với các chƣớng
ngại vật để đến đích. Quả cầu sẽ có những tƣơng tác vật lý với các chƣớng ngại
vật trên đƣờng đi đến đích. Nếu quả cầu bị rơi xuống các lỗ trên đƣờng đi sẽ phải
đƣa quả cầu về vị trí xuất phát. Game trên điện thoại mô tả lại trò chơi này bằng
cách nghiêng lắc điện thoại để di chuyển trái cầu và với nhiều sáng tạo hơn về các
vật cản với các màn chơi.

3. Để giải quyết bài toán viết game mô phỏng chuyển động vật lý đề tài đã sử dụng
physic engine Box2D tuy nhiên chỉ với engine này chƣa đủ để đạt đƣợc những yêu
cầu đề ra. Nhóm đã thực hiện nghiên cứu thêm về mô phỏng chuyển động vật lý từ
đó mô phỏng lại sự di chuyển chính xác cho trái cầu.
MỘT SỐ KẾT QUẢ ĐẠT ĐƢỢC
Sau quá trình nghiên cứu đề tài đã thu đƣợc một số kết quả:
* Kiến thức:
- Nắm vững ngôn ngữ lập trình mới Objective-C
- Thao tác lập trình trên nền tảng iOS một cách thành thạo: nắm vững và sử
dụng các thành phần căn bản của iOS, hiểu rõ đƣợc các khái niệm mới nhƣ
Storyboard, ARC, non-ARC...etc
- Game engine Cocos2D: Sử dụng thành thạo game engine cocos2d tạo và quản
lý đồ hoạ cho game. Nắm bắt đƣợc các ƣu và nhƣợc điểm của Cocos2d. hiểu
rõ các khai niệm và cách sử dụng các thành phần của Cocos2d từ đó có thể
quản lý và phát triển các thành phần đơn giản theo ý muốn từ các thành phần
căn bản nhƣ : Slider Picker, Scrollable Layer, ...etc..
- Physic engine Box2D : Tạo các tƣơng tác vật lý cho các đối tƣợng trong game
với Box2D. Hiểu đƣợc cách sử dụng cũng nhƣ sự tƣơng tác giữa các đối
tƣợng trong Box2D một cách linh hoạt.
- Một số kiến thức vật lý về mô phỏng chuyển động đơn giản và áp dụng nó vào
lập trình
* Sản phẩm:
- Tài liệu hƣớng dẫn lập trình iOS từ căn bản
- Tài liệu hƣớng dẫn sử dụng hai framework rất chi tiết: Game Engine Cocos2D
và Physic Engine Box2D.
- Source code demo của toàn bộ các minh hoạ cho các tài liệu hƣớng dẫn.
- Một game giải trí đơn giản thuộc dạng mô phỏng chuyển động thực.

GVHD: TS. Phạm Văn Tính


XVIII

SVTH: Tâm, Dinh


CHƢƠNG 1: MỞ ĐẦU
1.1.LÝ DO CHỌN ĐỀ TÀI
Cùng với sự phát triển nhanh chóng của công nghệ hiện đại, các thiết bị di động
ngày càng phát triển và phổ biến hơn trong xã hội. Hầu hết các hãng công nghệ đều có
các sản phẩm tham gia vào thị trƣờng thiết bị di động tạo ra một môi trƣờng phát triển
với tốc độ nhanh. Theo sự phát triển mạnh mẽ của các thiết bị di động mảng lập trình
cho thiết bị di động cũng ngày càng đƣợc mở rộng. Hiện nay có thể phát triển ứng
dụng cho thiết bị di động trên bốn nền tảng chính là iOS, J2ME, Android, Window
phone. Trong đó iOS của Apple đƣợc coi là ngƣời tiên phong khai phá thị trƣờng
smartphone và ngày càng phát triển mạnh mẽ. Với sự phát triển mạnh mẽ của các thiết
bị chạy iOS của Apple thị trƣờng ứng dụng trên iOS cũng ngày càng phát triển tạo ra
nhiều cơ hội làm việc và phát triển cho các lập trình viên có khả năng làm việc trên
môi trƣờng này.
Các ứng dụng đƣợc phát triển càng nhiều thì yêu cầu của ngƣời dùng với chúng
càng cao hơn. Con ngƣời luôn luôn mong muốn đƣợc tƣơng tác với công nghệ một
cách tự nhiên nhất. Điều này mở ra một nhánh mới trong việc nghiên cứu phát triển
ứng dụng đó là mô phỏng thực tế. Việc mô phỏng thực tế tạo ra một môi trƣờng đƣợc
xây dựng trong ứng dụng có các tính chất, nguyên lý giống với thế giới thực. Chúng
giúp cho ngƣời dùng có cảm giác thật hơn khi sử dụng ứng dụng thỏa mãn đƣợc nhu
cầu của ngƣời dùng.
Nhu cầu nhân lực cho phát triển các ứng dụng trên nền tảng iOS, đặc biệt là các
ứng dụng mô phỏng thực tế ngày càng cao tuy nhiên ở Việt Nam việc đào tạo ở mảng
này còn chƣa phát triển đúng với tiềm năng của nó. Các tài liệu bằng tiếng việt hầu
nhƣ không có. Trong các trƣờng đại học, các môn học lập trình cho thiết bị di động
thƣờng không chú trọng cho mảng này do thiếu các cơ sở vật chất cần thiết. Nhƣ vậy,

việc nghiên cứu phát triển ứng dụng trên nền tảng iOS đặc biệt là các ứng dụng mô
phỏng thực tế là cần thiết để có thể phát triển mở rộng vùng đất đầy tiềm năng này.
1.2.MỤC TIÊU NGHIÊN CỨU
Nghiên cứu lập trình cơ bản trên nền hệ điều hành iOS và sử dụng framekwork hỗ
trợ cho việc lập trình game trên iOS phổ biến nhất hiện nay - Cocos2D, framework hỗ
trợ việc mô phỏng vật lý Box2D. Bên cạnh đó, đề tài cũng sẽ nghiên cứu về vấn đề mô
GVHD: TS. Phạm Văn Tính

1

SVTH: Tâm, Dinh


phỏng thực tế để từ đó áp dụng các kiến thức cũng nhƣ các kết quả vào trong sản
phẩm.
Tiến hành xây dựng và phát triển một sản phẩm cuối cùng là một game trên nền
iOS có áp dụng các mô phỏng vật lý trong game.
1.3.NỘI DUNG NGHIÊN CỨU
Nghiên cứu và phát triển các ứng dụng nói chung trên nền tảng iOS và đặc biệt
là các ứng dụng mô phỏng thực tế. Đề tài tập trung nghiên cứu các nội dung sau:
1. Tìm hiểu ngôn ngữ lập trình Objective-C cho thiết bị di động nền tảng iOS
2. Xây dựng ứng dụng trên nền tảng iOS
3. Tìm hiểu các framework hỗ trợ cho việc lập trình và mô phỏng vật lý game bao
gồm : Cocos2D, Box2D
4. Nghiên cứu các vấn đề về mô phỏng vật lý và cách hiện thực trong lập trình.
5. Xây dựng game mô phỏng vật lý Game Baller Crazy chạy trên iOS áp dụng các
kiến thức đã nghiên cứu.
1.4.PHẠM VI NGHIÊN CỨU
1.4.1.VỀ THỜI GIAN
Đề tài đƣợc thực hiện trong khoảng thời gian từ 15/03/2013 đến 15/08/2013.

Trong thời gian làm luận văn luôn phân tić h và tri ển khai khi có thay đổi về các
thuật toán mô phỏng vật lý.
1.4.2.VỀ KHÔNG GIAN
Đề tài đƣợc thực hiện tại trƣờng Đại Học Nông Lâm TP. Hồ Chí Minh dƣới sự
hƣớng dẫn của TS. Phạm Văn Tính, khoa Công nghệ Thông tin, Đại học Nông Lâm
TP. Hồ Chí Minh
1.4.3.VỀ NỘI DUNG
Đề tài tập trung nghiên cứu cách lập trình trên iOS và cách sử dụng hai
framework Cocos2D, Box2D. Đồng thời cũng tập trung nghiên cứu mô phỏng vật lý
trong lập trình để xây dựng một game mang tính giải trí có áp dụng nó.

GVHD: TS. Phạm Văn Tính

2

SVTH: Tâm, Dinh


CHƢƠNG 2: TỔNG QUAN
2.1.ĐẶT VẤN ĐỀ
Trong môi trƣờng công nghệ thông tin phát triển một cách ồ ạt với tốc độ chóng
mặt nhƣ hiện nay thì các thiết bị to lớn cồng kềnh ngày nào nhƣ chiếc máy tính
huyền thoại to bằng cả một toà nhà của IBM thời kì đầu nay chỉ còn bằng một thùng
nƣớc ngọt không hớn không kém. Tuy nhiên, con ngƣời ta còn muốn hơn thế. Môi
trƣờng công nghệ thông tin muốn một thứ có thể xử lý đƣợc nhƣ máy tính mà phải
nhỏ gọn, bỏ vừa túi để dễ dàng mang nó tới mọi nơi. Đó là khi sự hiện diện của chiếc
điện thoại thông minh hay còn gọi là smartphone đã ra đời. Nó thực sự đã mang đến
một cuộc cách mạng cho các thiết bị di động.
Nhu cầu sử dụng thiết bị di động đã trở nên rất phổ biến không chỉ ở Việt Nam
mà trên toàn thế giới. Sự tiến bộ vƣợt bậc của công nghệ đã làm thay đổi hoàn toàn

thói quen cũng nhƣ hành vi của con ngƣời. Chỉ với một chiếc smartphone ngƣời ta
có thể thỏa mãn hầu hết các nhu cầu cơ bản nhƣ: trò chuyện, gửi tin nhắn, chơi
game, nghe nhạc, lƣớt web, thanh toán…Thiết bị di động là phân khúc đã có bƣớc
phát triển nhanh chóng trên thị trƣờng.Theo nhiều cuộc nghiên cứu, đến năm 2015,
số lƣợng truy cập Internet từ thiết bị di động sẽ vƣợt qua truy cập trên máy tính cá
nhân. Trong tƣơng lai, thiết bị di động sẽ trở thành phƣơng tiện giao tiếp và làm việc
chủ yếu của con ngƣời. Và phần cốt lõi để tạo ra sức hấp dẫn từ những chiếc
smartphone chính là hệ điều hành và các ứng dụng mà chúng đang chạy. Và hệ điều
hành đi đầu trong lĩnh vực đó là HĐH iOS.
Với đông đảo ngƣời dùng, nó cũng đòi hỏi một lƣợng lớn các ứng dụng phục vụ
công việc, ứng dụng giải trí cho số lƣợng đông đảo ngƣời dùng trong phân khúc trên.
Nhu cầu là thế, tuy nhiên số lƣợng lập trình viên trên iOS là không đủ để đáp ứng
đƣợc hết các nhu cầu đó và ngày càng thiếu hụt trầm trọng.
2.2.TỔNG QUAN VỀ LẬP TRÌNH TRÊN iOS
2.2.1.TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
Có thể nói lập trình điện thoại di động là một hƣớng đi còn khá mới mẻ cho
những ngƣời lập trình. Càng ngày với sự phát triển của công nghệ thông tin, những
máy điện thoại thông minh, máy tính bảng đang dần dần thay thế máy tính xách tay
trong công việc. Hiện nay, trên thị trƣờng điện thoại di động với sự đa dạng của các
GVHD: TS. Phạm Văn Tính

3

SVTH: Tâm, Dinh


×