Tải bản đầy đủ (.doc) (30 trang)

Báo cáo: Xây dựng ứng dụng GAME FUN MATH trên android

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

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
CNTT - DK04

Lớp:

Hải Dương, tháng 09/2017

1


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ả 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 đó.

2


MỤ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
3


2.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

4


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.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

5


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

6


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.

7


- 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
8



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ử
9


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.
10


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.
11


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
12


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
13


đế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

14


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
15


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.

16


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.
17


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<Camera> ();}
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

18


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 > ().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();
}
}

19


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.

20


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

21


Â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.

22


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ố.
23


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:

24


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)

25


×