Hiện nay, Android đang là sự lựa chọn hàng đầucho những nhà phát triển ứng dụng mới với các khoản đầu tư lớn, và với xu thếnày, số lượng ứng dụng và game trên Android sẽ tăng lên đáng kể
Trang 1LỜI CAM ĐOAN
Em xin cam đoan rằng đồ án tốt nghiệp : “Xây dựng trò chơi SpiderHunter cho điện thoại di động trên nền hệ điều hành Android ” là công
trình nghiên cứu của bản thân em Các nội dung nghiên cứu và kết quả trong đềtài này là hoàn toàn trung thực và chưa từng được công bố trong bất cứ công trìnhnào trước đây Các module và các thông số trong chương trình demo là kết quả củaquá trình thực hiện đồ án của em Ngoài ra em còn sử dụng một số kiến thức, thôngtin của các tác giả khác đã được thể hiện trong phần tài liệu tham khảo
Nếu phát hiện có bất sự gian lận nào em xin chịu trách nhiệm trước hộiđồng, cũng như kết quả đồ án của mình
Thái Nguyên, tháng 06 năm 2012
Sinh viên thực hiện đồ án Nguyễn Tuấn Ninh
Trang 2LỜI CẢM ƠN
Trước tiên em xin dành lời cảm ơn chân thành và sâu sắc tới các thầygiáo, cô giáo trong trường Đại học Công Nghệ Thông Tin Và Truyền Thông vàcác thầy cô giáo trong khoa Công Nghệ Thông Tin, bộ môn Mạng và TruyềnThông nói riêng đã tận tình giảng dạy truyền đạt cho em những kiến thức, kinhnghiệm quí báu trong suốt thời gian vừa qua
Đặc biệt em xin gửi lời cảm ơn tới cô giáo ThS.Đinh Thị Thanh Uyên, cô
đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm đồ
án tốt nghiệp Trong thời gian làm việc với cô, em không ngừng tiếp thu thêmnhiều kiến thức bổ ích mà còn học tập được tinh thần làm việc, thái độ nghiêncứu nghiêm túc, hiệu quả Đây là những điều rất cần thiết cho em trong quá trìnhhọc tập và công tác sau này
Ngoài ra, trong quá trình thực hiện đồ án em còn nhận được rất nhiều sựđộng viên và giúp đỡ từ phía gia đình, người thân và tập thể các bạn trong lớp
Do đó kết quả cũng như tính khả dụng của bài luận văn này trong thực tế là lờicảm ơn sâu sắc nhất của em gửi tới mọi người và là nguồn động lực để em có thể
tự tin vào các kiến thức mình đã thu được sau khi tốt nghiệp
Thái Nguyên, tháng 06 năm 2012
Sinh viên thực hiện đồ án Nguyễn Tuấn Ninh
Trang 3MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
DANH MỤC HÌNH ẢNH 6
TỔNG QUAN VỀ ĐỀ TÀI 8
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 10
1.1 Tổng quan hệ điều hành Android và Game 10
1.1.1 Khái niệm hệ điều hành Anroid 10
1.1.2 Kiến trúc Android 11
1.1.2.1 Tầng Application 11
1.1.2.2 Tầng Application Framework 12
1.1.2.3 Tầng Android Runtime and Libraries 13
1.1.2.4 Tầng hạt nhân Linux 14
1.1.3 Android Emulator 15
1.1.4 Các thành phần trong một Android Prject 16
1.1.5 Chu kỳ sống của một ứng dụng Android 18
1.1.5.1 Chu kỳ ứng dụng của Android 19
1.1.5.2 Chu kỳ sống thành phần 19
1.1.5.3 Activity Stack 19
1.1.5.4 Các trạng thái của chu kỳ sống 20
1.1.5.5 Các sự kiện trong chu kỳ sống của ứng dụng 21
1.1.5.6 Thời gian sống của ứng dụng 21
1.1.5.7 Thời gian hiển thị của Activity 22
1.1.5.8 Các phương thức của chu kỳ sống 22
1.1.6 Các thành phần giao diện trong Android 23
1.1.6.1 View 23
1.1.6.2 ViewGroup 23
Trang 41.1.6.3 Button 26
1.1.6.4 ImageView 26
1.1.6.5 ListView 27
1.1.6.6 TextView 28
1.1.6.7 EditText 28
1.1.6.8 CheckBox 29
1.1.6.9 MenuOptions 29
1.1.6.10 ContextMenu 29
1.2 Tổng quan về Game 31
1.2.1 Khái niệm về Game 31
1.2.2 Ngôn ngữ lập trình game 33
1.2.3 Lý thuyết về lập trình game 34
1.2.4 Giới thiệu về công cụ AndEngine 35
1.2.5 Cấu trúc một ứng dụng Game 37
1.2.6 Công cụ lập trình Game 38
1.3 Cơ sở dữ liệu trong Android 38
1.3.1 Giới thiệu về SQLite 38
1.3.2 Những điều cần chú ý khi làm việc với SQLite 39
1.3.3 Kiểu dữ liệu trong SQLite 39
1.3.4 Câu lệnh trong SQLite 40
1.3.5 SQLite trong Android 41
1.3.5.1 Tạo cơ sở dữ liệu 42
1.3.5.2 Truy vấn và thao tác trong cơ sở dữ liệu 42
1.3.5.3 Transaction 44
1.2.5.4 Lấy dữ liệu từ Cursor 45
CHƯƠNG 2:PHÂN TÍCH VÀ THIẾT KẾ TRÒ CHƠI SPIDERHUNTER 47
2.1 Giới thiệu Game 47
2.2 Phương pháp nghiên cứu 48
Trang 52.3 Phân tích và thiết kế ứng dụng 49
2.3.1 Tác nhân và các Use case 49
2.3.2 Biểu đồ Use case 50
2.3.2.1 Đặc tả các Use – case 50
2.3.3 Biểu đồ lớp thực thể 57
2.4 Thiết kế 58
CHƯƠNG 3:XÂY DỰNG TRÒ CHƠI SPIDER HUNTER 62
3.1 Môi trường thực hiện ứng dụng 62
3.2 Cài đặt Android SDK & Eclipse 62
3.2.1 Cài đặt Android SDK 62
3.2.2 Tích hợp SDK vào Eclipse 63
3.3 Giao diện trò chơi game Spider Hunter 66
3.3.1 Giao diện Menu 66
3.3.2 Giao diện các Level game 68
Trang 6DANH MỤC HÌNH ẢNH
Hình 1-2 Kiến trúc Android 11
Hình 1-3 Kiến trúc tầng Application Framework 12
Hình 1-4 Kiến trúc tầng Android Runtime and Libraries 13
Hình 1-5 Kiến trúc tầng hạt nhân Linux 14
Hình 1-6 Android emulator 16
Hình 1-7 Lược đồ vòng đời của một Activity 18
Hình 1-8 Chu kỳ sống thành phần 19
Hình 1-9 Activity stack 20
Hình 1-10 Chu kỳ sống của Activity 20
Hình 1-11 Các phương thức trong chu kỳ ứng dụng 21
Hình 1-12 Cấu trúc một giao diện ứng dụng Android 23
Hình 1-13 Bố trí các widget sử dụng LinearLayout 24
Hình 1-14 Bố trí các widget trong FrameLayout 24
Hình 1-15 Bố trí widget trong RetaliveLayout 25
Hình 1-16 Bố trí widget trong TableLayout 26
Hình 1-17 ImageButon 26
Hình 1-18 ImageView và ImageButton 27
Hình 1-19 Minh hoạ cho một ListView 28
Hình 1-20 Minh họa Quick Search Box 30
Hình 1-23 Vòng đời của Activity trong AndEngine 37
Hình 1-24 Android SDK software stack 41
Hình 2-1 Biểu đồ Use-case 50
Trang 7Hình 2-2 Biểu đồ trình tự Use-case chơi game 51
Hình 2-3 Biểu đồ cộng tác Use-case chơi game 52
Hình 2-4 Biểu đồ trình tự Use-case xem thông tin 53
Hình 2-5 Biểu đồ cộng tác Use-case xem thông tin 53
Hình 2-6 Biểu đồ trình tự Use-case xem High Score 54
Hình 2-7 Biểu đồ cộng tác Use-case xem High Score 55
Hình 2-8 Biểu đồ Use-case lưu điểm kỷ lục 56
Hình 2-9 Biểu đồ cộng tác Use-case lưu điểm kỷ lục 57
Hình 2-10 Biểu đồ lớp thực thể 57
Hình 2.11 Thư viện Andengine 58
Hình 3-1 Giao diện Menu game 66
Hình 3-2 Giao diện xem điểm kỉ lục 67
Hình 3-3 Giai diện xem thông tin về game 67
Hình 3-4 Giao diện game Level 1 68
Hình 3-5 Giao diện game Level 1 khi thua 69
Hình 3-6 Giao diện game Level 1 khi bạn chiến thắng 69
Hình 3-7 Giao diện game level 2 70
Hình 3-8 Giao diện game level 3 70
Hình 3-9 Giao diện game level 4 71
Hình 3-10 Giao diện khi chơi xong game 71
Trang 9TỔNG QUAN VỀ ĐỀ TÀI
Lý do chọn đề tài.
Trong những năm gần đây với sự phát triển vượt trội của khoa học côngnghệ, đặc biệt là công nghệ thông tin và truyền thông Mạng điện thoại di độngxuất hiện tại Việt Nam cùng với số lượng các thuê bao cũng như các nhà cungcấp dịch vụ di động tại Việt Nam ngày càng tăng Cùng với sự phát triển của sốlượng thuê bao di động là sự đa dạng hoá các dịch vụ hướng đến thiết bị diđộng Điện thoại di động không còn là công cụ dành cho những người đi làmnữa mà nó còn được sử dụng phổ biến trong tầng lớp đông đảo từ trẻ đến già.Nhiều người đã coi điện thoại di động như một vật không thể thiếu trong cuộcsông hàng ngày
Ngày nay điện thoại di động không chỉ còn mang chức năng gọi điện haynhắn tin thông thường mà nó còn là một thiết bị giải trí, tra cứu thông tin rất tiệnlợi với rất nhiều những ứng dụng hay và có ích như chơi game, chụp ảnh, xemphim, Do đó, xây dựng các ứng dụng cho điện thoại di động đang là một yêucầu tất yếu trong xu thế hiện nay và nó đem lại lợi nhuận,doanh thu cao chonhững nhà mạng, những người lập trình
Các nhà sản xuất thiết bị di động lớn hiện nay chọn Android làm hệ điềuhành chủ đạo với số lượng người dùng và thiết bị ngày càng tăng dẫn đến nhucầu lớn về phần mềm Android có tính mở cao, được sự hỗ trợ nhiều từ cộngđồng Hệ điều hành Android nổi bật với khả năng hoạt động ổn định và linh hoạt,
có thể chạy nhiều ứng dụng một lúc linh hoạt, mượt mà Android còn hỗ trợ càiđặt không giới hạn số lượng phần mềm cài đặt
Lập trình Game Android là hướng đi mới, phải vận dụng nhiều kiến thứctrong CNTT Từ đó thúc đẩy khả năng tự nghiên cứu và vận dụng những kiếnthức đã học áp dụng vào thực tế Hiện nay, Android đang là sự lựa chọn hàng đầucho những nhà phát triển ứng dụng mới với các khoản đầu tư lớn, và với xu thếnày, số lượng ứng dụng và game trên Android sẽ tăng lên đáng kể trong tươnglai.Luận văn này được thực hiện với mục đích tìm hiểu cách phát triển ứng dụngtrên hệ điều hành Android Áp dụng xây dựng game Spider Hunter
Em xin cảm ơn các thầy cô ở bộ môn Mạng & Truyền Thông, Trường ĐạiHọc Công nghệ thông tin, đặc biệt là cô Đinh Thị Thanh Uyên, đã tận tình hướngdẫn, góp ý để em có thể hoàn thiện luận văn này Em rất mong nhận được những
ý kiến quý báu của các thầy cô để luận văn này được hoàn thiện hơn
Trang 10 Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu nghiên cứu: Xây dựng Game “SPIDER HUNTER” trên hệ điềuhành Android Nhiệm vụ nghiên cứu:
- Thu thâp,nghiên cứu tìm hiểu cách lập trình trên nền tảng Android
- Nghiên cứu sử dụng ngôn ngữ Java và các thư viện trong Android để lập trình Game
- Nghiên cứu các thuật toán sử dụng trong Game Phân tích thiết kế Game
- Viết đề cương, báo cáo, cài đặt chương trình
Phạm vi, đối tượng của đề lài.
- Đối tượng: Game “SPIDER HUNTER” trên hệ điều hành Android
- Phạm vi: Một số API,cách xử lý đồ họa và xử lý âm thanh, các thuật toán
Phương pháp nghiên cứu
- Đọc tài liệu về lập trình Game trên Android
- Tham gia thảo luận, hỏi đáp các diễn đàn chuyên môn, tham khảo code ví
dụ, hướng dẫn trên mạng Internet về thuật toán, cách xử lý các vấn đề gặpphải Tham gia thảo luận cùng sinh viên có chung đề tài
- Thực hiện lập trình game, rút ra kinh nghiệm từ thực tế
Dự kiến kết quả.
Chương trình demo chạy trên thiết bị thật
Ý nghĩa khoa học và thực tiễn.
Sản phẩm là một trò chơi cho điện thoại chạy hệ điều hành Android Có thểchia sẻ và upload lên chợ ứng dụng Android Market
Nội dung đồ án.
CHƯƠNG I: Cơ sở lý thuyết
CHƯƠNG II: Phân tích, thiết kế hệ thống
CHƯƠNG III: Chương trình game Spider Hunter
Trang 11Kết luận và hướng phát triển đề tài.
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan hệ điều hành Android và Game
1.1.1 Khái niệm hệ điều hành Anroid
Android là hệ điều hành cho các thiết bị cầm tay dựa trên lõi Linux
do công ty Android Inc (California, Mỹ) thiết kế Công ty này sau đóđược Google mua lại vào năm 2005 và bắt đầu xây dựng AndroidPlatform Các thành viên chủ chốt tại ở Android Inc gồm có: Andy Rubin,Rich Miner, Nick Sears, and Chris White
Hình 1-1 Android timeline
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007,hãng T-Mobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếcT-Mobile G1, chiếc smartphone đầu tiên dựa trên nền tảng Android Một vàingày sau đó, Google lại tiếp tục công bố sự ra mắt phiên bản Android SDKrelease Candidate 1.0 Trong tháng 10 năm 2008, Google được cấp giấy phép
mã nguồn mở cho Android Platform
Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thànhlập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng,phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại diđộng trong tương lai Từ tháng 10 năm 2008, hệ điều hành Android đã chính thứctrở thành phần mềm mã nguồn mở Điều đó cho phép các hãng điện thoại có thể
Trang 12đem mã nguồn về tùy chỉnh, thiết kế lại sao cho phù hợp với mỗi mẫu mã điệnthoại của họ và điều quan trọng nữa là hệ điều hành mở này hoàn toàn miễn phí,không phải trả tiền nên giúp họ tiết kiệm khá lớn chi phí phát triển hệ điều hành.
Trang 13Các ứng dụng viết sẽ có những đặc tính sau:
- Viết bằng Java, phần mở rộng là apk
- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine đượcdựng lên để phục vụ cho nó Nó có thể là một Active Program : Chươngtrình có giao diện với người sử dụng hoặc là một background : chươngtrình chạy nền hay là dịch vụ
- Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thờiđiểm,có thể có nhiều chương trình cùng chạy một lúc
- Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động
1.1.2.2 Tầng Application Framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp chocác nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sángtạo Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địađiểmtruy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động
Hình 1-3 Kiến trúc tầng Application Framework Tầng này tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:
Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng
để thiết kế phần giao diện ứng dụng như: gridview, tableview,…
Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữliệu từ các ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ
dữ liệu giữa các ứng dụng đó
Một “Resource Manager” cung cấp truy xuất tới các tài nguyên
Trang 14không phải là mã nguồn, chẳng hạn như: localized strings,graphics,
Một “Notifycation Manager” cho phép tất cả các ứng dụng hiểnthị các custom alerts trong status bar
Activity Maanager được dùng để quản lý chu trình sống của ứngdụng và điều hướng các activity
1.1.2.3 Tầng Android Runtime and Libraries
Tầng này gồm 2 phần là Libraries và Android Runtime:
Hình 1-4 Kiến trúc tầng Android Runtime and Libraries
Phần Library
Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi nhiềuthành phần khác nhau trong hệ thống Android Một số các thư viện cơ bảnđược liệt kê dưới đây:
Thư viện hệ thống (System C library)(Libc) : Thư viện dựa trên chuẩn C
Thư viện Media (Media Libraries) : Có nhiều codec để hỗ trợ việc phát vàghi các loại định dạng âm thanh, hình ảnh, video thông dụng
Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trênweb, được sử dụng để xây dựng phần mềm duyệt web (Android Browse)cũng như để các ứng dụng khác có thể nhúng vào Nó cực kỳ mạnh, hỗ trợđược nhiều công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM,AJAX
Surface Manage: Quản lý hiển thị 2D và 3D
SGL công nghệ 2D
Trang 15 SQLite : Quản lý database của ứng dụng.
Free Type : Dùng cho hiển thị ảnh,font
SSL(Secure Socket Layer): Tầng thiết lập giao dịch an toàn trên 2 ứng dụngtrên 1 cổng (socket)
Open GL/EL: Hỗ trợ thư viện tùy chọn 3D tĩnh và động
Phần Android Runtime
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữJava có thể hoạt động Phần này có 2 bộ phận tương tự như mô hình chạy Javatrên máy tính thường Thứ nhất là các thư viện lõi (Core Library) , chứa các lớpnhư JAVA IO, Collections, File Access Thứ hai là một máy ảo java (DalvikVirtual Machine)
1.1.2.4 Tầng hạt nhân Linux
Hệ điều hành android được phát triển dựa trên hạt nhân linux, cụ thể làhạt nhân linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này Tất cảmọi hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mứccấp thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếpvới phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình(process)
Hình 1-5 Kiến trúc tầng hạt nhân Linux
Trang 16Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã đượcnâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầmtay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhucầu kết nối mạng không dây
Display Driver : Điều khiển việc hiển thị lên màn hình cũng như thu nhậnnhững điều khiển của người dùng lên màn hình (di chuyển, cảm ứng )
Camera Driver : Điều kiển hoạt động của camera
Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth
USB driver : Quản lý hoạt động của các cổng giao tiếp USB
Keypad driver : Điều khiển bàn phím
Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi
Audio Driver : Điều khiển các bộ thu phát âm thanh, giải mã các tính hiệudạng audio thành tín hiệu số và ngược lại
Power Madagement : Giám sát việc tiêu thụ điện năng
M-System Driver : Quản lý việc đọc ghi lên các thiết bị bộ nhớ như thẻSD,flash
1.1.3 Android Emulator
Android SDK và Plugin Eclipse được gọi là một Android DeverloperTool (ADT) Các Android coder sẽ cần phải sử dụng công cụ IDE (IntegratedDevelopment Enveronment) này để phát triển, debugging và testing cho ứngdụng Tuy nhiên, các coder cũng có thể không cần phải sử dụng IDE mà thayvào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có Emulatornhư thường
Android Emulator được trang bị đầy đủ hầu hết các tính năng của mộtthiết bị thật Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB,camera và video, nghe phone, nguồn điện giả lập và bluetooth
Android Emulator thực hiện các công việc thông qua một bộ xử lý mãnguồn mở, công nghệ này được gọi là QEMU được phát triển bởi FabriceBellard
Trang 17Hình 1-6 Android emulator
1.1.4 Các thành phần trong một Android Prject
- Activity
Hiểu một cách đơn giản thì Activity là nền của 1 ứng dụng Khi khởi động
1 ứng dụng Android nào đó thì bao giờ cũng có 1 main Activity được gọi, hiểnthị màn hình giao diện của ứng dụng cho phép người dùng tương tác
- Services
Thành phần chạy ẩn trong Android Service sử dụng để update dữ liệu,đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùngthấy
- Broadcast Receiver
Thành phần thu nhận các Intent bên ngoài gửi tới VD: bạn viết 1 chương
trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1Broadcast Receiver để nhận biết các Intent là các cuộc gọi tới
Trang 18- Notification
Đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạtđộng.Activity, Service, Broadcast Receiver và Content Provider mới là nhữngthành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trongandroidManifest
- File AndroidManifest
Trong khung package Explorer, ở phía dưới thư mục res, bạn sẽ thấy file
có tên là AndroidManifest.xml Mỗi ứng dụng đều cần có file này để mô tảnhững thông tin quan trọng của nó cho hệ thống android biết
Trang 19- Đặt tên cho java package của ứng dụng Mô tả các thành phần của ứngdụng : activity, service, broadcast receiver hoặc content provider
- Thông báo những permission mà ứng dụng cần có để truy nhập cácprotected API và tương tác với các ứng dụng khác
- Thông báo level thấp nhất của Android API mà ứng dụng cần để chạy.(Android 1.0 là level 1, 1.1 là level 2, 1.5 là level 3, 1.6 là level 4
1.1.5 Chu kỳ sống của một ứng dụng Android
Trong mỗi ứng dụng Android có chứa nhiều thành phần và mỗi thànhphần đều có một chu trình sống riêng Và ứng dụng chỉ được gọi là kết thúc khitất cả các thành phần trong ứng dụng kết thúc Activity là một thành phần chophép người dùng giao tiếp với ứng dụng Tuy nhiên khi tất cả các Activity kếtthúc và người dùng không còn giao tiếp được với ứng dụng nữa nhưng không cónghĩa là ứng dụng đã kết thúc Bởi vì ngoài Activity là thành phần có khả năngtương tác với người dùng thì còn có các thành phần không có khả năng tương tácvới người dùng như là Service, Broadcast receiver Có nghĩa là thành phần khôngtương tác với người dùng có thể chạy nền dưới sự giám sát của HDH cho đến khingười dùng tự tắt chúng
Thời gian sống của Activity :
Hình 1-7 Lược đồ vòng đời của một Activity
Trang 201.1.5.1 Chu kỳ ứng dụng của Android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra choứng dụng khi codes cần được chạy và sẽ còn chạy cho đến khi hệ thống cần lấylại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
Một sự khác thường và đặc tính cơ bản của Android là thời gian sốngcủa tiến trình ứng dụng không được điều khiển trực tiếp bởi chính nó Thayvào đó, nó được xác định bởi hệ thống qua một kết hợp của những phần củaứng dụng mà hệ thống biết đang chạy và những phần quan trọng đối với ngườidùng cùng với những vùng nhớ chiếm lĩnh trong hệ thống
1.1.5.2 Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từlúc bắt đầu khởi tạo và đến thời điểm kết thúc Giữa đó, đôi lúc chúng có thể
là active hoặc inactive, hoặc là trong trường hợp activies nó có thể visiblehoặc invisible
Hình 1-8: Chu kỳ sống thành phần
1.1.5.3 Activity Stack
Bên trong hệ thống các activity được quản lý như một activity stack Khimột Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activityđang chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốtquá trình activity mới tồn tại
Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyểnlên và trở thành active
Trang 21Hình 1-9 Activity stack
1.1.5.4 Các trạng thái của chu kỳ sống
Hình 1-10: Chu kỳ sống của Activity
Trang 22Một Activity chủ yếu có 3 chu kỳ chính sau:
+Active hoặc running: Khi Activity là được chạy trên màn hình Activity này
tập trung vào những thao tác của người dùng trên ứng dụng
+Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người
dùng vẫn trông thấy Một Activity tạm dừng là còn sống nhưng có thể bị kếtthúc bởi hệ thống trong trường hợp thiếu vùng nhớ
+Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác
1.1.5.5 Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏthông tin khác của nó từ vùng nhớ bởi việc gọi hàm finish() của nó, hoặc đơngiản giết tiến trình của nó Khi nó được hiển thị lần nữa với người dùng, nóphải được hoàn toàn restart và phục hồi lại trạng thái trước Khi một Activitychuyển qua chuyển lại giữa các trạng thái, nó phải báo việc chuyển của nóbằng việc gọi hàm transition
Hình 1-11: Các phương thức trong chu kỳ ứng dụng
Tất cả các Activity bắt buộc phải có onCreate() để khởi tạo ứng dụng.Nhiều Activity sẽ cũng hiện thực onPause() để xác nhận việc thay đổi dữliệu và mặt khác chuẩn bị dừng hoạt động với người dùng
1.1.5.6 Thời gian sống của ứng dụng
Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống của mộtActivity Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọionCreate() đến trạng thái cuối cùng gọi onDestroy() Một Activity khởi tạotoàn bộ trạng thái toàn cục trong onCreate(), và giải phóng các tài nguyênđang tồn tại trong onDestroy()
Trang 231.1.5.7 Thời gian hiển thị của Activity
Visible lifetime của một activity diễn ra giữa lần gọi một onStart() chođến khi gọi onStop() Trong suốt khoảng thời gian này người dùng có thể thấyactivity trên màn hình, có nghĩa là nó không bị foreground hoặc đang tươngtác với người dùng Giữa 2 phương thức người dùng có thể duy trì tài nguyên
để hiển thị activity đến người dùng
1.1.5.8 Các phương thức của chu kỳ sống
Phương thức onCreate(): Được gọi khi activity lần đầu tiên được tạo.
Khởi tạo các view, kết nối dữ liệu đến list Phương thức này gửi qua mộtđối tượng Bundle chứa đựng từ trạng thái trước của Activity
Phương thức onRestart(): được gọi sau khi activity đã được dừng,
chỉ một khoảng đang khởi động lần nữa (stared again).Luôn theo saubởi onStart()
Phương thức onStart(): được gọi trước khi một activity visible với
người dùng.Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc onStop() nế nó trở nên ẩn.
Phương thức onResume(): được gọi trước khi activity bắt đầu tương
tác với người dung và luôn theo sau bởi onPause().Tại thời điểm này
activity ở trên dỉnh của stack activity
Phương thức onPause(): được gọi khi hệ thống đang resuming activity
khác.Phương thức này là điển hình việc giữ lại không đổi dữ liệu.Nó nênđược diễn ra một cách nhanh chóng được resumed ngay cho đến khi nótrở lại Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởionStop nếu nó trở nên visible với người dùng
Phương thức onStop(): được gọi khi activity không thuộc tầm nhìn của
người dùng Được theo sau bởi onRestart() nếu activity đang đở lại
để tương tác với người dùng, hoặc onDestroy() nếu activity đang bỏ.
Phương thức onDestroy(): được gọi trước khi activity bị hủy Đó là lần
gọi cuối cùng mà activity này được nhận
Trang 241.1.6 Các thành phần giao diện trong Android
1.1.6.1 View
Trong một ứng dụng Android, giao diện người dùng được xây dựng từcác đối tượng View và ViewGroup Có nhiều kiểu View và ViewGroup Mỗimột kiểu là một hậu duệ của class View và tất cả các kiểu đó được gọi là cácWidget.Tất cả mọi widget đều có chung các thuộc tính cơ bản như là cáchtrình bày vị trí, background, kích thước, lề,…
Trong Android Platform, các screen luôn được bố trí theo một kiểu cấu trúcphân cấp như hình dưới Một screen là một tập hợp các Layout và các widget được bốtrí có thứ tự Để thể hiện một screen thì trong hàm onCreate của mỗi Activity cần phảiđược gọi một hàm là setContentView(R.layout.main), hàm này sẽ load giao diện từfile XML lên để phân tích thành mã bytecode
Hình 1-12: Cấu trúc một giao diện ứng dụng Android
1.1.6.2 ViewGroup
ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroupchính là các widget Layout được dùng để bố trí các đối tượng khác trongmột screen Có một số loại ViewGroup như sau:
LinearLayout
LinearLayout được dùng để bố trí các thành phần giao diện theo chiềungang hoặc chiều dọc nhưng trên một line duy nhất mà không có xuống dòng
Trang 25LinearLayout làm cho các thành phần trong nó không bị phụ thuộc vào kíchthước của màn hình
Hình 1-13: Bố trí các widget sử dụng LinearLayout
FrameLayout
FrameLayout được dùng để bố trí các đối tượng theo kiểu giống như làcác Layer trong Photoshop Những đối tượng nào thuộc Layer bên dưới thì sẽ
bị che khuất bởi các đối tượng thuộc Layer nằm trên FrameLayer thường được
sử dụng khi muốn tạo ra các đối tượng có khung hình bên ngoài chẳng hạn nhưcontact image button
Hình 1-14: Bố trí các widget trong FrameLayout
Trang 26 AbsoluteLayout
Layout này được sử dụng để bố trí các widget vào một vị trí bất kì tronglayout dựa vào 2 thuộc tính toạ độ x, y Tuy nhiên, kiểu layout này rất ít khiđược dùng bởi vì toạ độ của các đối tượng luôn cố định và sẽ không tự điềuchỉnh được tỷ lệ khoảng cách giữa các đối tượng
RetaliveLayout
Layout này cho phép bố trí các widget theo một trục đối xứng nganghoặc dọc Dựa vào những mối ràng buộc trái, phải, trên, dưới so với mộtwidget hoặc so với layout parent mà RetaliveLayout cũng không phụ thuộc vàokích thước của screen thiết bị Ngoài ra, nó còn có ưu điểm là giúp tiết kiệmlayout sử dụng nhằm mục đích giảm lượng tài nguyên sử dụng khi load đồngthời đẩy nhanh quá trình xử lý
Trang 27 ImageButton cũng tương tự như Button, ImageButton chỉ có thêm một
thuộc tính : android:src = “@drawable/icon” để thêm hình ảnh vào vàkhông có thẻ text
Trang 28ImageView iv = new ImageView(this);
Để thể hiện được một list thông tin lên một screen thì cần phải có 3 yếu tố chính:
Data Source: Data Source có thể là một ArrayList, HashMap hoặc bất kỳ
một cấu trúc dữ liệu kiểu danh sách nào
Adapter: Adapter là một class trung gian giúp ánh xạ dữ liệu trong Data
Source vào đúng vị trí hiển thị trong ListView
ListView: ListView là đối tượng để hiển thị các thông tin trong Data
Source ra một cách trực quan và người dùng có thể thao tác trực tiếp trênđó
Trang 29Hình 1-19 Minh hoạ cho một ListView
1.1.6.6 TextView
TextView ngoài tác dụng là để hiển thị văn bản thì nó còn cho phépđịnh dạng nội dung bằng thẻ html
VD:
TextView textView = (TextView)findViewById(R.id.textView);
CharSequence styledText = Html.fromHtml("<i>This</i> is some
+android:singleLine = “true” EditText của bạn sẽ trở thành một TextField,ngược lại sẽ là TextBox
Trang 301.1.6.8 CheckBox
Nhận 2 giá trị true hoặc false
Đối tượng CheckBox cho phép chọn nhiều item cùng 1 lúc
Khai báo: CheckBox cb = new CheckBox(Context …);
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) sẽ được gọi và truyền vào 3 tham số là:
ContextMenu: đối tượng để add các context menu item
View: Đối tượng nơi mà xảy ra sự kiện
ContextMenuInfo: Cho biết vị trí xảy ra sự kiện trong ListView
Để biết được vị trí xảy ra sự kiện ta làm như sau:
Trang 31info.position hiển thị kết quả tìm kiếm ngay khi bạn đang gõ
Nó cũng cung cấp các kết quả từ các gợi ý tìm kiếm web, danh sáchdoanh nghiệp địa phương, và thông tin khác từ Google, chẳng hạn như báo giá
cổ phiếu, thời tiết, và tình trạng chuyến bay
Tất cả điều này có sẵn ngay từ màn hình chủ, bằng cách khai thác trênQuick Search Box (QSB)
Hình 1-20 Minh họa Quick Search Box
1.2 Tổng quan về Game
1.2.1 Khái niệm về Game
Video game (gọi tắt là game)
Là một dạng trò chơi điện tử liên quan đến tính tuơng tác với một giao diệnngười sử dụng để tạo ra một phản hồi hình ảnh trên một thiết bị hiển thị
Lịch sử phát triển của game trên di động
Trang 32Vào những năm 1949–1950, Charley Adama chạy một chương trình cótên "Bouncing Ball" cho chiếc máy tính Whirlwind của MIT Dù chương trìnhvẫn chưa thực sự tuơng tác được, nhưng nó đã là tiền thân của video game sắp
ra đời
Những năm 70: Vào năm 1971, Nolan Bushnell và Ted Dabney tạo ra
một phiên bản trò chơi Spacewar trên hệ máy arcade và gọi là Computer
Space.Là game thương mại chào bán lần đầu tiên Những năm 80: Có sự đổi
mới về thể loại của Game Ra đời nhiều thể loại Game: Phiêu lưu hành động
(The Legend of Zelda (1986)), game mê cung (PacMan),game đua xe
(Turbo(1981))…
Cuộc khủng hoảng của video Game năm 1983:
Vào cuối năm 1983, ngành công nghiệp game trải qua sự tổn thất cònlớn hơn cả cuộc khủng hoảng năm 1977 Đây là sự sụp đổ của cả ngành côngnghiệp cũng như là sự phá sản của một vài hãng chuyên sản xuất máy tính giadụng và
hệ console cho thị trường Bắc Mỹ vào cuối năm 1983 và 1984 Nó mang đếncái gọi là sự kết thúc của các hệ máy console thế hệ hai
Những năm 1990: Những năm 1990 đánh dấu một sự cách tân trong
ngành công nghiệp game Đó là thập kỷ của sự biến đổi từ đồ họa rastersang đồ họa 3 chiều và đã dẫn đến sự ra đời của một vài thể loại game baogồm bắn súng góc nhìn người thứ nhất, chiến lược thời gian thực, và game trựctuyến Game trên hệ máy cầm tay trở nên phổ biến rộng rãi, một phần nhờ vàoviệc phát hành Game Boy
Năm 1992, Dune II ra mắt Game này không phải là game theo thểloại chiến lược thời gian thực đầu tiên Nhưng Dune II đã đặt tiêu chuẩn về lối
chơi cho các tựa game bom tấn về sau như Warcraft: Orcs & Humans,
Command & Conquer, và StarCraft
Game trên điện thoại di động bắt đầu được quan tâm khi Nokia giới thiệuđiện thoại N-Gage là thiết bị chơi game cầm tay của mình vào năm 2003.Điện thoại di động chơi game có doanh thu hơn 1 tỷ USD vào năm các
Trang 33smartphone N-Series của Nokia trong năm 2005 và iPhone của Apple trongnăm 2007 là những ví dụ mạnh mẽ cho sự hấp dẫn của game trên điện thoại diđộng Năm2008, Nokia không định phục hồi lại thuơng hiệu N-Gage nhưnglại cho ra một thư viện các game cho dòng điện thoại cao cấp này.
Cũng trong năm 2008 trên AppStore của Apple, hơn một nửa trên tổng số tất
cả các ứng dụng được bán ra là các game cho iPhone
Thế hệ console thứ sáu: Sự ra đời Playstation 2 của Sony và gầncuối năm 2001, t ậ p đ o à n M i c r o s o f t, được biết đến nhiều nhất với hệđiều hành Windows và chuyên sản xuất các phần mềm, bước vào thị trườngconsole với máy Xbox Ngay sau đó vào tháng 12 năm 2001, studio phát triển
game Bungie Studio cho ra đời Halo: Combat Evolved và ngay lập tức trở thành bước ngoặt quan trọng trong sự thành công của Xbox, và dòng game Halo sau
đó trở thành một trong những game bắn súng trên console thành công nhất mọithời đại
Game trực tuyến tăng trưởng một các mạnh mẽ: Khi việc kết nốiInternetbăng thông rộng với giá cả phải chăng trở nên phổ biến, nhiều nhàphát hành quay sang game online như một cách để đổi mới
Sự lên ngôi của các Game đơn giản: Khởi đầu với máy tính cá nhân,một xu hướng mới với game đơn giản, các trò chơi với sự phức tạp vừa phảiđược thiết kế để có thể chơi các phần một cách nhanh chóng hoặc ngẫu hứng,bắt đầu nhận được sự chú ý của ngành công nghiệp Rất nhiều các game này chỉ
là giải câu đố, xếp hình, Bejeweled (xếp kim cuơng) của PopCap Games và
Diner Dash của PlayFirst, trong khi các game khác với lối chơi thoải mái hơn
và có kết thúc mở Thế hệ console thứ bảy: Sony cho ra mắt Playstation3.Tâp đoàn Apple bước vào lĩnh vực phần cứng chơi game di động với sự ra đờiApp Store cho iPhone và iPod Touch trong mùa hè năm 2008
1.2.2 Ngôn ngữ lập trình game
Tùy vào từng loại game cụ thể mà sử dụng các ngôn ngữ khác nhau Đốivới những game lớn giành cho PC và các hệ máy console thì C++ và DirectXhoặcOpenGL là lựa chọn tốt nhất vì đòi hỏi phải can thiệp sâu bên trong hệ
Trang 34thống Java là ngôn ngữ lập trình game phổ biến cho các thiết bị di động vàkhông phụ thuộc vào nền tảng.Ngoài ra thì còn có C# và Python…
Nếu như trước kia việc lập trình game phải làm thủ công các công đoạn từđầu tới cuối từ việc xây dựng đồ họa đến âm thanh ,…thì hiên nay với sự ra đờinhiều công cụ hỗ trợ giúp việc lập trình game nhanh hơn và tối ưu hơn gọi làgame engine
Một Game Engine (công cụ tạo game) là một phần mềm được viết để thiết
kế và phát triển video game Có rất nhiều loại Game Engine dùng để thiết kếgame cho các hệ máy như hệ consoles hay máy tính cá nhân(PC) Chức năng cốtlõi của Game Engine phần lớn nằm trong công cụ dựng hình (kết xuất đồ họa)cho các hình ảnh 2 chiều (2D) hay 3 chiều(3D), công cụ vật lý (hay công cụ tínhtoán và phát hiện va chạm), âm thanh, mã nguồn, hình ảnh động (animation), trítuệ nhân tạo, phân luồng, tạo dòng dữ liệu xử lý , quản lý bộ nhớ, dựng ảnh đồthị, và kết nối mạng Quá trình phát triển game tiết kiệm được rất nhiều thời gian
và kinh phí vào việc tái sử dụng và tái thích ứng một engine để tạo nhiều gamekhác nhau
Với công nghệ tạo Game Engine càng phát triển và trở nên thân thiệnhơn với người sử dụng ,ứng dụng của nó càng được mở rộng, và giờ đây được
sử dụng để tạo các game mang mục đích khác với giải trí đơn thuần như: môphỏng, huấn luyện ảo, y tế ảo, và mô phỏng các ứng dụng quân sự Để tạođiều kiện tiếp cận này, các nền tảng phần cứng mới đang là mục tiêu củagame engine, kể cả điện thoại di động (ví dụ: iPhone, điện thoạiAndroid ) và trình duyệt web (như Shockwave, Flash, WebVision củaTrinigy, Silverlight, Unity Web Player, O3D và thuần dhtml) Thêm vào đó,nhiều game engine đang được tạo ra bằng các ngôn ngữ lập trình cấp caonhư Java và C# hay NET (ví dụ TorqueX, và Visual3D.NET) hay Python(Panda3D) Vì hầu hết các game 3D hiện nay đều có giới hạn cho GPU(giới hạn bởi sức mạnh của card đồ họa), khả năng gây chậm máy của cácngôn ngữ lập trình cấp cao trở nên không đáng kể, trong khi việc tăng năng
Trang 35suất được cung cấp bởi các ngôn ngữ này lại có lợi cho các nhà phát triểngame engine.
1.2.3 Lý thuyết về lập trình game
Khác với lập trình giao diện trên Android sử dụng các API để tạo cácButton, Label, Text View… Lập trình Game đòi hòi người lập trình phải vẽ nêntất cả giao diện mà không sử dụng các API được hệ điều hành hỗ trợ.Tuy nhiênthời gian làm game sẽ rất tốn kém và khối lượng công việc liên quan đến vẽ giaodiện là rất lớn.Lập trình Game thường tuân theo 1 Frame work, tạo ra 1 bộInterface để Implement vào Game cụ thể và tùy biến theo yêu cầu, dưới Hệ điềuhành nào cũng cần các API sau để tạo nên Game:
- Window management: quản lý tạo, đóng cửa sổ game, theo dõi tiến trình hay
pause/resume game trên Anroid
- Input: quản lý các thành phần liên quan đến nhập dữ liệu (Nhấn phím, chạm
vào màn hình, cảm biến…)
- File I/O: quản lý nhập xuất file
- Audio: tải tập tin âm thanh, quản lý tiến trình sử dụng âm thanh (Play/Pause)
- Graphics: thành phần quan trọng nhất Tải các đối tượng đồ họa và vẽ chúng
lên màn hình
- Game Framework:đưa tất cả các thành phần trên vào 1 khung, xây dựng các
lớp để dễ dàng sử dụng và làm việc với mức cao hơn, tập trung vào xây dựngGame hơn là thao tác cấp thấp
Trong quá trình xây dựng đồ án em có sử dụng thư viện AndEngine để có thểgiúp hoàn thiện đồ án nhanh và dễ dàng hơn
1.2.4 Giới thiệu về công cụ AndEngine
Trang 36- Về cơ bản là một gói các lớp(class) của java được viết sẵn và đóng gói.
- Tương thích với môi trường Eclipse
- Để sử dụng, import andengine.jar vào thư viện
Ưu điểm :
- Dễ sử dụng
- Hỗ trợ nhiều tiện ích khi xây dựng trò chơi
- Cộng đồng lập trình đông đảo
- Nhiều lớp để chọn khi tạo PhysicBox2D:
o MaxStepPhysicWorld: dùng cho các máy có bộ xử lý yếu
o PhysicWorld: Lớp mặc định tạp box vật lý có độ chính xác cao
o FixedStepPhysicWorld: khả năng xử lý trung bình
Nhược điểm :
- Hiệu năng của chương trình sẽ bị chậm đi do việc phải tham chiếu đếnnhiều lớp hơn
Các thành phần chính trong AndEngine :
- Camera : camera của game là thành phần sẽ xác định góc nhìn của người
dùng tới game, nó cũng giống như góc nhìn của phim ảnh có 2 chiều Camera cóthể dịch chuyển và phóng to thu nhỏ, những chức năng đó có thể do người dùngđiều khiển hoặc do chương trình tự động
- Scene : một game cũng giống như một phim nó chứa một loạt các bối
cảnh nơi mà sẽ diễn ra các hành động của diễn viên Trong game các bối cảnh sẽđược điều khiển phụ thuộc vào kịch bản của game
- Layer : Scene bao gồm các layer đồ họa Các lớp được chồng lên nhau,
giống như các cels hoạt hình được sử dụng để tạo ra phim hoạt hình trong nhữngngày cũ Lớp cũng có thể được sử dụng để giới thiệu 2 ½ D hiệu quả, ở đâu, nhưgiãn máy quay, các lớp gần gũi hơn di chuyển nhanh hơn hơn so với lớp xa hơn
- Sprite : Sprites là đại diện hình ảnh của các diễn viên trong bộ phim của,
cho dù những diễn viên là những người hay đồ vật Sprites có thể được animatedhay không, nhưng họ thường di chuyển về cảnh trong quá trình chơi game Kết
Trang 37cấu Sprite thường được nạp từ một lớn hình ảnh bao gồm một bộ sưu tập cáchình ảnh ma, được gọi là một tờ ma.
- Entity : trong AndEngine entity chính là tất cả mọi thứ mà được vẽ trên
màn hình như sprite, line, shap… tất cả entity đều có các thuộc tính màu sắc, vịtrí, góc quay tỉ lê và có thể thay đổi bởi modify
- Modifier : modifier sẽ thay đổi các thuộc tính của entity, và chúng rất là
có ích trong AndEngine Chúng có thể thay đổi thuộc tính của bất kỳ entity nào,xảy ra ngay lập tức hoặc từ từ theo 1 thời gian Bạn có thể sử dụng modifi để tạođường đi hoặc các hiệu ứng đối với entity
- Texture : là bitmap đồ họa 2D thường dùng với các object để giữ chúng
trong 1 texture Texture định nghĩa cách mà chúng ta thấy các entity, và phần lớnOpenGL là môi trường đồ họa sử dụng texture
- Texture Region : texture là một bitmap đầy đủ thì texture region định
nghĩa một nhóm vùng hình chữ nhật Chúng được sử dụng để tối ưu hiệu năngcủa đồ họa 2D
- Engine : một engine sẽ chạy một scene Nó sẽ cho phép các animation,
modifier biết khi nào thì update đồ họa, nó điều phối việc vẽ xử lý các tín hiệuđầu vào (touch, key, sensor ), nó quản lý chung các tiến trình của game Enginegiống như là đạo diễn của một bộ phim, nó sẽ cho tất cả mọi người biết họ cầnphải làm những gì
- BaseGameActivity : là một class extends từ class Activity của android.
Nó là phần cờ bản của mối scene trong game BaseGameActivity sẽ làm tất cảcông việc chúng cho tất cả các scene, thiết lập engine trong game, phù hợp vớiyêu cầu vòng đời của android, kích hoạt sensors
- Physics Connector : AndEngine bao gồm những khả năng vậy lý như
một engine cơ bản có Nhưng Box2D physics sẽ là một engine mở rộng với cáckhả năng tuyệt vời về physics, chúng ta có thể có những khả năng đó bằng cáchliên kết từ andengine tới box2D bằng một đối tượng physic connector Nếu gamecủa bạn không cần tới box2D thì bạn không cần phải có physic connector