Mục tiêu chính của Báo cáo Xây dựng ứng dụng GAME FUN MATH trên android là 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.
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC SAO ĐỎ
BÁO CÁO ĐỀ TÀI MÔN HỌCLẬP TRÌNH HỆ THỐNG NHÚNG
Trang 2Cù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ấtthế 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 nhanhchóng, dễ làm quen, ứng dụng hỗ trợ phong phú, tương thích với đa cấu hình phầncứ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ànhAndroid đề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ểnmạ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 đó
Trang 3MỤC LỤC
LỜI MỞ ĐẦU 2
MỤC LỤC 3
DANH MỤC HÌNH 5
MỞ ĐẦU 6
1 Lý do chọn đề tài 6
2 Mục đích nghiên cứu 6
3 Đối tượng của đề tài 6
4 Phạm vi nhiên cứu 6
5 Phương pháp nghiên cứu 6
6 Bố cục đề tài 6
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 7
1.1.Tổng quan về Android 7
1.1.1.Tầng hạt nhân Linux 7
1.1.2.Tầng Library 8
1.1.3 Phần Android runtime 8
1.1.4 Tầng Application Framework 8
1.1.5 Tầng Application 9
1.2 Tổng quan về Game ENGINE 9
1.2.1.Khái niệm 9
1.2.2.Mục đích 9
1.2.3.Ảo hóa phần cứng (Hardware Abstraction) 10
1.2.4.Phần mềm trung gian 10
1.2.5.Kiến trúc tổng quan 11
1.3.Tổng quan về Unity 12
1.3.1.Tổng quan về Unity 12
1.3.2.Các thành phần trong Unity 12
CHƯƠNG 2 THIẾT KẾ ỨNG DỤNG GAME 15
2.1.Thiết kế game 15
2.1.1.Tạo và cấu hình game 2D 15
2.1.2 Load Back ground 17
2.1.3.Sự kiện thực hiện phép toán 18
2.1.4.Sự kiện kích nút Button 19
2.1.5.Điêm số và hiển thị 20
Trang 42.1.6.Thời gian trong game 20
2.1.7.Âm thanh trong game 21
2.2.Xây dựng game Fun Math 23
2.2.1.Giới thiệu game 23
2.2.2.Quy luật chơi 24
2.2.3.Điểm số 24
2.2.4.Cách biên dịch ra file APK trong unity 25
KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 29
1 Cài đặt 29
2 Kết quả 29
2.1 Ưu điểm 29
2.2 Nhược điểm 29
3 Hướng phát triển 29
TÀI LIỆU THAM KHẢO 30
Trang 5DANH 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.8.Thông tin file âm thanh 22
Hình 2.9.Thêm thành phần Audio Source 23
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 24
Hình 2.12.Giao diện game Play 24
Hình 2.13.Giao diện game Over 25
Hình 2.14.Giao diện External Tools 26
Hình 2.15.Giao diện BuildSettings 26
Hình 2.16.Giao diện Inspector 27
Hình 2.17.Giao diện Resolution and presentation 27
Hình 2.18.Giao diện Splash Image 27
Hình 2.19.Giao diện Other setting 28
Trang 6Nhậ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
TÀI LIỆU THAM KHẢO
Trang 7CHƯƠNG 1 CƠ SỞ LÝ THUYẾT1.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ị
Tuy được phát triển dựa vào nhân Linux nhưng thực ra nhân Linux đã đượcnâng cấp và 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ốimạng không dây
- 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ạngaudio thành tín hiệu số và ngược lại
Trang 8- 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 đượcthự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
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ínhthườ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 đượcchạ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ụngchung để 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ớiMotorola, 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
Trang 9API 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ạcgiữ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 đượcdự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ạnchế 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ạnkhi 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 độngkhá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ằmtrá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ứcmain để 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 GameEngine 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ếtxuấ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à kinhphí 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ử
Trang 10dụ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ôitrường phát triển tích hợp được đơn giản hóa Phát triển ứng dụng nhanh (RapidApplication Development) cho Game theo cách lập trình hướng dữ liệu Những GameEngine này đôi khi còn được gọi là các "phần mềm trung gian cho Game" (GameMiddleware), như ý nghĩa của thuật ngữ, chúng cung cấp một nền tảng phần mềm linhhoạ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ạnphát hành - tất cả các yếu tố quan trọng trong ngành công nghiệp Game đầy cạnhtranh Giống như các phần mềm trung gian khác, Game Engine thường cung cấp mộtnề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ồmcá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ồncủa Game đó Thông thường, phần mềm trung gian cho Game được thiết kế với mộtnề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 nhautrong Engine có thể thay thế hoặc mở rộng với các phần mềm trung gian khác chuyênbiệt hơn như là Havok cho hệ thống vật lý trong Game, Miles Sound System cho âmthanh, hay Bink cho các đoạn video Một số Game Engine chỉ cung cấp khả năng dựnghì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ấtnhiều chức năng trong phạm vi rộng mà Game yêu cầu Loại Engine này thường đượcgọ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 Enginethườ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 âmthanh mã nguồn mở) cũng thường được sử dụng trong các Game khi chúng cung cấpkhả 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ểnmộ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 Gamecần đến để xây dựng một Game Phần lớn các Middleware cung cấp các cơ sở để pháttriể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
Trang 11Phâ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ậptrì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àogắ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ầnbê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ớpquan 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.
Trang 12Input: 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
- 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áiniệ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ễnphí 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
Trang 13Unity 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ậptrì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ácComponent 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ựngnê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
Trang 14đế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ịchbả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ậpcủa Unity, hoặc làm việc trên Mono Developer được tích hợp vào Unity trong nhữngphiên bản gần đây Mono Developer là một IDE khá tốt, cung cấp nhiều chức năngtương tự Visual Studio Mã nguồn viết trên Mono Developer sẽ đươc cập nhật và lưutrữ 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
Trang 15CHƯƠ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ườichơ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 hainú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 taphả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