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

Đồ án TRÒ CHƠI LUYỆN TRÍ não

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.13 MB, 22 trang )

1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN

BÁO CÁO CUỐI KỲ
ĐỒ ÁN 1
TRỊ CHƠI LUYỆN TRÍ NÃO
Giảng viên hướng dẫn:
HUỲNH HỒ THỊ MỘNG TRINH
Sinh viên thực hiện:
LÊ TRƯỜNG LONG HƯNG

 Tp. Hồ Chí Minh, 6/2021 

18520284


2

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................


...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
……., ngày……...tháng……năm 2020
Người nhận xét
(Ký tên và ghi rõ họ tên)


3

MỤC LỤC
CHƯƠNG I: GIỚI THIỆU .....................................................................................4
1. Đề tài ...................................................................................................................................... 4
2. Lý do chọn đề tài ................................................................................................................... 4

CHƯƠNG 2: KHẢO SÁT ĐỀ TÀI ........................................................................6
1. Lumosity ................................................................................................................................ 6
2. Elevate .................................................................................................................................... 7
3. Đánh giá ................................................................................................................................. 9

CHƯƠNG 3: Ý TƯỞNG ĐỀ TÀI ........................................................................10
1. Giới thiệu – Nguồn gốc ý tưởng ......................................................................................... 10
2. Các đặc trưng dự kiến ........................................................................................................ 13


CHƯƠNG 4: DEMO MINIGAME: KỸ SƯ AN NINH MẠNG .......................15
1. Bối cảnh................................................................................................................................ 15
2. Giao diện .............................................................................................................................. 15
3. Phân tích .............................................................................................................................. 16
3.1 Ơ ..................................................................................................................................... 16
3.2 Ơ lưới.............................................................................................................................. 17

CHƯƠNG 5: TỰ ĐÁNH GIÁ ...............................................................................21
CÁC LINK THAM KHẢO ...................................................................................22
1. Link liên quan đến đồ án .................................................................................................... 22
2. Link các ứng dụng được đề cập ......................................................................................... 22


4

CHƯƠNG I: GIỚI THIỆU
1. Đề tài
Theo gợi ý của giảng viên hướng dẫn, đề tài được chọn là “Trò chơi luyện trí
não”.

2. Lý do chọn đề tài
Rèn luyện trí não luôn là một nhu cầu của mọi cá nhân ở bất kì lứa tuổi nào.
Ngay từ thời đi học, chúng ta ai cũng ao ước có trí nhớ siêu việt để đạt điểm cao
trong các bài kiểm tra từ trả bài miệng đến thi cuối năm học, cũng như khả năng tiếp
thu kiến thức tốt cho các bài tập, bài kiếm ấy. Càng lớn lên, tình hình cơng việc lại
u cầu chúng ta phải nhanh trí, có khả năng thích nghi tốt với tình cảnh, nhanh
chóng tìm ra giải pháp cho mọi vấn đề, vì thời gian được xem là vàng, là q, khơng
thể bỏ phí được. Bên cạnh đó, chúng ta vẫn hay lo sợ các hội chứng mất trí nhớ, rối
loạn thần kinh: khơng ai muốn mình lúc nào cũng quên kiến thức, thông tin quan

trọng dẫn đến ảnh hưởng công việc, nhưng đáng sợ hơn cả, không ai muốn sau này
mình nhắm mắt xi tay mà khơng hề nhớ gì về gia đình, bạn thân, hay thậm chí
chính bản thân mình là ai. Vì thế, trong thời đại công nghệ phát triển đã khai sinh ra
một loại ứng dụng mới: các chương trình luyện trí não.
Mặc dù thị trường phần mềm hiện nay cung cấp rất nhiều ứng dụng luyện trí
não cho mọi nền tảng, lứa tuổi khác nhau, các ứng dụng này nhìn chung vẫn cịn
thiếu tính nhân vật và sự gắn bó với người dùng. Đa phần các ứng dụng luyện trí não
trên thị trường chủ yếu chỉ yêu cầu người dùng chơi một số trị chơi nhỏ mỗi ngày.
Các trị chơi này tuy có giúp luyện một số kỹ năng trí não như trí nhớ hay phản xạ,
song vì thiếu sự liên hệ với nhau nên nhiều lúc người dùng cảm thấy như đây cứ như
là nghĩa vụ mình phải làm thay vì là cách thức luyện trí não. Mặt khác, vì các ứng
dụng này phân biệt người dùng trả tiền và tài khoản miễn phí nên thời gian người
dùng tương tác với chúng bị giới hạn nếu người dùng khơng có khả năng chi trả. Các
ứng dụng này thường bị xem là trôi lạc trong một “miền xám” – chúng bị xem là
một tác vụ, một công việc phải làm mỗi ngày thay vì tự nguyện rèn luyện trí não,
nhưng lại có thời gian sử dụng quá ngắn và thiếu “cái hồn” để được xem là một trị
chơi.
Vì thế, nhóm đã chọn đề tài này với hy vọng sẽ tạo ra được một trị chơi hồn
chỉnh vừa mang tính giải trí giống như một trò chơi thật, đồng thời giúp người chơi
rèn luyện trí nhớ, phản xạ và độ tập trung nhưng vẫn cảm thấy thoải mái, không bị
ràng buộc như một nghĩa vụ phải làm hàng ngày. Bên cạnh đó, em có ước mơ biến


5

thành một nhà phát triển game sau này khi em ra trường, và nhóm nhận thấy đề tài
này tạo cơ hội trải nghiệm quy trình phát triển game, cũng như học cách sử dụng
Unity – game engine sẽ được sử dụng cho đề tài này.



6

CHƯƠNG 2: KHẢO SÁT ĐỀ TÀI
Chương này sẽ tập trung vào kết quả khảo sát hai ứng dụng rèn luyện trí não:
Elevate và Lumosity.

1. Lumosity
Ứng dụng di động Lumosity là một phần của chương trình luyện trí não
Lumosity phát triển bởi Lumos Labs. Phát hành từ năm 2007, Lumos Labs hứa hẹn
giúp rèn luyện trí não của người dùng trong mọi lứa tuổi, từ ghi nhớ, sự tập trung,
đến độ nhạy bén và kỹ năng giải quyết vấn đề. Để đạt được điều này, Lumosity cho
người dùng chơi một tập hợp các trò chơi khác nhau.
Phần lớn các trò chơi được cung cấp bởi Lumosity đặt nặng vào phần “chơi”,
với các cơ chế yêu cầu người chơi sử dụng khả năng của bản thân là chính. Một số
trị chơi ví dụ được cung cấp bởi Lumosity:

Train of Thought – chỉnh lại đường
ray để các xe lửa vào đúng trạm
tương ứng với màu của nó. Được
cho có thể tăng khả năng tập trung
của người chơi trong trường hợp
nhiều luồng thông tin.

Lost in Migration – quẹt màn hình
theo hướng con chim ở giữa đội
hình. Trị chơi này thử khả năng
của người chơi tập trung vào các
thơng tin chính và làm lơ những
thơng tin không liên quan.



7

Masterpiece – Ghép những mảnh vỡ vào một
lỗ trống. Người chơi có thể xoay các mảnh vỡ,
nhưng nếu xoay quá số lần cho phép sẽ mất
điểm. Yêu cầu người chơi có khả năng phân
tích và dự đốn khoảng trống khơng gian.

Trouble Brewing – Phục vụ cà phê cho khách hàng bằng
cách nhấp các nguyên liệu, bấm nút mở máy cà phê, và nhấp
vào ly khi cà phê đến đủ mức. Tràn ly khơng tính điểm. Thử
khả năng tập trung và xử lý tình huống của người chơi.

2. Elevate
Elevate được phát triển bởi Elevate Labs, một công ty thành lập năm 2014 với
ước muốn cải thiện đầu óc của con người, nhất là kỹ năng liên lạc và tính tốn của
chúng ta. Từ lúc ra mắt, Elevate đã giúp nhiều người dùng trên thế giới rèn luyện
khả năng ghi nhớ, giao tiếp, tính tốn và xử lý nhanh, thậm chí nhận được giải “Ứng
dụng của Năm” của Apple vào năm 2014.
Khác với Lumosity, cách thức hoạt động của Elevate là những bài tập nho
nhỏ, tập trung vào khía cạnh “học mà chơi, chơi mà học” nhiều hơn so với Lumosity.
Những trò chơi của Elevate nhắm đến việc cải thiện khả năng tính tốn nhanh và
đúng của người dùng và giúp người dùng gia cố và mở rộng khả năng sử dụng ngơn
ngữ, từ vựng và văn phạm của mình. Thực chất nhiều người dùng sử dụng Elevate
khơng những để luyện trí não, mà còn tu bổ văn phạm, từ vựng Anh văn.

Một số minigame rèn luyện kỹ năng tính tốn của Elevate



8

Một số minigame luyện từ vựng. Trái: chọn từ cùng nghĩa với từ được đưa trước.
Phải: một số từ sẽ có lỗ trống, quyết định xem chữ nào điền vào ô đó.

Một trong các minigame luyện kỹ năng đọc hiểu. Người dùng đọc đoạn văn cho trước, sau
đó trả lời ba câu hỏi với trình độ tầm IELTS. Tuy nhiên, người dùng khơng thể đóng phần
câu hỏi lại được nên không thể đối chiếu lại với đoạn văn để kiểm tra.

Một số minigame luyện khả năng dùng từ và văn phạm. Trái: Xác định cách dùng từ này
hợp lệ hay khơng (văn phạm, chính tả). Giữa: Xác định phần nào trong câu là dùng từ dư.
Phải: Xác định chữ này phù hợp với câu khơng (văn phạm, chính tả)


9

3. Đánh giá
Hai ứng dụng này đều tạo cơ hội cho người dùng rèn luyện trí não mà khơng
tốn q nhiều thời gian, vốn là một điểm cộng trong thế giới bận rộn của chúng ta
hiện nay. Lumosity cũng có nhiều ý tưởng trò chơi sáng tạo, dễ hiểu, mang tính thu
hút cao. Tuy nhiên, nhóm thích cách làm việc của Elevate hơn: lối làm việc “vừa
học vừa chơi” sẽ rất có ích cho các học sinh từ sớm có cơ hội học và rèn luyện tính
nhẩm và ngoại ngữ; thành viên nhóm thực chất nhờ Elevate mà biết được một số câu
nói và từ ngữ tiếng Anh mà trước giờ chưa từng nghe thấy, cũng như biết được mẹo
tính nhanh phần trăm của một số.
Dù vậy, hai ứng dụng này vẫn cịn một số thiếu sót. Những năm gần đây có
xuất hiện một số bài viết hồi nghi về tác dụng của các ứng dụng này. Đặc biệt là
Lumosity; khơng ít trị chơi của ứng dụng là sao chép từ các trị chơi khác có sẵn và
chỉ tạo ra để chơi chứ không dạy người chơi kiến thức mới mẻ không giống Elevate.
Nhưng quan trọng hơn cả là thời gian sử dụng của người dùng. Cả hai ứng dụng này,

cùng với bao ứng dụng khác cùng loại, đều có một chế độ tài khoản trả tiền cho đầy
đủ quyền truy cập đến các tính năng của ứng dụng. Những người dùng khơng có
điều kiện chi trả sẽ bị giới hạn số trò chơi hay bài tập làm được mỗi ngày. Vì thế,
nhiều người dùng vẫn thấy chưa thỏa được đủ thời gian luyện tập mong muốn, dẫn
đến luyện tập các kỹ năng khác nhau không đồng đều. Do các ứng dụng này chọn
ngẫu nhiên trò chơi mỗi ngày, điều đó kết hợp với thời gian sử dụng ít dễ gây sự
phát triển khơng đồng đều của kỹ năng trí óc người dùng, thậm chí dễ làm mai một
các kỹ năng ít được cơ hội rèn luyện nhiều.


10

CHƯƠNG 3: Ý TƯỞNG ĐỀ TÀI
1. Giới thiệu – Nguồn gốc ý tưởng
Để thỏa mãn yêu cầu tạo ra một trị chơi luyện trí não vừa mang tính thu hút
người chơi cũng như tạo điều kiện rèn luyện bản thân, nhóm đề xuất trị chơi nhập
vai mang tên BrainRPG (tên có thể thay đổi trong tương lai).
Ý tưởng này lấy cảm hứng từ một trị chơi Flash có từ lâu mang tên Stick RPG
2. Trong SRPG2, nhân vật chính là một người que đến từ thế giới 2D, do một lỗ
hỏng trong các dòng thời gian mà lạc vào thế giới 2.5D, và phải tìm đường trở về
thiên hà của mình. Tiền có thể giúp người chơi làm được nhiều thứ - từ mua các nhu
yếu phẩm để giúp đỡ các NPC khác trong thế giới, vũ khí để tự phòng vệ trước kẻ
xấu về đêm, hay cả các vật phẩm chủ chốt người chơi cần thu thập để một nhà khoa
học có thể giúp người chơi về nhà. Cách cơ bản nhất để kiếm tiền là kiếm việc làm,
và trò chơi cung cấp nhiều ngành nghề khác nhau với mức lương đa dạng.


11

Nếu người chơi muốn được tuyển vào những công việc tốt hơn hoặc thăng

chức, nhân vật của người chơi phải có kỹ năng phù hợp với chức vụ hoặc cơng việc
đó. Kỹ năng của người chơi được thể hiện qua ba thơng số chính: Thể lực, Trí tuệ
và Lơi cuốn. Tiền người chơi kiếm được từ cơng việc có thể dùng để tham gia các
hoạt động nhằm cải thiện các thơng số này, như tập thể hình, học them, uống bia,…

Người chơi có thể học thêm để tăng trí tuệ…


12

…hay tập thể hình để tăng thể lực.


13

Ý tưởng của BrainRPG cũng tựa giống vậy: người chơi là một người que đi
lạc vào một thế giới lạ, và phải tìm đường quay trở về. Để làm được điều đó, người
chơi cần tiền, vốn có thể kiếm được nhờ xin việc làm, và để được tuyển vào làm hay
thăng chức, người chơi phải đi học để cải thiện kỹ năng của bản thân, và từ chức cao
hơn có thể làm nhiều tiền hơn, dẫn đến việc đi học và rèn luyện thường xuyên hơn,
hoặc thậm chí đăng ký những khóa học đắt tiền nhưng hiệu quả hơn…

2. Các đặc trưng dự kiến
BrainRPG sẽ có những điểm khác biệt làm nó độc đáo và khác biệt so với
SRPG2. Kỹ năng của người chơi sẽ được thể hiện qua sáu thông số. Năm thông số
đầu tiên lần lượt là: Ngôn ngữ (Language, LNG), Tốn học (Maths, MTH), Trí nhớ
(Memory, MEM), Tốc độ (Speed, SPD) và Tập trung (Focus, FOC). Người chơi cải
thiện LNG và MTH thông qua đi học thêm trong khn viên trường trong thế giói
game, và MEM, SPD và FOC được cải thiện thông qua làm tốt công việc trong ca
làm việc hoặc tiếp thu bài tốt trong lớp học thêm. Các kỹ năng này bù lại sẽ là tiêu

chí cho nhân vật người chơi tuyển vào làm hoặc thăng chức trong những cơng việc
có sẵn.
Phần rèn luyện trí não sẽ xuất hiện một khi người chơi làm việc hoặc đi học.
Khác với SRPG2, vốn chỉ có một thông báo báo rằng người chơi nhận lương hay
tăng kỹ năng, mỗi ca làm việc hoặc lớp học trong BrainRPG là một minigame nhỏ.
Các minigame này có đồ họa tương ứng với lớp học hay cơng việc đó, và sẽ thử
thách người chơi trên một hay nhiều kỹ năng trí não như đã nêu trên. Người chơi
được khuyến khích hồn thành các thử thách này vừa nhanh và hiệu quả, vì tùy vào
tốc độ và độ chính xác mà nhân vật của người chơi cũng sẽ được điểm thưởng phụ
cho các kỹ năng nhân vật, ngay cả trên những kỹ năng mà khơng cần cho cơng việc
hay lớp học đó nhưng lại cần để xin tuyển hoặc thăng chức trong cơng việc khác.
Bằng cách này, nhóm mong rằng trị chơi sẽ có tính tương tác cao: người chơi sẽ
được rèn luyên trí não, và nhân vật của người chơi cũng sẽ trở nên mạnh hơn, và từ
đó thành cơng trong thế giới game dễ hơn.
Một yếu tố khác cũng quan trọng để tạo thử thách cho người chơi là tâm thần.
“Máu” trong BrainRPG là “Mental Health”, đại diện cho sức khỏe tâm thần của nhân
vật người chơi. Nhân vật nhận “sát thương” tâm thần khi vào học, bắt đầu ca làm
việc, hay trong quá trình học tập/làm việc làm một lỗi lầm nào đó. Nếu sát thương
đẩy sức khỏe tâm thần đến múc 0 hoặc thấp hơn, nhận vật sẽ bị suy sụp tinh thần và
phải nhập viện. Không những phải trả viện phí, nhân vật cịn sẽ bỏ lỡ buổi học hoặc
ca làm việc đó, khơng nhận thêm kỹ năng từ thời gian học tập, làm việc hay lương,
và nghiêm trọng hơn sẽ có cơ hội mất điểm kỹ năng từ việc rối loạn trí óc. Để giữ


14

sức khỏe tâm thần, người chơi được khuyến khích phải chăm sóc sức khỏe của bản
thân. Những hoạt động như ăn uống có đều độ, đi tập thể dục hay đi xem phim, chơi
điện tử có thể hồi phục tâm thần của người chơi, với cơ hội nâng cấp kỹ năng thứ
sáu là Tâm thần (Mental, MNT). Khác với năm kỹ năng trước đó, MNT khơng được

xét điều kiện cho bất kỳ công việc hay lớp học nào, thay vào đó nó là “giáp” của
người chơi, với MNT cao giảm sát thương tâm thần nhận được khi người chơi mắc
lỗi. Đương nhiên, không phải hoạt động hồi phục tâm thần nào cũng tốt; một số hoạt
động nếu làm quá nhiều có thể khiến những kỹ năng khác bị thối hóa, nên người
chơi cũng phải bảo đảm cân bằng giữa học tập, làm việc và giải trí.
Trị chơi sẽ được chơi trong một góc nhìn 2D nhìn từ trên xuống, và sẽ được
xây dựng và phát triển trên động cơ Unity.


15

CHƯƠNG 4: DEMO MINIGAME: KỸ SƯ AN NINH
MẠNG
1. Bối cảnh
Một trong những nghề nghiệp người chơi có thể cho nhân vật tuyển dụng là
kỹ sư an ninh mạng cho một công ty IT. Công ty này liên tục bị tội phạm công nghệ
cao tấn công vào máy chủ nhằm đánh cắp dữ liệu, và cần tuyển một kỹ sư để vận
hành và phát triển phần mềm chống tội phạm công nghệ mà công ty vừa phát hành.
Để được tuyển và thăng chức, người chơi cần phải có LNG, MTH và FOC
cao. Minigame tương ứng với cơng việc là một trị chơi trí nhớ, yêu cầu người chơi
phải ghi nhớ vị trí của một số mũi tên trên một lưới, sau đó gán đúng hướng mũi tên
vào đúng ơ tương ứng. Người chơi được khuyến khích giải mã càng nhiều họa tiết
càng tốt, nên thực hiện tốt công việc cũng sẽ tăng kỹ năng MEM và SPD của nhân
vật.

2. Giao diện
(1)
(7)
(6)
(2)

(3)
(4)
(5)

1. Sức khỏe tâm thần: “Máu” của nhân vật người chơi; nếu nhận sát thương khiến
cho sức khỏe đạt 0 hoặc thấp hơn, người chơi thua cuộc. Là một GameObject
có 2 Image, một Text, một Slider và script với các hàm get, set giá trị sức
khỏe.


16

2. Thời gian: Thời gian của minigame, trong thế giới game là thời gian còn lại
trước khi hết ca làm việc. Một khi đạt 0, trò chơi/ca làm việc kết thúc và
chuyển về thế giới game. Đại diện bởi Text.
3. Trạng thái: Trạng thái của trò chơi (). Đại diện bởi Text.
4. Thời gian chuyển trạng thái: Thời gian còn lại trước khi trò chơi sang trạng
thái tiếp theo. Được dùng để cho người chơi biết khi nào dàn xếp ô lưới xong,
hay khi nào bắt đầu trò chơi. Đại diện bởi Text.
5. Đánh giá: Text chuyên dùng để báo lỗi (khi người chơi mắc lỗi lầm) và thống
kê số lỗi lầm người chơi mắc phải trong họa tiết đó, nếu có. Mặc định khơng
có giá trị và chỉ hiện chữ khi thỏa một số điều kiện nhất định.
6. Ô: Đơn vị cấu thành khu vực chơi, gồm SpriteRenderer và Script hình thành
ơ lưới. Có thể là ơ trống, ơ có mũi tên phương hướng hoặc tơ đỏ tồn bộ (hiển
thị người chơi đã chọn sai ơ đó). Khi để con trỏ chuột lên sẽ chuyển màu xanh
lá hiển thị người chơi đang nhập cho ô này. Được lưu là Prefab để khởi tạo ơ
lưới.
7. Ơ lưới: Được tạo dựng từ nhiều ô khác nhau, là nơi người chơi sẽ tương tác
với minigame. Vận hành theo nhiều trạng thái khác nhau.


3. Phân tích
3.1 Ơ
Mỗi ơ trong trị chơi được khởi tạo từ một Prefab bao gồm SpriteRenderer,
mảng sprite của các ô và script HackBlock.cs. Các thuộc tính ảnh hưởng cách vận
hành của ô là ba biến bool Selected, Show, Wrong và một biến blockType lấy dữ
liệu từ enum BlockType chứa tên các loại ô. Trong BlockType đặc biệt chú ý đến
các giá trị Empty, Wrong, Selected, North, South, East và West. Ngồi ra, script cịn
nhận GameObject chứa script tạo ơ lưới để tham chiếu đến trạng thái của trò chơi.
Trò chơi nhận biết vị trí con trỏ chuột của người chơi thông qua các hàm
OnMouseOver() và OnMouseExit(); Selected sẽ mang giá trị true nếu con trỏ chuột
đang nằm trong ô, và false nếu con trỏ khơng cịn bên trong ơ nữa. Một khi trị chơi
xác định ơ nào có Selected là true, nếu trạng thái của trò chơi cho phép nhập thì hàm
Update liên tục kiểm tra giá trị nhập của người chơi. Nếu người chơi nhấp phím mũi
tên tương ứng với hướng được định ra trong ô, Show sẽ được đặt thành true; ngược
lại, nếu hướng mũi tên sai hoặc ơ đó khơng có mũi tên thì Wrong sẽ được đặt thành
true. Hàm Update() đồng thời gọi một hàm Render() dùng để vẽ sprite trên
SpriteRenderer bằng cách gọi id của giá trị enum gắn với Sprite tương ứng. Hàm
Render() trước hết kiểm tra xem Wrong có true khơng (tức là người chơi đã bị sai ơ
đó), nếu có thì tơ đỏ hồn tồn, và nếu khơng sẽ kiểm tra Selected (người chơi có


17

đang chọn ơ đó để nhập) để quyết định tơ xanh hay không, và cuối cùng kiểm tra
Show; nếu true sẽ vẽ sprite tương ứng với giá trị blockType của ô, còn nếu không sẽ
vẽ khung ô trống để thể hiện rằng người dùng chưa tương tác với ô này và vì thế
chưa lộ giá trị.

3.2 Ơ lưới
Ơ lưới của minigame là một GameObject nhận prefab HackBlock.cs để khởi

tạo ô lưới, cùng với các text từ (2) đến (5) và script tạo thanh máu ở (1) để hàm
Update cập nhật UI. Bên trong script có một mảng hai chiều HackBlock tượng trưng
cho ô lưới của minigame, một bộ biến float dùng làm đồng hồ tính thời gian như
GameVisualTimer (thời gian trò chơi, dùng cho text (2)), StateTimer (thời gian
chuyển giữa các trạng thái, dùng cho text (4)), SetupUpdateTimer (dùng cho trạng
thái dàn dựng các giá trị ô trong lưới) và ErrorTextTimer (dùng cho text (5) để tạo
hiệu ứng “bật/tắt” chữ), một bộ biến int dùng để kiểm tra trạng thái gồm
NumberOfTilesSetUp (số ô đã gán giá trị), NumberOfHackedTiles (số ô người chơi
đã tương tác nhập giá trị), WrongTiles (số ô người chơi đoán sai) và một biến lấy
giá trị từ một bộ Enum HackGameState để điều khiển trạng thái của minigame.
Enum này gồm năm giá trị tượng trưng cho năm trạng thái: Init, Setup, Input,
Pending và End.
3.2.1 Sơ đồ trạng thái


18

3.2.2 Cách vận hành
3.2.2.1 MonoBehaviour.Start()
Trong hàm khởi tạo trò chơi, một mảng hai chiều prefab HackBlock sẽ được
tạo thông qua kích thước cho trước. Mỗi ơ lưới sẽ khởi tạo prefab, ngầm định đặt
Selected và Wrong là false, Show là true (để tạo cơ hội cho người chơi thấy và ghi
nhớ giá trị ô lưới trong trạng thái Setup) và blockType là Empty. Các biến int
NumberOfTilesSetUp, NumberOfHackedTiles và WrongTiles được đặt giá trị là 0
để chuẩn bị cho các trạng thái sau, và biến tính giờ trạng thái StateTimer được đặt
theo một hằng số (mặc định là 3) để báo người chơi thời gian bắt đầu. Sau khi khởi
tạo xong, khi frame gọi Update() đầu tiên trò chơi sẽ bước vào trạng thái Init.
3.2.2.2 Trạng thái Init
StateTimer sẽ đếm xuống mỗi giây, đồng thời cập nhật text giờ trạng thái (4)
để báo người chơi chuẩn bị bắt đầu minigame. Khi biến đạt 0, trò chơi chuẩn bị cho

trạng thái kế tiếp bằng cách đặt lại StateTimer, đồng thời khởi tạo giá trị cho biến
thời gian trò chơi GameVisualTimer (mặc định 90), biến SetupUpdateTimer (giá trị
1) và cập nhật tên trạng thái trong text (3) trước khi đặt trạng thái kế tiếp là Setup.
3.2.2.3 Trạng thái Setup
Biến SetupUpdateTimer sẽ đếm xuống mỗi giây, và khi mang giá trị 0 sẽ yêu
cầu trị chơi dàn xếp ơ lưới. Trị chơi thực hiện điều này bằng cách tìm một ơ bất kỳ
trên lưới mang giá trị Empty, sau đó chạy hàm bổ trợ getBlockType() để gán một
hướng bất kỳ cho ơ đó. Khi gán xong, biến NumberOfTilesSetUp tăng lên 1, và
SetupUpdateTimer được đặt lại 1 và Update() lập lại quy trình.
Một khi NumberOfTilesSetUp có giá trị bằng số ơ cần thiết (định nghĩa bằng
một hằng số cho trước, giá trị tùy vào độ khó), trị chơi lại chạy biến StateTimer (khi
này giờ trạng thái có ý nghĩa báo người chơi là chuẩn bị bắt đầu tái tạo ô lưới, và
người chơi nên ghi nhớ thực trạng ô lưới hiện tại). Khi hết thời gian, tất cả các ô
trong lưới lần lượt đặt Show thành false (hàm Render() trong HackBlock khi này sẽ
chỉ vẽ sprite ơ trống, thể hiện rằng giá trị ơ đó bị “che”), hàm NumberOfHackedTiles
được đặt giá trị 0, các text (2) và (3) được cập nhật giá trị và tên trạng thái, và trò
chơi bước vào trạng thái Input.
3.2.2.4 Trạng thái Input
Trạng thái này là điều kiện cuối cùng để chạy hàm kiểm tra trong Update()
của các ô HackBlock. HackBoard cung cấp một hàm getState có thể gọi từ trong
HackBlock thông qua GameObject.Find().GetComponent<>() để các ô lưới biết
được trạng thái hiện của lưới là gì. Ngồi việc con trỏ chuột nằm trong ô và người


19

dùng có nhấp phím mũi tên, HackBlock u cầu HackBoard chứa nó phải trong trạng
thái Input để tiến hành kiểm tra tính đúng đắn của giá trị người dùng nhập vào.
Ngoài ra, HackBoard cung cấp thêm hai hàm void onWrongTile() và
ReduceProgress() để bổ trợ cho các ô HackBlock tương tác với trị chơi. Nếu người

dùng nhập sai, khơng những ơ đang được chọn sẽ bị set Wrong thành true,
HackBlock cũng sẽ gọi onWrongTile() lên HackBoard chứa nó. Hàm này tăng biến
WrongTiles lên 1, đặt text đánh giá (5) thành một thông báo báo rằng người chơi
nhập sai, gây sát thương lên thanh sức khỏe tinh thần và đặt giá trị cho biến
ErrorTextTimer (mặc định 0.5) để canh giờ xuất hiện và biến mất của thông báo lỗi.
Bất kể người chơi nhập đúng hay sai, HackBlock cũng sẽ gọi ReduceProgress() làm
tăng biến NumberOfHackedTiles lên 1.
Biến GameVisualTimer sẽ đếm xuống mỗi giây khi trò chơi thỏa tất cả điều
kiện để tiếp tục, tức GameVisualTimer lớn hơn 0, NumberOfHackedTiles bé hơn
một hằng số (hằng số này cũng được sử dụng cho NumberOfTilesSetUp trong trạng
thái trước) và giá trị thanh sức khỏe tinh thần lớn hơn 0. Khi trị chơi khơng cịn thỏa
một trong các điều kiện trên, điều kiện không thỏa sẽ quyết định trạng thái kế tiếp
của trò chơi.
Nếu NumberOfHackedTiles bằng với hằng số đã đưa ra (tức người chơi đã
nhập đủ số ô tương đương với số ô cần giải mã), biến StateTimer lại được đặt lại để
canh thời gian đổi trạng thái và text trạng thái (3) sẽ được đổi tên hiển thị trạng thái
kế tiếp. Text đánh giá (5) khi này cũng sẽ hiện chữ báo số lỗi người chơi gây ra trong
họa tiết vừa rồi nếu WrongTiles lớn hơn 0. Trò chơi khi này chuyển sang trạng thái
Pending.
Nếu GameVisualTimer bé hơn hoặc bằng 0, hay thanh sức khỏe tâm thần đã
cạn kiệt, trò chơi bước vào trạng thái End kết thúc minigame. Tùy vào điều kiện kích
hoạt mà text đánh giá (5) cũng sẽ có giá trị khác nhau: một thơng báo báo rằng
“chương trình” chạy thành cơng trong trường hợp hết thời gian chơi, hoặc một thông
báo “tràn bộ nhớ” khi người chơi hết sức khỏe tâm thần.
3.2.2.5 Trạng thái Pending
Trạng thái này cho phép người chơi “xả hơi” một ít cũng như xem lại kết quả
của mình trong lượt chơi vừa rồi.
Trong thời gian StateTimer giảm xuống, tất cả ơ lưới sẽ có giá trị Show đặt
thành true để lộ giá trị tất cả các ô, trừ những ơ có Wrong bằng true (những ơ mà
người chơi trong lượt chơi vừa rồi nhập sai) sẽ được kiểm tra thêm nếu blockType

của ơ đó có phải là Empty hay không, và nếu khác sẽ đặt Wrong bằng false và Show


20

bằng true làm lộ giá trị thật ơ đó ra (nếu ơ sai thực chất trống thì vẫn hiển thị sai, nếu
sai do nhập khác giá trị sẽ báo người chơi giá trị đúng cho ơ đó).
Khi StateTimer đạt 0, trị chơi tiến hành khởi tạo lại ơ lưới bằng cách đặt mọi
ô lại theo giá trị blockType là Empty, Wrong là false và Show là true, gán
WrongTiles và NumberOfTilesSetUp là 0, gán lại giá trị cho StateTimer và
SetupUpdateTimer trước khi chuyển trạng thái minigame sang Setup và lập lại quy
trình minigame cho đến khi đạt điều kiện nhảy sang End.


21

CHƯƠNG 5: TỰ ĐÁNH GIÁ
Nhìn chung, bản thân nhóm thấy đây là một ý tưởng có triển vọng và tiềm
năng trở thành một sản phẩm hồn chỉnh độc đáo. Nhóm cũng thấy rất gắn bó với
đề tài này, vì đây không những là tái tạo lại một phần của tuổi thơ, mà đây cũng là
một cơ hội để bắt đầu học hỏi về quy trình phát triển và thiết kế trò chơi, cũng như
cải thiện kỹ năng dùng Unity. Về cách làm việc, nhóm chủ động khảo sát ứng dụng
dựa theo lời khuyên của giảng viên, đồng thời tìm hiểu cách sử dụng Unity một cách
tích cực.
Tuy nhiên, do thiếu nhân lực, thời gian cũng như kinh nghiệm, bản thân nhóm
thấy làm việc vẫn chưa hiệu quả trong đề tài này. Đề tài này có quy mơ khá rộng cho
một người làm, mà áp lực đồ án của các môn khác cũng như chỉ mới qua một lớp
Nhập môn Phát triển Game khiến cho sau một học kỳ nhóm chỉ làm việc trên Đồ án
được chưa đến một tháng cho độc một minigame. Tuy nhiên, nhóm vẫn đặt nhiều kỳ
vọng vào đồ án và hy vọng rằng, trong môn Đồ án 2 sẽ cho ra một sản phẩm hoàn

chỉnh, chất lượng tốt.


22

CÁC LINK THAM KHẢO
1. Link liên quan đến đồ án
• Ơ và ơ lưới: />• Thanh máu: />• Trạng thái:
 /> /> />• Link project: />
2. Link các ứng dụng được đề cập
• Elevate:
 />=US
 /> />• Lumosity:
 />&hl=en&gl=US
 /> />• Stick RPG 2:
 Free (dùng Flashpoint): /> Director’s Cut (mua):
/>Cut/



×