Tải bản đầy đủ (.pdf) (73 trang)

Game tìm hình giống nhau trên thiết bị di động

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 (2.61 MB, 73 trang )

BỘ CƠNG THƯƠNG
TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP TP.HCM

KHĨA LUẬN TỐT NGHIỆP

Game tìm hình giống nhau trên thiết bị di động

SVTH: Fan Melissa
Võ Sĩ Luân
GVHD: Châu Thị Bảo Hà

TP.Hồ Chí Minh - Năm 2020

16058931
16052601


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

INDUSTRIAL UNIVERSITY OF HO CHI MINH CITY
FACULTY OF INFORMATION TECHNOLOGY

VO SI LUAN - FAN MELISSA

CONNECT ANIMAL GAME ON MOBLIE
Major : Software Technology

Supervisor : Chau Thi Bao Ha

HO CHI MINH CITY , 2020
2




Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

Currently the game making work on Android is widely and popularly used
on mobile devices to meet the entertainment needs of people. Realizing the strong
development with the purpose of learning, the group decided to explore and
implement the topic "The same picture search game on mobile devices".
The game must meet the necessary functions such as: applying and
processing the algorithm to find two identical images, when selecting any one,
changing the image color so that it is easy to identify and draw the path from image
after picture, the game must have sound and be adjustable, be able to calculate the
score and save the highest score, make a countdown timer to calculate the end time
of the game.
First of all, you need to complete the game function with the basic features of
the game such as connecting two identical animals and being able to connect with
each other by up to 3 lines without being obstructed by other animals.
Completed functions players can play games with two different modes:
traditional and expansion mode, complete game sound system, sound effects at
play, functions calculate points and save the highest points, store functions to buy
and use items purchased, functions to select the level of play for expansion.
Through this topic, the team gained more knowledge about what it is like to
make a game, approach new game engine, use c# language that the group has not
learned before, capable of developing a game product. While it was difficult to learn
about the new game engine's algorithms and operations due to limitations in
documentation and information, the team did their best to complete the project as
well as possible. Since then the ability to find documents and solve problems is
improved.

3



Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

MỤC LỤC
MỤC LỤC ...................................................................................................................4
DANH MỤC CÁC HÌNH VẼ.....................................................................................7
DANH MỤC CÁC BẢNG BIỂU ...............................................................................9
LỜI MỞ ĐẦU ...........................................................................................................11
CHƯƠNG 1 : GIỚI THIỆU ......................................................................................13
1.1.Tổng quan .......................................................................................................13
1.2.Mục tiêu đề tài ................................................................................................13
1.3.Phạm vi đề tài .................................................................................................14
1.4. Mô tả yêu cầu chức năng ...............................................................................14
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT ........................................................................16
2.1 Tổng quan về Unity: .......................................................................................16
Unity là gì ? [3] .......................................................................................16
Sự hình thành của Unity. .........................................................................16
Kiến trúc tổng quan.[3] ...........................................................................17
Đối tượng của Unity [4] ..........................................................................17
2.2 Thuật toán .......................................................................................................19
Thuật tốn tìm hai hình giống nhau.........................................................19
Hàm hiển thị ảnh lên màn hình ...............................................................24
Hàm lấy hình ngẫu nhiên.........................................................................24
Hàm tự động tráo hình khi khơng cịn cặp hình hợp lệ ...........................25
Hàm nhảy vị trí hình ................................................................................25
CHƯƠNG 3 : PHÂN TÍCH ......................................................................................34
4



Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

3.1.Sơ đồ use case .................................................................................................34
3.2 Danh sách use case và các mô tả ....................................................................34
3.3 Đặc tả yêu cầu chức năng ...............................................................................35
A001_Chọn kiểu cổ điển .........................................................................35
A002_Chọn kiểu mở rộng .......................................................................38
A003_Chọn cấp độ ..................................................................................39
A004_Cập nhật kết quả trò chơi ..............................................................42
A005_ Sử dụng vật phẩm ........................................................................44
A006_ Tạm dừng trò chơi .......................................................................47
A007_ Chơi lại từ đầu .............................................................................49
A008_ Chơi tiếp trị chơi .........................................................................51
A009_Thốt trị chơi ...............................................................................53
A010_ Hướng dẫn trò chơi ....................................................................55
A011_ Mua vật phẩm ............................................................................57
A012_ Tắt/Bật nhạc nền ........................................................................59
A013_ Chơi trò chơi cổ điển .................................................................61
A014_ Chơi trò chơi mở rộng ...............................................................64
CHƯƠNG 4: THIẾT KẾ VÀ HIỆN THỰC .............................................................67
4.1.Sơ đồ ...............................................................................................................67
4.1.1.Sơ đồ class ...............................................................................................67
4.1.2.Sơ đồ màn hình ........................................................................................68
4.2.Hiện thực .........................................................................................................68
CHƯƠNG 5: KẾT LUẬN ........................................................................................72
5.1 Kết quả đạt được .............................................................................................72
5


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm


5.2 Hạn chế của đồ án ...........................................................................................72
5.3 Hướng phát triển .............................................................................................72
TÀI LIỆU THAM KHẢO .........................................................................................73

6


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

DANH MỤC CÁC HÌNH VẼ
Hình 2-1 Hình ma trận ..............................................................................................19
Hình 2-2 Trường hợp 1 .............................................................................................20
Hình 2-3 Trường hợp 2 .............................................................................................20
Hình 2-4 Trường hợp 3 .............................................................................................21
Hình 2-5 Trường hợp 4 .............................................................................................21
Hình 2-6 Trường hợp 5.1 ..........................................................................................22
Hình 2-7 Trường hợp 5.2 ..........................................................................................22
Hình 2-8 Trường hợp 6.1 ..........................................................................................23
Hình 2-9 Trường hợp 6.2 ..........................................................................................23
Hình 2-10 Hình thức lưu hình trong đề tài ...............................................................24
Hình 2-11 Hình ảnh hiển thị trên màn hình trị chơi ................................................24
Hình 2-12 Hình ảnh hiển thị trong thuật tốn ..........................................................24
Hình 2-13 Hình ma trận trước khi nhảy phải ...........................................................25
Hình 2-14 Hình ma trận sau khi nối hai hình giống nhau ........................................26
Hình 2-15 Hình ma trận sau khi nhảy phải ..............................................................26
Hình 2-16 Hình kết quả ma trận sau khi nhảy trái ...................................................27
Hình 2-17 Hình ma trận trước khi nhảy trái .............................................................27
Hình 2-18 Hình ma trận sau khi nối hai hình giống nhau ........................................28
Hình 2-19 Hình ma trận sau khi nhảy trái ................................................................28

Hình 2-20 Hình kết quả ma trận sau khi nhảy trái ...................................................29
Hình 2-21 Hình ma trận trước khi nhảy lên trên ......................................................29
7


Khóa tốt nghiệp chun ngành Kỹ Thuật Phần Mềm

Hình 2-22 Hình ma trận sau khi nhảy nối hai hình ..................................................30
Hình 2-23 Hình ma trận sau khi nhảy lên trên .........................................................30
Hình 2-24 Hình kết quả ma trận sau khi nhảy lên trên............................................31
Hình 2-25 Hình ma trận trước khi nhảy xuống dưới ................................................31
Hình 2-26 Hình ma trận sau khi nối hai hình ...........................................................32
Hình 2-27 Hình ma trận sau khi nhảy xuống dưới ...................................................32
Hình 2-28 Hình kết quả ma trận sau khi nhảy xuống dưới .......................................33
Hình 3-1 Sơ đồ usecase .............................................................................................34
Hình 3-2 Biểu đồ activity chọn kiểu cổ điển .............................................................37
Hình 3-3 Biểu đồ sequence chọn kiểu cổ điển ..........................................................37
Hình 3-4 Biểu đồ activity chọn kiểu mở rộng ...........................................................39
Hình 3-5 Biểu đồ sequence chọn kiểu mở rộng ........................................................39
Hình 3-6 Biểu đồ activity chọn cấp độ ......................................................................41
Hình 3-7 Biểu đồ sequence chọn cấp độ ...................................................................41
Hình 3-8 Biểu đồ activity cập nhật kết quả ...............................................................43
Hình 3-9 Biểu đồ sequence cập nhật kết quả ............................................................44
Hình 3-10 Biểu đồ activity sử dụng vật phẩm ..........................................................46
Hình 3-11 Biểu đồ sequence sử dụng vật phẩm ........................................................46
Hình 3-12 Biểu đồ activity tạm dừng ........................................................................48
Hình 3-13 Biểu đồ sequence tạm dừng trị chơi .......................................................48
Hình 3-14 Biểu đồ activity chơi lại từ đầu ................................................................50
Hình 3-15 Biểu đồ sequence chơi lại từ đầu .............................................................50
Hình 3-16 Biểu đồ activity chơi tiếp .........................................................................52

8


Khóa tốt nghiệp chun ngành Kỹ Thuật Phần Mềm

Hình 3-17 Biểu đồ sequence chơi tiếp ......................................................................52
Hình 3-18 Biểu đồ activity thốt trị chơi .................................................................54
Hình 3-19 Biểu đồ sequence thốt trị chơi ..............................................................54
Hình 3-20 Biểu đồ activity hướng dẫn trị chơi ........................................................56
Hình 3-21 Biểu đồ sequence hướng dẫn trị chơi .....................................................56
Hình 3-22 Biểu đồ activity mua vật phẩm .................................................................58
Hình 3-23 Biểu đồ sequence mua vật phẩm ..............................................................58
Hình 3-24 Biểu đồ activity tắt/bật nhạc nền .............................................................60
Hình 3-25 Biểu đồ sequence tắt/bật nhạc nền ..........................................................60
Hình 3-28 Biểu đồ sequence chơi trị chơi cổ điển ...................................................63
Hình 3-29 Biểu đồ sequence chơi trị chơi mở rộng .................................................66
Hình 0-1 Sơ đồ class .................................................................................................67
Hình 0-2 Màn hình chính ..........................................................................................68
Hình 0-3 Màn hình chọn kiểu chơi ...........................................................................69
Hình 0-4Màn hình hướng dẫn trị chơi .....................................................................69
Hình 0-5 Màn hình chơi theo kiểu cổ điển ................................................................70
Hình 0-6 Màn hình chọn cấp độ ...............................................................................70
Hình 0-7 Màn hình chơi theo kiểu mở rộng ..............................................................71

DANH MỤC CÁC BẢNG BIỂU
Bảng 3-1 Bảng danh sách use case ...........................................................................35
Bảng 3-2 Bảng chọn kiểu cổ điển .............................................................................36
9



Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

Bảng 3-3 Bảng chọn kiểu mở rộng ...........................................................................38
Bảng 3-4 Bảng chọn cấp độ ......................................................................................40
Bảng 3-5 Bảng cập nhật kết quả trò chơi .................................................................42
Bảng 3-6 Bảng sử dụng vật phẩm .............................................................................45
Bảng 3-7 Bảng tạm dừng trò chơi .............................................................................47
Bảng 3-8 Bảng chơi lại từ đầu ..................................................................................49
Bảng 3-9 Bảng chơi tiếp trò chơi ..............................................................................51
Bảng 3-10 Bảng thốt trị chơi ..................................................................................53
Bảng 3-11 Bảng hướng dẫn trị chơi ........................................................................55
Bảng 3-12 Bảng mua vật phẩm .................................................................................57
Bảng 3-13 Bảng Tắt/Bật nhạc nền ............................................................................59
Bảng 3-15 Bảng chơi trò chơi cổ điển .....................................................................61
Bảng 3-16 Bảng chơi trò chơi mở rộng ....................................................................64

10


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

LỜI MỞ ĐẦU
1. Tổng quan tình hình nghiên cứu thuộc lĩnh vực của đề tài
Ngày nay, mọi người đã quá quen với những chiếc điện thoại di động ln ở
bên mình mọi lúc mọi nơi, đơn giản vì sự hữu ích của nó. Chúng ta có thể nghe, gọi,
nhắn tin, lướt web, xem video, nghe nhạc, học tập, chụp ảnh… Điện thoại di động
cũng đang ngày càng trở nên thông minh hơn bởi sức sáng tạo không ngừng của con
người.
Hiện nay, cùng với sự phát triển của công nghệ đi động đã bùng nổ trong
nhiều năm qua, các thiết bị cầm tay thông minh đã 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. Hầu như tất cả các điện thoại thông minh
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. Theo báo cáo do Google và Temasek công bố trong tháng 11-2018, thị trường
game di động tại Việt Nam tăng trưởng hơn 50% trong năm 2018. Đến năm 2025,
ước tính nền kinh tế internet của Việt Nam sẽ là một động cơ tăng trưởng trị giá 33
tỷ USD, lớn thứ 3 khu vực Đông Nam Á và lớn gấp 11 lần so với năm 2015. Một số
dữ liệu thống kê lạc quan do App Annie công bố về thị trường di động năm 2018
trong khu vực càng cho thấy hệ sinh thái di động tại Việt Nam đang đứng trước cơ
hội phát triển. Theo báo cáo, trung bình mỗi người Việt cài đặt đến 85 ứng dụng di
động trên điện thoại của mình và thường sử dụng 37 ứng dụng để chơi game là chủ
yếu.
Bên cạnh đó, nhóm đã tìm hiểu được hai đề tài game Pikachu của hai nhóm đó
là của Phạm Thị Đồn Hân và Nguyễn Thị Ánh Tuyết. Theo như nhóm quan sát thì
hai đề tài đều có sự đổi mới về hình cũng như màu sắc làm cho trò chơi thêm sinh
động, đồng thời sáng tạo thêm nhiều chức năng mới như phân chia nhiều chủ đề,
11


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

bảng xếp hạng điểm, hướng dẫn người chơi và các hình ảnh trong trị chơi cũng đa
dạng nhưng cả hai vẫn có khuyết điểm chung đó là vẫn giữ lối chơi của game
Pikachu truyền thống với giao diện 9 hàng 16 cột, khơng lưu lại cấp độ trị chơi và
cũng chưa khai thác nhiều về chức năng tính điểm.
2. Ý nghĩa khoa học và thực tiễn của đề tài
Hiện nay việc làm trình game trên Android được ứng dụng nhiều và phổ biến
trên thiết bị di động để đáp ứng nhu cầu giải trí cho con người. Nhận thấy được sự
phát triển mạnh mẽ cùng với mục đích học tập nên nhóm đã quyết định tìm hiểu và
thực hiện đề tài “Game tìm hình giống nhau trên thiết bị di động”.


12


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

CHƯƠNG 1: GIỚI THIỆU
1.1.Tổng quan
“Connect Animal Game” là một trò chơi do nhóm tự thiết kế dựa trên nền tảng
game Pikachu truyền thống và xây dựng trên Unity chạy trên Android. Trò chơi này
có quy tắc chơi vơ cùng đơn giản, tất cả những gì người chơi phải làm là tìm thấy 2
con vật giống nhau và có thể kết nối với nhau bởi tối đa 3 đường thẳng mà không bị
cản trở bởi các con vật khác. Với mục đích học tập và xu hướng đổi mới nhóm đã
quyết định thay đổi một diện mạo mới cho trò chơi này và phát triển thêm nhiều
tính năng hơn như là thay đổi chủ đề của trò chơi thành chủ đề về những con thú.
“Connect Animal Game” có giao diện chính của trị chơi là các ơ hình thú khơng
sắp xếp theo trật tự hàng hay cột mà sẽ có quy luật ngẫu nhiên riêng. Trị chơi có
nhiều màn chơi và được phân chia theo cấp độ từ dễ dến khó, có hệ thống tính điểm
và tính sao cho người chơi, có giới hạn thời gian theo từng cấp độ chơi và cuối cùng
là có cửa hàng để mua vật phẩm dùng để hỗ trợ người chơi.

1.2.Mục tiêu đề tài
Để xây dựng được trị chơi tìm hình giống nhau trên thiết bị di động thì nhiệm
vụ đặt ra là phải phát triển được trò chơi này trên Unity và cài đặt được trên thiết bị
di động. Ngồi ra, trị chơi phải đáp ứng những chức năng cần có như là : áp dụng
và xử lý thuật tốn tìm hai hình giống nhau, khi chọn một hình bất kỳ thì đổi màu
hình đó để dễ nhận biết, vẽ được đường đi từ hình này đến hình khác, trị chơi phải
có âm thanh và có thể điều chỉnh được, có khả năng tính được điểm và lưu lại điểm
cao nhất, làm được đồng hồ đếm ngược để tính tốn thời gian kết thúc trị chơi.


13


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

1.3.Phạm vi đề tài
Nhóm chọn phát triển trị chơi trên Unity vì nó là một game engine được phát
triển bởi Unity Technologies như một hệ sinh thái (Engine) đa nền tảng để phát
triển game và có các chức năng cơ bản như: cung cấp cơng cụ dựng hình (kết xuất
đồ họa) cho các hình ảnh 2D hoặc 3D, cơng cụ vật lý (tính tốn và phát hiện va
chạm), âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng, tạo dò
nguồn dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị và kết nối mạng. Unity là
engine đáp ứng đầy đủ các u cầu đó.
Ngồi những chức năng cơ bản của một hệ sinh thái đó, Unity cịn có những
ưu việt vượt trội so với các engine khác: sử dụng ngơn ngữ lập trình phổ biến tại
Việt Nam là C#, hỗ trợ đa nền tảng, dễ sử dụng, ngay cả với lập trình viên nghiệp
dư, thư viện phong phú và cộng đồng lớn mạnh.
1.4. Mô tả yêu cầu chức năng
Trước hết phải hoàn thiện được chức năng chơi game với những tính năng cơ
bản của trị chơi như nối hai con vật giống nhau và có thể kết nối với nhau bởi tối đa
3 đường thẳng mà không bị cản trở bởi các con vật khác.
Mục tiêu tiếp theo của trò chơi là giới hạn được thời gian của mỗi màn chơi để
có thể tính điểm và sao cho người chơi. Số sao càng nhiều thì thưởng điểm càng cao
(1 sao thưởng 100 điểm, 2 sao thưởng 300 điểm, 3 sao thưởng 500 điểm). Điểm tích
được ở mỗi màn chơi sẽ được dùng để mua vật phẩm trong cửa hàng. Cửa hàng sẽ
bán những vật phẩm như cộng thêm 10 giây vào màn chơi (có giá là 1000 điểm),
cộng thêm 20 giây vào màn chơi (có giá là 2000 điểm).
Trong mỗi màn chơi sẽ có chức năng Tạm dừng trị chơi. Ngồi ra cịn có
chức năng chơi lại từ đầu, chơi tiếp, thốt trị chơi. Chức năng tạm dừng trị chơi có
nghĩa là thời gian sẽ ngừng và người dùng không thể tiếp tục chơi cho đến khi chọn

chức năng chơi tiếp. Chức năng chơi lại từ đầu có nghĩa là người chơi sẽ được chơi
14


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

lại màn hiện tại. Chức năng thốt trị chơi có nghĩa là người chơi sẽ thốt khỏi màn
chơi đó và quay về chức năng chọn cấp độ.
Cập nhật cấp độ sẽ được thực hiện khi người chơi hồn thành một màn trị chơi.
Các điểm và sao sẽ được cập nhật sau mỗi màn. Màn mới sẽ được mở khóa khi màn
cũ được hồn thành. Chức năng cài đặt gồm có chức năng tắt/bật nhạc nền và
tăng/giảm âm lượng trò chơi.
Trò chơi mở rộng có 25 cấp độ và được chia thành 4 bản đồ khác nhau. Bản
đồ thứ nhất có ba màn, bản đồ thứ hai có năm màn, bản đồ thứ 3 có 7 màn và bản
đồ thứ tư có 10 màn với độ khó khác nhau. Ở bản đồ thứ nhất thì tự động mở, bản
đồ thứ hai cần bảy sao, bản đồ thứ ba cần 24 sao, bản đồ thứ tư cần 43 sao.
Ở chế độ chơi theo kiểu cổ điển, màn thứ nhất có 6 dịng và 10 cột, màn thứ
hai có 6 dịng 12 cột, màn thứ ba có 7 dịng 12 cột, màn thứ tư có 7 dịng 14 cột và
từ màn thứ năm có 7 dịng 16 cột . Bên cạnh đó, nhảy vị trí hình bắt đầu từ màn thứ
hai với nhảy vị trí sang trái, màn thứ ba nhảy vị trí sang phải, màn thứ tư và sáu
nhảy vị trí sang trái và xuống dưới, màn thứ năm nhảy vị trí sang phải và xuống
dưới, màn thứ bảy nhảy vị trí sang trái và lên trên, từ màn thứ tám trở đi nhảy vị trí
sang phải và lên trên.
Ở chế độ chơi theo kiểu mở rộng, màn thứ nhất có 4 dịng 5 cột, màn thứ hai
có 4 dịng 6 cột, màn thứ ba có 5 dịng 6 cột, màn thứ tư có 6 dịng 7 cột, màn thứ
năm có 6 dịng 8 cột, màn thứ sáu có 6 dịng 12 cột và từ màn thứ 7 trở đi có 6 dịng
13 cột. Bên cạnh đó, nhảy vị trí hình bắt đầu từ màn thứ tư với nhảy vị trí sang trái,
màn thứ năm nhảy vị trí sang phải và xuống dưới, màn thứ sáu nhảy vị trí sang trái
và xuống dưới, màn thứ bảy nhảy vị trí sang trái và lên trên, từ màn thứ tám trở đi
nhảy vị trí sang phải và lên trên.


15


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Tổng quan về Unity:
Unity là gì ? [3]
Đã qua rồi thời làm game trên nền Flash căn bản với những chuyển động cứng
nhắc, Unity mang lại sức mạnh kỳ diệu cho nhân vật trở nên sống động hơn trong
không gian 3 chiều. Công nghệ cao này tạo ra một bước đột phá mới về sự khác biệt
trong công nghệ làm game hiện nay, mang đến cho người chơi một cảm giác khác lạ
và hào hứng trong từng chuyển động, tương lai công nghệ này được áp dụng vào
game Việt Nam và mở ra một trang mới cho thế giới game 2D, 3D.
Unity được dùng để làm video game hoặc những nội dung có tính tương tác
như thể hiện kiến trúc, hoạt hình 2D, 3D thời gian thực. Unity là một trong những
engine được giới làm game khơng chun cực kỳ ưa chuộng vì khả năng tuyệt vời
của nó đó là phát triển trị chơi đa nền. Trình biên tập có thể chạy trên Windows và
Mac OS và có thể xuất ra game cho Windows, Mac, Wii, IOS, Android.
Unity có thể tạo ra được nhiều loại game 2D, 3D đa dạng, dễ sử dụng với
những người làm game chưa chuyên nghiệp, chất lượng cao, chạy hầu hết trên các
hệ điều hành. Trong Unity chúng ta có thể import trực tiếp các file mơ hình đang
thiết kế và sẽ thiết kế tiếp nếu chưa xong trong khi việc import chỉ diễn ra một lần.
Ngồi ra Unity cịn cho chúng ta trực tiếp tạo mơ hình nếu muốn và việc đặt các
thuộc tính vật lý cũng cực kỳ dễ dàng, hỗ trợ sẵn nhiều chức năng.
Sự hình thành của Unity.
Phần lõi của Unity ban đầu được viết bởi Joachim Ante vào năm 2001 và sau
đó được cơng ty hình thành vào năm 2005 với phiên bản 1.0. Đến năm 2007, Unity
được nâng lên phiên bản 2.0. Unity bắt đầu hỗ trợ Iphone vào năm 2008. Vào tháng


16


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

9/2010, Unity chính thức hỗ trợ Android và ra đời phiên bản 3.0, cho đến hiện tại là
phiên bản Unity 5[1].
Unity được 250.000 người đăng ký sử dụng gồm Bigpoint, Cartoon Network,
Coca-Cola, Disney, Electronic Arts, LEGO, Microsoft, NASA, Ubisoft, Warner
Bros, các hãng phim lớn nhỏ, các chuyên gia độc lập, sinh viên và những người
đam mê.
Kiến trúc tổng quan.[3]
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, chứa các đối tượng và phương thức hỗ trợ
hầu hết các đối tượng, 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 lớp MonoBehavior
của UnityAPI và tên class phải tùng với tên file script. Mỗi script gắn lên đối tượng
game đều được xem như một thành phần bên trong và được cấp phát vùng nhớ khi
chạy game.
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ư MonoBehavior (tất cả các script muốn gắn vào đối tượng bắt
buộc phải kế thừa 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ả thành phần có thể gắn vào đối tượng).
Đối tượng của Unity [4]
2.1.4.1 GameObject
Unity định nghĩa GameObject là đối tượng đại diện cho các Assets trong game
như nhân vật, cây cỏ, công cụ, đạo cụ, camera, hiệu ứng ... Các GameObject đều
chứa một thuộc tính cơ bản là Transform, dùng để thiết lập vị trí, hướng và kích

thước của GameObject.

17


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

2.1.4.2 Components
Components là các thuộc tính thêm vào GameObject như là Animation, âm
thanh, mơ hình 3D, hiệu ứng, … nhằm xây dựng, kết hợp các yếu tố khác nhau để
xác định các hình thái, hành vi, hiệu ứng, ... của đối tượng mong muốn trong game.
2.1.4.3 Scenes
Trong Unity, Scene là một cảnh game, không gian game nơi thiết lập bố cục của các
GameObjects, hoặc là một phần chứa các thiết lập giao diện như các menu trong
game. Tạo ra nhiều Scenes sẽ giúp linh hoạt trong việc phân phối tối ưu tài nguyên,
quản lý các phân đoạn trong game một cách độc lập.
2.1.4.4 Scripts
Scripts là một Component trong Unity. Đây là thành phần thiết yếu dùng để
tương tác với các hành động 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 ngơn ngữ C#.
2.1.4.5 Prefabs
Prefabs là một GameObject hồn chỉnh sau khi thêm các thuộc tính và được lưu trữ
lại để tái sử dụng. Các GameObject được nhân bản từ một prefab sẽ giống nhau
hoàn toàn. Để tạo ra một prefab, ta chỉ cần kéo một GameObject từ cửa sổ
Hierarchy vào cửa sổ Project.
2.1.4.6 Camera
Camera trong Unity dùng để thể hiện khung hình, góc nhìn mà người chơi có thể
nhìn thấy được trong game. Trong một game có thể thiết lập nhiều camera để chia
nhỏ màn hình người chơi, tạo các hiệu ứng, hoặc tùy chỉnh như nhìn được từ phía

sau, bản đồ thu nhỏ, …
18


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

2.2 Thuật tốn
Để tìm hai hình giống nhau theo thuật tốn trên thì phải biểu diễn các hình
như ma trận dưới đây và tất cả những thuật toán bên dưới sẽ sử dụng ma trận này :

Hình 2-1 Hình ma trận
Trong đó giá trị 0 tượng trưng cho đường bao quanh mang ý nghĩa cho phép
đi. Các cặp hình sau khi được nối thì sẽ mất và mang giá trị là 0. Các giá trị khác 0
tượng trưng cho vật cản và là giá trị riêng cho từng hình, nếu như số giống nhau thì
hình sẽ giống nhau.
Thuật tốn tìm hai hình giống nhau
-

Trường hợp 1: public bool checkLineX(int y1, int y2, int x)
Hai điểm xét cùng thuộc một hàng (đường thẳng theo trục x) và giữa 2 điểm

khơng có vật cản.[2] Nếu hai điểm A,B có cùng tọa độ x thì sẽ tìm đường thẳng nối
từ điểm A đến điểm B.

19


Khóa tốt nghiệp chun ngành Kỹ Thuật Phần Mềm

Hình 2-2 Trường hợp 1

-

Trường hợp 2 : public bool checkLineY(int x1, int x2, int y)
Hai điểm xét cùng thuộc một cột (đường thẳng theo trục y) và giữa 2 điểm

khơng có vật cản. [2] Nếu hai điểm A,B có cùng tọa độ y thì sẽ tìm đường thẳng
nối từ điểm A đến điểm B.

Hình 2-3 Trường hợp 2
-

Trường hợp 3 : public int checkRectX(Vector3Int p1, Vector3Int p2)
Xét duyệt các đường đi theo chiều ngang trong phạm vi hình chữ nhật. [2]

Duyệt từ A.x đến B.x kiểm tra xem có một cột y nào đó trống hay khơng, nếu có
thì nối A với B thông qua đường thẳng y.

20


Khóa tốt nghiệp chun ngành Kỹ Thuật Phần Mềm

Hình 2-4 Trường hợp 3
-

Trường hợp 4 : public int checkRectY(Vector3Int p1, Vector3Int p2)
Xét duyệt các đường đi theo chiều dọc. [2] Duyệt từ A.y đến B.y kiểm tra
xem có một dịng x nào đó trống hay khơng, nếu có thì nối A với B thơng
qua đường thẳng x.


Hình 2-5 Trường hợp 4

-

Trường hợp 5 : public int checkMoreLineX(Vector3Int p1, Vector3Int p2, int
type)

21


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

Xét mở rộng theo chiều ngang [2] Với 2 điểm A,B ta xác định xem điểm nào
có tọa độ y lớn hơn đặt tên là Ymax.y, còn lại là Ymin.y . Duyệt từ cột Ymax
trở lên cho đến khi gặp đường bao quanh và kiểm tra xem có một cột y nào
trống hay khơng và sau đó nối từ điểm A đến điểm C, từ điểm C đến điểm D
và từ điểm D đến điểm B.

Hình 2-6 Trường hợp 5.1

Hình 2-7 Trường hợp 5.2

22


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

-

Trường hợp 6 : public int checkMoreLineY(Vector3Int p1, Vector3Int p2, int

type)
Xét mở rộng theo chiều dọc[2] Với 2 điểm A,B ta xác định xem điểm
nào có tọa độ x lớn hơn đặt tên là Xmax.x, còn lại là Xmin.x . Duyệt từ cột
Xmax trở lên cho đến khi gặp đường bao quanh và kiểm tra xem có một cột
y nào trống hay khơng và sau đó nối từ điểm A đến

Hình 2-8 Trường hợp 6.1

Hình 2-9 Trường hợp 6.2

23


Khóa tốt nghiệp chuyên ngành Kỹ Thuật Phần Mềm

Hàm hiển thị ảnh lên màn hình
Đặt tên tất cả các hình hiện có thành các số nguyên có giá trị tăng dần, sau đó
tạo một ma trận số nguyên với số dòng và số cột được cho trước, giá trị được gán
vào ma trận là tên của hình tương ứng. Ví dụ :
Với các hình được lưu như sau

Hình 2-10 Hình thức lưu hình trong đề tài
Thì khi hiển thị các hình lên giao diện trị chơi thì sẽ được ma trận tương ứng

Hình 2-11 Hình ảnh hiển thị trên màn hình trị chơi

Hình 2-12 Hình ảnh hiển thị trong thuật tốn

Hàm lấy hình ngẫu nhiên
Số cột/dịng sẽ thay đổi theo từng cấp độ cho nên số hình hiển thị sẽ thay đổi

theo, đế giới hạn số lượng hình lấy ra nên sẽ có hình hiển thị 2 lần hoặc 4 lần trên
màn hình được qui định như sau :
Số hình hiển thị 4 lần: x4 = ((số dòng – 2) * (số cột – 2)) / 4 – cấp độ
Số hình hiển thị 2 lần: x2= ((số dịng – 2) * (số cột – 2) – (x4 * 4)) / 2
24


Khóa tốt nghiệp chun ngành Kỹ Thuật Phần Mềm

Với cơng thức này thì khi cấp độ càng cao thì x4 càng giảm và x2 càng tăng
làm cho độ khó của trị chơi được tăng theo. Khi có được tổng số hình cần thiết thì
sẽ cho tất cả vào một List<>() và trộn vị trí sau đó đưa lên màn hình theo thứ tự từ
đầu đến cuối List.
Hàm tự động tráo hình khi khơng cịn cặp hình hợp lệ
Dùng thuật tốn tìm hình giống nhau quét ma trận hiện tại xem cịn cặp hình
nào hợp lệ hay khơng, nếu hết thì sẽ lấy hết tất cả hình hiện có trên màn hình bỏ vào
một List<>() sau đó trộn và đưa lại lên màn hình theo thứ tự từ đầu đến cuối List
sao cho thỏa mãn có ít nhất hai cặp giống nhau khi có tổng số hình lớn hơn sáu và
một cặp hình khi tổng số hình nhỏ hơn sáu.
Hàm nhảy vị trí hình
Nhảy vị trí hình sang phải (public void GoRightButton()): khi một cặp hình
giống nhau được nối thì giá trị của hai cặp hình này sẽ bằng -1. Quét ma trận hiện
tại xem vị trí nào có giá trị là -1 thì hình đó sẽ đổi vị trí sang trái với các hình cùng
hàng cho đến cuối hàng thì dừng. Sau khi đổi vị trí xong thì qt lại ma trận một lần
nữa xem vị trí nào có giá bằng -1 thì đổi giá trị lại bằng 0.

Hình 2-13 Hình ma trận trước khi nhảy phải

25



×