Tải bản đầy đủ (.docx) (41 trang)

Xây dựng game planes sử dụng thư viện engine game libgdx

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.9 MB, 41 trang )

TẬP ĐOÀN ĐIỆN LỰC VIỆT NAM

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN THỰC TẬP TỐT NGHIỆP
XÂY DỰNG GAME PLANES SỬ DỤNG THƯ VIỆN
ENGINE GAME LIBGDX

Giảng viên hướng dẫn: ThS. LÊ HOÀN
Sinh viên thực hiện: PHẠM THỊ HOA
Ngành: CÔNG NGHỆ THÔNG TIN
Chuyên ngành: CÔNG NGHỆ PHẦN MỀM
Lớp: D6 CNTT
Khóa: 2011 - 2016

Hà Nội, tháng 10 năm 2015.


LỜI MỞ ĐẦU
Sự phát triển của thị trường điện thoại di động ngày càng mạnh mẽ cùng với xu
hướng lập trình phần mềm ứng dụng cho các thiết bị di động. Phần mềm, ứng dụng
cho điện thoại di động hiện nay rất đa dạng và phong phú đang phát triển mạnh mẽ và
thay đổi từng ngày. Các hệ điều hành như: J2ME, Android, IOS, Hybrid, … rất phát
triển trên thì trường truyền thông di động.
Trong những năm gần đây, các hệ điều hành di động như IOS, Android,
Windows Phone… ra đời với sự kế thừa những ưu việt của các hệ điều hành ra đời
trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay, đã được phát triển bởi
các nhà công nghệ rất nổi tiếng hiện nay như là Google, Apple, Microsoft. Các hệ điều
hành đã nhanh chóng là đối thủ cạnh tranh mạnh mẽ với các hệ điều hành trước đó và
đang trở thành hệ điều hành di động của tương lai và được nhiều người ưa chuộng.


Ngày nay với sự phát triển nhanh chóng của xã hội, nhu cầu giải trí mọi lúc mọi nơi
trên các thiết bị di động là rất cần thiết, vì vậy em đã chọn đề tài “Xây dựng game
Planes sử dụng thư viện Engine Game Libgdx” với mục đích nghiên cứu, tìm hiểu
về một phương thức lập trình game cho các thiết bị di động để có thể đáp ứng được
nhu cầu giải trí ngày càng cao của xã hội hiện nay.
Tên đề tài: “Xây dựng trò chơi Planes sử dụng thư viện Engine Game Libgdx”.
CẤU TRÚC ĐỀ TÀI
Lời mở đầu: nêu rõ mục đích, ý nghĩa khi chọn đề tài.
Chương 1: Tổng quan về game trên smartphone
o Khảo sát thị trường game
o Phát triển game trên các thiết bị smartphone
Chương 2: Xây dựng game Planes
o Đặt ra bài toán
o Ý tưởng thực hiện
o Phân tích chương trình
o Thuật toán chương trình
Chương 3: Cài đặt và thí nghiệm
o Libgdx và cách tạo một dự án mới với libgdx
o Xây dựng giao diện chương trình
o Giao diện demo chương trình
Kết luận: Kết quả đạt được, hạn chế và phương hướng phát triển.


LỜI CẢM ƠN
Em xin gửi đến Thầy cô ở Khoa Công nghệ thông tin – Trường Đại học Điện Lực
lời biết ơn sâu sắc nhất, những người đã cùng với tri thức và tâm huyết của mình để
truyền đạt vốn kiến thức quý báu cho em trong thời gian học tập tại trường.
Em xin chân thành cám ơn Thạc sĩ Lê Hoàn đã tận tâm hướng dẫn em qua những
buổi trao đổi. Trong thời gian được học tập và thực hành dưới sự hướng dẫn của thầy
và anh, em đã thu được rất nhiều kiến thức bổ ích. Nếu không có những lời hướng dẫn,

dạy bảo của thầy thì em nghĩ đồ án này của em rất khó có thể hoàn thành được.
Xin gửi lời cảm ơn chân thành đến gia đình, bè bạn, đã luôn là nguồn động viên
to lớn, giúp em vượt qua những khó khăn trong suốt quá trình học tập và thực hiện đồ
án.
Mặc dù đã rất cố gắng hoàn thiện đồ án với tất cả sự nỗ lực, tuy nhiên, do bước
đầu đi vào thực tế, tìm hiểu và xây dựng đồ án trong thời gian có hạn, và kiến thức còn
hạn chế, nhiều bỡ ngỡ, nên đồ án “Xây dựng game Planes sử dụng thư viện Engine
Game Libgdx” chắc chắn sẽ không thể tránh khỏi những thiếu sót. Em rất mong nhận
được sự quan tâm, thông cảm và những đóng góp quý báu của các thầy cô và các bạn
để đồ án này ngày càng hoàn thiện hơn.
Một lần nữa, em xin chân thành cám ơn và luôn mong nhận được sự đóng góp
của mọi người.
Sau cùng, em xin kính chúc các thầy cô trong Khoa Công nghệ thông tin dồi dào
sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến
thức cho thế hệ mai sau.
Trân trọng!
Hà Nội, ngày 09 tháng 10 năm 2015
Sinh viên thực hiện

Phạm Thị Hoa


MỤC LỤC
DANH MỤC HÌNH ẢNH
DANH MỤC BẢNG BIỂU
DANH MỤC KÝ HIỆU
DANH MỤC KÝ HIỆU NHỮNG CỤM TỪ VIẾT TẮT


DANH MỤC HÌNH ẢNH


DANH MỤC BẢNG BIỂU

DANH MỤC KÝ HIỆU
PHẦN TỬ

Tác nhân (Actor)

Use-case

Mối quan hệ giữa các
use case

KÝ HIỆU
Biểu đồ USE CASE

Ý NGHĨA

Một người / nhóm người hoặc một
thiết bị hoặc hệ thống tác động hoặc
thao tác đến chương trình.
Biểu diễn một chức năng xác định của
hệ thống
Use case này sử dụng lại chức năng
của use case kia
Use case này kế thừa các chức năng từ
use case kia
Biểu đồ HOẠT ĐỘNG

Hoạt động


Mô tả hoạt động gồm tên hoạt động và
đặc tả của nó

Trạng thái khởi đầu

Bắt đầu trạng thái hoặc hoạt động

Trạng thái kết thúc

Kết thúc trạng thái hoặc hoạt động

Quyết định

Mô tả một lựa chọn điều kiện

Entity class

Mô hình hóa các thông tin lưu trữ lâu
dài trong hệ thống, nó thường độc lập
với các đối tượng khác ở xung quanh


Là một phương thức của một lớp mà
đối tượng lớp 2 gọi thực hiện

Procedure

DANH MỤC CÁC CỤM TỪ VIẾT TẮT


OPENGL ES

Open Graphics Library for
Embedded System

Một phiên bản của OpenGL dành
cho các hệ thống nhúng mà tiêu biểu
là các thiết bị di động

OpenGL

Open Graphics Library

Là một bộ thư viện đồ hoạ, bao gồm
một tập khoảng 200 hàm, dùng trong
các ứng dụng đồ hoạ 2 chiều và 3
chiều.

CNV

Chướng ngại vật

Vật cản: vòm trời, mặt đất,…

API

Application Programming
Interface

Giao diện lập trình ứng dụng


IVM

Java Virtual Machine

Nó tạo ra môi trường máy ảo để thực
thi mã java bytecode, có sẵn trong
nhiều phần cứng và nền tảng phần
mềm (Load code, Verifies code,
Executes code, Provides runtime
enviroment)


7

CHƯƠNG 1

TỔNG QUAN VỀ GAME TRÊN SMARTPHONE

1.1 Khảo sát thị trường game trên thiết bị di động
Ngày nay Công nghiệp giải trí hiện đang rất phát triển trên thế giới, bao gồm các
thành phần cơ bản như: Game, âm nhạc, thời trang, chương trình truyền hình, điện
ảnh, Gameshow, truyền thông, tổ chức live show,... Các mảng nằm trong ngành giải trí
không chỉ mang tính giải trí mà còn mang nhiều giá trị về văn hóa, lối sống, phong tục
và con người của từng vùng miền, đồng thời quảng bá hình ảnh của đất nước Việt Nam
tới bè bạn khắp nơi trên thế giới.
Có thể nói một trong những ngành giải trí mang lại nhiều lợi nhuận nhất đó là
ngành Game. Game là lĩnh vực giải trí tương tác quan trọng hàng đầu trong ngành
công nghiệp nội dung số. Doanh thu toàn cầu từ ngành này tăng trưởng nhanh chóng
từ 7 tỷ USD (1994) lên 41.9 tỷ USD (2007) và dự đoán sẽ đạt 68 tỷ USD (2012). Với

tốc độ tăng trưởng bình quân 9% một năm, Game đã trở thành ngành có tốc độ phát
triển nhanh nhất trong lĩnh vực giải trí. Trong đó, Mỹ chiếm 40.42% thị phần, Anh
12.45% và Nhật 11.87%. Năm 2008, ngành Game ở Mỹ giá trị khoảng 22 tỷ USD
vượt qua ngành công nghiệp âm nhạc (10 tỷ USD) và ngành công nghiệp phim ảnh
(9,5 tỷ USD), thu hút hàng triệu lao động là các chuyên gia phát triển, phân phối và
marketing Game.
Việt Nam là thị trường Game lớn nhất trong khu vực Đông Nam Á với hơn 20
nhà phát hành Game trên cả nước. Doanh thu các năm gần đây liên tục tăng trưởng với
mức trung bình 400 triệu USD/năm, chiếm 70% doanh thu của ngành nội dung số. Có
mức tăng trưởng ấn tượng, nhưng ngành công nghiệp Game ở Việt Nam chỉ mới dừng
lại ở mức phân phối phát hành và gia công các tựa Game nước ngoài.
Một vài năm gần đây, các Studio được lập nên nhằm phát triển sản xuất Game
thuần Việt. Tính đến giữa tháng 6 năm 2011, số lượng Game do Việt Nam sản xuất
đang đưa vào triển khai trên thị trường có Thuận Thiên Kiếm (VNG), SQUAD, G3,
Showbiz (VTC Studio) mới đây nhất là Jay Online (FGame) Tranh Hùng (SunSoft),
Game offline có 7754 – một tựa Game rất thành công lấy đề tài chiến dịch Điện Biên
Phủ.
1.2 Lập trình game
Trò chơi Flappy Bird làm mưa làm gió trong thời gian gần đây, kèm với thông tin
tác giả game – một chàng trai người Việt kiếm được tiền tỷ/ngày nhờ nó, đã khiến
nghề viết ứng dụng điện thoại (viết app) được nhiều người quan tâm hơn bao giờ hết.
Trò chơi Flappy Bird làm mưa làm gió trong thời gian gần đây, kèm với thông tin
tác giả game – một chàng trai người Việt kiếm được tiền tỷ/ngày nhờ nó, đã khiến
nghề viết ứng dụng điện thoại (viết app) được nhiều người quan tâm hơn bao giờ hết.


8
Thực ra, nghề viết app đã “hot” từ rất lâu trong giới lập trình. Khi mà thị trường
smart phone bùng nổ trong những năm gần đây, các “chợ” ứng dụng như: Apple Store,
Android Market, Ovi Store,… mọc lên với vô số ứng dụng và hàng tỷ lượt download,

nghề này đã được rất nhiều lập trình viên, đặc biệt là các bạn trẻ theo đuổi.

Hình 1.: Game Flappy Bird

1.3 Sức hút của nghề lập trình game
Nghề lập trình game là nghề của đam mê và sáng tạo. Với các bạn trẻ yêu thích
trò chơi, công nghệ và mỹ thuật, nghề lập trình viên game là mảnh đất “vàng” để phát
triển các ý tưởng.
Công việc của một lập trình viên game gồm quản lý dự án, phát triển ý tưởng,
thiết kế kịch bản trò chơi, màn chơi, lập trình, vẽ đồ họa 2D, 3D và… chơi thử để tìm
lỗi! Mỗi khâu đều đòi hỏi ở lập trình viên niềm đam mê với thế giới trò chơi và luôn
trong trạng thái muốn sáng tạo những điều mới mẻ. “Làm game phải chơi game để tìm
cảm hứng sáng tạo. Không “giữ lửa” được trong nghề này thì không thể tồn tại lâu
được”, một game developer chia sẻ.
Môi trường làm việc hiện đại cũng là điểm cuốn hút của ngành nghề này đối
với giới trẻ. Dạo quanh các game studio của các công ty như FPT online, Gameloft
VN, GlassEgg, Sáng Tạo, VNG…, các bạn trẻ có thể bị “choáng” vì bàn làm việc của
mỗi người có thể gồm 2 màn hình, hai, ba chiếc di động và nhiều thiết bị hiện đại
khác. Nhưng quan trọng nhất là triển vọng nghề nghiệp của lập trình viên game là rất
cao.
Tại Texas, Mỹ, theo thống kê của “The Texas Tribune”, lương trong ngành Mô
phỏng và Lập trình Game từ 1.000 đến trên 40.000 USD/tháng. Game và nội dung
thông tin số là ngành công nghiệp tiềm năng không chỉ trên thế giới mà cả tại Việt
Nam. Lương lập trình viên game dao động từ 7 đến 15 triệu/tháng, đó là chưa kể nhiều


9
công ty thưởng lương tháng 13, thưởng thành tích và doanh thu sản phẩm khá cao. Các
công ty game Việt Nam liên tục tuyển người nhưng vẫn thường xuyên rơi vào tình
trạng “khát nhân lực” do nhu cầu cao nhưng số lượng đáp ứng yêu cầu công việc lại

thấp.
Game engine là gì? Nếu như chúng ta xem 1 game là 1 căn nhà, thì game engine
là một trung tâm cung cấp vật liệu xây dựng, trang thiết bị để xây dựng ngôi nhà đó.
Việc của chúng ta chỉ là thiết kế, lắp ghép chúng lại thôi. Nhờ có game engine mà việc
làm game trở nên đơn giản và ít chi phí hơn. Một số game engine nổi bật hiện nay
như: Cry Engine, Unreal Engine, Source Engine, Id Tech Engine, IW Engine, Unity
Engine, Dead Engine….
1.4 Phát triển game trên các thiết bị smartphone
Thị trường game di động gần đây đang phát triển một cách nhanh chóng và
thường được so sánh với các tên tuổi lớn trên thị trường máy chơi game cầm tay
(console) như Xbox One hay PlayStation 4.

Hình 1.: Game trên thiết bị cầm tay


10
Trên thực tế, game di động là một nền tảng thân thiện hơn với tính linh hoạt cao.
Đây cũng là nền tảng có thể được chia sẻ trên nhiều thiết bị khác nhau vì các nhà phát
triển games di động phát hành sản phẩm trên cả 2 hệ điều hành Android, iOS và trên
các máy chơi game di động như Nintendo 3DS, 2DS, DSi hay PS Vita và PSP.
Một nghiên cứu mới từ App Annie cho thấy thị trường game di động đang phát
triển vượt bậc trong khi thị trường console game lại có vẻ hạ nhiệt.
1.4.1 Android là nền tảng dẫn đầu trên tablet và smartphone
Thị phần Android tăng 8,4% trong quý 2 năm 2013, đạt mức 70% tổng thị phần
hệ điều hành trên các thiết bị di động. Trong khi đó iOS giảm 1,9% và những nền tảng
khác giảm tổng cộng 6,4%.

Hình 1.: Thị trường game

1.4.2 Sức hút của các thiết bị chơi game cầm tay

Mọi người gần đây rất ít khi mua các máy chơi game cầm tay làm quà tặng, cả
Nintendo lẫn Sony đều gặp phải sự sụt giảm số lượng mua và tải trò chơi. Ngoài ra,
hầu hết các loại thiết bị điều khiển chơi game cầm tay có doanh số giảm đến 27%
trong giai đoạn quý 2/2013 - quý 2/2014.
Các máy chơi game không có các phiên bản mới được nâng cấp qua mỗi năm
như smartphone, vì vậy bạn có thể mua một chiếc và sử dụng trong thời gian dài mà
không sợ lỗi thời. Doanh số trò chơi thực tế đang giảm cho thấy ngày càng có ít người
muốn mua game hoặc nội dung số cho thiết bị console của mình.


11

Hình 1.: Thị trường thiết bị chơi game cầm tay

1.4.3 Game di động bùng nổ
Mức tăng trưởng số lượt tải trò chơi có tỷ lệ phần trăm tương ứng với mức tăng
trưởng tổng số lượt tải ứng dụng trên cả Google Play và Apps Store của Apple trong
thời gian một năm trở lại đây. Điều này cũng tương tự với doanh thu của game di
động và tổng doanh thu.

Hình 1.: Doanh thu của ngành game

1.4.4 Doanh thu game di động tăng lên, máy console giảm xuống
Doanh thu game ở Google Play tăng hơn 70% so với năm ngoái và doanh của
game trên Apps Store của Apple cũng tăng không kém. Trong khi đó, doanh thu của
game dành cho máy console lại giảm 28%.


12
Game di động ngày càng phát triển và ngày càng tốt hơn trong khi game cầm tay

lại không có bất kỳ bước tiến vượt bậc nào trong vài năm qua. Người ta có thể chơi
game trên điện thoại nhiều hơn bởi vì tính linh động của nó trong khi chơi game trên
các thiết bị cầm tay yêu cầu bạn đồng bộ nhiều thiết bị cùng lúc.

Hình 1.: So sánh doanh thu

1.4.5 IOS tăng trưởng ở châu Á, Android tăng trưởng ở Tây Âu
Ở nền tảng iOS, thị trường Châu Á Thái Bình Dương tăng 8.6% doanh thu ở lĩnh
vực trò chơi và tương tự là mức tăng trưởng 2,8% trên nền tảng Android ở thị trường
Tây Âu. Trong khi đó, doanh thu game console tăng 1% ở thị trường Tây Âu.
Sự hiện diện ngày càng nhiều của Apple ở khu vực Châu Á Thái Bình Dương
trong năm qua cũng thúc đẩy thị phần của iOS tại đây, đồng thời khiến khu vực này trở
thành thị trường lớn nhất của Apple.


13

Hình 1.: Sự phát triển game trong năm gần đây

1.4.6 Xu hướng trên các nền tảng khác nhau
Cả 3 tựa game có doanh thu hàng đầu trên cả Android và iOS đều giống nhau và
9/10 tựa game hàng đầu trên Android và iOS không thay đổi kể từ tháng trước. Trong
khi đó 3/5 tựa game hàng đầu trên hệ máy consle lại thay đổi liên lục từ quý 1/2014
đến quý 2/2014.
Điều này có thể lý giải rằng các nhà phát hành game trên di động rất mạnh và
người dùng thực sự yêu thích game của họ. Bên cạnh đó còn cho thấy các game trên
những thiết bị cầm tay có vẻ thiếu tính cạnh tranh và bảng xếp hạng các game này liên
tục thay đổi theo chu kỳ ra mắt game mới của các nhà phát hành.



14

Hình 1.: Xu thế chơi game trên các thiết bị

Xu hướng tổng thể
- Doanh thu game bùng nổ trên cả iOS và Android trong năm qua với iOS là trên
70% trong khi Android tăng gấp đôi, điều đó cũng cho thấy doanh thu của mỗi ứng
dụng cũng tăng lên nhanh chóng.
- Doanh thu mảng trò chơi trên nền tảng iOS tăng gấp đôi tại thị trường Hoa Kỳ
và tiếp tục vượt lên trên nền tảng Android. Trong khi đó, Android vẫn tiếp tục tăng
trưởng nhanh hơn iOS ở khu vực Châu Á Thái Bình Dương.
- Vị trí xếp hạng các tựa game hàng đầu trên các thiết bị game cầm tay có xu
hướng thay đổi nhiều hơn trò chơi trên di động. Trên điện thoại, 9/10 tựa game hàng
đầu vẫn giữ nguyên trong nửa năm qua.
- Các thiết bị chơi game cầm tay vẫn đang gặt hái doanh thu lớn và vẫn chưa có
bằng chứng cho thấy sự tăng trưởng của game di động sẽ cạnh trực tiếp với game
console, nhưng về lâu dài rất nhiều khả năng sẽ có sự ảnh hưởng và cạnh tranh trên thị
trường trò chơi.
- Theo App Annie, các nhà sản xuất và phát hành console game cũng đang có kế
hoạch thúc đẩy doanh số trong nửa cuối năm 2014.
Thật thú vị khi nhìn thấy cả hai nền tảng di động là Android và iOS cuối cùng bắt
đầu trưởng thành về mặt game và doanh thu.


15

CHƯƠNG 2

XÂY DỰNG GAME PLANES


2.1 Mô tả bài toán
2.1.1 Lý do chọn đề tài
Với sự phát triển của ngành công nghiệp làm game ngày càng tăng cao, nhu cầu
giải trí của con người ngày càng cao. Đồng thời xu hướng ứng dụng các loại engine
vào làm game ngày càng nhiều. Vì vậy ta đặt ra bài toán “Xây dựng game Planes”.
2.1.2 Phạm vi nghiên cứu, phạm vi ứng dụng
- Phạm vi nghiên cứu: Tự nghiên cứu
- Phạm vi ứng dung: Cá nhân
2.2 Ý tưởng thực hiện
2.2.1 Kịch bản game
Trò chơi thuộc thể loại 2D, 2 máy bay sẽ di chuyển cùng với nhau về phía trước.
Có những lúc bạn tưởng như đã vượt qua nhưng một tiếng nhạc vang lên –
Game over. Tiếp sau đó là cảm giác tức giận, cay cú và quyết tâm chinh phục nó. Đó
chính là đặc điểm của trò chơi “Planes”.
Bạn phải điều khiển không phải một mà là hai máy bay bay qua những vách núi
trong hang động tử thần. Nếu một trong 2 máy bay chạm vào chướng ngại vật thì trò
chơi sẽ kết thúc. Khi cả hai máy bay vượt qua một vách núi thì người chơi mới nhận
được một điểm. Có thể nói đây là một trò chơi có đồ họa cực kỳ đơn giản nhưng cũng
cực kỳ điên rồ, khó chịu, khó nhằn và gây bực bội cho người chơi với độ khó của nó.
Trò chơi đòi hỏi sự khéo léo, tinh thần đồng đội cực cao. Nếu đạt tới mức độ cao hơn
bạn có thể phân thân điều khiển 2 máy bay bằng 2 tay của mình như 2 người chơi, mỗi
tay điều khiển một máy bay.
Cảnh báo: Trò chơi có thể gây nghiện cho người chơi vì nó có khả năng hút hồn
người chơi về độ khó của nó.
2.2.2 Xây dựng giao diện và chức năng cho người dùng
• Về giao diện sẽ có các giao diện chính sau:
o Giao diện bắt đầu chơi
o Giao diện điều khiển máy bay
o Giao diện hiện thị khi người chơi bị thua cuộc
o Giao diện điểm cao của người chơi

• Các chức năng cần thiết trong từng giao diện
o Chức năng chơi từ đầu.
o Chức năng hiển thị điểm.


16
2.3 Phân tích chương trình
2.3.1 Biểu đồ Use Case
Mô hình use case giúp ta mô hình hoá hệ thống từ hướng nhìn của người sử
dụng. Hay nói cách khác mỗi use case mô tả cách thức actor tương tác với hệ thống để
đạt được mục tiêu nào đó.

Hình 2.: Mô hình Use case


17
Mô tả chi tiết các Use Case
Bảng 2. Mô tả các use case

STT

TÊN USE CASE

1
Người chơi

2

Ý NGHĨA/GHI CHÚ
Người dùng chơi game

Có thể là một người hoặc 2 người chơi với
nhau.
Điều khiển máy bay 1

Điều khiển máy bay 1

Điều khiển máy bay 2
3

Điều khiển máy bay 2

Bắt đầu vào trò chơi
4

Bắt đầu chơi

Thoát game
5

Thoát game

Đặc tả các Use Case
 Đặc tả use case Bắt đầu chơi:
o Tóm tắt: Khi người chơi chọn “touch to play” trên giao diện
o Dòng sự kiện:
- Trên màn hình chính người chơi chọn chơi luôn
- Hiện thị màn hình chơi
- Kết thúc use case
 Đặc tả use case Điều khiển máy bay:
o Tóm tắt: Người chơi tự chọn máy bay mình điều khiển trên giao diện

chơi game.
o Dòng sự kiện:
- Trên giao diện Game người chơi chạm và thả tay vào màn hình để
điều khiển máy bay lên xuống.
- Kết thúc use case.
o Trạng thái của hệ thống sau khi thực hiện use case:
- Máy bay sẽ di chuyển về phía trước.
- Khi người chơi không chạm màn hình thì máy bay rơi xuống
- Khi máy bay va chạm với chướng ngại vật như vách núi, đất, vòm
trời… thì game kết thúc.


18
 Đặc tả use case Thoát game Khi người chơi bấm nút Thoát trên màn hình
o Tóm tắt: Khi người chơi bấm nút Thoát trên màn hình.
o Dòng sự kiện:
- Người chơi bấm nút Thoát trên giao diện Menu
- Kết thúc use case
o Trạng thái của hệ thống khi bắt đầu use case:
- Khi trò chơi đang trong giao diện Menu
o Trạng thái của hệ thống sau khi thực hiện use case:
- Thoát chương trình


19
2.3.2 Các chức năng của hệ thống
Bảng 2. Các chức năng chính của hệ thống

Điều khiển máy bay 1
Tác nhân

Mô tả
Sự kiện

Người dùng
Người dùng điều khiển máy bay 1 phía bên trái giao diện
Nhấn vào màn hình thì máy bay 1 sẽ đi lên
Không nhấn vào màn hình máy bay 1 sẽ rơi xuống.

Kết quả

Máy bay 1 di chuyển lên xuống
Điều khiển máy bay 2

Tác nhân
Mô tả
Sự kiện

Người dùng
Người dùng điều khiển máy bay 2 phía bên phải giao diện
Nhấn vào màn hình thì máy bay 2 sẽ đi lên
Không nhấn vào màn hình máy bay 2 sẽ rơi xuống.

Kết quả

Máy bay 2 di chuyển lên xuống
Thoát game

Tác nhân
Mô tả


Người dùng
Người dùng nhấn vào thoát game trong menu ban đầu trên
giao diện

Sự kiện

Nhấn vào “Exit”

Kết quả

Ra khỏi trò chơi
Bắt đầu chơi

Tác nhân
Mô tả

Người dùng
Người dùng chọn bắt đầu chơi trong menu ban đầu trên
giao diện.

Sự kiện

Nhấn vào “touch to play”

Kết quả

Bắt đầu quá trình điều khiển 2 máy bay.
Lưu điểm

Tác nhân

Mô tả

Hệ thống
Sau mỗi lần game kết thúc, hệ thống sẽ so sánh điểm
người chơi vừa chơi được với điểm mà hệ thống đã lưu
trước đó. Nếu điểm vừa chơi lớn hơn thì sẽ được hệ thống
lưu lại thành điểm cao mới.


20
Sự kiện

Tự động

Kết quả

Điểm cao mới được cập nhật

2.3.3 Biểu đồ trạng thái
Một trạng thái đại diện cho một tập hợp các giá trị cho một đối tượng.
Một trạng thái có thể chuyển đổi sang một trạng thái khác khi có thỏa mãn một
điều kiện nhất định.
Vòng tròn nhỏ màu đen là trạng thái ban đầu.
Một vòng tròn có gạch chéo là trạng thái cuối cùng.

Hình 2. Mô hình trạng thái chơi game


21
2.3.4 Biểu đồ hoạt động

Dòng điều khiển ở đây chạy giữa các trạng thái hành động liên kết với nhau.
Biểu đồ còn có thể chỉ ra các quyết định, các điều kiện, cũng như phần thực thi
song song của các trạng thái hành động.
Biểu đồ ngoài ra còn có thể chứa các loại đặc tả cho các thông điệp được gửi đi
hoặc được nhận về, trong tư cách là thành phần của hành động được thực hiện.

Hình 2. Mô hình hoạt động chơi game


22
2.3.5 Biểu đồ trình tự
Mô hình hóa các hành vi động của hệ thống và dễ hình dung cách liên lạc giữa
các đối tượng.
Biểu đồ tương tác có ích cho việc xác định các đối tượng bổ sung tham gia trong
các Use Case. Trong biểu đồ có trình tự các thông điệp (message) được gửi giữa các
đối tượng và trình tự tương tác giữa các đối tượng.

Hình 2. Biểu đồ trình tự chơi game


23
2.4 Thuật toán chương trình
Trò chơi đòi hỏi xử lý chạm đa điểm. Đây là một vấn đề khá khó với lập trình di
động.
2.4.1 Thuật toán xác định chạm màn hình đa điểm
Sử dụng thói quen cầm ngang màn hình của người chơi xác định hoành độ của
mỗi lần chạm của từng người lên màn hình. Từ đó biết được máy bay nào sẽ được điều
khiển.
Chia giao diện chơi thành 2 bên. Mỗi người chơi sẽ điều khiển một máy bay.
Người bên trái điều khiển máy bay bên trái, người bên phải điều khiển máy bay bên

phải. Mỗi khi chạm vào màn hình máy bay sẽ đi lên. Còn không chạm máy bay sẽ rơi
xuống.
Sử dụng phương thức touchDown của InputProcessor để xử lý chạm màn hình.
2.4.2 Thuật toán va chạm của máy bay vào các đối tượng khác
Khi một trong hai máy bay chạm vào chướng ngại vật như vách núi, mặt đất,
vòm trời… thì game sẽ kết thúc.
Đối với núi: Sử dụng hàm overlaps của lớp Rectangle (xác định khối củạ máy
bay và đá) để xác định các khối có trùng nhau hay không. Từ đó suy ra trạng thái của
game là tiếp tục hay kết thúc.
Đối với nền đất: So sánh tung độ của máy bay với nền đất. Nếu tung độ của máy
bay nhỏ hơn tung độ của mặt đất thì game over.
Đối với vòm trời: So sánh với tung độ cộng thêm chiều cao của máy bay. Nếu
tung độ của máy bay cộng thêm chiều cao của máy bay lớn hơn tung độ của vòm trời
thì game over.


24

CHƯƠNG 3

CÀI ĐẶT VÀ THÍ NGHIỆM

3.1 Libgdx
3.1.1 Tổng quan về Libgdx
Libgdx là một mã nguồn mở, đa nền tảng và được thiết kế để tạo những game sử
dụng ngôn ngữ Java. Bên cạnh đó, Libgdx cũng sử dụng ngôn ngữ C cho những tác vụ
quan trọng, kết hợp với những thư viện C cơ bản khác cho khả năng sử dụng trên đa
nền tảng.
Thông thường, để xây dựng ứng dụng chạy trên đa nền tảng với Eclipse, trước
tiên bạn phải tạo một project để chia sẻ code, một project khác dành cho ứng dụng

máy tính bàn, một project khác nữa dành cho ứng dụng Android, rồi iOS… Và tiếp
theo phải cấu hình giữa các project, rất mất thời gian, và nhiều khi gây ra những lỗi
cho những người thiếu kinh nghiệm. Mục đích của Libgdx là hỗ trợ tất cả các nền tảng
đó bằng cách kết hợp chúng thành một, có thể gọi đó như 1 API. Một trong những
điểm nổi bật của Libgdx là khả năng chạy và gỡ lỗi (debug) code của bạn trên desktop
như là một ứng dụng thực sự. Điều này còn cho phép bạn sử dụng một cách thoải mái
trên JVM, cũng như là Code Hot Swapping, do đó cho phép bạn ngay lập tức thấy
được những hiệu ứng việc thay đổi code của bạn trong thời gian chạy (runtime) một
cách nhanh chóng. Chính vì vậy nó sẽ làm giảm đáng kể thời gian code của bạn cũng
như tìm và sửa chữa lỗi một cách nhanh chóng.
Một điểm quan trọng nữa, đó là phải hiểu rằng Libgdx là một framework chứ
không phải là một công cụ để tạo game. Chẳng hạn như một trình soạn thảo với mức
độ toàn diện (với C# là Visual Studio chẳng hạn) và một quy trình làm việc xác định
(Microsoft Project là một ví dụ). Điều này có vẻ như là một nhược điểm lúc bắt đầu
nhưng thực sự nó lại là một lợi thế cho phép bạn tự do định nghĩa theo cách của riêng
bạn cho từng dự án (Ví dụ công cụ lập trình có thể là: Eclipse, Netbean, Aptana…
trình quản lý dự án có thể là RedMine…)
Đồ họa
_ Thông dịch qua OpenGLES 1.x và 2.0 trên tất cả các phiên bản.
_ Chỉnh sửa OpenGLES 2.0 phù hợp cho Android từ phiên bản 2.0 trở lên
_ Các helper ở mức độ thấp đối với người lập trình sử dụng OpenGL:
+ Vertext arrays và vertext buffter objects
+ Meshes
+ Textures


25
+ Framebuffer objects (với phiên bản GLES 2.0)
+ Shaders (tích hợp dễ dàng với meshes)
+ Hỗ trợ hiển thị trên máy ảo (emulators)

+ Vẽ những hình dạng đơn giản (shape)
+ Định dạng hiển thị hình ảnh một cách tự động dựa trên yêu cầu phần cứng và
phần mềm tương ứng (loại màn hình, ram, chip, nhà sản xuất điện thoại khác nhau)
+ Hỗ trợ ETC1 (nhưng không hỗ trợ Javascript tương ứng)
+ Tự động xử lý khi OpenGL ES khi bị mất bối cảnh (điện thoại bị treo, thoát
ứng dụng) sẽ phục hồi tất cả textures, shaders và nhiều thứ khác nữa.
_ Ở mức độ cao 2D:
+ Tùy chỉnh CPU với các thao tác đối với thư viện bitmap.
+ Các loại
SmoothCamera…)

camera

khác

nhau.

(Bound

Camera,

Zoom

Camera,

+ Hiệu suất cao khi xử lý các sprite, bộ nhớ đệm, xử lý hiển thị khác nhau giữa
các hệ OpenGLES 1.x và 2.
+ Texture atlases (phần lưu trữ hình ảnh hiển thị được sử dụng bởi các sprite).
+ Hỗ trợ font chữ Bitmap với được load ra từ các file TTF.
+ 2D Particle system

+ Hỗ trợ TMX tile map
+ 2D scene-graph API
+ Thư viện 2D UI.
_ Ở mức độ cao 3D:
+ Các loại camera phối cảnh (gần giống như với 2D ở trên)
+ Xử lý các loại quảng cáo 3D và hệ thống hạt (quảng cáo trên tường –
như trong Counter Strike và hệ thống hạt – xử lý trong việc tạo các vụ nổ chẳng hạn)
+ Wavefront OBJ và MD5
+ Hỗ trợ làm việc với: MD2, Ogre XML, FBX và tất nhiên là hỗ trợ việc
hiển thị các đối tượng 3D.
Âm thanh


×