XÂY DỰNG GAME “MY BALL” TRÊN HỆ ĐIỀU HÀNH ANDROID - Full 10 điểm

62 1 0
XÂY DỰNG GAME “MY BALL” TRÊN HỆ ĐIỀU HÀNH ANDROID - Full 10 điểm

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ THÔNG TIN VÀ TRUYỀN THÔNG TRƢỜNG CAO ĐẲNG CNTT HỮU NGHỊ VIỆT - HÀN KHOA KHOA HỌ C MÁY TÍNH ĐỒ ÁN TỐT NGHIỆP NGÀNH: KHOA HỌC MÁY TÍNH ĐỀ TÀI : XÂY DỰNG GAME “ MY BALL ” TRÊN HỆ ĐIỀU HÀNH ANDROID S inh viên thực hiện : Ông Thị Hà My Lớp: CCLT04B Niên khóa: 2010 – 2013 GVHD: ThS Nguyễn Thanh Cẩm Đà Nẵng – 05/2013 Trang i LỜI CẢM ƠN Sau quá trình nghiên cứu và xây dựng, đồ án tốt nghiệp “Xây dựng game My Ball trên hệ điều hành Android” đã cơ bản hoàn thành Để đạt đƣơc kết quả này, cùng với sự nỗ lực, em đã nhận đƣợc rất nhiều sự quan tâm, giúp đỡ và ủng hộ từ các thầy cô, gia đình và bạn bè Em xin chân thành cảm ơn các thầy cô trong Khoa Khoa học máy tính cùng các thầy cô giáo trong Trƣờng Cao đẳng Công nghệ thông tin hữu nghị Việt - Hàn đã tận tình giảng dạy, trang bị cho em những kiến thức quý báu trong ba năm học tập tại trƣờng Đặc biệt, em xin chân thành cảm ơn thầy Nguyễn Thanh Cẩm đã tận tình hƣớng dẫn, giúp đỡ, chỉ bảo và đóng góp ý kiến cho em trong suốt thời gian thực hiện đề tài này Con xin nói lên lòng biết ơn sâu sắc đối với bố, mẹ đã chăm sóc, nuôi dạy con nên ngƣời và luôn đi bên con trong những lúc khó khăn nhất Xin cảm ơn các anh chị và bạn bè đã ủng hộ, giúp đỡ và động viên em trong thời gian học tập và nghiên cứu Đồ án đƣợc hoàn thành trong phạm vi và khả năng cho phép, nên chắc chắn sẽ không tránh khỏi những thiếu sót Em kính mong nhận đƣợc sự cảm thông và tận tình chỉ bảo của quý thầy cô và các bạn Ngày 20 tháng 05 năm 2013 Sinh viên thực hiện Ông Thị Hà My Trang ii MỤC LỤC Trang LỜI CẢM ƠN i MỤC LỤC ii DANH MỤC HÌNH ẢNH iv PHẦN I: MỞ ĐẦU 1 PHẦN II: NỘI DUNG 3 CHƢƠNG 1: CƠ SỞ LÝ THUYẾT 3 1 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID 3 1 1 1 Kiến trúc Android 3 1 1 2 Phát triển ứng dụng trên Android 5 1 1 3 Giới thiệu cảm biến gia tốc 8 1 2 TỔNG QUAN VỀ GAME 8 1 2 1 Khái niệm Game - video game 8 1 2 2 Lý thuyết về lập trình Game 14 1 2 3 Cấu trúc một ứng dụng Game 14 1 2 4 Công cụ lập trình Game 16 CHƢƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 18 2 1 GIỚI THIỆU GAME 18 2 2 THIẾT KẾ FRAMEWORK 18 2 2 1 Window management 19 2 2 2 Input 19 2 2 3 File I/O 20 2 2 4 Audio 21 2 2 4 1 Interface Audio 21 2 2 4 2 Interface Music 21 2 2 4 3 Interface Sound 22 2 2 5 Graphics 22 2 2 6 Game Framework 25 2 2 7 Thực thi Game Framework 28 2 3 PHÂN TÍCH GAME 31 2 4 THIẾT KẾ GAME 35 Trang iii 2 4 1 Lớp main (MB) 35 2 4 2 Lớp tài nguyên (Assets) 35 2 4 3 Lớp tải tài nguyên (LoadResource) 35 2 4 4 Lớp Màn hình chính (MainScr) 36 2 4 5 Lớp Màn hình hƣớng dẫn (HelpScr) 37 2 4 6 Lớp Màn hình giới thiệu (Ab outScr) 37 2 4 7 Lớp Màn hình xem điểm (HighScoreScr) 38 2 4 8 Lớp Màn hình chơi Game (GameScr) 38 2 4 9 Lớp Thiết lập (Settings) 39 2 4 10 Lớp viên bi (Ball) 40 2 4 11 Lớp hố đen và đích (Hol e) 41 2 4 12 Lớp vật phẩm (Items) 41 2 4 13 Lớp Bản đồ (Page) 42 2 5 THIẾT KẾ THUẬT TOÁN 44 2 5 1 Thuật toán xác định va chạm giữa viên bi và các đối tƣợng 44 2 5 2 Thuật toán xác định va chạm với biên và đặt lại vị trí 45 2 5 3 Thuật toán cập nhật vị trí viên bi 46 2 5 4 Thuật toán tạo bản đồ 47 2 5 5 Thuật toán của vòng lặp chính (MainLoop) 50 2 6 THIẾT KẾ GIAO DIỆN 51 CHƢƠNG 3: CHƢƠNG TRÌNH DEMO 53 3 1 CÀI ĐẶT, CHẠY CHỨC NĂNG CỦA CHƢƠNG TRÌNH DEMO 53 3 2 HƢỚNG DẪN SỬ DỤNG 53 PHẦN III: ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN 54 5 TÀI LIỆU THAM KHẢO 56 Trang iv DANH MỤC HÌNH ẢNH Hình 1 1 Mô hình ki ế n tr ứ c n ề n t ả ng Android 3 Hình 1 2 Các phiên b ả n Android 5 Hình 1 3 Lƣ ợ c đ ồ vòng đ ờ i c ủ a m ộ t activity 7 Hình 1 4 Các tr ụ c c ủ a c ả m bi ế n gia t ố c trên đi ệ n tho ạ i 8 Hình 1 5 Game Tenis for Two - 1958 9 Hình 2 1 Lƣ ớ i hi ể n th ị và VRAM 23 Hình 2 2 So sánh RGB và ARGB 23 Hình 2 3 Các Interface 29 Hình 2 4 Các l ớ p th ừ a k ế b ộ Interface b ằ ng API c ủ a Android 30 Hình 2 5 Các l ớ p c ầ n thi ế t c ủ a Game 31 Hình 2 6 Các l ớ p c ầ n thi ế t c ủ a Game 44 Hình 2 7 Minh h ọ a b ả n đ ồ 47 Hình 2 8 Giao di ệ n chính 51 Hình 2 9 Giao di ệ n giúp đ ỡ 51 Hình 2 10 Giao di ệ n xem thông tin 51 Hình 2 11 Giao di ệ n chơi game 51 Hình 2 12 Giao di ệ n t ạ m d ừ ng game 51 Hình 2 13 Giao di ệ n thoát màn chơi 51 Hình 2 14 Giao di ệ n th ắ ng game 52 Hình 2 15 Giao di ệ n thua game 52 Hình 2 16 Giao di ệ n thoát game 52 Hình 2 17 Giao di ệ n xem đi ể m 52 Hình 3 1 POP 7F (trái), Galaxy Ace S5380i (gi ữ a) và Galaxy Y S5360 (ph ả i) 53 Hình 3 2 Icon c ủ a game trên màn hình thi ế t b ị di đ ộ ng 53 Hình 3 3 Giao di ệ n Game trên Galaxy Y S5360 54 Hình 3 4 Giao di ệ n Game trên POP 7F 54 Hình 3 5 Giao di ệ n Game trên Galaxy Ace S5380i 54 Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 1 PHẦN I: MỞ ĐẦU 1 Lý do chọn đề tài Trong xu hƣớng phát triển của ngành công nghệ thông tin, làm việc và giải trí trên PC đang dần đƣợc thay thế, chuyển đổi lên các thiết bị di động bởi tính tất yếu của ứng dụng di động Hiện nay, hệ điều hành Android đã thực sự tạo ra một cơn bão trên thị trƣờng và làm thay đổi hoàn toàn cách phát triển các thiết bị di động Ƣu thế nỗi bật nhất của Android là hệ mã nguồn mở Android đã thu hút rất nhiều nhà phát triển từ khắp mọi nơi khi Google phân phối miễn phí Android và các đoạn mã có bản quyền Các nhà sản xuất thiết bị di động lớn hiện nay (Samsung, HTC, Motorola… ) chọn Android làm hệ điều hành, số lƣợng ngƣời dùng và thiết bị ngày càng tăng dẫn đế n nhu cầu lớn về phần mềm Trong đó, nhu cầu sử dụng thiết bị di động để giải trí, chơi Game cũng ngày càng tăng Mặt khác, với sở thích chơi Game, và đã từng chơi rất nhiều Game, em luôn muốn có thể tự tạo ra đƣợc một Game của chính mình Lập trình Game A ndroid là hƣớng đi mới, phải vận dụng nhiều kiến thức trong công nghệ thông tin Từ đó em có thể nâng cao khả năng tự nghiên cứu và vận dụng những kiến thức đã học, cũng nhƣ có thể thỏa mãn sự đam mê của mình nhƣng vẫn theo kịp với xu hƣớng phát triển của ngành công nghệ thông tin 2 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 “ MY BALL ” trên hệ điều hành Android  Nhiệm vụ nghiên cứu: o Thu thâp, đọc tài liệu, nghiên cứu tìm hiểu cách làm việc và lập trình trên nền tảng Android o Nghiên c ứu sử dụng ngôn ngữ Java và các thƣ viện trong Android để lập trình Game o Nghiên cứu các thuật toán sử dụng trong Game o Phân tích thiết kế Game o Viết đề cƣơng, báo cáo, cài đặt chƣơng trình 3 Đối tƣợng và phạm vi nghiên cứu  Đối tƣợng: Game “ MY BALL ” trên hệ điều hành Android Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 2  Phạm vi: Một số API thuộc lớp Canvas nhằm đồ họa 2D trong Android Cảm biến gia tốc, xử lý âm thanh , xử lý đồ họa Game Các thuật toán sử lý va chạm đơn giản trong không gian 2D 4 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ặp phải  Thực hiện lập trình game, rút ra kinh nghiệm từ thực tế 5 Dự kiến kết quả  Game “ MY BALL ” trên hệ điều hành Android 6 Ý nghĩa khoa học và thực tiễn  Khoa học: Áp dụng các kiến thức về thuật toán, ngôn ngữ lập trình Java, các thƣ viện trong Android  Thực tiễn: Sản phẩm là một trò chơi cho điện thoại chạy Android 7 Nội dung đồ án PHẦN I: Mở đầu PHẦN II: Nội dung CHƢƠNG 1 : Cơ sở lý thuyết CHƢƠNG 2 : Phân tích, thiết kế hệ thống CHƢƠNG 3 : Chƣơng trình demo PHẦN III: Kết luận và hƣớng phát triển đề tài Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 3 PHẦN II: NỘI DUNG 1 CHƢƠNG 1 : CƠ SỞ LÝ THUYẾT 1 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID Android là h ệ điề u hành điệ n tho ại di độ ng mã ngu ồ n m ở mi ễ n phí do công ty Google phát tri ể n d ự a trên n ề n t ả ng c ủ a Linux B ấ t k ỳ m ộ t hãng s ả n xu ấ t ph ầ n c ứ ng nào cũng đề u có th ể t ự do s ử d ụ ng h ệ điề u hành Android cho thi ế t b ị c ủ a mình, mi ễ n là các thi ế t b ị ấy đáp ứng đƣợ c các tiêu chu ẩn cơ bản do Google đặ t ra (có c ả m ứ ng ch ạm, GPS, 3G, ) Ra đờ i tháng 11/2007, h ệ điều hành Android đã trả i qua nhi ề u l ầ n c ậ p nh ậ t, v ớ i phiên b ả n g ần đây nhấ t là Jelly Bean 4 2 2 Android là n ề n t ả ng cho thi ế t b ị di độ ng bao g ồ m m ộ t h ệ điề u hành, midware và m ộ t s ố ứ ng d ụ ng ch ủ đạ o B ộ công c ụ Android SDK cung c ấ p các công c ụ và b ộ thƣ viên các hàm API cầ n thi ết để phát tri ể n ứ ng d ụ ng cho n ề n t ả ng Android s ử d ụ ng ngôn ng ữ l ậ p trình java 1 1 1 Kiến trúc Android Hình 1 1 – Mô hình ki ế n trúc n ề n t ả ng Android Theo tài li ệu đƣợ c cung c ấ p b ở i Goolge, ki ế n trúc Android có 5 thành ph ầ n đƣợc đƣợ c ph ầ n l ớ p t ừ cao xu ố ng th ấ p L ần lƣợt nhƣ sau  Applications H ệ điề u hành Android tích h ợ p s ẳ n m ộ t s ố ứ ng d ụng cơ bản nhƣ email client, SMS, l ịch điệ n t ử , b ản đồ , trình duy ệ t web, s ổ liên l ạ c và m ộ t s ố ứ ng d ụ ng khác Ngoài Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 4 ra t ầng này cũng chính là tầ ng ch ứ a các ứ ng d ụng đƣợ c phát tri ể n b ằ ng ngôn ng ữ Java  Application Framework T ầ ng này c ủ a h ệ điề u hành Android cung c ấ p m ộ t n ề n t ả ng phát tri ể n ứ ng d ụ ng m ở qua đó cho phép nhà phát triể n ứ ng d ụ ng có kh ả năng tạ o ra các ứ ng d ụ ng vô cùng sáng t ạ o và phong phú Các nhà phát tri ể n ứ ng d ụng đƣợ c t ự do s ử d ụng các tính năng cao c ấ p c ủ a thi ế t b ị ph ầ n c ứng nhƣ: thông tin đị nh v ị đị a lý, kh ả năng chạ y d ị ch v ụ dƣớ i n ề n, thi ế t l ập đồ ng h ồ báo th ứ c, thêm notification vào status bar c ủ a màn hình thi ế t b ị  Libraries H ệ điề u hành Android bao g ồ m m ộ t t ậ p các b ộ thƣ viện C/C++ đƣợ c s ử d ụ ng b ở i nhi ề u thành ph ầ n c ủ a Android system Nh ững tính năng này đƣợ c cung c ấ p cho các l ậ p trình viên thông qua b ộ framework c ủa Android Dƣới đây là mộ t s ố thƣ việ n c ố t lõi:  System C library - có ngu ồ n g ố c t ừ h ệ th ống thƣ việ n chu ẩn C (libc), điề u ch ỉ nh các thi ế t b ị nhúng trên Linux  Media Libraries - m ở r ộ ng t ừ PacketVideo''''s OpenCORE; thƣ v i ệ n h ỗ tr ợ playback và recording c ủ a nhi ều đị nh d ạ ng video và image ph ổ bi ế n: MPEG4, H 264, MP3, AAC, AMR, JPG, and PNG  Surface Manager - qu ả n lý vi ệ c hi ể n th ị và k ế t h ợp đồ h ọ a 2D và 3D  LibWebCore - Android dùng l ạ i webkit engine cho vi ệ c render trình duy ệ t m ặ c đị nh c ủ a HDH Android browser và cho d ạng web nhúng (nhƣ HTML nhúng)  SGL - 2D engine  3D libraries - Thƣ việ n 3D d ự a trên OpenGL ES 1 0 API, có nâng c ấp tăng tố c "hardware 3D acceleration"  FreeType - render bitmap và vector font  SQLite - qu ả n lý database c ủ a ứ ng d ụ ng  Android Runtime H ệ điề u hành Android tích h ợ p s ẳ n m ộ t t ậ p h ợp các thƣ việ n c ố t lõi cung c ấ p h ầ u h ế t các ch ức năng có sẵn trong các thƣ việ n lõi c ủ a ngôn ng ữ l ậ p trình Java M ọ i ứ ng d ụ ng c ủ a Android ch ạ y trên m ộ t ti ế n trình c ủ a riêng nó cùng v ớ i m ộ t th ể hi ệ n c ủ a máy ả o Dalvik Máy ả o Dalvik th ự c t ế là m ộ t bi ế n th ể c ủ a máy ảo Java đƣợ c s ửa đổ i, b ổ sung các công ngh ệ đặc trƣng củ a thi ế t b ị di động Nó đƣợ c xây d ự ng v ớ i m ục đích Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 5 làm cho các thi ế t b ị di độ ng có th ể ch ạ y nhi ề u máy ả o m ộ t cách hi ệ u qu ả Trƣớ c khi th ự c thi, b ấ t kì ứ ng d ụng Android nào cũng đƣợ c convert thành file th ự c thi v ới đị nh d ạng nén Dalvik Executable ( dex) Đị nh d ạng này đƣợ c thi ế t k ế để phù h ợ p v ớ i các thi ế t b ị h ạ n ch ế v ề b ộ nh ớ cũng nhƣ tốc độ x ử lý Ngoài ra máy ả o Dalvik s ử d ụ ng b ộ nhân Linux để cung c ấp các tính năng nhƣ thread, low -level memory management  Linux Kernel H ệ điều hành Android đƣợ c xây d ự ng trên b ộ nhân Linux 2 6 cho nh ữ ng d ị ch v ụ h ệ th ố ng c ốt lõi nhƣ: security, memory management, process managemen t, network stack, driver model B ộ nhân này làm nhi ệ m v ụ nhƣ mộ t l ớ p trung gian k ế t n ố i ph ầ n c ứ ng thi ế t b ị và ph ầ n ứ ng d ụ ng 1 1 2 Phát triển ứng dụng trên Android  Ngôn ngữ lập trình Ngôn ng ữ l ậ p trình chính th ứ c c ủ a Android là Java M ặ c dù các ứ ng d ụ ng trên And roid đƣợ c phát tri ể n d ự a trên n ề n t ảng Java, nhƣng Android không hỗ tr ợ J2ME và J2SE, là hai ngôn ng ữ l ậ p trình ph ổ d ụ ng cho các thi ế t b ị di độ ng D ự a trên máy ả o Java c ủa Sun, Google đã tinh chỉ nh và phát tri ể n nên máy ả o Dalvik để biên d ị ch mã Java v ớ i t ốc độ biên d ịch nhanh hơn và nhẹ hơn Đế n phiên b ản Froyo 2 2, Android đã hỗ tr ợ Just-in- time Compiler (JIT) làm tăng tốc độ biên d ị ch Java lên g ấ p 2-5 l ầ n so v ớ i các phiên b ản trƣớ c  Các phiên bản Android Hình 1 2 – Các phiên b ả n Android Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 6 Có nhiều phiên bản Android, phổ biến nhất là 2 3 3 Khi làm Game chú ý tới phiên bản hỗ trợ để chạy đƣợc trên nhiều phiên bản nhất  Lập trình trên Android L ậ p trình trên Android c ầ n các công c ụ sau: - Android SDK: bao g ồ m các công c ụ riêng l ẻ nhƣ: debugger, các thƣ vi ệ n, trình gi ả l ập điệ n tho ạ i Android, các tài li ệ u h ỗ tr ợ và code m ẫ u Hi ệ n Android cung c ấ p b ộ công c ụ này trên nhi ề u n ề n t ả ng h ệ điề u hành khác nhau (Windows, Linux, Mac, ) yêu c ầ u cài s ẵ n Java Development Kit, Apache Ant và Python2 2 tr ở lên - IDE (Môi trƣờ ng phát tri ể n tích h ợ p): Eclipse phiên b ả n 3 2 tr ở lên v ớ i plugin ADT (Android Development Tools), Netbeans Tuy nhiên, ngƣờ i l ậ p trình có th ể s ử d ụ ng b ấ t k ỳ m ộ t IDE hay trình so ạ n th ảo văn bản nào để vi ế t code Java và XML r ồ i biên d ị ch nên ứ ng d ụ ng hoàn ch ỉ nh b ằ ng cách s ử d ụ ng dòng l ệ nh (command lines) Eclipse h ỗ tr ợ t ốt hơn Netbeans nên đƣợ c s ử d ụ ng làm công c ụ phát tri ể n chính th ứ c M ộ t s ố công c ụ h ỗ tr ợ l ậ p trình Android tiêu bi ể u: SQLite Manager: Là m ộ t add-on c ủ a Firefox giúp qu ả n lí SQLite c ủ a Android DroidDraw: Giúp thi ế t k ế file XML giao di ệ n ứ ng d ụ ng Balsamiq Mockups và AdobeFireworks: Giúp nhanh chóng phác th ảo ý tƣở ng và giao di ện sơ bộ c ủ a ứ ng d ụ ng StarUML: V ẽ các lƣợc đồ UML h ỗ tr ợ phân tích thi ế t k ế  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ành phầ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 khi tất cả các thành phần trong ứng dụng kết thúc Activity là một thành phần cho ph ép ngƣời dùng giao tiếp với ứng dụng Tuy nhiên khi tất cả các Activity kết thú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ăng tƣơ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ác với ngƣời dùng nhƣ là Service, Broadcast receiver Có nghĩa là thành phần không tƣơng tác với ngƣời dùng có thể chạy nền dƣới sự giám sát của hệ điều hành cho đến khi ngƣời dùng tự tắt chúng Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 7 Hình 1 3 – Lược đồ vòng đờ i c ủ a m ộ t activity D ựa vào lƣợc đồ trên, th ấy đƣợ c có 3 vòng l ặ p quan tr ọ ng sau: Vòng đờ i toàn di ệ n (Entire Lifetime): Di ễ n ra t ừ l ầ n g ọi onCreate(Bundle) đầ u tiên và kéo dài t ớ i l ầ n g ọ i onDestroy() cu ố i cùng Vòn g đờ i th ấy đƣợ c (Visible Lifetime): Di ễ n ra t ừ khi g ọ i onStart() và kéo dài t ớ i khi g ọ i onStop() Ở vòng đời này, activity đƣợ c hi ể n th ị trên màn hình nhƣng có thế không tƣơng tác với ngƣờ i dùng ở trên n ền Các phƣơng thứ c onStart() và onStop() có th ể đƣợ c g ọ i nhi ề u l ầ n Vòng đờ i trên n ề n (Foreground Lifetime): Di ễ n ra t ừ khi g ọ i onResume() và kéo dài t ớ i khi g ọ i onPause() Ở vòng đờ i này, activity n ằ m trên m ọ i activity khác và tƣơng tác đƣợ c v ới ngƣờ i dùng M ộ t activity có th ể liên t ục thay đổ i gi ữ a 2 tr ạ ng thái paused và resumed, ch ẳ ng h ạ n khi thi ế t b ị sleep hay m ộ t intent m ới đƣợc đƣa tớ i Các hàm th ự c thi c ủa vòng đờ i Activity: OnCreate(): hàm này đƣợ c g ọ i khi l ớp Activity đƣợ c g ọi, dùng để thi ế t l ậ p giao di ệ n ứ ng d ụ ng và th ực thi các thao tác cơ bả n Onstart(): hàm này đƣợ c g ọ i khi l ớ p ứ ng d ụ ng xu ấ t hi ệ n trên màn hình Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 8 OnResume(): hàm đƣợ c g ọ i ngay sau Onstart ho ặc khi ngƣờ i dùng focus ứ ng d ụ ng, hàm này s ẽ đƣa ứ ng d ụ ng lên top màn hình OnPause(): hàm đƣợ c g ọ i khi h ệ th ống đang focus đế n m ột activity trƣớc đó OnStop: hàm đƣợ c g ọ i khi m ột Activity khác đƣợ c kh ởi độ ng và focus OnRestart(): đƣợ c g ọ i khi ứ ng d ụ ng chuy ể n sang onStop(), nhƣng muố n kh ở i độ ng l ạ i b ằ ng onStart() 1 1 3 Giới thiệu cảm biến gia tốc C ả m bi ế n gia t ố c n ằ m trong nhóm c ả m bi ế n chuy ển độ ng c ủa điệ n tho ạ i, là m ộ t thi ế t b ị ph ầ n c ứng đƣợ c h ệ điề u hành h ỗ tr ợ m ộ t b ộ API ti ế p xúc v ớ i ph ầ n m ề m, g ọ i là các API c ủ a c ả m bi ế n gia t ố c, thông qua b ộ giao di ệ n này, ph ầ n m ề m có th ể xác đị nh đƣợc điệ n tho ại đang nghiêng theo trụ c nào (bao g ồ m c ả gia t ố c) Hình 1 4 – Các tr ụ c c ủ a c ả m bi ế n gia t ốc trên điệ n tho ạ i 1 2 TỔNG QUAN VỀ GAME 1 2 1 Khái niệm Game - video 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ện ngƣờ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ị ( video )  Lịch sử Game Và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ình vẫ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 Phần lớn các game máy tính thời kỳ đầu đều chủ yếu sử dụng nội bộ trong các máy tính lớn ở các trƣờng đại học và các phòng thí nghiệm và đƣợc phát triển bởi các cá nhân nhƣ một sở thích Một số Game phổ biến ở thời kì này: Mouse in the Maze (Chuột trong mê cung), HAX Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 9 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 Một số game phổ biến cho thời kì này:Pong của Atari Thành công thƣơng mại của trò Pong dẫn đến rất nhiều các công ty phát triển các bản sao của trò này trên các hệ máy của mình - sự sinh sôi của ngành công nghiệp game Hình 1 5 – Game Tenis for Two - 1958 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: P hiêu lƣu hành động ( The Legend of Zelda (1986)), game mê cung (PacMan), Game nhập vai ( Dragon Warrior (1986)), game đua xe (Turbo(1981))… Game trên máy tính: Năm 1984, thị trƣờng game máy tính tiếp quản luôn thị trƣờng game trên console do cơn khủng hoảng vào năm đó; máy tính cung cấp kh ả năng chơi game gần bằng với console và từ khi có kiểu thiết kế đơn giản của máy tính gia dụng cho phép phần mềm game có thể hoàn toàn điều khiển phần cứng sau khi bật máy (gần nhƣ game trở thành hệ điều hành ), điều này khiến cho việc khởi động game trên máy tính dễ dàng nhƣ trên console Game online thời kì đầu: Hệ thống bảng thông tin (bulletin board systems) quay số (dial- up) đã khá phổ biến vào thập niên 80, và đôi khi đƣợc sử dụng để chơi game online Một số Game online đầu tiên: Snipes ( chim dẽ giun hay chim mỏ nhát ), một game chơi mạng dạng chữ ra đời năm 1983 để kiểm tra một loại máy tính cá nhân mới của IBM và tính tuơng thích với hệ thống mạng của nó 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òn lớn hơn cả cuộc khủng hoảng năm 1977 Đây là sự sụp đổ của cả ng ành công nghiệp (không giống nhƣ năm 1977 là chỉ sụp đổ cho hệ arcade và một phần console), cũng nhƣ là sự Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 10 phá sản của một vài hãng chuyên sản xuất máy tính gia dụng và hệ console cho thị trƣờng Bắc Mỹ vào cuối năm 1983 và 1984 Nó mang đến cá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 tr ong ngành công nghiệp game Đó là thập kỷ của sự biến đổi từ đồ họa raster sang đồ họa 3 chiều và đã dẫn đến sự ra đời của một vài thể loại game bao gồ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ực tuyế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ào việc phát hành Game Boy Game trên arcade, mặc dù vẫn còn tƣơng đối phổ biến vào đầu thập kỷ, bắt đầu suy giảm do sự phổ biến dần của các hệ console gia dụng 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: Điện thoại di động trở thành một thiết bị chơi game từ khi Nokia cài đặt Snake (rắn săn mồi) vào các dòng điện thoại của mình từ năm 1998 Game trên điện thoại di động thời kỳ đầu khá hạn chế ở một số điểm nhƣ: kích thƣớc khiêm tốn của màn hình, tất cả đều là các game đơn sắc và sự giới hạn bộ nhớ cũng nhƣ sức mạnh xử lý, chƣa tính đến việc tiêu thụ pin nhanh chóng khi chơi Các hệ máy console thế hệ thứ năm ra đời: Năm 1994, ba máy console mới đƣợc giới thiệu tai Nhật Bản: Sega Saturn , PlayStation , và PC-FX Resident Evil là game hay nhất nhất trên PlayStation thời kì này Những năm 2000 cho đến nay: Hiện tƣợng ngƣời dùng tạo ra các bản chỉnh sửa (hay "mod") cho các game dần trở thành một xu hƣớng quanh thời điểm chuyển giao giữa thiên niên kỷ Game trên điện thoại di động: 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 2003, và vƣợt qua 5 tỷ USD trong năm 2007, chiếm 1/4 doanh thu của tất cả video game trên thị trƣờng Các điện thoại đời mới hơn đƣợc bán ra thị trƣờng nhƣ cá c smartphone N-Series của Nokia trong năm 2005 và iPhone của Apple trong nă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ăm 2008, Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 11 Nokia không định phục hồi lại thuơ ng hiệu N - Gage nhƣng lạ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 S ony và gần cuối năm 2001, tập đoàn Microsoft , đƣợ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ƣờng console 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ọi thời đại Game trực tuyến tăng trƣởng một các mạnh mẽ: Khi việc kết nối Internet bă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 casual (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, 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ở Tựa game lớn nhất trong thể loại này là The Sims của hãng Maxis, mà trở thành game máy tính bán chạy nhất mọi thời đại, vƣợt qua cả tựa game phiêu lƣu kinh điển Myst , cùng với rất nhiều các game khác, mà đƣợc gắn liền vào các trang mạng xã hội nhƣ Myspace hay Facebook 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 đời App Store cho iPhone và iPod Touch trong mùa hè năm 2008  Các thể loại game Game cốt lõi : Nhìn chung, thảo luận về game trên báo chí và chính trị chỉ xoay quanh các tựa game của game cốt lõi; bao gồm video game phát triển để chơi trên máy tính cá nhân, hệ console và hệ cầm tay Game cốt lõi thƣờng đƣợ c xác định bởi cƣờng độ của chúng, chiều sâu của lối chơi hay quy mô của sản phẩm liên quan đến quá trình Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 12 tạo game và có thể bao gồm các game trên một phổ rộng các thể loại Ví dụ dòng game Bit Trip trên hệ thống mạng WiiWare , dòng Fallout cho PC và hệ console hay LittleBigPlanet cho hệ PS3, tất cả đều nằm trong phân loại game cốt lõi Game cốt lõi đôi khi đƣợc xem xét ở góc độ lối chơi khá phức tạp và thƣờng không hấp dẫn các ngƣời chơi thông thƣờng (ngƣời chơi game để giải trí) Game casual : Casual games (game đơn giản) có cái tên này do tính dễ dàng tiếp cận của chún g, lối chơi dễ hiểu và nắm bắt quy luật chơi nhanh chóng Thêm vào đó, các game casual thƣờng hỗ trợ khả năng tham gia vào và thoát ra nhanh theo yêu cầu Game casual là một thể loại tồn tại rất lâu trƣớc khi thuật ngữ xuất hiện và bao gồm cả các game nhƣ Solitaire hay Minesweeper mà thƣờng thấy cài đặt sẵn trong các hệ điều hành Windows của Microsoft Thí dụ cho thể loại này nhƣ là tìm vật ẩn, câu đố, quản lý thời gian, xếp hình - tetris hoặc rất nhiều các thể loại game chiến thuật chạy trên nền flash khác Game casual thƣờng đƣợc bán qua các dịch vụ bán lẻ trên mạng nhƣ PopCap , Zylom và GameHouse hoặc cung cấp miễn phí qua các trang web nhƣ Newgrounds hay AddictingGames Game nghiêm túc : Game nghiêm túc là những game đƣợc thiết kế chủ yếu để truyền đạt thông tin hoặc để học hỏi kinh nghiệm nào đó cho ngƣời chơi Một số game nghiêm túc thậm chí không đủ điều kiện là một video game theo ý nghĩa truyền thống của thuật ngữ Ng oài ra, phần mềm giáo dục không hẳn đã thuộc thể loại game này (ví dụ phần mềm hƣớng dẫn đánh máy, học ngoại ngữ, v v ) và sự khác biệt chính sẽ dƣờng nhƣ dựa trên mục đích chính của tiêu đề cũng nhƣ độ tuổi mà phần mềm hƣớng tới Nhƣ với các thể loại khác, sự mô tả này giống một hƣớng dẫn hơn là một quy định Game nghiêm túc là các game thƣờng làm ra với các mục đích ngoài giải trí đơn thuần Và nhƣ game nòng cốt và game casual, game nghiêm túc có thể bao gồm hoạt động ở bất kỳ thể loại nào , mặc dù một số thể loại nhƣ game luyện tập, game giáo dục, hay game tuyên truyền có thể có mặt nhiều hơn trong nhóm game nghiêm túc do mục đích chuyên môn của chúng Có những game thƣờng đƣợc thiết kế để chơi bởi một chuyên gia nhƣ một phần của một công việc cụ thể hoặc để tăng cƣờng kỹ năng Chúng cũng có thể đƣợc tạo ra để truyền đạt nhận thức chính trị xã hội trên một phuơng diện cụ thể Một trong những game nghiêm túc có thuơng hiệu lâu đời nhất có lẽ là Microsoft Flight Simulator (game mô phỏng lái máy bay) lần đầu phát hành vào năm 1982 với tên này Quân đội Mỹ sử dụng game mô phỏng thục tế ảo này để làm bài Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 13 tập huấn luyện, cùng với đó là sự phát triể n một số lớn các phần hỗ trợ bay khác nhƣ lái máy bay cảnh sát, máy bay chiến đấu, máy bay y tế  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 Đối với những game lớn giành cho PC và các hệ máy console thì C++ và D irectX hoặc OpenGL là lựa chọn tốt nhất vì đòi hỏi phải can thiệp sâu bên trong hệ thố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… Một số công cụ xây dƣng game chuyên nghiệp: 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 đời nhiề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 g ame 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ốt lõ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ính toá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 game khác nhau Với công nghệ tạo game engine càng phát triển và trở nên thân thiện hơ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ủa game engine, kể cả điện thoại di động (ví dụ: iPhone , điện thoại Android ) và trình duyệt web (nhƣ Shockwave , Flash , WebVision của Trinigy , 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 cao nhƣ 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ác ngôn ngữ lập trình cấp cao trở nên không đáng kể, trong Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 14 khi việc tăng năng suấ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ển game engine 1 2 2 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ác Button, Label, Text View… Lập trình Game đòi hòi ngƣời lập trình phải vẽ nên tất cả giao diện mà không sử dụng các API đƣợc hệ điều hành hỗ trợ Lập trình Game thƣờng tuân theo một Frame work, tạo ra một bộ Interface để Implement v ào Game cụ thể và tùy biến theo yêu cầu, dƣới Hệ điều hà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 m ộ t 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 ựng Game hơn là thao tác cấ p th ấ p 1 2 3 Cấu trúc một ứng dụng Game  Vòng lặp Game Một vòng lặp Game sẽ thực hiện tất cả các thao tác, tiến trình trong Game cho đến khi kết thúc, nhƣ dựng hình, update frame, xử lý âm thanh, xử lý tƣơng tác, va chạm… Gọi là vòng lặp Game (Main Loop) While(!userQuit) Kiểm_tra_sự_kiện_nhập(); Chạy_AI(); Di_chuyển_đối_tƣợng(); Xử_lý_va_chạm( ); Vẽ_đối_tƣợng_lên_màn_hình(); Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 15 Phát_âm_thanh(); end While Trong vòng lặp chính sẽ tùy vào tƣơng tác của ngƣời chơi để chuyển đến các trạng thái tƣơng ứng với các màn hình riêng nội tại Có các trạng thái phổ biến nhƣ: 1) start up 2) licenses 3) introductory movie 4) front end 1 game options 2 sound options 3 video options 5) loading screen 6) main game 1 introduction 2 game play  game modes 3 pause options 7) end game movie 8) credits 9) shut down Game đƣợc dựng hình dựa vào thời gian qua mỗi chu kỳ của Main Loop, thời gian này có thể không giống nhau vì phụ thuộc vào thời gian xử lý tƣơng tác trong mỗi vòng lặp, đó là một đại lƣợng gọi là deltaTime Main loop sẽ dựa vào deltaTime để tính số frame cần render Ta đề cập đến khái niệm khung hình trên giây  FPS (Frame per second) – Khung hình trên giây FPS - Số lần vẽ khung hình trên một giây FPS chậm sẽ làm cho ngƣời chơi không có cảm giác thật, ảnh hƣởng đến sự tƣơng tác của ngƣời dùng với trò chơi Các yếu tố làm cho FPS chậm:  Hình v ẽ có kích thƣ ớ c l ớ n  Tính toán trong game nhi ề u  L ỗ i c ủ a th i ế t b ị Cách cải thiện FPS:  T ố i ƣu hóa tính toán và các đi ề u ki ệ n th ự c hi ệ n trong Game: Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 16 o S ử d ụ ng ít vòng l ặ p o Dùng phép toán d ị ch chuy ể n bit thay cho phép nhân và phép chia o Khai báo các bi ế n và phƣơng pháp ở d ạ ng static  Dùng Backbuffer: Không v ẽ t ừ ng Spri te ra màn hình mà v ẽ các Sprite ra m ộ t ả nh sau đó v ẽ ả nh đó ra màn hình  Bộ nhớ Là kích thƣớc của bộ nhớ có thể dùng để chạy chƣơng trình Game của thiết bị Các yếu tố ảnh hƣởng đến bộ nhớ:  File ả nh dùng trong Game  Âm thanh dùng trong Game  Các file text, m ả ng ch ứ a text trong Game 1 2 4 Công cụ lập trình Game 1 SDK (Debuger, Simulator, Device Manager…): SDK đƣợ c cung c ấ p b ở i Google, v ớ i các trình h ỗ tr ợ Debuger, máy ả o mô ph ỏ ng, trình qu ả n lý thi ế t b ị… Cung c ấp các thƣ viện cũng nhƣ cậ p nh ậ t các công c ụ c ủ a SDK v ớ i phiên b ả n m ớ i nh ấ t 2 IDE (Compiler, Editor, Library…): IDE đƣợ c s ử d ụ ng là Eclipse phiên b ả n 3 2 tr ở lên, là m ộ t trình biên d ịch code Java có cài thêm ADT Plugin để tích h ợ p SDK vào IDE Eclipse đƣợ c cung c ấ p b ởi Oracle, đƣợ c phát tri ể n và nâng c ấ p đều đặ n, phù h ợ p v ớ i các phiên b ản Android đƣợ c ra liên t ụ c Ngoài ra Eclipse còn h ỗ tr ợ tìm l ỗi code, điề n s ẵn, đị nh d ạng code… 3 Các ph ầ n m ề m v ề đồ h ọa để t ạ o hình ả nh cho game: Photoshop, 3D max , Blender 4 Các ph ầ n m ề m t ạ o, x ử lý âm thanh, video, hi ệ u ứng… 5 Các Engine, tùy ch ọ n có th ể có ho ặc không Đa số các Game đề u s ử d ụ ng engine để gi ả m th ờ i gian th ự c hi ệ n d ự án  Cài đặt môi trƣờng lập trình cho Android Cài đặt môi trường Java SDK và IDE cho Android đều có các module chạy trên Java Đầu tiên cần cài môi trƣờng Java vào máy tính Tải bản mới nhất của JRE tại: http://www oracle com/ technetwork/java/javase/downloads/index html Hoặc tải JDK để cài đặt đầy đủ công cụ phát triển Java, sau khi cài JDK sẽ tự cài JRE Cài đặt Eclipse Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 17 Hiện có nhiều IDE có khả năng hỗ trợ lập trình Android Eclipse hỗ trợ đầy đủ nhất nên đƣợc lựa chọn làm IDE chính phát triển ứng dụng Android Để cài đặt, đầu tiên tải phiên bản Eclipse Classic hoặc Eclipse IDE for Java and Report Developer tại trang chủ: http://www eclipse org/downloads/ Sau khi tải về, giải nén để chạy Eclipse Cài đặt Android SDK Vào trang http://developer android com/sdk/index html download Android SDK, tùy thuộc vào hệ điều hành mà chọn bàn SDK cho phù hợp với máy Sau khi cài đặt, từ Eclipse chọn Windows  Android SDK and AVD Manager  Available Packages để chọn các gói API cần cập nhật cho SDK Chọn Install Selected Chờ tiến trình tự động tải và cài đặt Cài ADT cho Eclipse Cách 1: Cài trực tiếp từ internet: Chạyt Eclipse, Help > Install New Software Click Add Dòng Location copy đƣờng link ADT (lấy tại địa chỉ: http://dl-ssl google com/android/eclipse/ ) Click OK, Next Finish Sau khi cài xong restart Eclipse Cách 2: Thay vì cài trực tiếp cài từ internet thì down file ADT về máy (không giải nén) Tại bƣớc add vào Location thay vì copy link vào thì nhấn chọn Archive chọn tới file ADT down về Lưu ý: tùy từng Eclipse, tùy phiên bản 32 bit hay 64 bit thì các đường dẫn có thể khác nhau Kết luận : Chƣơng 1 trình bày những hiểu biết cần thiết về Game và lập trình Game trên A ndroid cũng nhƣ hiểu biết tổng quan về Android Sau khi thu thập đƣợc tài liệu và có những kiến thức cần thiết, các hiểu biết về c ô ng cụ và cách sử dụng công cụ, sinh viên có thể tiến hành Phân tích thiết kế một ý tƣởng Game Nội dung đƣợc trình bày trong Chƣơng 2 Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 18 2 CHƢƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 2 1 GIỚI THIỆU GAME Game “ MY BALL ” là một game tƣơng tác với ngƣời sử dụng thông qua cảm biến gia tốc của thiết bị di động để điều khiển một viên bi lăn trên mặt phẳng, lấy vật phẩm cần thiết, vƣợt các chƣớng ngại vật đến đích trong thời gian qui định, với thời gian và chƣớng ngại vật tăng dần theo cấp độ game Tại mỗi màn chơi, vị trí các chƣớng ngại vật và vật phẩm đƣợc tạo ngẫu nhiên, chƣớng ngại vật màn sau nhiều hơn màn trƣớc, thời gian cũng tăng lên tƣơng ứng, nếu ngƣời chơi lấy đƣợc vật phẩm cần thiết và đến đích trƣớc khi hết thời gian thì sẽ thắng và qua màn tiếp theo, nếu va chạm phải chƣớng ngại vật thì trò chơi sẽ kết thúc Thắng mỗi màn chơi, ngƣời chơi sẽ đƣợc tính điểm Một số vật phẩm trong Game s ẽ giúp tăng điểm số của ngƣời chơi Điểm đƣợc lƣu vào một danh sách mà ngƣời chơi có thể xem lại Mục đích của việc tính điểm là để ngƣời chơi có thể cố gắng hơn, dành nhiều điểm hơn lần trƣớc (thời gian còn lại càng nhiều thì điểm càng cao) Trƣớc khi đi vào thiết kế Game, cần thiết kế một Framework thực hiện các công việc ở mức thấp, sử dụng các API xây dựng các phƣơng thức để phần thiết kế Game chỉ tập trung và phát triển Game mà không quan tâm nhiều đến các công việc ở mức thấp hơn 2 2 THIẾT KẾ FRAMEWORK Các modules cần phải có để xây dựng một game :  Window management (qu ả n lý c ử a s ổ , ti ế ng trình ): Qu ả n lý các tác v ụ nhƣ kh ở i t ạo (create), đóng (close), tạ m d ừ ng (paused), ch ạ y l ạ i (resume) ứ ng d ụng Input (đầ u vào): Qu ả n lý, theo dõi các thao tác c ủa ngƣờ i s ử d ụng để nh ậ n d ữ li ệu đầ u vào  File I/O (đọc ghi file): Cho phép đọc ghi file trên đĩa  Graphics (Đồ h ọ a): X ử lý đồ h ọ a, t ả i các tài nguyên và v ẽ lên màn hình  Audio (Âm thanh): T ả i, x ử lý ti ếng trình chơi âm thanh trong Game  Game Framework: K ế t h ợ p nh ững điề u trên v ớ i nhau, cung c ấ p m ộ t n ề n t ả ng d ễ s ử d ụng hơn để vi ế t Game Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 19 2 2 1 Window management Với các phần mềm không phải là Game, giao diện đƣợc xây dựng bằng các API hỗ trợ từ hệ điều hành nhƣ tạo ra các nút bấm, các nhãn Trong Game phải tự xây dựng tất cả các giao diện Yêu cầu thêm nhiệm vụ của trình quản lý cửa sổ Trình quản lý cửa sổ sẽ nhận tƣơng tác từ ngƣời chơi, xác định tƣơng tác đó là gì, từ đó biến đổi giao diện Game theo yêu cầu, theo dõi các sự kiện, thay đổi kích thƣớc màn hình Ba phƣơng thức liên quan của một ứng dụng Android mà Game cần trình quản lý cửa sổ theo dõi là: onCreate() : Gọi 1 lần duy nhất khi khởi động ứng dụng onPause() : Gọi khi ứng dụng bị tạm dừng onResume() : Gọi khi ứng dụng đƣợc gọi trở lại từ dạng chạy nền 2 2 2 Input Trên hệ điều hành Android, có ba phƣơng thức nhận tín hiệu đầu vào chính: Chạm màn hình, nhấn phím và cảm biến gia tốc Ứng dụng sẽ nhận tƣơng tác của ngƣời chơi qua các sự kiện, có hai hình thức nhận sự kiện: - Nh ậ n tín hi ệ u ở th ời điể m hi ệ n t ạ i: Hình th ứ c áp d ụ ng v ớ i c ả m bi ế n gia t ố c, ch ỉ nh ậ n giá tr ị tƣơng tác tạ i th ời điể m hi ệ n t ạ i - Nh ậ n tín hi ệ u theo s ự ki ệ n: Các s ự ki ện đƣợc lƣu lạ i vào m ột hàng đợ i, ch ờ l ấ y ra x ử lý tu ầ n t ự , áp d ụ ng v ớ i s ự ki ệ n nh ậ p li ệ u, b ấ m phím, ch ạ m vào màn hình Hình thức chạm vào màn hình có 3 sự kiện: - Touch down: X ảy ra khi ngƣờ i dùng nh ấ n xu ố ng - Touch up: X ảy ra khi ngƣờ i dùng nh ấ c tay lên kh ỏi điể m ch ạm, luôn đi sau Touch down - Touch Drag: X ảy ra khi ngƣờ i dùng di chuy ển điể m ch ạ m trên màn hình Hình thức nhấn phím có 2 sự kiện - Key down: X ảy ra khi phím đƣợ c nh ấ n - Key up: X ả y ra khi ng ừ ng nh ấn phím, luôn đi sau Key down Hình th ứ c c ả m bi ế n gia t ố c luôn phát tín hi ệ u theo s ự thay đổi hƣớ ng c ủ a thi ế t b ị Interface Input đƣợ c thi ế t k ế v ớ i các l ớp và phƣơng thứ c: public interface Input { public static class KeyEvent {} Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 20 public static class TouchEvent {} public boolean isKeyPressed( int keyCode); public boolean isTouchDown( int pointer); public int getTouchX( int pointer); public int getTouchY( int pointer); public float getAccelX(); public float getAccelY(); public float getAccelZ(); public List getKeyEvents(); public List getTouchEvents(); } class KeyEvent: Một thể hiện của một sự kiện nhấn phím class TouchEvent: Một thể hiện của một sự kiện chạm vào màn hình boolean isKeyPressed( int keyCode): Theo dõi phím có keyCode có đƣợc nhấn không boolean isTouchDown( int pointer): Theo dõi sự kiện chạm có đang diễn ra hay không int getTouchX( int pointer): Lấy tọa độ x của điểm chạm int getTouchY( int poin ter): Lấy tọa độ y của điểm chạm float getAccelX(): Nhận giá trị cảm biến gia tốc theo trục X float getAccelY(): Nhận giá trị cảm biến gia tốc theo trục Y float getAccelZ(): Nhận giá trị cảm biến gia tốc theo trục Z List getKeyEvents(): Danh sách sự kiện nhấn phím List getTouchEvents(): Danh sách sự kiện chạm màn hình 2 2 3 File I/O Thực hiện việc đọc và ghi file, đọc file nhị phân (file ảnh, âm thanh) từ thƣ viện tài nguyên Game (trong Android gọi là Asset) Việc đọc và ghi sử dụng thƣ viện InputStream và OutputStream của Java File I/O có 3 phƣơng thức: Đọc dữ liệu từ Asset của Android: public InputStream readAsset(String fileName) throws IOException; Đọc file: public InputStream readFile(String fileName) throws IOException; Ghi file: Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 21 public OutputStream writeFile(String fileName) throws IOException; Việc đọc và ghi file thƣờng có thể xảy ra lỗi nên sử dụng một ngoại lệ kiểm soát lỗi 2 2 4 Audio Phát âm thanh trong Game đƣợc chia làm 2 cách thực hiện: - Phát m ộ t b ả n nh ạ c, th ời gian chơi nhạ c dài: nh ạ c n ề n - Phát m ộ t ti ếng độ ng, ng ắ n, nhanh: ti ế ng click, ti ế ng va ch ạm… Với âm thanh dài, Game cần tải hết vào bộ nhớ, sau đó chơi đoạn âm thanh với một process (tiến trình) riêng, tiến trình sẽ kết thúc khi Game đƣợc kết thúc hoặc tắt bởi mã lập trình sẵn Quản lý tiến trình chơi nhạc bằng các phƣơng thức: Play, pause, stop Với âm thanh ngắn, dung lƣợng tƣơng đối nhẹ, mỗi lần cần phát âm thanh có thể tải lại file từ đĩa Framework sẽ gồm các Interface: Audio, Music, Sound để quản lý âm thanh 2 2 4 1 Interface Audio public interface Audio { public Music newMusic(String filename); public Sound newSound(String filename); } Hai phƣơng thức trên để tạo mới một tiến trình chơi nhạc và âm thanh 2 2 4 2 Interface Music Với Interface này, Game cần các phƣơng thức để phát, dừng, tạm dừng, thiết lập phát lặp lại, âm lƣợng, kiểm tra trạng thái tiến trình, hủy tiến trình Interface đƣợc xây dựng với các phƣơng thức nhƣ sau: void play(): Phát âm thanh void stop() : Dừng phát âm thanh void pause() : Tạm dừng phát âm thanh void setLooping( boolean looping) : Thiết lập âm thanh phát lặp lại void setVolume( float volume) : Thiết lập âm lƣợng boolean isPlaying() : Kiểm tra tiến trình có đang chơi nhạc hay không boolean isStopped() : Kiểm tra tiến trình chơi nhạc đã dừng hay chƣa boolean isLooping() : Kiểm tra tiến trình có lặp lại không public void dispose() : Hủy tiến trình, giải phóng bộ nhớ Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 22 2 2 4 3 Interface Sound Với âm thanh đơn, cần 2 phƣơng thức là phát âm thanh với âm lƣợng truyền vào và hủy âm thanh void play( float volume); void dispose(); Khi cần tải âm thanh vào Game, phƣơng thức newMusic và newSound sẽ lấy tên file đƣợc truyền vào và đọc file từ đĩa File đƣợc lấy từ hệ thống thƣ viện tài nguyên Game trong Android (Asset) 2 2 5 Graphics Để định nghĩa Interface Graphics, cần nắm rõ một số hiểu biết liên quan: - Raster - Lƣớ i hi ể n th ị - Pixel - Điể m ả nh - Framebuffers – b ộ đệ m khung hình - Image Format – đị nh d ạ ng hình ả nh Raster : là một lƣới hiển thị hình ảnh, một mảng 2 chiều có hữu hạn chiều dài và chiều rộng, mỗi ô lƣới sẽ chứa một số lƣợng các điểm ảnh đƣợc hiển thị Gọi là số Pixel trên hàng, và trên cột Pixel : là một điểm ảnh trên màn hình, đơn vị hiển thị nhỏ nhất Có 2 thuộc tính là địa chỉ trên lƣới hiển thị và màu sắc Địa chỉ của Pixel đƣợc tính dựa trên tọa độ x, y của lƣới, x là trục ngang, y là trục dọc tính từ góc trên, bên trái của màn hình (0,0) Frame buffers: Tiến trình đồ họa truy cập một bộ nhớ đặc biệt gọi là bộ nhớ video (VRAM) VRAM là mảng 1 chiều đƣợc dùng để lƣu trữ các điểm ảnh sẽ hiển thị trên màn hình, h iển thị một hình ảnh hoàn chỉnh Trong thời gian một khung hình đang đƣợc vẽ lên màn hình, VRAM đã đƣợc chuẩn bị để tải khung hình tiếp theo vào Hệ tọa độ trong Game Thay vì tọa độ thông thƣờng, đƣợc tính từ gốc (0,0) với trục y đi lên, trục x nằm ngang Tọa độ trong Game sử dụng trục y đi xuống, do phải đọc từ đầu bộ nhớ VRAM (0,0) Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 23 Hình 2 1 – Lướ i hi ể n th ị và VRAM Góc trên cùng, bên trái của hình ảnh đƣợc đƣa vào VRAM trƣớc, nên khi lấy ra cũng phải lấy từ đầu mảng Lấy điểm ảnh từ trái sang, từ trên xuống Image Format: Định dạng hình ảnh chất lƣợng tốt nhất là RGB888 tƣơng ứng là R(màu đỏ), G(màu xanh lá), B (Màu xanh da trời) pha trộn cho màu của điểm ảnh đó, 888 là số bit cho mỗi điểm ảnh Một điểm ảnh sẽ có 8+8+8 = 24 bit Hình ảnh sẽ có kích th ƣớc lớn, vì vậy trong Game sử dụng định dạng ảnh nén là JPEG và PNG có định dạng thấp hơn Khi tải hình ảnh vào bộ nhớ, Game sẽ sử dụng API cung cấp bởi hệ điều hành để thay đổi định dạng ảnh Ảnh có định dạng RGB sẽ không thể hiện đƣợc hình ảnh trong suốt (transparent), định dạng này đƣợc sử dụng để tải ảnh nền hoặc những hình ảnh phía dƣới Để tải ảnh có thể hiện đƣợc phần hình ảnh trong suốt phải sử dụng định dạng ARGB Với A là giá trị alpha, thể hiện mức độ trong suốt của hình ảnh Hình 2 2 – So sánh RGB và ARGB Khi tải vào Game, hình ảnh cần nhẹ hơn nên sử dụng định dạng ARGB4444 cho mỗi điểm ảnh  4+4+4+4 = 16 bit, và RGB565  5+6+5 = 16 bit (không có giá trị alpha) cho ảnh nền Với những thông tin trên, ta thiết kế Interface Graphics thực hiện các công việc sau:  T ả i ả nh t ừ đĩa vào bộ nh ớ và lƣu trữ để s ử d ụ ng v ề sau Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 24  T ẩ y frame buffer b ằ ng 1 màu s ắ c b ấ t k ỳ , có th ể t ẩ y h ế t các nh ữ ng gì còn sót l ạ i t ừ frame trƣớ c  Thi ế t l ậ p màu s ắc và đị a ch ỉ cho m ột điể m ả nh  V ẽ hình tròn, hình ch ữ nh ật, đƣờ ng th ẳ ng  V ẽ hoàn toàn 1 hình ả nh ho ặ c 1 ph ầ n hình ả nh ra m ộ t v ị trí xác đị nh trên frame  L ấy kích thƣớ c c ủ a frame Graphics đƣợc thiết kế nhƣ sau: public interface Graphics { public static enum PixmapFormat { ARGB8888 , ARGB4444 , RGB565 } public Pixmap newPixmap(String fileName, PixmapFormat format); public void clear( int color); public void drawPixel( int x, int y, int color); public void drawPixmap(Pixmap pixmap, int x, int y, int srcX, int srcY, int srcWidth, int srcHeight); public void drawPixmap(Pixmap pixmap, int x, int y); public int getWidth(); public int getHeight(); } Kiểu liệt kê các định dạng ảnh sẽ sử dụng: static enum PixmapFormat { ARGB8888 , ARGB4444 , RGB565 }; Phƣơng thức khởi tạo 1 ảnh với tên file và định dạng: Pixmap newPixmap(String fileName, PixmapFormat format); Tẩy frame với màu truyền vào: void clear( int color); Vẽ một điểm ảnh: void drawPixel( int x, int y, int color); Vẽ một ảnh với tọa độ x, y Tọa độ scrX, scrY bắt đầu trên ảnh nguồn, chiều rộng, chiều dài cần lấy: void drawPixmap(Pixmap pixmap, int x, int y, int srcX, int srcY, int srcWidth, int srcHeight); Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 25 Vẽ một ảnh với tọa độ x, y nguyên: void drawPixmap(Pixmap pixmap, int x, int y); Lấy chiều rộng frame: int getWidth(); Lấy chiều dài frame: int getHeight(); Hình ảnh cần một thể hiện để dễ dàng tƣơng tác, ta thiết kế 1 Interface Pixmap cho phép lấy kích thƣớc dài, rộng, định dạng, hủy ảnh khỏi bộ nhớ public interface Pixmap { public int getWidth(); public int getHeight(); public PixmapFormat getFormat(); public void dispose(); } 2 2 6 Game Framework Những nhiệm vụ của Game Framework để viết Game:  Chia Game thành nhi ề u màn hình khác nhau v ớ i các tác v ụ : Nh ậ n d ữ li ệ u, thao tác nh ậ p t ừ user, áp d ụ ng d ữ li ệ u vào tr ạ ng thái c ủ a màn hình, và v ẽ t ấ t c ả lên màn hình M ộ t s ố màn hình không c ầ n d ữ li ệ u t ừ user, nhƣng sẽ t ự độ ng chuy ể n qua màn hình khác (ví d ụ : màn hình Loading, Splash)  Qu ả n lý vi ệ c chuy ển đổ i màn hình, cung c ấp phƣơng pháp chuyể n qua màn hình khác, h ủ y màn hình hi ệ n t ạ i và v ẽ màn hình m ớ i  Cho phép Game có quy ề n truy c ập đế n các modules khác (File I/O, Graphics, audio) T ừ đó có thể t ả i các tài nguyên, l ấ y thông tin nh ậ p vào, chơi âm thanh, vẽ lên màn hình…  Game ph ải đƣợc tƣơng tác nhƣ vớ i th ế gi ớ i th ực, có nghĩa là mọ i th ứ s ẽ đƣợ c chuy ển độ ng và c ậ p nh ậ t liên t ụ c Màn hình Game luôn có kh ả năng c ậ p nh ậ t tr ạ ng thái và v ẽ chính nó trong m ộ t vòng l ặ p g ọ i mà MainLoop, vòng l ặ p s ẽ h ủ y khi thoát Game, m ỗ i vòng l ặp đƣợ c g ọ i là 1 khung S ố vòng l ặ p trên giây – FPS (Frame per second) mà chúng ta có th ể tính toán g ọ i là frame rate (t ốc độ khung hình) Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 26  Theo dõi th ờ i gian trôi qua t ừ lúc b ắt đầ u v ẽ khung hình, đƣợ c s ử d ụng để v ẽ t ừng khung hình độ c l ậ p, g ọi là đại lƣợ ng deltaTime  Theo dõi tr ạ ng thái c ủ a c ử a s ổ Game nhƣ mộ t ứ ng d ụng bình thƣờ ng (khi nào b ị paused hay resume) để x ử lý s ự ki ệ n liên quan  Thi ế t l ậ p c ử a s ổ và t ạ o giao di ện ngƣờ i dùng s ẽ nh ận tƣơng tác từ ngƣờ i s ử d ụng Sau đó vẽ chúng lên và nh ậ n s ự ki ệ n t ừ đó Main Loop (vòng lặp chính của Game) có dạng nhƣ sau: while ( !userQuit() ) { float deltaTime = currentTime() – lastFrameTime; lastFrameTime = currentTime(); currentScreen updateState(input, deltaTime); currentScreen present(graphics, audio, deltaTime); } cleanupResources(); Game sẽ thoát khi nhận yêu cầu thoát của ngƣời chơi Mọi vòng lặp Game đều tính một lƣợng thời gian deltaTime là thời gian trôi qua giữa các vòng lặp Lấy thời gian hiện tại frame đang chạy trừ đi thời gian kết thúc frame trƣớc ta đƣợc thời gian deltaTime Nhận sự kiện nhập và deltaTime để cập nhật trạng thái Game: updateState(input, deltaTime); Nh ận đối tƣợng Graphics và Audio để trình diễn, xuất ra phần cứng thiết bị: present(graphics, audio, deltaTime); Khi ngƣời chơi thoát Game, tiến hành giải phóng tài nguyên: cleanupResources(); Game Framework cần một giao diện để thực hiện các việc sau:  Thi ế t l ậ p c ử a s ổ và thành ph ầ n giao di ện ngƣời dùng (UI) và đăng ký vớ i h ệ điề u hành, t ừ đó có thể nh ậ n s ự ki ệ n nh ậ p  Kh ởi độ ng Main Loop  Theo dõi màn hình hi ệ n t ạ i và th ự c hi ệ n update, present chính nó trong m ỗ i vòng l ặ p Xây dựng Game “MY BALL” trên hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang 27  Chuy ển đổ i các s ự ki ệ n c ử a s ổ (resume và pause) t ừ ti ế n trình giao di ệ n ngƣời dùng để Main Loop có th ể chuy ể n chúng t ừ màn hình hi ệ n t ạ i, có th ể thay đổ i tr ạ ng thái cho phù h ợ p  Điề u khi ể n truy c ập đến các modules đã thiế t k ế : File I/O, Graphics, Input, Audio Sau khi thiết kế Game Framework, chúng ta chỉ quan tâm đến xây dựng Game mà không cần bận tâm vòng lặp chính đang làm gì, khi nào chúng ta cần đồng bộ với tiếng trình giao diện ngƣời dùng hay không Chỉ cần quan tâm đến thực thi giao diện Game với sự trợ giúp từ các modules level thấp và các cảnh báo từ sự kiện cửa sổ Chúng ta thiết kế một Interface Game, ẩn hết các chi tiết phức tạp và một lớp abstract Screen để extends tất cả các màn hình public interface Game { public Input getInput(); public FileIO getFileIO(); public Graphics getGraphics(); public Audio getAudio(); public void setScreen(Screen screen); public Screen getCurrentScreen(); public Screen getStartScreen(); public void close(); } T

BỘ THÔNG TIN VÀ TRUYỀN THÔNG TRƢỜNG CAO ĐẲNG CNTT HỮU NGHỊ VIỆT - HÀN KHOA KHOA HỌC MÁY TÍNH ĐỒ ÁN TỐT NGHIỆP NGÀNH: KHOA HỌC MÁY TÍNH ĐỀ TÀI: XÂY DỰNG GAME “MY BALL” TRÊN HỆ ĐIỀU HÀNH ANDROID Sinh viên thực hiện: Ông Thị Hà My Lớp: CCLT04B Niên khóa: 2010 – 2013 GVHD: ThS Nguyễn Thanh Cẩm Đà Nẵng – 05/2013 LỜI CẢM ƠN Sau trình nghiên cứu xây dựng, đồ án tốt nghiệp “Xây dựng game My Ball hệ điều hành Android” hoàn thành Để đạt đƣơc kết này, với nỗ lực, em nhận đƣợc nhiều quan tâm, giúp đỡ ủng hộ từ thầy cô, gia đình bạn bè Em xin chân thành cảm ơn thầy cô Khoa Khoa học máy tính thầy giáo Trƣờng Cao đẳng Công nghệ thông tin hữu nghị Việt-Hàn tận tình giảng dạy, trang bị cho em kiến thức quý báu ba năm học tập trƣờng Đặc biệt, em xin chân thành cảm ơn thầy Nguyễn Thanh Cẩm tận tình hƣớng dẫn, giúp đỡ, bảo đóng góp ý kiến cho em suốt thời gian thực đề tài Con xin nói lên lịng biết ơn sâu sắc bố, mẹ chăm sóc, ni dạy nên ngƣời ln bên lúc khó khăn Xin cảm ơn anh chị bạn bè ủng hộ, giúp đỡ động viên em thời gian học tập nghiên cứu Đồ án đƣợc hoàn thành phạm vi khả cho phép, nên chắn không tránh khỏi thiếu sót Em kính mong nhận đƣợc cảm thơng tận tình bảo q thầy cô bạn Ngày 20 tháng 05 năm 2013 Sinh viên thực Ông Thị Hà My Trang i MỤC LỤC Trang LỜI CẢM ƠN i MỤC LỤC ii DANH MỤC HÌNH ẢNH iv PHẦN I: MỞ ĐẦU PHẦN II: NỘI DUNG CHƢƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID 1.1.1 Kiến trúc Android 1.1.2 Phát triển ứng dụng Android 1.1.3 Giới thiệu cảm biến gia tốc 1.2 TỔNG QUAN VỀ GAME 1.2.1 Khái niệm Game - video game 1.2.2 Lý thuyết lập trình Game .14 1.2.3 Cấu trúc ứng dụng Game 14 1.2.4 Công cụ lập trình Game 16 CHƢƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 18 2.1 GIỚI THIỆU GAME 18 2.2 THIẾT KẾ FRAMEWORK 18 2.2.1 Window management 19 2.2.2 Input 19 2.2.3 File I/O .20 2.2.4 Audio 21 2.2.4.1 Interface Audio .21 2.2.4.2 Interface Music 21 2.2.4.3 Interface Sound 22 2.2.5 Graphics 22 2.2.6 Game Framework 25 2.2.7 Thực thi Game Framework 28 2.3 PHÂN TÍCH GAME 31 2.4 THIẾT KẾ GAME 35 Trang ii 2.4.1 Lớp main (MB) 35 2.4.2 Lớp tài nguyên (Assets) .35 2.4.3 Lớp tải tài nguyên (LoadResource) 35 2.4.4 Lớp Màn hình (MainScr) 36 2.4.5 Lớp Màn hình hƣớng dẫn (HelpScr) 37 2.4.6 Lớp Màn hình giới thiệu (AboutScr) .37 2.4.7 Lớp Màn hình xem điểm (HighScoreScr) 38 2.4.8 Lớp Màn hình chơi Game (GameScr) .38 2.4.9 Lớp Thiết lập (Settings) 39 2.4.10 Lớp viên bi (Ball) 40 2.4.11 Lớp hố đen đích (Hole) 41 2.4.12 Lớp vật phẩm (Items) .41 2.4.13 Lớp Bản đồ (Page) 42 2.5 THIẾT KẾ THUẬT TOÁN .44 2.5.1 Thuật toán xác định va chạm viên bi đối tƣợng 44 2.5.2 Thuật toán xác định va chạm với biên đặt lại vị trí 45 2.5.3 Thuật tốn cập nhật vị trí viên bi .46 2.5.4 Thuật toán tạo đồ 47 2.5.5 Thuật tốn vịng lặp (MainLoop) 50 2.6 THIẾT KẾ GIAO DIỆN 51 CHƢƠNG 3: CHƢƠNG TRÌNH DEMO 53 3.1 CÀI ĐẶT, CHẠY CHỨC NĂNG CỦA CHƢƠNG TRÌNH DEMO 53 3.2 HƢỚNG DẪN SỬ DỤNG 53 PHẦN III: ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN 545 TÀI LIỆU THAM KHẢO 56 Trang iii DANH MỤC HÌNH ẢNH Hình 1.1 Mơ hình kiến trức tảng Android Hình 1.2 Các phiên Android Hình 1.3 Lƣợc đồ vịng đời activity Hình 1.4 Các trục cảm biến gia tốc điện thoại Hình 1.5 Game Tenis for Two - 1958 Hình 2.1 Lƣới hiển thị VRAM 23 Hình 2.2 So sánh RGB ARGB 23 Hình 2.3 Các Interface 29 Hình 2.4 Các lớp thừa kế Interface API Android 30 Hình 2.5 Các lớp cần thiết Game 31 Hình 2.6 Các lớp cần thiết Game 44 Hình 2.7 Minh họa đồ 47 Hình 2.8 Giao diện 51 Hình 2.9 Giao diện giúp đỡ 51 Hình 2.10 Giao diện xem thông tin 51 Hình 2.11 Giao diện chơi game 51 Hình 2.12 Giao diện tạm dừng game 51 Hình 2.13 Giao diện thoát chơi 51 Hình 2.14 Giao diện thắng game 52 Hình 2.15 Giao diện thua game 52 Hình 2.16 Giao diện game 52 Hình 2.17 Giao diện xem điểm 52 Hình 3.1 POP 7F (trái), Galaxy Ace S5380i (giữa) Galaxy Y S5360 (phải) 53 Hình 3.2 Icon game hình thiết bị di động 53 Hình 3.3 Giao diện Game Galaxy Y S5360 54 Hình 3.4 Giao diện Game POP 7F 54 Hình 3.5 Giao diện Game Galaxy Ace S5380i 54 Trang iv Xây dựng Game “MY BALL” hệ điều hành Android PHẦN I: MỞ ĐẦU Lý chọn đề tài Trong xu hƣớng phát triển ngành công nghệ thông tin, làm việc giải trí PC dần đƣợc thay thế, chuyển đổi lên thiết bị di động tính tất yếu ứng dụng di động Hiện nay, hệ điều hành Android thực tạo bão thị trƣờng làm thay đổi hoàn toàn cách phát triển thiết bị di động Ƣu nỗi bật Android hệ mã nguồn mở Android thu hút nhiều nhà phát triển từ khắp nơi Google phân phối miễn phí Android đoạn mã có quyền Các nhà sản xuất thiết bị di động lớn (Samsung, HTC, Motorola… ) chọn Android làm hệ điều hành, số lƣợng ngƣời dùng thiết bị ngày tăng dẫn đến nhu cầu lớn phần mềm Trong đó, nhu cầu sử dụng thiết bị di động để giải trí, chơi Game ngày tăng Mặt khác, với sở thích chơi Game, chơi nhiều Game, em ln muốn tự tạo đƣợc Game Lập trình Game Android hƣớng mới, phải vận dụng nhiều kiến thức công nghệ thơng tin Từ em nâng cao khả tự nghiên cứu vận dụng kiến thức học, nhƣ thỏa mãn đam mê nhƣng theo kịp với xu hƣớng phát triển ngành công nghệ thông tin Mục tiêu nhiệm vụ nghiên cứu  Mục tiêu nghiên cứu: Xây dựng Game “MY BALL” hệ điều hành Android  Nhiệm vụ nghiên cứu: o Thu thâp, đọc tài liệu, nghiên cứu tìm hiểu cách làm việc lập trình tảng Android o Nghiên cứu sử dụng ngôn ngữ Java thƣ viện Android để lập trình Game o Nghiên cứu thuật toán sử dụng Game o Phân tích thiết kế Game o Viết đề cƣơng, báo cáo, cài đặt chƣơng trình Đối tƣợng phạm vi nghiên cứu  Đối tƣợng: Game “MY BALL” hệ điều hành Android SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang Xây dựng Game “MY BALL” hệ điều hành Android  Phạm vi: Một số API thuộc lớp Canvas nhằm đồ họa 2D Android Cảm biến gia tốc, xử lý âm thanh, xử lý đồ họa Game Các thuật toán sử lý va chạm đơn giản không gian 2D Phƣơng pháp nghiên cứu  Đọc tài liệu lập trình Game Android  Tham gia thảo luận, hỏi đáp diễn đàn chun mơn, tham khảo code ví dụ, hƣớng dẫn mạng Internet thuật toán, cách xử lý vấn đề gặp phải  Thực lập trình game, rút kinh nghiệm từ thực tế Dự kiến kết  Game “MY BALL” hệ điều hành Android Ý nghĩa khoa học thực tiễn  Khoa học: Áp dụng kiến thức thuật tốn, ngơn ngữ lập trình Java, thƣ viện Android  Thực tiễn: Sản phẩm trò chơi cho điện thoại chạy Android Nội dung đồ án PHẦN I: Mở đầu PHẦN II: Nội dung CHƢƠNG 1: Cơ sở lý thuyết CHƢƠNG 2: Phân tích, thiết kế hệ thống CHƢƠNG 3: Chƣơng trình demo PHẦN III: Kết luận hƣớng phát triển đề tài SVTH: Ông Thị Hà My – Lớp: CCLT04B Trang Xây dựng Game “MY BALL” hệ điều hành Android PHẦN II: NỘI DUNG CHƢƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID Android hệ điều hành điện thoại di động mã nguồn mở miễn phí cơng ty Google phát triển dựa tảng Linux Bất kỳ hãng sản xuất phần cứng tự sử dụng hệ điều hành Android cho thiết bị mình, miễn thiết bị đáp ứng đƣợc tiêu chuẩn Google đặt (có cảm ứng chạm, GPS, 3G, ) Ra đời tháng 11/2007, hệ điều hành Android trải qua nhiều lần cập nhật, với phiên gần Jelly Bean 4.2.2 Android tảng cho thiết bị di động bao gồm hệ điều hành, midware số ứng dụng chủ đạo Bộ công cụ Android SDK cung cấp công cụ thƣ viên hàm API cần thiết để phát triển ứng dụng cho tảng Android sử dụng ngôn ngữ lập trình java 1.1.1 Kiến trúc Android Hình 1.1 – Mơ hình kiến trúc tảng Android Theo tài liệu đƣợc cung cấp Goolge, kiến trúc Android có thành phần đƣợc đƣợc phần lớp từ cao xuống thấp Lần lƣợt nhƣ sau  Applications Hệ điều hành Android tích hợp sẳn số ứng dụng nhƣ email client, SMS, lịch điện tử, đồ, trình duyệt web, sổ liên lạc số ứng dụng khác Ngồi SVTH: Ơng Thị Hà My – Lớp: CCLT04B Trang Xây dựng Game “MY BALL” hệ điều hành Android tầng tầng chứa ứng dụng đƣợc phát triển ngôn ngữ Java  Application Framework Tầng hệ điều hành Android cung cấp tảng phát triển ứng dụng mở qua cho phép nhà phát triển ứng dụng có khả tạo ứng dụng vô sáng tạo phong phú Các nhà phát triển ứng dụng đƣợc tự sử dụng tính cao cấp thiết bị phần cứng nhƣ: thông tin định vị địa lý, khả chạy dịch vụ dƣới nền, thiết lập đồng hồ báo thức, thêm notification vào status bar hình thiết bị  Libraries Hệ điều hành Android bao gồm tập thƣ viện C/C++ đƣợc sử dụng nhiều thành phần Android system Những tính đƣợc cung cấp cho lập trình viên thơng qua framework Android Dƣới số thƣ viện cốt lõi:  System C library - có nguồn gốc từ hệ thống thƣ viện chuẩn C (libc), điều chỉnh thiết bị nhúng Linux  Media Libraries - mở rộng từ PacketVideo's OpenCORE; thƣ viện hỗ trợ playback recording nhiều định dạng video image phổ biến: MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG  Surface Manager - quản lý việc hiển thị kết hợp đồ họa 2D 3D  LibWebCore - Android dùng lại webkit engine cho việc render trình duyệt mặc định HDH Android browser cho dạng web nhúng (nhƣ HTML nhúng)  SGL - 2D engine  3D libraries - Thƣ viện 3D dựa OpenGL ES 1.0 API, có nâng cấp tăng tốc "hardware 3D acceleration"  FreeType - render bitmap vector font  SQLite - quản lý database ứng dụng  Android Runtime Hệ điều hành Android tích hợp sẳn tập hợp thƣ viện cốt lõi cung cấp hầu hết chức có sẵn thƣ viện lõi ngơn ngữ lập trình Java Mọi ứng dụng Android chạy tiến trình riêng với thể máy ảo Dalvik Máy ảo Dalvik thực tế biến thể máy ảo Java đƣợc sửa đổi, bổ sung công nghệ đặc trƣng thiết bị di động Nó đƣợc xây dựng với mục đích SVTH: Ơng Thị Hà My – Lớp: CCLT04B Trang Xây dựng Game “MY BALL” hệ điều hành Android làm cho thiết bị di động chạy nhiều máy ảo cách hiệu Trƣớc thực thi, ứng dụng Android đƣợc convert thành file thực thi với định dạng nén Dalvik Executable (.dex) Định dạng đƣợc thiết kế để phù hợp với thiết bị hạn chế nhớ nhƣ tốc độ xử lý Ngoài máy ảo Dalvik sử dụng nhân Linux để cung cấp tính nhƣ thread, low-level memory management  Linux Kernel Hệ điều hành Android đƣợc xây dựng nhân Linux 2.6 cho dịch vụ hệ thống cốt lõi nhƣ: security, memory management, process management, network stack, driver model Bộ nhân làm nhiệm vụ nhƣ lớp trung gian kết nối phần cứng thiết bị phần ứng dụng 1.1.2 Phát triển ứng dụng Android  Ngơn ngữ lập trình Ngơn ngữ lập trình thức Android Java Mặc dù ứng dụng Android đƣợc phát triển dựa tảng Java, nhƣng Android không hỗ trợ J2ME J2SE, hai ngôn ngữ lập trình phổ dụng cho thiết bị di động Dựa máy ảo Java Sun, Google tinh chỉnh phát triển nên máy ảo Dalvik để biên dịch mã Java với tốc độ biên dịch nhanh nhẹ Đến phiên Froyo 2.2, Android hỗ trợ Just-in-time Compiler (JIT) làm tăng tốc độ biên dịch Java lên gấp 2-5 lần so với phiên trƣớc  Các phiên Android Hình 1.2 – Các phiên Android Trang SVTH: Ông Thị Hà My – Lớp: CCLT04B

Ngày đăng: 29/02/2024, 07:52

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan