BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
NGÀNH KỸ THUẬT PHẦN MỀM
Đề tài
TÌM HIỂU CORONA SDK VÀ LUA,
ỨNG DỤNG PHÁT TRIỂN GAME
TRÊN THIẾT BỊ DI ĐỘNG
Sinh viên: Hồ Hữu Nhân
Mã số: 1111321
Khóa: K37
Cần Thơ, 05/2015
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
NGÀNH KỸ THUẬT PHẦN MỀM
Đề tài
TÌM HIỂU CORONA SDK VÀ LUA,
ỨNG DỤNG PHÁT TRIỂN GAME
TRÊN THIẾT BỊ DI ĐỘNG
Người hướng dẫn
Sinh viên thực hiện
ThS. Phan Phương Lan
Hồ Hữu Nhân
Mã số: 1111321
Khóa: K37
Cần Thơ, 05/2015
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
LỜI CẢM ƠN
Trước hết, tôi xin gởi lời cảm ơn chân thành và sự tri ân sâu sắc đến các thầy
cô của trường Đại học Cần Thơ. Đặc biệt là các thầy cô khoa Công Nghệ Thông
Tin và Truyền Thông đã tạo điệu kiện cho tôi học tập và hoàn thành khóa học, cũng
như luận văn tốt nghiệp này.
Đồng thời tôi cũng xin chân thành cảm ơn cô Phan Phương Lan đã nhiệt
tình hướng dẫn tôi hoàn thành luận văn tốt nghiệp trong suốt thời gian qua.
Bên cạnh đó, tôi cảm ơn tất cả người thân, bạn bè đã tạo điều kiện và động
viên tôi hoàn thành tốt luận văn này. Đặc biệt, tôi muốn gửi lời cảm chân chân
thành đến anh Nguyễn Thanh Hoài, cảm ơn anh đã nhiệt tình giúp đỡ, giải đáp thắc
mắc cho tôi trong suốt quá trình làm luận văn.
Trong quá trình học tập, cũng như là trong quá trình làm luận văn, mặc dù
đã cố gắng hết sức nhưng vẫn khó tránh khỏi sai sót, vì vậy rất mong nhận được ý
kiến đóng góp quý báu của quý Thầy Cô và các bạn.
Tôi xin chân thành cảm ơn!
Cần thơ, ngày 3 tháng 5 năm 2014
Sinh viên
Hồ Hữu Nhân
Chuyên ngành Kỹ Thuật Phần Mềm
3
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
MỤC LỤC
Lời cảm ơn .............................................................................................................. 3
Mục lục .................................................................................................................... 4
Danh mục bảng ....................................................................................................... 6
Danh mục hình ........................................................................................................ 7
Tóm tắt .................................................................................................................... 9
Abstract ................................................................................................................. 10
Giới thiệu ............................................................................................................... 11
Đặt vấn đề ................................................................................................ 11
Tóm tắt lịch sử giải quyết vấn đề ............................................................ 11
Mục tiêu đề tài ......................................................................................... 12
Đối tượng và phạm vi nghiên cứu ........................................................... 12
Nội dung nghiên cứu ............................................................................... 12
Những đóng góp chính của đề tài ............................................................ 13
Bố cục của quyển luận văn ...................................................................... 13
Chương 1 - Mô tả bài toán .................................................................................... 14
1.1. Mô tả chi tiết bài toán .............................................................................. 14
1.2. Phân tích đánh giá các giải pháp/ có liên quan đến bài toán ................... 15
1.3. Tiếp cận giải quyết vấn đề ....................................................................... 16
Chương 2 - Thiết kế và cài đặt giải pháp .............................................................. 30
2.1. Thiết kế .................................................................................................... 30
2.1.1.
Thiết kế kiến trúc ........................................................................... 30
2.1.2.
Thiết kế dữ liệu .............................................................................. 31
2.1.3.
Thiết kế giao diện .......................................................................... 37
2.1.4.
Thiết kế thuật toán ......................................................................... 51
Chương 3 - Kiểm thử và đánh giá ......................................................................... 58
3.1. Mục tiêu kiểm thử .................................................................................... 58
3.2. Kịch bản kiểm thử ................................................................................... 58
3.3. Kết quả kiểm thử ..................................................................................... 59
Kết luận ................................................................................................................. 61
Kết quả đạt được ............................................................................................... 61
Chuyên ngành Kỹ Thuật Phần Mềm
4
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
Hạn chế .............................................................................................................. 61
Hướng phát triển ............................................................................................... 61
Tài liệu tham khảo ................................................................................................. 62
Phụ lục ................................................................................................................... 63
1.
2.
3.
4.
Hướng dẫn cài đặt .................................................................................... 63
1.1.
Cài đặt Java Development Kit .......................................................... 63
1.2.
Cài đặt Corona SDK ......................................................................... 63
1.3.
Cài đặt Corona Cards ........................................................................ 63
Hướng dẫn phát triển ............................................................................... 65
2.1.
Tạo một project từ Corona SDK ....................................................... 65
2.2.
Cách build project (xuất ra file .apk) ................................................ 66
2.3.
Cách tạo một bodyType sử dụng công cụ Physics Editor. ............... 67
Sơ lược về ngôn ngữ Lua......................................................................... 73
3.1.
Giới thiệu .......................................................................................... 73
3.2.
Cú pháp ............................................................................................. 74
Sơ lược về Corona SDK .......................................................................... 78
4.1.
Các đối tượng hiển thị....................................................................... 78
4.2.
Sự kiện trên các đối tượng hiển thị (multitouch, tap, touch) ............ 80
4.3.
Sự kiện vật lý cho các đối tượng (physics) ....................................... 82
4.4.
Chuyển trang ..................................................................................... 83
4.5.
Đối tượng lớp widget ........................................................................ 85
4.6.
Đối tượng lớp native ......................................................................... 86
4.7.
Thao tác với File ............................................................................... 86
4.8.
Thao tác với database........................................................................ 89
4.9.
Transition, Timer .............................................................................. 90
Chuyên ngành Kỹ Thuật Phần Mềm
5
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
DANH MỤC BẢNG
Bảng 1. 1: Bảng diễn giải các đối tượng trong game ............................................ 17
Bảng 1.2: Danh sách các sơ đồ tuần tự ................................................................. 18
Bảng 2.1: Danh sách các đối tượng trong game ................................................... 31
Bảng 2.2: Bảng diễn giải các dữ liệu dùng trong game ........................................ 36
Bảng 2.3: Bảng sanh sách tên các thuật toán ........................................................ 51
Bảng 3.1: Kết quả kiểm thử theo từng chức năng................................................. 59
Bảng 3.2: Kết quả các lần chơi xác định số điểm – sao. ....................................... 59
Chuyên ngành Kỹ Thuật Phần Mềm
6
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
DANH MỤC HÌNH
Hình 1.1: Sơ đồ lớp ............................................................................................... 16
Hình 1.2: Sơ đồ tuần tự màn chơi thứ 1. ............................................................... 19
Hình 1.3: Sơ đồ tuần tự màn chơi thứ 2. ............................................................... 20
Hình 1.4: Sơ đồ tuần tự màn chơi thứ 3. ............................................................... 20
Hình 1.5: Sơ đồ tuần tự màn chơi thứ 4. ............................................................... 21
Hình 1.6: Sơ đồ tuần tự màn chơi thứ 5. ............................................................... 21
Hình 1.7: Sơ đồ tuần tự màn chơi thứ 6. ............................................................... 22
Hình 1.8: Sơ đồ tuần tự màn chơi thứ 7. ............................................................... 23
Hình 1.9: Sơ đồ tuần tự màn chơi thứ 8. ............................................................... 24
Hình 1.10: Sơ đồ tuần tự màn chơi thứ 9. ............................................................. 24
Hình 1.11: Sơ đồ tuần tự màn chơi thứ 10. ........................................................... 25
Hình 1.12: Sơ đồ tuần tự màn chơi thứ 11. ........................................................... 25
Hình 1.13: Sơ đồ tuần tự màn chơi thứ 12. ........................................................... 26
Hình 1.14: Sơ đồ tuần tự màn chơi thứ 13. ........................................................... 27
Hình 1.15: Sơ đồ tuần tự màn chơi thứ 14. ........................................................... 28
Hình 1.16: Sơ đồ tuần tự màn chơi thứ 15. ........................................................... 29
Hình 2.1: Hệ thống phân cấp project cơ bản ......................................................... 30
Hình 2.2: Sơ đồ phân cấp các chức năng của phần mềm ...................................... 31
Hình 2.3: Sơ đồ phân cấp dữ liệu dùng trong game .............................................. 36
Hình 2.4: Loạt hình ảnh hình thành nên chú nhện ................................................ 37
Hình 2.5: Sử dụng chức năng Place Insert Frame trong Corel. ............................ 37
Hình 2.6: Chú nhện có màu quả bóng trắng. ........................................................ 38
Hình 2.7: Mảng các ảnh động các chú nhện. ........................................................ 38
Hình 2.8: Loạt hình ảnh hình thành nên lò xo. ..................................................... 38
Hình 2.9: Lò xo có thêm các thanh đỡ. ................................................................. 38
Hình 2.10: Mảng các ảnh động của lò xo. ............................................................ 39
Hình 2.11: Loạt hình ảnh hình thành nên vật nặng. .............................................. 39
Hình 2.12: Mảng các ảnh động vật nặng. ............................................................. 40
Hình 2.13: Giao diện loading ................................................................................ 41
Hình 2.14: Giao diện menu ................................................................................... 41
Hình 2.15: Giao diện menu (có các nút bật/tắt âm thanh) .................................... 42
Hình 2.16: Giao diện hướng dẫn 1 ........................................................................ 42
Hình 2.17: Giao diện hướng dẫn 2 ........................................................................ 43
Hình 2.18: Giao diện chọn màn chơi .................................................................... 43
Hình 2.19: Giao diện màn 1 .................................................................................. 44
Hình 2.20: Giao diện màn 2 .................................................................................. 44
Hình 2.21: Giao diện màn 3 .................................................................................. 45
Hình 2.22: Giao diện màn 4 .................................................................................. 45
Hình 2.23: Giao diện màn 5 .................................................................................. 46
Hình 2.24: Giao diện màn 6 .................................................................................. 46
Chuyên ngành Kỹ Thuật Phần Mềm
7
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
Hình 2.25: Giao diện màn 7 .................................................................................. 47
Hình 2.26: Giao diện màn 8 .................................................................................. 47
Hình 2.27: Giao diện màn 9 .................................................................................. 48
Hình 2.28: Giao diện màn 10 ................................................................................ 48
Hình 2.29: Giao diện màn 11 ................................................................................ 49
Hình 2.30: Giao diện màn 12 ................................................................................ 49
Hình 2.31: Giao diện màn 13 ................................................................................ 50
Hình 2.32: Giao diện màn 14 ................................................................................ 50
Hình 2.33: Giao diện màn 15 ................................................................................ 51
Hình 2.34: Thuật toán kiểm tra chiến thắng cho 1 màn chơi. ............................... 52
Hình 2.35: Thuật toán nhện chụp lấy bóng cùng màu, ném đối tượng khác ........ 53
Hình 2.36: Thuật toán tạo nét cắt .......................................................................... 54
Hình 2.37: Thuật toán tạo sợi dây treo vật thể ...................................................... 55
Hình 2.38: Thuật toán tạo các đối tượng – cách xách định từng va chạm. ........... 56
Hình 2.39: Thuật toán tính lực va chạm. ............................................................... 57
Chuyên ngành Kỹ Thuật Phần Mềm
8
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
TÓM TẮT
Sự bùng nổ của các thiết bị thông minh trong vài năm qua đã dẫn đến sự ra
đời của một thị trường tiềm năng - thị trường ứng dụng di động. Thị trường này có
tốc độ phát triển nhanh chóng và mạnh mẽ, đặc biệt trong lĩnh vực lập trình game
trên di động, đó là vùng đất hứa cho các lập trình viên đam mê về game trên di
động. Luận văn tốt nghiệp là công trình nghiên cứu về game engine – bộ công cụ
cung cấp môi trường phát triển tích hợp được đơn giản hóa, đặc biệt là công cụ
Corona SDK, 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ó. Sản phẩm của luận văn là một game
(Spider Ball) chạy được trên các thiết bị di động, máy tính bảng chạy hệ điều hành
Android. Game được phát triển trên ngôn ngữ Lua và công cụ phát triển trò chơi
Corona SDK, theo cách lập trình hướng dữ liệu game tạo ra 15 màn chơi được sắp
xếp từ mức độ dễ đến khó, giao diện thân thiện, đối tượng đồ họa sinh động, âm
thanh trực quan lôi cuốn người chơi. Tuy game chỉ chạy được trên nền tảng
Android, nhưng trong tương lai game sẽ tiếp tục phát triển và có mặt trên cả 3 nền
tảng thông dụng hiện nay (Android, iOS và Window phone).
Chuyên ngành Kỹ Thuật Phần Mềm
9
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
ABSTRACT
The explosion of smart devices in the past few years led to the birth of a
potential market - the mobile application market. Market is able to grow strong and
fast, especially in the moblie game programming, the promised land which gives
software developer enthuse for games on mobile. Thesis researchs for the game
engine - tools are generally provided in an integrated development environment to
enable simplified, especially Corona SDK tools, they provide a flexible and
reusable software platform which provides all the core functionality needed.
Product of the thesis (Spider Ball) runing on mobile devices, tablets running the
Android operating system. The game has developed on Lua language and Corona
SDK, follow programming in a data-driven manner, game have 15 levels from easy
to difficult, user-friendly interface, vivid graphic objects, visual audio appeal
players. However, the game only runs on the Android platform, but the game will
continue to develop in the future and be present on all 3 platforms currently used
(Android, iOS and Windows Phone).
Chuyên ngành Kỹ Thuật Phần Mềm
10
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
GIỚI THIỆU
ĐẶT VẤN ĐỀ
Xuất phát từ ý tưởng của game Cut the Rope (Cắt dây thừng) là một trò chơi
điện tử thể loại giải đố dựa trên vật lý nhiều phần của nhà phát triển Nga ZeptoLab
thiết kế cho nhiều dạng máy và thiết bị chơi. Mục tiêu của trò chơi là đưa viên kẹo
vào miệng của Om Nom, một quái vật nhỏ xíu màu xanh lá, trong khi phải thu thập
càng nhiều sao càng tốt. Dựa trên ý tưởng của game Cut the Rope, một ý tưởng về
trò chơi mới được hình thành. Trong trò chơi mới này, 1 cặp viên kẹo – Om Nom
của game Cut the Rope sẽ trở thành 2 cặp bóng – nhện, viên kẹo sẽ trở thành các
quả bóng, Om Nom sẽ trở thành các chú nhện sinh động, các quả bóng có nhiều
màu sắc hơn, ngoài ra còn có các đối tượng khác (lò xo, vật nặng, vật cản, …) để
làm cho trò chơi hấp dẫn hơn.
Để phát triển game đa nền tảng, Corona SDK thường được sử dụng vì giúp phát
triển ứng dụng nhanh hơn gấp nhiều lần. Ngoài ra, nó còn cung cấp hệ thống thư
viện hỗ trợ phong phú và được thiết kế rất tốt do đó nhà phát triển phần mềm có
thể dễ dàng xây dựng các thao tác (hành động) trong game chỉ với một vài dòng
code. Với công cụ Corona SDK, chúng ta chỉ cần phát triển game một lần, sau đó
có thể dễ dàng biên dịch ứng dụng sang các nền tảng khác như Andriod, iOS,
Kindle Fire, Nook và Windows Phone một cách dễ dàng. Không những vậy Corona
SDK còn cho hỗ trợ chuyển đổi với những thiết bị có kích cỡ và độ phân giải khác
nhau một cách dễ dàng.
Từ những nội dung trên, tác giả đề xuất đề tài “TÌM HIỂU CORONA SDK VÀ
LUA, ỨNG DỤNG PHÁT TRIỂN GAME TRÊN THIẾT BỊ DI ĐỘNG”. Game
cụ thể được phát triển dựa trên ý tưởng được trình bày ở trên (nhện bắt bóng) có
tên là “Spider Ball”.
TÓM TẮT LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Việc phát triển game chạy đa nền tảng là một vấn đề không mới, vì hiện tại có
rất nhiều game sử dụng nhiều công cụ khác nhau (Unity, Marmalade, V-Play,
Cocos2D JS…) được đưa lên hằng ngày trên các chợ Google Play hay App store.
Trong đó có game Cut the Rope, một dạng game giải đố với ý tưởng đưa một viên
kẹo vào miệng của một con quái vật. Game này không cung cấp mã nguồn, cũng
không cho biết các công nghệ để làm ra sản phẩm này. Vì vậy, tác giả không biết
được thuật toán của game Cut the Rope và không tái sử dụng được bất cứ một thành
phần nào của game này. Mặc dù game “Spider Ball” dựa trên ý tưởng của game
Chuyên ngành Kỹ Thuật Phần Mềm
11
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
trên nhưng áp dụng trên đối tượng khác nhau, số lượng đối tượng khác nhau, thuật
toán do tác giả tự đề xuất. Do đó, bài toán tự đề xuất này là hoàn toàn mới đối với
tác giả và chưa từng được giải quyết trước đó.
MỤC TIÊU ĐỀ TÀI
Ứng dụng bộ công cụ phát triển ứng dụng Corona SDK và các thư viện sẵn có
(OpenGL, OpenAL, Box2D, JSON …) để xây dụng game “Spider Ball” với các
vấn đề trọng tâm như
– Bố trí các màn chơi một cách logic và theo mức độ từ dễ đến khó hơn.
– Quản lý (bật/tắt) được âm thanh (hiệu ứng/nhạc nền) thông qua các nút
trên giao diện menu.
– Tạo được nét cắt để có thể đưa chính xác các quả bóng đến từng chú
nhện.
– Làm cho các chú nhện có thể chụp lấy bóng cùng màu, ném các bóng
khác màu (vật thể khác).
– Tạo ra các đối tượng lò xo để bắn các vật thể khác (vật nặng, bóng), và
bắn được nhiều lần.
– Lưu các dữ liệu trong game sử dụng JSON.
ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Đối tượng được nghiên cứu là các đối tượng đồ họa và các thuật toán được sử
dụng trong game. Mặc dù công cụ được sử dụng để phát triển game hỗ trợ đa nền
tảng (Android, iOS, Window phone), nhưng trong phạm vi luận văn này nghiên
cứu chỉ tập trung vào nền tảng Android.
NỘI DUNG NGHIÊN CỨU
Tác giả sẽ tập trung nghiên cứu các nội dung chính như sau:
– Cách thức xây dựng trò chơi đa nền tảng sử dụng công cụ Corona SDK
và ngôn ngữ LUA.
– Bộ thư viện thư viện vật lý trong Corona SDK (Physics), bộ thư viện vật
lý hỗ trợ trong quá trình phát triển game, cách tạo ra môi trường vật lý, cho đến
cách xử lý các va chạm giữa các đối tượng đồ họa với nhau, tùy biến sản phẩm
cuối cùng để có thể biên dịch chạy được trên đa nền tảng. Hiểu được một cách
tổng quan, sơ bộ về phương thức hoạt động của một số trò chơi đơn giản, những
thành phần cơ bản có trong một trò chơi. Tìm hiểu cách thêm, sửa, xóa, tạo mới
các kết cấu, cấu tạo, xếp đặt màu sắc lên các đối tượng hiển thị có trong Corona
SDK.
Chuyên ngành Kỹ Thuật Phần Mềm
12
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
– Ngôn ngữ LUA, ngôn ngữ lập trình thông dịch với đặc điểm nhỏ gọn, đa
nền tảng. Tìm hiểu cách lập trình, soạn thảo mã kịch bản cho chương trình, cách
đặt ra quy luật trong trò chơi.
– Tham khảo các flash game trên mạng, tìm kiếm ý tưởng để tạo ra các
màn chơi.
– Xây dụng game “Spider Ball” thông qua các bước phân tích, thiết kế, cài
đặt và kiểm thử phần mềm.
NHỮNG ĐÓNG GÓP CHÍNH CỦA ĐỀ TÀI
Đề tài đã đóng góp thêm vào tài liệu nghiên cứu cho sinh viên khoa Công nghệ
thông tin & Truyền thông, trong lĩnh vực lập trình game trên di động. Ngoài ra, đề
tài cũng là tài liệu tham khảo cho các sinh viên các khóa sau, khi nghiên cứu về
Corona SDK và ngôn ngữ LUA, ứng dụng phát triển trò chơi đa nền tảng.
Game “Spider Ball” bổ sung thêm vào kho trò chơi phong phú trên google play
thuộc thể loại giải đố. Game giúp người chơi rèn luyện tư duy logic, giải trí sau giờ
làm việc mệt mỏi.
BỐ CỤC CỦA QUYỂN LUẬN VĂN
Quyển luận văn gồm 5 nội dung chính.
Phần đầu gồm có: lời cảm ơn, mục lục, danh mục đồ thị, biểu bảng và hình ảnh,
tóm tắt và abstract.
Phần giới thiệu gồm: mô tả sơ lược về bài toán (đặt bóng vào hộp cùng màu),
đưa ra vấn đề dựa trên bài toán đó, lợi ích và vì sao chọn Corona SDK; tóm tắt lịch
sử giải quyết vấn đề; nêu mục tiêu đề tài với những vấn đề trọng tâm cần giải quyết;
nêu đối tượng và pham vi của đề tài; liệt kê toàn bộ nội dung mà đề tài nghiên cứu
và nêu những đóng góp chính của đề tài.
Phần nội dung gồm: 3 chương. Chương 1 - mô tả chi tiết bài toán, đặt ra các yêu
cầu chức năng, yêu cầu phi chức năng, cách giải quyết; phân tích đánh giá các giải
pháp có liên quan đến bài toán, đưa ra các hướng giải quyết và chọn lựa hướng giải
quyết; tiếp cận giải quyết vấn đề đặt ra. Chương 2 - trình bày các thiết kế kiến trúc;
thiết kế dữ liệu; thiết kế đối tượng - giao diện; thiết kế thuật toán; trình bày cách
cài đặt giải pháp dựa vào các thiết kế. Chương 3 - Mô tả mục tiêu kiểm thử, kịch
bản kiểm thử và kết quả kiểm thử.
Phần kết luận trình bày về các kết quả đạt được, hạn chế và hướng phát triển của
đề tài.
Phần cuối là các tài liệu tham khảo và phụ lục bao gồm: hướng dẫn cài đặt,
hướng dẫn sử dụng.
Chuyên ngành Kỹ Thuật Phần Mềm
13
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
CHƯƠNG 1 - MÔ TẢ BÀI TOÁN
1.1.
MÔ TẢ CHI TIẾT BÀI TOÁN
Vấn đề bài toán đặt ra là làm như thế nào để có thể đưa những quả bóng vào
những chú nhện cùng màu. Bài toán có 15 màn chơi trong từng màn chơi tùy mức
độ phức tạp mà người lập trình đặt ra số lượng nhện và bóng trong màn chơi là
nhiều hay ít nhưng vẫn giữ đúng cặp (nhện – bóng) nhất định. Cụ thể, nếu có 2
nhện thì số bóng tương ứng phải là 2. Ở đây ta có 1 nhện màu trắng, 1 nhện màu
đỏ, 1 bóng trắng, 1 bóng đỏ. Đặc biệt, nếu ở màn chơi có nhiều hơn một quả bóng
cùng màu xuất hiện, thì chú nhện có màu tương ứng đó phải chụp được nhiều lần.
Các chú nhện được đặt cố định ở một vị trí trong màn chơi, còn các quả bóng thì
linh động hơn, có thể được treo, nằm trên vật thể khác. Ngoài ra, còn có các khúc
gỗ làm vật cản, lò xo (bắn các vật thể khác), các dây treo treo đối tượng khác (vật
nặng, khúc gỗ, …), vật nặng gây cản trở bóng đến các chú nhện.
Các yêu cầu đặt ra với bài toán này được chia thành 2 nhóm: yêu cầu chức
năng, yêu cầu phi chức năng.
Các yêu cầu chức năng:
–
Chọn màn chơi – cho phép người dùng lựa chọn màn để chơi. Khi vào
màn chơi thì từng màn có các chức năng: tạo nét cắt, tạo dây treo đối tượng khác,
các chú nhện chụp lấy những quả bóng cùng màu, ném các vật khác (bóng khác
màu,… ), lò xo giúp bắn các vật thể khác đi.
–
Hướng dẫn – giúp người dùng hiểu được luật chơi.
–
Bật/tắt âm thanh (hiệu ứng/nhạc nền).
–
Chuyển đổi ngôn ngữ (tiếng Anh/tiếng Việt).
–
Xem thông tin về sản phẩm.
Các yêu cầu phi chức năng
–
Giao diện
+
Đẹp, bắt mắt.
+
Các tông màu phù hợp với các đối tượng.
–
Thời gian thực hiện
+
Thời gian trễ không quá 5s
+
Game vận hành mượt mà không có lỗi phát sinh.
–
Thiết bị hỗ trợ
+
Hệ điều hành Android 2.3.3 hoặc cao hơn (ARMv7). Ứng dụng được
xây dựng trong phiên bản này sẽ không cài đặt được trên các thiết bị ARMv6.
Chuyên ngành Kỹ Thuật Phần Mềm
14
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
+
Bộ nhớ điện thoại trống 30M.
+
Độ phân giải màn hình đề nghị 800x480 hoặc cao hơn.
+
Ghi chú: hiện tại game chạy tốt trên nền tảng android, công việc
chuyển đổi sang nên tảng Window Phone, iOS là không mất nhiều thời gian.
1.2. PHÂN TÍCH ĐÁNH GIÁ CÁC GIẢI PHÁP/ CÓ LIÊN QUAN ĐẾN
BÀI TOÁN
Vấn đề được tiếp nhận và có nhiều hướng giải quyết, bên dưới là các hướng
giải quyết bài toán.
Về công nghệ, CorelDRAW là một phần mềm biên tập đồ họa vector vì nó có
các tính năng: tạo, xuất ảnh dưới dạng vector, dễ dàng chuyển đổi một bức ảnh
sang dạng vector. Vì vậy tác giả sử dụng phần mềm CorelDRAW để cài đặt các
thiết kế đối tượng và giao diện trong game “Spider Ball”.
Hướng giải quyết thứ 1 sử dụng công nghệ Corona SDK và ngôn ngữ LUA.
Hướng giải quyết thứ 2 sử dụng công nghệ Cocos2D JS sử dụng hoàn toàn
bằng JavaScript.
Công nghệ Cocos2D JS có ưu điểm về hỗ trợ đa nền tảng, đa ngôn ngữ, tuy
nhiên công nghệ này không cung cấp một cấu trúc tốt cho ứng dụng, API không
chính thống do đa ngôn ngữ và hoàn toàn không theo một chuẩn nào. Công nghệ
Corona SDK và LUA có ưu điểm hơn công nghệ Cocos2D JS, máy ảo trong Corona
SDK chạy khá nhanh, dễ dàng điều chỉnh các độ phân giải khác nhau của màn hình.
Đặc biệt CoronaSDK cho phép tạo âm thanh/yếu tố trực quan chỉ với một hoặc hai
dòng code. Lua được phát triển từ C và hệ thống các API theo hướng đơn giản hóa.
Cài đặt ngôn ngữ LUA, vì có các tính năng: nhỏ gọn, nhanh, kết hợp tốt, đa nền
tảng. Toàn bộ phần mềm thông dịch Lua cùng mã nguồn, tài liệu hướng dẩn và các
ví dụ chỉ gói gọn trong dung lượng 860 KB (phiên bản 5.1.4, không nén). Tốc độ
của Lua thuộc vào loại nhanh nhất trong số các ngôn ngữ thông dịch. Kết hợp tốt
với các ngôn ngữ khác, chẳng hạn C. Chạy trên Windows, Unix, Linux, Mac OS X
cùng nhiều hệ điều hành khác. Sử dụng ngôn ngữ Lua để cài đặt các thiết kiến trúc,
thiết kế dữ liệu và thiết kế thuật toán trong game. Nên tác giả chọn hướng giải quyết
thứ 1.
Về cách chơi, bài toán được giải quyết với nhiều luật chơi và bên dưới là các
luật chơi được đề xuất.
Hướng giải quyết thứ 1 sử dụng luật chơi như sau: người chơi dùng ngón
tay để tạo nét cắt, cắt các sợi dây treo các quả bóng hoặc các vật nặng sao cho hợp
lý nhất để các quả bóng rơi đúng vào các chú nhện cùng màu
Hướng giải quyết thứ 2 sử dụng luật chơi như sau: người chơi nắm, giữ và
bắn đi vật thể (chú nhện), thay vì dùng ngón tay cắt như luật chơi trên.
Chuyên ngành Kỹ Thuật Phần Mềm
15
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
Do thời gian làm luận văn bị giới hạn cùng với việc phải tìm hiểu về các công
nghệ mới (Corona SDK, LUA), nên để phù hợp với năng lực và thời gian của tác
giả trong việc làm đề tài vì thế tác giả chọn hướng giải quyết thứ 1. Tác giả cần
phải nghiên cứu thêm bộ thư viện multitouch có độ phức tạp lớn hơn nếu chọn
hướng giải quyết thứ 2.
TIẾP CẬN GIẢI QUYẾT VẤN ĐỀ
Thông thường một hệ thống cần có biểu đồ lớp để mô tả toàn bộ bức tranh hệ
thống. Các biểu đồ lớp giúp người phát triển phần mềm quan sát và lập kế hoạch
xây dựng hệ thống trước khi viết mã trình. Nó được đảm bảo rằng hệ thống được
thiết kế tốt ngay từ ban đầu. Sau đây là sơ đồ lớp của hệ thống game “Spider Ball”.
1.3.
Sơ đồ lớp
Spider
Ball
Shoot_Ball
x
y
Name
Ball_Spider
x
y
Name
Dx_White
Dy_White
Dx_Red
Dy_Red
Dx_Blue
Dy_Blue
create()
update()
getObject()
destroy()
destroyAll()
hide()
show()
onCollWhite()
onCollRed()
onCollBlue()
Springs
x
y
Name
rotation
collision
isVisible
create()
destroy()
hide()
show()
onCollSprings()
Background
x
y
BG_Line
Line
x
y
strokeWidth
isSensor
onCollLine()
drawLine()
destroy()
Wood
x
y
rotation
Shoot_Steel
Line_Collision_Rope
Rope
Steel
x
y
Name
pixel
linearDamping
collision
alpha
Link_Rope_Wood
Link_Rope_Ball
create()
getObject()
update()
destroy()
hide()
show()
onCollSteel()
Link_Rope_Steel
x
y
Name
Num
isSleepingAllowed
rotation
create()
destroy()
hide()
show()
Top_Rope
x
y
TopRope_Rope
Hình 1.1: Sơ đồ lớp
Chuyên ngành Kỹ Thuật Phần Mềm
16
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
Bảng 1. 1: Bảng diễn giải các đối tượng trong game
Tên bảng
Background
Diễn Giải
Lớp nền
Ball
Lớp bóng
Line
Lớp đường thẳng
Rope
Lớp mối nối
Spider
Lớp nhện
Springs
Lớp lò xo
Steel
Lớp vật nặng
Top_Rope
Lớp đỉnh mối nối
Wood
Lớp gỗ
Tên thuộc tính
Diễn Giải
alpha
Làm mờ đối tượng
collision
Sự kiện va chạm
dx_Blue
Tọa độ x ban đầu của nhện xanh
dx_Red
Tọa độ x ban đầu của nhện đỏ
dx_White
Tọa độ x ban đầu của nhện trắng
dy_Blue
Tọa độ y ban đầu của nhện xanh
dy_Red
Tọa độ y ban đầu của nhện đỏ
dy_White
Tọa độ y ban đầu của nhện trắng
isVisible
Ẩn đối tượng
linearDamping
Thêm lực hãm lên các đối tượng
pixel
Xác định pixel của đối tượng
rotation
Quay đối tượng
x
Tọa độ x
y
Tọa độ y
num
Tên nhóm mà mối nối nằm trong đó
isSleepingAllowed
Cho phép đối tượng là ngũ hay không
strokeWidth
Độ rộng của đường thẳng
isSensor
Cho phép va chạm với đối tượng khác hay
là không
Tên phương thức
create()
Chuyên ngành Kỹ Thuật Phần Mềm
Diễn Giải
Hàm tạo ra đối tượng.
17
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
destroy()
Hàm xóa bỏ từng đối tượng.
destroyAll()
Hàm Xóa bỏ tất cả các đối tượng.
getObject()
Lấy lại đối tượng.
hide()
Ấn tất cả đối tượng.
onCollBlue()
Hàm xử lý các va chạm khi đối tượng khác
rơi vào chú nhện xanh.
onCollRed()
Hàm xử lý các va chạm khi đối tượng khác
rơi vào chú nhện đỏ.
onCollSprings()
Hàm xử lý các va chạm khi đối tượng khác
rơi vào lò xo.
onCollSteel()
Hàm xử lý các va chạm khi vật nặng rơi
onCollWhite()
Hàm xử lý các va chạm khi đối tượng khác
rơi vào chú nhện trắng.
onCollLine()
Hàm xử lý các khi đường thẳng va chạm
với mối nối.
show()
Hiển thị tất cả các chú nhện.
update()
Hàm cập nhật vị trí đối tượng.
Người thiết kế và người phát triển phần mềm có thể xác định các lớp sẽ xây
dựng, quan hệ giữa các lớp, thao tác và trách nhiệm của mỗi lớp thông qua sơ đồ
lớp. Nên biểu đồ tuần tự trở thành nền tảng cho các công việc còn lại của thiết kế.
Biểu đồ trình tự là trật tự theo thời gian của các thông điệp, nó có ích khi ai đó
muốn quan sát luồng logic trong kịch bản.
Sơ đồ tuần tự
Bảng 1.2: Danh sách các sơ đồ tuần tự
STT
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Tên sơ đồ
Sơ đồ tuần tự màn chơi thứ 1
Sơ đồ tuần tự màn chơi thứ 2
Sơ đồ tuần tự màn chơi thứ 3
Sơ đồ tuần tự màn chơi thứ 4
Sơ đồ tuần tự màn chơi thứ 5
Sơ đồ tuần tự màn chơi thứ 6
Sơ đồ tuần tự màn chơi thứ 7
Sơ đồ tuần tự màn chơi thứ 8
Sơ đồ tuần tự màn chơi thứ 9
Sơ đồ tuần tự màn chơi thứ 10
Sơ đồ tuần tự màn chơi thứ 11
Sơ đồ tuần tự màn chơi thứ 12
Chuyên ngành Kỹ Thuật Phần Mềm
Màn tương ứng
Màn 1
Màn 2
Màn 3
Màn 4
Màn 5
Màn 6
Màn 7
Màn 8
Màn 9
Màn 10
Màn 11
Màn 12
18
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
13. Sơ đồ tuần tự màn chơi thứ 13
14. Sơ đồ tuần tự màn chơi thứ 14
15. Sơ đồ tuần tự màn chơi thứ 15
Màn 13
Màn 14
Màn 15
– Màn 1: màn gồm một vật nặng màu vàng, 2 quả bóng màu đỏ và trắng, 2
chú nhện màu đỏ và trắng. Người chơi cắt sợi dây treo vật nặng, làm rơi để va
chạm bóng đỏ và trắng, làm cho bóng đỏ rơi vào nhện đỏ, bóng trắng rơi vào
nhện trắng.
Man 1
Background
NguoiDung
Tạo nét cắt
Đường thẳng
Vẽ nét cắt
Mối nối
Vật nặng
Bóng trắng
Bóng đỏ
Nhện trắng
Nhện đỏ
Va cham
Hủy liên kết vật nặng
Va chạm
Va chạm
Va cham
Chụp lấy bóng trắng
Va cham
Chụp lấy bóng đỏ
Hình 1.2: Sơ đồ tuần tự màn chơi thứ 1.
– Màn 2: màn gồm 2 quả bóng màu đỏ và trắng, 2 chú nhện màu đỏ và
trắng, và một số các khúc gỗ tạo thành hình cái bập bênh. Quả bóng trắng được
đặt so le (chéo góc) với chú nhện trắng, tương tự với bóng đỏ, còn cái bập bênh
được đặt ở giữa. Người chơi cố gắng đưa bóng trắng về phía nhện trắng và bóng
đỏ về phía nhện đỏ.
Chuyên ngành Kỹ Thuật Phần Mềm
19
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
Man 2
Background
Đường
thẳng
NguoiDung
Tạo nét cắt Vẽ nét cắt
Mối nối
Va chạm
Bóng
đỏ
Khúc
gỗ
Bóng
trắng
Nhện
đỏ
Nhện
trắng
Hủy liên kết
Lăn trên
Va chạm
Tạo nét cắt
Chụp lấy bóng đỏ
Vẽ nét cắt
Va chạm
Hủy liên kết
Lăn trên
Va chạm
Chụp lấy bóng trắng
Hình 1.3: Sơ đồ tuần tự màn chơi thứ 2.
– Màn 3: ở màn chơi này xuất hiện thêm một bệ lò xo làm chức năng đẩy
vật thể khác khi người chơi chạm vào chúng. Người chơi cố gắng cắt các sợi dây
sao cho vật nặng rơi vào bệ lò xo, người chơi chạm vào lò xo, bắn vật nặng va
chạm với 2 bóng, 2 bóng rơi về hai phía và rơi xuống bên dưới. Bên dưới là các
chú nhện đang đón chờ các quả bóng rơi.
Man 3
Background
Đường
thẳng
Mối nối
Vật
nặng
Lò xo
Bóng
trắng
Bóng
đỏ
Nhện
trắng
Nhện
đỏ
NguoiDung
Tạo nét cắt
Vẽ nét cắt
Va chạm
Hủy liên kết
Va chạm
Bắn
Va chạm
Va chạm
Va chạm
Chụp lấy bóng trắng
Va chạm
Chụp lấy bóng đỏ
Hình 1.4: Sơ đồ tuần tự màn chơi thứ 3.
– Màn 4: trong màn các quả bóng được treo lơ lững bên phía trên cùng bên
phải, còn các chú nhện được đặt dưới cùng trên trái, ở khoảng giữa thì có một
Chuyên ngành Kỹ Thuật Phần Mềm
20
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
khối gỗ lớn chặn lại nhưng có một lỗ được tạo ra giúp bóng rơi lọt xuống phía
bên dưới, phía dưới cái lỗ này có treo một khúc gỗ dùng để dẫn banh đi đúng
hướng. Người chơi cố gắng đưa quả banh trắng rơi xuống nhện trắng trước, sau
đó cắt sợi dây treo khúc gỗ tạo đường đi cho bóng đỏ đến nhện đỏ sau.
Man 4
Background
NguoiDung
Tạo nét cắt
Đường
thẳng
Vẽ nét cắt
Bóng
trắng
Mối nối
Tạo nét cắt
Nhện
trắng
Nhện
đỏ
Khúc
gỗ
Va cham
Hủy liên kết
Tạo nét cắt
Bóng
đỏ
Va chạm
Chụp lấy bóng trắng
Vẽ nét cắt
Vẽ nét cắt
Va chạm
Va chạm
Hủy liên kết
Va chạm
Lăn trên
Va chạm
Chụp lấy bóng đỏ
Hình 1.5: Sơ đồ tuần tự màn chơi thứ 4.
– Màn 5: người chơi cố gắng cắt vật nặng vào bệ lò xo, bắn vật nặng va
chạm với 2 quả bóng, lần lượt cắt các quả bóng trắng, đỏ lần lượt rơi vào các
chú nhện trắng đỏ.
Man 5
Background
Đường
thẳng
Mối nối
Vật
nặng
Vật
nặng 2
Vật
nặng 3
Bóng
trắng
Bóng
đỏ
Lò xo
Lò xo 2
Nhện
trắng
Nhện
đỏ
NguoiDung
Tạo nét cắt
Tạo nét cắt
Vẽ nét cắt
Va cham
Hủy liên kết
Vẽ nét cắt
Va chạm
Va chạm
Hủy liên kết
Va chạm
Va chạm
Bắn
Va cham
Chụp lấy bóng trắng
Va chạm
Va chạm
Bắn
Va chạm
Va cham
Chụp lấy bóng đỏ
Hình 1.6: Sơ đồ tuần tự màn chơi thứ 5.
Chuyên ngành Kỹ Thuật Phần Mềm
21
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
– Màn 6: trong màn có 2 bóng trắng, 1 bóng đỏ, 2 chú nhện trắng - đỏ, 3
vật nặng. Các quả bóng lần lượt được đặt ở phía trên các khúc gổ là trắng - đỏ trắng. Ở phí trên các quả bóng là các vật nặng được treo thẳng đứng. Ở giữa màn
là thanh gỗ chuyển động qua lại. Bên dưới là các chú nhện, đỏ được đạt bên tay
trái, trắng nằm ở phía bên tay phải. Người chơi cắt các vật nặng rơi, va chạm với
các quả bóng rơi vào các chú nhện.
Man 6
Background Đường
thẳng
Mối
nối
Vật
nặng
Vật
nặng
Vật
nặng
Vật
nặng
Thanh gỗ
di chuyển
Bóng
trắng
Bóng
trắng
Bóng
đỏ
Nhện
trắng
Nhện
đỏ
NguoiDung
Tạo nét cắt
Vẽ nét cắtVa cham
Hủy liên kết
Va chạm
Lăn trên
Tạo nét cắt
Vẽ nét cắt
Va chạm
Va cham
Chụp lấy bóng trắng
Hủy liên kết
Va chạm
Lăn trên
Tạo nét cắt
Vẽ nét cắt
Va chạm
Va cham
Chụp lấy bóng đỏ
Hủy liên kết
Tạo nét cắt
Vẽ nét cắtVa chạm
Va chạm
Lăn trên
Hủy liên kết
Va chạm
Va chạm
Chụp lấy bóng trắng 2
Hình 1.7: Sơ đồ tuần tự màn chơi thứ 6.
– Màn 7: trong màn gồm có 2 quả bóng trắng - đỏ, 2 chú nhện trắng đỏ, 1
lò xo, 3 vật nặng, và một số khúc gỗ làm vật cản. Người chơi cắt quả bóng trắng
để va chạm với vật nặng thứ 1 và thứ 2, rơi xuống bên dưới va chạm với lò xo.
Lò xo bắn bóng trắng trúng vật nặng thứ 3 và rơi trúng nhện trắng. Tiếp theo cắt
quả bóng đỏ rơi thẳng đứng và bên dưới là chú nhện đỏ.
Chuyên ngành Kỹ Thuật Phần Mềm
22
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
Man 7
Background
Đường
thẳng
Vật
nặng
Mối nối
Vật
nặng 2
Bóng
trắng
Khúc
gỗ
Bóng
đỏ
Bóng
xanh
Nhện
trắng
Nhện
đỏ
Nhện
xanh
NguoiDung
Tạo nét cắt
Vẽ nét cắt
Tạo nét cắt
Vẽ nét cắt
Tạo nét cắt
Va chạm
Hủy liên kết
Va cham
Hủy liên kết
Va chạm
Chụp lấy bóng xanh
Vẽ nét cắt
Va chạm
Hủy liên kết
Va cham
Chụp lấy bóng đỏ
Tạo nét cắt
Tạo nét cắt
Vẽ nét cắt
Vẽ nét cắt
Va chạm
Hủy liên kết
Va chạm
Hủy liên kết
Va cham
Chụp lấy bóng trắng
Hình 1.8: Sơ đồ tuần tự màn chơi thứ 7.
– Màn 8: trong màn có 2 quả bóng trắng – đỏ, 2 chú nhện trắng đỏ, 3 vật
nặng và có 2 cái lò xo quay một góc 20 độ. 2 quả bóng được treo phía bên trên
còn 2 lò xo được đặt bên dưới các quả bóng, nhưng bị lệch về phía bên tay trái
khoảng 100 pixel. Các vật nặng thứ nhất treo sao cho khi cắt dây liên kết thì rới
trúng bóng trắng, làm đung đưa nó. Cắt bóng trắng cho rơi để va chạm với vật
nắng thứ 2 và 3. Đồng thời bóng trắng rơi vào lò xo, bắn lên trúng nhện trắng.
Vật nặng thứ 3 va chạm với lò xo thứ 2, bắn va chạm với bóng đỏ. Làm đung
đưa bóng đỏ, cắt bóng đỏ sao cho rơi vào nhện đỏ.
Chuyên ngành Kỹ Thuật Phần Mềm
23
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
Man 8
Background
Đường
thẳng
Bóng
trắng
Mối nối
Vật
nặng
Vật
nặng 2
Nhện
trắng
NguoiDung
Tạo nét cắt
Vẽ nét cắt
Va chạm
Hủy liên kết
Va chạm
Va chạm
Chụp lấy vật va chạm
Ném vật nặng đi
Va chạm
Chụp lấy vật va chạm
Ném vật nặng đi
Tạo nét cắt
Vẽ nét cắt
Va chạm
Hủy liên kết
Va chạm
Chụp lấy bóng trắng
Hình 1.9: Sơ đồ tuần tự màn chơi thứ 8.
– Màn 9: tương tự như ở màn 2, ở màn này có thêm bóng xanh và nhện
xanh, mức độ khó của màn được tăng lên.
Man 9
Background
Đường
thẳng
Mối nối
Vật
nặng
Lò xo
Bóng
trắng
Bóng
đỏ
Nhện
trắng
Nhện
đỏ
NguoiDung
Tạo nét cắt
Vẽ nét cắt
Va cham
Hủy liên kết
Va chạm
Bắn
Va chạm
Va chạm
Chụp lấy bóng trắng
Va chạm
Va cham
Chụp lấy bóng đỏ
Hình 1.10: Sơ đồ tuần tự màn chơi thứ 9.
– Màn 10: ở màn này xuất hiện thêm một chú nhện thứ 3 (nhện xanh), dựa
vào vị trí các vật cản trong màn, người chơi cố gắng cắt các sợi dây một cách
logic nhất để đưa bóng vào đúng nhện.
Chuyên ngành Kỹ Thuật Phần Mềm
24
Khoa CNTT & TT
Luận văn tốt nghiệp Đại học khóa 37 - 2015
Trường ĐHCT
Man 10
Background
NguoiDung
Tạo nét cắt
Đường
thẳng
Vẽ nét cắt
Mối nối
Vật
nặng
Vật
nặng 2
Va cham
Hủy liên kết
Va chạm
Thanh gỗ di
chuyển
Thanh gỗ di
chuyển 2
Lăn trên
Bóng
trắng
Bóng
xanh
Nhện
trắng
Nhện
xanh
Va chạm
Ném vật nặng đi
Tạo nét cắt
Vẽ nét cắt
Va chạm
Hủy liên kết
Lăn trên
Tạo nét cắt
Va chạm
Chụp lấy bóng xanh
Vẽ nét cắt
Va chạm
Hủy liên kết
Lăn trên
Va cham
Chụp lấy bóng trắng
Hình 1.11: Sơ đồ tuần tự màn chơi thứ 10.
– Màn 11: trong màn gồm có 2 quả bóng trắng – xanh, 2 chú nhện trắng –
xanh. Các khúc gỗ được đặt chia làm thành 2 bên trái và phải, trong đó có 2
thanh gỗ được di chuyển qua lại ở phía giữa tạo cầu nối cho 2 bên. 2 cặp bóng
nhện được đặt so le nhau. Người chơi cố gắng cắt vật nặng trước để va chạm với
một số vật nặng khác tạo khoảng trống để đưa bóng vào nhện. Cần canh thời
gian để đưa bóng từ bên này qua bên kia, vì 2 thanh gỗ này di chuyển qua lại.
Man 11
Background
NguoiDung
Tạo nét cắt
Tạo nét cắt
Đường
thẳng
Vẽ nét cắt
Mối nối
Khúc
gỗ
Khúc gỗ
(Đòn bẩy)
Vật
nặng
Bóng
trắng
Bóng
đỏ
Nhện
trắng
Nhện
đỏ
Va cham
Hủy liên kết
Vẽ nét cắt
Va chạm
Hủy liên kết
Lăn trên
Va cham
Tạo nét cắt
Tạo nét cắt
Chụp lấy bóng trắng
Vẽ nét cắt
Vẽ nét cắt
Va chạm
Hủy liên kết
Lăn trên
Va chạm
Hủy liên kết
Va chạm mạnh
Va chạm
Va cham
Chụp lấy bóng đỏ
Hình 1.12: Sơ đồ tuần tự màn chơi thứ 11.
Chuyên ngành Kỹ Thuật Phần Mềm
25
Khoa CNTT & TT