Báo cáo Đề tài - Xây dựng ứng dụng game Fun math trên Android

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC SAO ĐỎ BÁO CÁO ĐỀ TÀI MÔN HỌC LẬP TRÌNH HỆ THỐNG NHÚNG Đề tài: XÂY DỰNG ỨNG DỤNG GAME FUN MATH TRÊN ANDROID Nhóm thực hiện: Sv. Nguyễn Thị Trang Sv. Vũ Thị Thủy Lớp: CNTT - DK04 Hải Dương, tháng 09/2017 LỜI MỞ ĐẦU Hiện nay, toán học được coi là nền tảng của sự phát triển. Hàng triệu người từ các nền văn hóa khác nhau đều nỗ lực trong môn học này. Ở Việt Nam toán học cũng đã thể hiện được vị trí quan trọng kể từ khi đất nước bắt đầu phát triển. Tất cả

doc30 trang | Chia sẻ: huong20 | Ngày: 07/01/2022 | Lượt xem: 366 | Lượt tải: 0download
Tóm tắt tài liệu Báo cáo Đề tài - Xây dựng ứng dụng game Fun math trên Android, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
mọi lĩnh vực đều cần có trình độ toán. Vì đó toán học là một môn rất quan trọng mà chúng ta nên học và rèn luyện hàng ngày đặc biệt là trẻ nhỏ. Khi còn nhỏ, trẻ sẽ dễ dàng tiếp thu toán nhanh nhất để thúc đẩy sự suy tư của trẻ thay vì học thụ động như khi trưởng thành. Độ tuổi này các em có khả năng tự mình tìm ra các quy tắc riêng cho bản thân theo một cách hoàn toàn bản năng. Nhờ đó, trẻ sẽ học nhanh và dễ dàng tiếp thu kiến thức mà giáo viên truyền đạt. Cùng với đó sự phát triển của công nghệ di động đã bùng nổ trong vài năm qua. Các thiết bị cầm tay đã trở nên rất mạnh mẽ và phổ biến. Trong vài năm trở lại đây, hệ điều hành Android ra đời và trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới. Những ưu điểm dễ thấy nhất của Android chính là khả năng tùy biến nhanh chóng, dễ làm quen, ứng dụng hỗ trợ phong phú, tương thích với đa cấu hình phần cứng của các nhà sản xuất. Hầu như tất cả những smartphone sử dụng hệ điều hành Android đều dễ sử dụng, đơn giản tùy biến theo sở thích cá nhân. Với sự phát triển mạnh mẽ như vậy của Android, và lập trình game trên Android, cơ hội cho lập trình viên là rất lớn. Vì vậy, nhóm đã chọn đề tài “Lập trình ứng dụng game Fun Math trên Android”. Trong đề tài này, nhóm sẽ trình bày cái nhìn cơ bản về lập trình game trên Android và demo ứng dụng game trong đó. MỤC LỤC DANH MỤC HÌNH Hình 1.1.Tổng quan kiến trúc Unity 11 Hình 1.2.Khung Inspector 13 Hình 1.3.Giao diện Prefabs 14 Hình 2.1.Tạo project mới 15 Hình 2.2.Giao diện First look 15 Hình 2.3.Giao diện Chọn phép chiếu vuông góc 16 Hình 2.4.Giao diện tạo folder 17 Hình 2.6.Giao diện On Click Button 19 Hình 2.7.Giao diện thanh time 20 Hình 2.8.Thông tin file âm thanh 22 Hình 2.9.Thêm thành phần Audio Source 22 Hình 2.10.Thêm file âm thanh cho thành phần AudioSource 23 Hình 2.11.Giao diện Menu game 23 Hình 2.12.Giao diện game Play 24 Hình 2.13.Giao diện game Over 24 Hình 2.14.Giao diện External Tools 25 Hình 2.15.Giao diện BuildSettings 25 Hình 2.16.Giao diện Inspector 26 Hình 2.17.Giao diện Resolution and presentation 26 Hình 2.18.Giao diện Splash Image 27 Hình 2.19.Giao diện Other setting 27 Hình 2.20.Giao diện Build 28 MỞ ĐẦU 1. Lý do chọn đề tài Hiện nay, toán học được coi là nền tảng của sự phát triển. Hàng triệu người từ các nền văn hóa khác nhau đều nỗ lực trong môn học này. Ở Việt Nam toán học cũng đã thể hiện được vị trí quan trọng kể từ khi đất nước bắt đầu phát triển. Tất cả mọi lĩnh vực đều cần có trình độ toán. Vì đó toán học là một môn rất quan trọng mà chúng ta nên học và rèn luyện hàng ngày đặc biệt là trẻ nhỏ. Khi còn nhỏ, trẻ sẽ dễ dàng tiếp thu toán nhanh nhất để thúc đẩy sự suy tư của trẻ thay vì học thụ động như khi trưởng thành. Độ tuổi này các em có khả năng tự mình tìm ra các quy tắc riêng cho bản thân theo một cách hoàn toàn bản năng. Nhờ đó, trẻ sẽ học nhanh và dễ dàng tiếp thu kiến thức mà giáo viên truyền đạt. Nhận thấy tầm quan trọng đó nhóm em quyết định tìm hiểu và thực hiện đề tài: “Lập trình ứng dụng game Funsmath trên Android”. 2. Mục đích nghiên cứu Việc xây dựng game Funsmath sẽ giúp trẻ ôn tập những phép toán , cải thiện bộ nhớ, phát triển tư duy logic, phát triển tư duy kết hợp. 3. Đối tượng của đề tài Trò chơi phù hợp cho học sinh tiểu học. 4. Phạm vi nhiên cứu - Tìm hiểu kĩ thuật lập trình bằng Unity. - Các phép toán trong bảng cửu chương. 5. Phương pháp nghiên cứu - Nghiên cứu lỹ thuyết - Khảo sát thực tế - Xây dựng chương trình theo mục tiêu đã đặt ra - Phân tích, thiết kế hệ thống chương trình sao cho phù hợp 6. Bố cục đề tài Nội dung đồ án gồm các thành phần sau: MỞ ĐẦU - Chương 1. Cơ sở lý thuyết - Chương 2. Thiết kế ứng dụng KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TÀI LIỆU THAM KHẢO CHƯƠNG 1. CƠ SỞ LÝ THUYẾT 1.1.Tổng quan về Android  Android là một hệ điều hành dựa trên nền tảng Linux ,được chạy trên các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Ban đầu, được phát triển bởi Tổng công ty Android, với nguồn vốn từ Google và sau này được chính Google mua lại vào năm 2005.Năm 2007 android ra mắt  cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần mềm, phần cứng, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn cho các thiết bị di động . Tháng 10 năm 2008 chiếc điện thoại đầu tiên chạy Android được bán trên thị trường. Kiến trúc hệ điều hành Android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux (phiên bản 2.6), tầng Libraries & Android runtime, tầng Application Framework và trên cùng là tầng Application. 1.1.1.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 thực hiện ở mức cấp thấp. Ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình (process). Tuy được phát triển dựa vào nhân Linux nhưng thực ra nhân Linux đã được nâng cấp và chỉnh sửa rất nhiều để phù hợp với tính chất của những thiết bị cầm tay, như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cầu kết nối mạng không dây. Tầng này có các thành phần chủ yếu: - Display Driver: Điều khiển việc hiển thị lên màn hình cũng như thu nhận những điều khiển của người dùng trên màn hình (di chuyển, cảm ứng). - Camera Driver: Điều khiển hoạt động của camera, nhận luồng dữ liệu từ camera trả về. - Bluetooth Driver: Điều khiển thiết bị thu và phát 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ín hiệu dạng audio thành tín hiệu số và ngược lại. - Binder IPC Driver: Chịu trách nhiệm về việc kết nối và liên lạc với mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông được thực hiện. - M-System Driver: Quản lý việc đọc ghi lên các thiết bị như thẻ nhớ SD, flash - Power Management: Giám sát việc tiêu thụ điện năng. 1.1.2.Tầng Library Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể sử dụng, các thư viện đó được tập hợp thành một số nhóm như: - Thư viện hệ thống (System C library): thư viện dựa trên chuẩn C, được sử dụng chỉ bởi hệ điều hành. - 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ên web, đượ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 - Thư viện SQLite: Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng 1.1.3. 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. Runtime có 2 bộ phận tương tự như mô hình chạy Java trê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ớp như Java IO, Collection, File Access. Thứ hai là một máy ảo Java (Dalvik Virtual Machine). Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của Android không được chạy trên JRE của Sun mà là chạy bằng máy ảo Dalvik do Google phát triển. 1.1.4. Tầng Application Framework Tầng này xây dựng bộ công cụ – các phần tử ở mức cao để các lập trình viên có thể nhanh chóng xây dựng ứng dụng. Nó được viết bằng Java, có khả năng sử dụng chung để tiết kiệm tài nguyên. Đây là một nền tảng mở, điều đó có 2 điều lợi: - Với các hãng điện thoại: Có thể tùy biến để phù hợp với cấu hình điện thoại mà họ sản xuất cũng như để có thể có nhiều mẫu mã, style hợp thị hiếu người dùng. Vì thế nên tuy cùng chung nền tảng Android mà điện thoại của Google có thể khác với Motorola, HTC, T-Mobile, Samsung Với lập trình viên: Cho phép lập trình viên có thể sử dụng các API ở tầng trên mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc. Một tập hợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền, liên lạc giữa các ứng dụng, các thành phần giao diện cấp cao 1.1.5. Tầng Application Đây là tầng ứng dụng giao tiếp với người sử dụng, bao gồm các ứng dụng như: - Các ứng dụng cơ bản, được cài đặt đi liền với hệ diều hành: gọi diện, quản lý danh bạ, duyệt web, nhắn tin, lịch làm việc, đọc email, quay phim chụp ảnh, - Các ứng dụng cài thêm như các trò chơi, từ điển, các phần mềm học tiếng anh. Các chương trình có đặc điểm là: - Viết bằng Java có 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 được dựng lên để phục vụ cho nó. - Android là hệ diề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 chạy cùng một lúc, tuy nhiên với mỗi ứng dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn. - Các ứng dụng được gán số ID của người sử dụng nhằm phân định quyền hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống. - 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 khác, Android cho phép một ứng dụng của bên thứ 3 chạy nền. Các ứng dụng đó chỉ có một hạn chế là không được phép sử dụng quá 5% công suất CPU. Điều đó nhằm tránh độc quyền trong sử dụng CPU. - Ứng dụng không có điểm vào cố định, không có phương thức main để bắt đầu. 1.2. Tổng quan về Game ENGINE 1.2.1.Khái niệm Một Game Engine (hay công cụ tạo Game / động cơ Game) là một phần mềm được viết cho mục đích 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. 1.2.2.Mục đích Game Engine cung cấp một bộ các công cụ phát triển trực quan và có thể tái sử dụng từng thành phần trong đó. Nói chung các bộ công cụ này cung cấp một môi trường phát triển tích hợp được đơn giản hóa. Phát triển ứng dụng nhanh (Rapid Application Development) cho Game theo cách lập trình hướng dữ liệu. Những Game Engine này đôi khi còn được gọi là các "phần mềm trung gian cho Game" (Game Middleware), như ý nghĩa của thuật ngữ, chúng cung cấp một nền tảng phần mềm linh hoạt và dễ dàng sử dụng lại với mọi chức năng cốt lõi cần thiết ngay trong nó để có thể phát triển một ứng dụng Game đồng thời giảm giá thành, độ phức tạp, và kịp thời hạn phát hành - tất cả các yếu tố quan trọng trong ngành công nghiệp Game đầy cạnh tranh. Giống như các phần mềm trung gian khác, Game Engine thường cung cấp một nền tảng trừu tượng hóa, cho phép một Game có thể chạy trên nhiều hệ máy bao gồm các hệ console hoặc máy tính cá nhân với một vài thay đổi (nếu cần) trong mã nguồn của Game đó. Thông thường, phần mềm trung gian cho Game được thiết kế với một nền tảng kiến trúc dựa trên các thành phần khác, cho phép các hệ thống khác nhau trong Engine có thể thay thế hoặc mở rộng với các phần mềm trung gian khác chuyên biệt hơn như là Havok cho hệ thống vật lý trong Game, Miles Sound System cho âm thanh, hay Bink cho các đoạn video. Một số Game Engine chỉ cung cấp khả năng dựng hình (kết xuất) 3D thời gian thực hay một khả năng riêng biệt nào khác thay vì rất nhiều chức năng trong phạm vi rộng mà Game yêu cầu. Loại Engine này thường được gọi là: "Graphics Engine", "Rendering Engine," hay "3D Engine" thay vì thuật ngữ bao quát hơn là "Game Engine”. 1.2.3.Ảo hóa phần cứng (Hardware Abstraction) Thông thường, Engine 3D hay hệ thống kết xuất đồ họa trong Game Engine thường được xây dựng trên một nền tảng giao diện lập trình ứng dụng đồ họa như Direct3D hay OpenGL cung cấp sẵn một hệ ảo hóa cho GPU hay card đồ họa. Thư viện mã nguồn cấp thấp (cấp cơ bản) như DirectX, SDL, và OpenAL (thư viện âm thanh mã nguồn mở) cũng thường được sử dụng trong các Game khi chúng cung cấp khả năng truy cập phần cứng độc lập. 1.2.4.Phần mềm trung gian Một số hãng hiện nay chuyên tập trung vào phát triển các bộ phần mềm gọi là phần mềm trung gian (Middleware). Các nhà phát triển Middleware cố gắng phát triển một bộ phần mềm mạnh mẽ bao gồm hầu hết các yếu tố mà một nhà phát triển Game cần đến để xây dựng một Game. Phần lớn các Middleware cung cấp các cơ sở để phát triển game một cách dễ dàng, như hình ảnh, âm thanh, hệ thống vật lý và chức năng AI. Gamebryo và RenderWare là hai phần mềm trung gian được sử dụng khá rộng rãi. Một số Middleware chỉ làm một chức năng nhưng nó còn hiệu quả hơn cả toàn bộ Engine. Phân loại Game Engine theo mức độ chuyên biệt Roll-your-own Game Engine Mostly-ready Game Engine Point-and-click Game Engine 1.2.5.Kiến trúc tổng quan Engine Unity hỗ trợ cho chúng ta UnityAPI để viết script game. UnityAPI là API lập trình game trong Unity rất mạnh. UnityAPI chứa các đối tượng và phương thức hỗ trợ hầu hết các đối tượng và các loại thành phần trong Unity.Trong một scene thường có nhiều đối tượng game. Mỗi đối tượng này có thể có hoặc không có đoạn script nào gắn lên đó. Nếu muốn gắn script vào đối tượng, ta bắt buộc phải kế thừa class đó từ lớp MonoBehaviour của UnityAPI và tên class phải trùng với tên file script. Mỗi script khi gắn lên đối tượng game đều được đối tượng game xem như một thành phần bên trong và được cấp phát vùng nhớ khi chạy game. Hình 1.1.Tổng quan kiến trúc Unity Bên trong UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game, trong đó có một số lớp quan trọng như : MonoBehaviour: tất cả các script muốn gắn vào một đối tượng game bắt buộc phải kế thừa từ lớp này. GameObject: lớp cha của tất cả các thực thể trong scene. Component: lớp cha của tất cả các thành phần có thể gắn vào đối tượng. Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình. Input: hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc. Camera: giúp lập trình camera. Light: giúp tạo ánh sáng trong game. Projector: giúp chiếu texture lên bề mặt vật thể. ParticleEmitter: hỗ trợ tạo các hiệu ứng particle đẹp mắt. Audio: hỗ trợ lập trình với âm thanh. Animation: chạy chuyển động của mô hình nhân vật. Rigidbody: giúp tạo hiệu ứng vật lý liên quan đến trọng lực như bóng nẩy, lăn. CharacterController: giúp điều khiển nhân vật di chuyển theo độ cao địa hình. Collider: hỗ trợ lập trình va chạm giữa các vật thể. GUI: giúp lập trình giao diện người dùng trên Unity. 1.3.Tổng quan về Unity 1.3.1.Tổng quan về Unity - Unity3D là một môi trường phát triển tích hợp, mạnh mẽ, hỗ trợ thao tác kéo thả, tuỳ biến giao diện nhanh chóng, trực quan. - Cung cấp các công cụ xử lý đồ hoạ, tích hợp sẵn thư viện vật lý, tính toán va chạm... - Hỗ trợ phát triển cả game 2D và 3D. - Hỗ trợ nhiều nền tảng thông dụng như OSX, Linux, Window, Web, iOS, Window Phone 8, Android, PS3, BB - Cộng đồng người dùng, hỗ trợ rộng lớn. - Có phiên bản miễn phí có thể chạy được trên Window và Mac OSX. Unity3D hướng tới người sử dụng chuyên nghiệp và cả nghiệp dư, nên khá dễ để sử dụng. Với ngôn ngữ lập trình bằng C#, JavaScript hoặc BOO. Ngày nay rất nhiều nhà phát triển game lựa chọn Unity3D để phát triển bởi khả năng hỗ trợ đa nền tảng và sự mạnh mẽ tiện dụng của Unity3D. Đến với Unity, các bạn sẽ không cần phải băng khoăn về các vấn đề xử lý, các khái niệm đồ hoạ phức tạp... tất cả đều trở nên dễ dàng và nhanh chóng với Unity. Một số game được phát triển trên Unity như AngryBird, Elegy of War,  1.3.2.Các thành phần trong Unity - Assets: Assets là tài nguyên xây dựng nên một dự án trên Unity. Những tài nguyên có thể là hình ảnh, âm thanh, mô hình 3D, chất liệu (material), texture,  hoặc cả một project hoàn chỉnh. Các asset do chính những nhà phát triển game tạo ra và có thể được download miễn phí hoặc trả phí trên Unity Asset Store. Đây là một trong những tính năng rất hay của Unity. Các asset này sẽ giúp giảm thiểu rất nhiều thời gian cho việc thiết kế và lập trình game. - Scenes: là một cảnh chơi (hoặc một phân đoạn) là những màn chơi riêng biệt, một khu vực trong game hoặc thành phần có trong nội dung của trò chơi (các menu). Các thành phần này được gọi là Scene. Bằng cách tạo ra nhiều Scenes, chúng ta có thể phân phối thời gian và tối ưu tài nguyên, kiểm tra các phân đoạn trong game một cách độc lập. - Game Objects: Khi Asset được sử dụng trong các Scene, Unity định nghĩa đó là Game Object. Đây là một thuật ngữ thông dụng, đặc biệt trong mảng lập trình. Tất cả các Game Object đều chứa ít nhất một thành phần cơ bản là Transform, lưu trữ thông tin về vị trí, góc xoay và tỉ lệ của Game Object. Thành phần Transform có thể được tuỳ biến và chỉnh sửa trong quá trình lập trình. - Components: Components là các thành phần trong game, bổ sung tính năng cho các Game Object. Mỗi Component có chức năng riêng biệt. Đa phần các Component phụ thuộc vào Transform, vì nó lưu trữ các thông số cơ bản của Game Object. Bản chất của Game Object là không có gì cả, các đặc tính và khả năng của Game Object nằm hoàn toàn trong các Component. Do đó chúng ta có thể xây dựng nên bất kỳ Game Object nào trong game mà chúng ta có thể tưởng tượng được. Hình 1.2.Khung Inspector - Scripts: Scripts được Unity xem như một Component. Đây là thành phần thiết yếu trong quá trình phát triển game. Bất kỳ một game nào, dù đơn giản nhất đều cần đến Scripts để tương tác với các thao tác của người chơi, hoặc quản lý các sự kiện để thay đổi chiều hướng của game tương ứng với kịch bản game. Unity cung cấp cho lập trình viên khả năng viết Script bằng các ngôn ngữ: JavaScript, C#. Unity không đòi hỏi lập trình viên phải học cách lập trình trong Unity, nhưng trong nhiều tình huống, chúng ta cần sử dụng Script trong mỗi phần của kịch bản game. Để viết Script, chúng ta có thể làm việc với một trình biên tập Script độc lập của Unity, hoặc làm việc trên Mono Developer được tích hợp vào Unity trong những phiên bản gần đây. Mono Developer là một IDE khá tốt, cung cấp nhiều chức năng tương tự Visual Studio. Mã nguồn viết trên Mono Developer sẽ đươc cập nhật và lưu trữ trong dự án trên Unity. - Prefabs: Prefabs thực chất là Game Object được lưu trữ lại để tái sử dụng. Các Game Object được nhân bản từ một prefab sẽ giống nhau hoàn toàn, ngoại trừ thành phần Transform để phân biệt và quản lý được tốt hơn. Để tạo ra một prefab, ta đơn giản chỉ cần kéo một Game Object vào cửa sổ Project. Hình 1.3.Giao diện Prefabs CHƯƠNG 2. THIẾT KẾ ỨNG DỤNG GAME 2.1.Thiết kế game Ý tưởng thiết kế game Đặc trưng của dòng game mà em đã xây dựng tại 1 thời điểm chỉ có một người chơi, trò chơi sẽ có 1 màn hình chơi, người chơi sẽ chọn đúng hoặc sai thông qua hai nút tên màn hình game. Nếu người chơi chọn sai đán án thì màn hình GameOver sẽ xuất hiên thông báo cho người chơi số điểm. Màn hình sẽ có tính thời gian, vì vậy ta phải nhìn nhanh và tính kỹ trước khi ấn chọn nút đáp án đúng để nâng cao điểm số. 2.1.1.Tạo và cấu hình game 2D * Tạo dự án - Bật Unity lên, vào menu File/New Project Hình 2.1.Tạo project mới Chọn loại project là 2D sau đó gõ tên project xong nhấn Create Project. Kết quả như sau: Hình 2.2.Giao diện First look * Cấu hình dự án 2D  Sau khi tạo dự án xong, ở Hierarchy sẽ có một đối tượng là Main Camera. Chúng ta cần điều chỉnh kiểu hiển thị Scene là 2D . Ở cửa sổ Hierarchy chọn Main Camera. Ở cửa sổ Inspector sẽ hiển thị các thông số của camera, ta sẽ chọn lại giá trị Projection hay phép chiếu là phép chiếu vuông gócthay cho phép chiếu phối cảnh. Hình 2.3.Giao diện Chọn phép chiếu vuông góc Tiếp theo, ở cửa sổ Project, ta sẽ tạo sẵn các thư mục để chứa tất cả các tài nguyên có sử dụng trong game sau này lần lượt là: Animations, Prefabs, Scripts, Sprites, Sounds, Scenes.R-Click vào thư mục Assets ở cửa sổ Project, ta chọn Create, chọn Folder. Hình 2.4.Giao diện tạo folder Kết quả như hình sau: Hình 2.5.Giao diện Assets 2.1.2. Load Back ground Game 2D được xây dựng từ nhiều mô hình 2D được đặt lên không gian 2 chiều sao cho hài hòa với nhau để tạo thành cảnh vật trong game. Do đó việc nạp và hiển thị được mô hình 2D trong game là vô cùng quan trọng. Engine Unity hỗ trợ rất nhiều định dạng mô hình 2D, 3D khác nhau như: PNG, JPG... khi mô hình được load vào project ta sẽ chuyển mô hình sang mục Prefab để có thể tái sử dụng nhiều lần. Unity có hỗ trợ load mô hình bằng cách kéo thả Prefab vào vị trí bất kỳ trong Scene. Tuy nhiên, để linh hoạt hơn thì chúng ta có thể xử lý bằng code. Trước tiên, ta tạo ra một file script và gắn nó vào đối tượng Back ground để đoạn script có thể thức thi. Trong file script này, ta khai báo để khởi tạo Back ground này để có thể đổ màu tự động nên back ground. private Camera cam; void Awake () { cam = gameObject.GetComponent ();} void Start () { RandomColor (); } public void RandomColor () { cam.backgroundColor = new Color(Random.value,Random.value, Random.value);} 2.1.3.Sự kiện thực hiện phép toán Một số xử lý cơ bản: Phép toán có 3 phần phép toán bên trái, bên phải, toán tử của phép toán. Trong file script ta khai báo 3 biến này: private int leftNumber; // so ben trai phep toan private int rightNumber; // so ben phai phep toan private int mathOperator; // toan tu cua phep toan (+,-,*) Khi người chơi bắt đầu vào màn hình chơi thì các biến này sẽ tự động hiển thị các số một các ngẫu nhiên trong khoảng các số đã giới hạn từ 1 đến 9: leftNumber = Random.Range (1, 10); // Random so 1-> 9 rightNumber = Random .Range (1,10); mathOperator = Random.Range(0, 3);//Randomtoán tử 1 trong 3 phéptoán(+,-,*) Phần kết quả của phép toán thì ta có 2 biến kết quả: kết quả đúng của phép toán và kết quả hiển thị ra ngoài màn hình của phép toán: private int trueResult; // dan an dung cua phep toan private int falseResult; // dan an se hien ra man hinh Để thực hiện phép toán ta thực thi trong cấu lệnh như sau: switch (mathOperator) { // + case 0: // ket qua dung trueResult = leftNumber + rightNumber; // ket qua da bi thay doi falseResult = trueResult + Random.Range (-2, 3); Đối với phép toán trừ và nhân ta làm tương tự như với phép cộng ở trên. Để hiển thị phép toán ra ngoài màn hình game, ta sử dụng UI.Text. Trước khi thao tác với UI, ta cầm import thư viện như sau: using UnityEngine.UI; resultText.GetComponent ().text = falseResult.ToString (); Hình 2.6.Giao diện Scene game 2.1.4.Sự kiện kích nút Button Trong sự kiện này ta phải gắn cho button sự kiện On Click.Đâu tiên, ta tạo ra một file script và gắn nó vào đối tượng để đoạn script có thể thức thi lệnh click: public void onTrueButtonClick(){ // ket qua show ra trung voi dap an dung --> D if (trueResult == falseResult) { currentTime = 0; createMath (); // Tao lai phep toan moi } else { // neu tinh sai LoseGame(); } } Hình 2.6.Giao diện On Click Button 2.1.5.Điêm số và hiển thị Điểm số trong game được sử dụng duy nhất trong Fun Math, do game không hỗ trợ các tính năng như Leaderboard (bảng xếp hạng), hay Statistic (bảng thống kê các số liệu người chơi đạt được), nên bạn hoàn toàn có thể lưu trữ điểm số ở GameController.cs. Để hiện thực tổng quát, tôi đặt biến lưu trữ điểm số tại lớp: public static int currentScore Ta thấy, với mỗi button đều có hai trường hợp xảy ra. Nếu currentScore được cập nhật trực tiếp ở mỗi button.Nếu để ý, bạn sẽ thấy với mỗi trường hợp trả lời đúng, hàm createMath sẽ được gọi để tạo thử thách tiếp theo, bất kể là với phím hay button nào. Do đó, tôi thêm đoạn code xử lý currentScore vào hàm  như sau currentScore += 1 Trong trường hợp chọn sai kết quả trò chơi kết thúc điểm số trò chơi sẽ được cập nhật lại trong một file class lưu trữ GameValues.cs. Điểm số sẽ được so sách với nhau để lấy điểm số cao nhất tro trò chơi. GameValues.currentScore = currentScore; int highScore = PlayerPrefs.GetInt ("HIGH_SCORE", 0); if (currentScore > highScore) { PlayerPrefs.SetInt ("HIGH_SCORE", currentScore); 2.1.6.Thời gian trong game Progress Timer trong game được biểu diễn dưới dạng Panle (cả màn hình là một thanh thời gian). Khoảng thời gian đã trôi qua của một level được thể hiện bằng tỉ lệ phần màn hình bị mờ đi. Hình 2.7.Giao diện thanh time Đồng bộ Progress Timer với thời gian thực của game Progress Timer tạo ra ở trên chỉ là hình ảnh hiển thị của thời gian chơi trong game, chúng ta sẽ quản lý thời gian với Script. Để quản lý thời gian, ta sử dụng hai thuộc tính LimitTime và currentTime. CurrentTime là thời gian hiện tại, tính từ thời điểm một level mới được bắt đầu,  LimitTime  chính là thời gian tối đa người chơi có được trong level đó. Ngoài ra, để thay đổi tỉ lệ vẽ của ProgressTimer, tôi sử dụng thêm một thuộc tính UI Text. Khai báo các thuộc tính trên như sau: public GameObject timeProgress;// thanh time trong game private float limitTime; // time gioi han cho moi cau hoi private float currentTime; // thoi gian da troi qua cho moi cau hoi Tại hàm Start, ta thêm phần khai báo giá trị ban đầu cho các thuộc tính trên như sau : limitTime = 7f; // 7s currentTime = 0.0f; // moi vao game la 0s Quản lý thời gian và cập nhật Progress Timer : currentTime += Time.deltaTime; //mi vong lap troi qua if (currentTime > limitTime) { // het thoi gian LoseGame ();} Cuối cùng, để currentTime cập nhật lại từ đầu sau mỗi level, tôi thêm dòng sau vào hàm ButtonOnClick: currentTime = 0; 2.1.7.Âm thanh trong game Âm thanh là yếu tố không kém phần quan trọng trong ứng dụng game. Thật nhàm chán khi một cảnh đánh đánh nhau, bắn nhau hay các hiệu ứng đẹp mắt mà không có âm thanh. Âm thanh 3 chiều sẽ làm cho game thực hơn và sống động hơn. Để chơi được một file âm thanh trong Unity có 2 cách: bằng code hoặc trên giao diện. Dù chọn cách nào thì trước hết chúng ta phải có sẵn các file âm thanh và import vào project. Sau khi import âm thanh vào project, nếu file hợp lệ chúng ta sẽ thấy như hình sau và có thể nhấn nút play để nghe thử. Hình 2.8.Thông tin file âm thanh Trên menu của Unity, vào GameObject à Create Empty. Chọn đối tượng vừa tạo và gắn thành phần “AudioSource” cho đối tượng này. AudioSource là một đối tượng âm thanh. Muốn Play hay Stop, thay đổi cách lặp, tăng giảm volume nhạc thì phải thông qua đối tượng này. Hình 2.9.Thêm thành phần Audio Source Sau khi gắn thành phần âm thanh cho đối tượng vừa tạo, chúng ta dễ dàng chỉnh sửa các thông số và gán file âm thanh cho thành phần AudioSource này. Hình 2.10.Thêm file âm thanh cho thành phần AudioSource 2.2.Xây dựng game Fun Math 2.2.1.Giới thiệu game Đặc trưng của dòng game mà em đã xây dựng tại 1 thời điểm chỉ có một người chơi, trò chơi sẽ có 1 màn hình chơi, người chơi sẽ chọn đúng hoặc sai thông qua hai nút tên màn hình game. Nếu người chơi chọn sai đán án thì màn hình GameOver sẽ xuất hiên thông báo cho người chơi số điểm. Màn hình sẽ có tính thời gian, vì vậy ta phải nhìn nhanh và tính kỹ trước khi ấn chọn nút đáp án đúng để nâng cao điểm số. Hình 2.11.Giao diện Menu game 2.2.2.Quy luật chơi Người chơi sẽ chọn nút đúng hoặc sai cho một đáp án phép toán. Hình 2.12.Giao diện game Play 2.2.3.Điểm số Người chơi sẽ được cộng 1 điểm khi chọn đúng 1 đáp án. Và điểm số cứ cộng dồn theo số màn mà người chơi đạt được, và kết quả cuối cùng sẽ được hiển thị khi người chơi chọn sai đáp án: Hình 2.13.Giao diện game Over 2.2.4.Cách biên dịch ra file APK trong unity Để thực hiện biên dịch được các bạn làm theo các bước sau: * Bước 1: Download: + File android sdk + File JDK tại đây (Với jdk các bạn phải chọn phiên bản đúng với hệ điều hành của chúng ta là 32bit hay là 64bit) Sau khi down load xong các bạn giải nén và trỏ vào thư mục như hình ảnh phía dưới: (Nằm trong Menu>edit>References) Hình 2.14.Giao diện External Tools *Bước 2: Trong giao diện unity vào File>BuildSettings Hình 2.15.Giao diện BuildSettings Bản thân unity chúng ta có thể biên dịch ra rất nhiều môi trường khác nhau, nhưng trong bước này các bạn lưu ý phần android và các phân mà tôi bôi màu đỏ. * Bước 3: Các bạn chọn Player Settings trong phần màu đỏ ở bước 2, sau khi chọn xong xuất hiện cửa sổ bên phía tay phải của các bạn như sau: Hình 2.16.Giao diện Inspector Trong phần hình ảnh của bước 3 này các bạn lưu lý phần tôi đánh dầu là phần 1, 2. Với phần 1 các bạn phải nhập tên công ty hay tập thể cá nhân của các bạn, và 2 các bạn phải đưa kích thước ảnh icon cho game. Bước 4: Các thành phần trong cửa số player setting - Với phần Resolution and presentation Hình 2.17.Giao diện Resolution and presentation Trong hình này phần 1 chúng ta thực hiện chọn chế độ tự động cho phép màn hình game của chúng ta tự động xoay hoặc đặt chế độ thẳng đứng hay nằm ngang. Màn hình thẳng đứng chúng ta để là: Portrait Còn nằm ngang chúng ta để là: Landscape - Với phần Icon Là phần biểu tượng cho game, các bạn có thể thay đổi theo kích thước đối với mỗi độ phân giải của điện thoại. - Với phần Splash Image Hình 2.18.Giao diện Splash Image Là ảnh được hiển thị khi bắt đầu vào game của chúng ta, thông thường thì với bản unity free khi vào game các bạn sẽ thấy xuất hiện ảnh của Unity, còn phiên bản có bản quyền hay crack chúng ta có thể đặt ảnh của chúng ta tại đây khi bắt đầu mở game. - Với phần Other setting Hình 2.19.Giao diện Other setting Các bạn chú ý 3 phần đánh dấu, trong đó 1 chúng ta phải đặt tên identifier cho game chúng ở trên trong đó các bạn không được đặt số ban đầu. Phần 2 là phiên bản game chúng ta biên dịch và phần 3 là thiết bị có hỗ trợ cho chíp ARMv7 hay x86 có thể cài đặt được không, lưu ý khi chúng ta chọn 2 chế độ này thì dung lượng gam

Các file đính kèm theo tài liệu này:

  • docbao_cao_de_tai_xay_dung_ung_dung_game_fun_math_tren_android.doc
Tài liệu liên quan