ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC SƢ PHẠM KHOA TIN HỌC

KHÓA LUẬN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN ĐỀ TÀI:

XÂY DỰNG GAME 3D CHÉM TRÁI CÂY TRÊN

WINDOWS VÀ ĐTDĐ SỬ DỤNG HĐH ANDROID

GVHD : TRẦN UYÊN TRANG SVTH : NHỮ THỊ TRÀ MY LỚP : 08CNTT02

ĐÀ NẴNG, 05/2012

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

NHẬN XÉT CỦA CÁN BỘ HƢỚNG DẪN ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… …………………………………………………………………………………

Đà Nẵng, ngày …, tháng …, năm 2012 Cán bộ hƣớng dẫn

Trần Uyên Trang

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 2

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… …………………………………………………………………………………

Đà Nẵng, ngày …, tháng …, năm 2012

Cán bộ phản biện

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 3

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

LỜI CẢM ƠN

Em xin chân thành cảm ơn các thầy cô giáo trong khoa TIN HỌC cùng toàn thể thầy cô của trường Đại Học Sư Phạm Đà Nẵng đã truyền đạt cho em những kiến thức quý giá trong suốt bốn năm học vừa qua.

Xin chân thành cảm ơn cô: Trần Uyên Trang đã tận tình chỉ bảo và giúp đỡ em hoàn thành đề tài này.

Cuối cùng em xin cảm ơn các anh chị trong công ty Gameloft cùng các bạn trong khoa TIN HỌC, những người đã giúp đỡ, chia sẽ những kiến thức, kinh nghiệm, tài liệu…trong suốt quá trình nghiên cứu thực hiện đề tài.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 4

LỜI CAM ĐOAN

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Em xin cam đoan:

1 Những nội dung trong báo cáo này là do em thực hiện.

2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên

tác giả, tên công trình, thời gian, địa điểm công bố.

3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàn toàn trách nhiệm.

Sinh viên thực hiện Nhữ Thị Trà My

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 5

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

MỤC LỤC

LỜI CẢM ƠN ........................................................................................................................... 4

LỜI CAM ĐOAN ..................................................................................................................... 5

CHƢƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI ............................................................................... 14

1.1. Giới thiệu đề tài ............................................................................................................ 14

1.2. Mục đích, ý nghĩa của đề tài ......................................................................................... 14

1.3. Phƣơng án triển khai đề tài ........................................................................................... 14

CHƢƠNG 2 CƠ SỞ LÝ THUYẾT ....................................................................................... 16

2.1. Giới thiệu các công cụ để làm game 3D........................................................................ 16

2.1.1. Visual C++ ............................................................................................................. 16

2.1.2. Giới thiệu về OpenGL............................................................................................. 16

2.1.3. Giới thiệu về OpenGL ES 2.0 ................................................................................. 21

2.1.4. Giới thiệu về hệ điều hành ANDROID.................................................................... 22

2.2. Giới thiệu về 3D cơ bản ................................................................................................ 25

2.2.1. Hệ tọa độ 3D ........................................................................................................... 25

2.2.2. Quy tắc bàn tay trái- bàn tay phải ............................................................................ 26

2.2.3. Xác định vị trí của một điểm trong tọa độ 3D.......................................................... 26

2.2.4. Các phép dịch chuyển cơ bản ở trong 3D ................................................................ 27

2.2.5. Phép chiếu trong 3D ............................................................................................... 31

2.2.6. Tọa độ thực đến thiết bị .......................................................................................... 33

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 6

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.3. Cấu trúc của một game ................................................................................................. 35

2.3.1. Game Loop (vòng lặp của game) ............................................................................ 35

2.3.2. Framerate (FPS) ...................................................................................................... 36

2.3.3. Bộ nhớ (memory).................................................................................................... 37

2.3.4. State ........................................................................................................................ 37

2.4. Giới thiệu về NDK ....................................................................................................... 38

CHƢƠNG 3. PHÂN TÍCH TRÒ CHƠI .................................................................................. 42

3.1. Hệ thống và tính khả chuyển (portability): .................................................................... 42

3.1.1. C/C++ và thƣ viện .................................................................................................. 42

3.1.2. Phân tích tính khả chuyển (portability) của các thành phần trong trò chơi ............... 43

3.2. Xây dựng hệ thống khả chuyển..................................................................................... 46

3.2.1. Sử dụng các tiền xử lý............................................................................................. 47

3.2.2. Sử dụng nguyên mẫu hàm, lớp trừu tƣợng .............................................................. 47

3.3. Cấu trúc của một Trò chơi ............................................................................................ 48

3.3.1. Vòng lặp trò chơi .................................................................................................... 48

3.3.2. Cấu trúc trò chơi ..................................................................................................... 50

3.3.3. Nội dung trò chơi .................................................................................................... 52

3.3.4. Đồ họa .................................................................................................................... 54

3.3.5. Âm Thanh ............................................................................................................... 56

CHƢƠNG 4. QUÁ TRÌNH LẬP TRÌNH ................................................................................ 58

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 7

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

4.1. Thiết kế chƣơng trình ................................................................................................... 58

4.2. Vòng lặp trò chơi .......................................................................................................... 59

4.3. Nội dung trò chơi ......................................................................................................... 60

4.3.1. Khởi tạo vị trí hiện tại của trái cây .......................................................................... 61

4.3.2. Cập nhật trạng thái của trái cây ............................................................................... 61

4.3.3. Kiểm tra va chạm .................................................................................................... 62

4.3.4. Tính toán lại các trạng thái sau khi va chạm ............................................................ 62

4.4. Đồ Họa ......................................................................................................................... 62

4.4.1.Tải shader và biên dịch ............................................................................................ 63

4.4.2. Vẽ một đối tƣợng 3D .............................................................................................. 63

4.4.3. Vẽ một đối tƣợng 2D .............................................................................................. 64

4.5. Nhập............................................................................................................................. 64

4.6. Âm thanh...................................................................................................................... 65

4.7. Giao diện ứng dụng ...................................................................................................... 65

4.8. Giao diện xuất nhập tập tin ........................................................................................... 66

CHƢƠNG 5. QUY TRÌNH CHUYỂN TRÒ CHƠI ................................................................. 67

5.1. Chuyển sang Android ................................................................................................... 67

5.1.1 Cài đặt phần mềm .................................................................................................... 67

5.1.2. Hoạt động của JNI và quy trình biên dịch ............................................................... 67

5.1.3. Đồ họa .................................................................................................................... 68

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 8

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

5.1.4. Âm thanh ................................................................................................................ 69

5.1.5. Cảm ứng chạm ........................................................................................................ 70

5.1.6. Giao diện ứng dụng ................................................................................................. 71

5.1.7. Xử lí file ................................................................................................................. 71

CHƢƠNG 6. QUÁ TRÌNH CÀI ĐẶT HỆT THỐNG TRÊN MOBIE .................................... 73

6.1. Cài đặt hệ thống trên Android ....................................................................................... 73

CHƢƠNG 7.MỘT SỐ KẾT QUẢ VÀ DEMO CỦA GAME .................................................. 74

7.1. Kết quả demo trên Windows ........................................................................................ 74

7.2. Kết quả demo trên Android (điện thoại Galaxy mini) ................................................... 79

CHƢƠNG 8. KẾT LUẬN ....................................................................................................... 82

8.1. Kết quả đạt đƣợc .......................................................................................................... 82

8.2. Những vấn đề còn tồn đọng .......................................................................................... 82

8.3. Hƣớng phát triển của đề tài ........................................................................................... 82

TÀI LIỆU THAM KHẢO ....................................................................................................... 83

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 9

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

MỤC LỤC CÁC HÌNH

Hình 1. Biễu diễn OpenGl và mối quan hệ với các API ........................................................... 20

Hình 2. Biễu diễn đường ống dẫn trong OpenGL .................................................................... 21

Hình 3. Biễu diễn đường ống dẫn trong OpenGL 2.0 .............................................................. 22

Hình 4. Biễu tượng của hệ điều hành Android ......................................................................... 23

Hình 5. Biễu diễn hệ tọa độ 3D ............................................................................................... 25

Hình 6. Biễu diễn quy tắc bàn tay trái- bàn tay phải................................................................ 26

Hình 7. Biễu diễn một điểm trong hệ tọa độ 3D ....................................................................... 26

Hình 8. Biễu diễn phép tịnh tiến một đối tượng theo một vector .............................................. 27

Hình 9. Biễu diễn phép biến dạng theo một tỷ lệ. ..................................................................... 28

Hình 10. Biễu diễn phép biến dạng không theo tỷ lệ. ............................................................... 28

Hình 11. Biễu diễn phép quay quanh một trục tọa độ theo một góc a ...................................... 29

Hình 12. Phép quay theo trục Ox ............................................................................................ 30

Hình 13. Phép quay theo trục Oz ............................................................................................. 31

Hình 14. Biễu diễn phép chiếu phối cảnh ................................................................................ 32

Hình 15. Biễu diễn phép chiếu vuông góc ................................................................................ 33

Hình 16. Biễu diễn tọa độ thực đến thiết bị thông qua NDC .................................................... 33

Hình 17. Biễu diễn về NDC ..................................................................................................... 34

Hình 18. Biễu diễn sự biến đổi 3 chiều thành 2 chiều .............................................................. 34

Hình 19. Biễu diễn quá trình xây dựng và chuyển trò chơi. ..................................................... 46

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 10

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 20. Biễu diễn vòng lặp của trò chơi ................................................................................ 48

Hình 21. Cấu trúc của một trò chơi ......................................................................................... 50

Hình 22. Giao diện của trò chơi .............................................................................................. 51

Hình 23. Trạng thái của trò chơi ............................................................................................. 51

Hình 24. Biễu diễn chuyển động của trái cây .......................................................................... 53

Hình 25. Biễu diễn thanh kiếm của người chơi ........................................................................ 53

Hình 26. Biễu diễn va chạm giữa thanh kiếm và trái cây ......................................................... 53

Hình 27. Biễu diễn tính toán tọa độ sau va chạm ..................................................................... 54

Hình 28. Biễu diễn đối tượng 3D trong trò chơi ...................................................................... 55

Hình 29. Biễu diễn giao diện 2D ............................................................................................. 55

Hình 30. Biễu diễn cách bố trí để vẽ giao diện 2D trong trò chơi ............................................ 56

Hình 31. Biễu diễn khung thiết kế của chương trình ................................................................ 58

Hình 32. Cách kế thừa các lớp trừ tượng trên các nền tảng khác nhau .................................... 59

Hình 33. Biễu diễn vòng lặp của trò chơi ................................................................................ 60

Hình 34. Vòng đời của một trái cây ......................................................................................... 61

Hình 35. Sơ đồ hoạt động của OpenGl ES 2.0 trong chương trình .......................................... 62

Hình 36. Kết quả demo về main menu ở trên Windows ............................................................ 74

Hình 37. Kết quả demo giao diện lúc đang chơi game trên windows ....................................... 75

Hình 38. Kết quả demo lúc người chơi chạm vào trái cây trên windows .................................. 76

Hình 39. Kết quả demo lúc Game over trên windows .............................................................. 77

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 11

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 40. Demo giao diện màn hình highscore trên windows ................................................... 78

Hình 41. Kết quả demo biểu tượng icon của game trên Android .............................................. 79

Hình 42. Kết quả demo màn hình mainmenu trên Android ...................................................... 79

Hình 43. Kết quả demo màn hình game play trên Android ...................................................... 80

Hình 44. Kết quả demo màn hình highScore trên Android ....................................................... 80

Hình 45. Kết quả demo màn hình GameOver trên Android ..................................................... 81

Hình 46. Kết quả demo màn hình About trên Android ............................................................. 81

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 12

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

MỤC LỤC CÁC BẢNG

Bảng 1. Biễu diễn các kiểu dữ liệu trong OpenGL ................................................................... 18

Bảng 2. Các phiên bản OpenGL ES có thể sử dụng ND để tạo ra thư viện native .................... 41

Bảng 3. Thực tế của các thành phần trong trò chơi trên 3 hệ thống......................................... 44

Bảng 4. Bảng nhận xét các thành phần trò chơi trên cả 3 hệ thống. ........................................ 45

Bảng 5. Bản thiết kế âm thanh ................................................................................................. 57

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 13

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

CHƢƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI

1.1. Giới thiệu đề tài

Ngày nay, những thiết bị di động cầm tay đã trở thành một trợ thủ không thể thiếu của đa

số mọi ngƣời. Nó không đơn giản chỉ là những thiết bị dùng để liên lạc nữa mà hơn thế nữa nó còn là một trung tâm giải trí với những kho ứng dụng độc đáo. Đặc biệt sự ra đời của một số hệ

điều hành trên di động nhƣ: IOS, Android, Windows Phone…đã tạo bƣớc phát triển mạnh mẽ

cho những ứng dụng này.

Nói tới giải trí game luôn đứng hàng đầu. Với sự phát triển của công nghệ cũng nhƣ đáp

ứng nhu cầu của thị trƣờng, các Game ngày càng có chất lƣợng cao. Thời gian gần đây một xu

hƣớng mới là Game 3D đang đƣợc ƣa chuộng. Vì những lý do trên nên em xin chọn đề tài này

nhằm nghiên cứu nhằm nghiên cứu kỹ thuật làm Game 3D trên ĐTDĐ có HĐH riêng.

1.2. Mục đích, ý nghĩa của đề tài

 Củng cố những kiến thức đã học.  Tìm hiểu hệ điều hành Android , nghiên cứu công ghệ làm game 3D.  Nghiên cứu cách xây dựng một game đa nền tảng, và quá trình chuyển từ Windows sang Android

 Xây dựng trò chơi chém trái cây trên Windows và ĐTDĐ có hệ điều hành Android.

1.3. Phương án triển khai đề tài

Để hoàn thành đề tài này, trong quá trình triển khai thực hiện cần tuân thủ các bƣớc sau:

 Lập kế hoạch thực hiện đề tài.

 Tìm hiểu những vấn đề liên quan tới đề tài.

 Phân tích và thiết kế hệ thống, dữ liệu.

 Xây dựng chƣơng trình (chia nhỏ các chức năng thành các module và component để giải

quyết từng phần).

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 14

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Củng cố kết quả đã đạt đƣợc (bao gồm kiểm thử các module và chức năng của hệ thống,

chỉnh sửa lỗi nếu có và tiến tới hoàn thiện chƣơng trình ở mức có thể).

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 15

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

CHƢƠNG 1 CƠ SỞ LÝ THUYẾT

2.1. Giới thiệu các công cụ để làm game 3D

2.1.1. Visual C++

Microsoft Visual C++ (còn đƣợc gọi là MSVC) là một sản phẩm Môi trƣờng phát triển

tích hợp (IDE) cho các ngôn ngữ lập trình C, C++, và C++/CLI của Microsoft. Visual C++ là

bộ công cụ lập trình nằm trong bộ Visual Studio. Đây là một môi trƣờng lập trình đa năng dành

cho ngôn ngữ C/C++ và vì là một môi trƣờng lập trình trên hệ điều hành Windows nên Visual C++ cho phép lập trình viên thực hiện rất nhiều công việc, hỗ trợ lập trình viên việc coding,

thiết kế giao diện.. Trong VC++ chúng ta có thể tạo đƣợc : các ứng dụng trên Windows,

ActiveX, hay thƣ viện liên kết động DLL…VC++ có nhiều công cụ giúp việc thiết kế giao diện

cho chƣơng trình, kiểm lỗi và sửa lỗi.

2.1.2. Giới thiệu về OpenGL

2.1.2.1. Giới thiệu

OpenGL( Open Graphics Library) một bộ thƣ viện đồ họa mở,có mục đích lập ra một giao diện lập trình ứng dụng( API) đa chiều. Bộ thƣ viện đồ họa này chứa khoảng 150 hàm để vẽ các cảnh phức tạp từ những hàm đơn giản. Nó đƣợc dùng rộng rãi trong các trò chơi điện tử. Ngoài ra nó còn dùng trong các ứng dụng CAD, thực tế ảo, mô phỏng khoa học, mô phỏng thông tin, phát triển trò chơi. OpenGL còn có một đối thủ cạnh tranh là DirectX của Microsoft.

Không gian trong OpenGL đƣợc miêu tả qua hình học xạ ảnh. Một điểm trong không gian này có tất cả 4 tọa độ. Cách thể hiện các điểm trong không gian bằng 4 tọa độ cho phép xử lý các điểm vô tận một cách tổng quát. Vì vậy mã nguồn các ứng dụng đã đƣợc đơn giản hóa đi nhiều.

OpenGL hỗ trợ các hàm đồ họa:

• Xây dựng các đối tƣợng phức tạp từ các thành phần hình học cơ bản (điểm, đoạn, đa

giác, ảnh bitmap).

• Sắp xếp đối tƣợng trong 3D và chọn điểm thuận lợi để quan sát.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 16

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

• Tính toán màu sắc của các đối tƣợng (màu sắc của đối tƣợng đƣợc quy định bởi điều

kiện chiếu sáng, texture của đối tƣợng, mô hình đƣợc xây dựng hoặc là kết hợp của cả 2 hoặc 3 yếu tố đó).

• Biến đổi những mô tả toán học của đối tƣợng và thông tin màu sắc thành phần các

pixel trên màn hình (quá trình này đƣợc gọi là rasterization).

• Có API đa nền tảng: Windows, Mac, Linux, Unix.

• Các hệ thống dùng để nhúng:

- Iphone, Windows mobile…

• Dùng cho đa ngôn ngữ:

- C, C++, Python, Ruby, PHP…

• Dùng cho cả cách vẽ trong 2D và 3D.

Những thứ OpenGL không hỗ trợ:

- Bản thân OpenGL không có sẵn các hàm nhập xuất hay thao tác trên

windows.

- OpenGL không có sẵn các hàm cấp cao để xây dựng các mô hình đối tƣợng, thay vào đó, ngƣời dùng phải tự xây dựng từ các thành phần hình học cơ bản

(điểm, đoạn thẳng, đa giác).

2.1.2.2. Cấu trúc lệnh trong OpenGL

OpenGL sử dụng tiền tố gl và tiếp theo đó là những từ những từ đƣợc viết hoa ở chữ cái đầu để tạo nên tên của một lệnh, ví dụ glClearColor(). Tƣơng tự, OpenGL đặt tên các hằng số bắt đầu bằng GL_ và các từ tiếp sau đều đƣợc viết hoa và cách nhau bởi dấu ’_’, ví dụ:

GL_COLOR_BUFFER_BIT.

Bên cạnh đó, với một số lệnh, để ám chỉ số lƣợng cũng nhƣ kiểu tham số đƣợc truyền,

một số hậu tố đƣợc sử dụng nhƣ trong bảng sau:

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 17

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hậu tố Kiểu dữ liệu Tƣơng ứng với Tƣơng ứng với

kiểu trong C kiểu trong

B

8-bit integer

Signed char

Glbyte

S

16-bit integer

Short

Glshort

I

32-bit integer

Int or long

Glint, Glsizei

F

32-bit floating-

Float

GLfloat,

Glclampf

point

D

Glbouble,

64-bit floating-

Double

Glclampd

point

Ub

8-bit unsigned

Unsigned char GLubyte,

Glboolean

integer

Us

16-bit unsigned

Unsigned short Glushort

integer

Ui

32-bit unsigned

Unsigned int or

GLuint,

integer

unsigned long

GLenum,

Glbitfield

OpenGL

Bảng 1. Biễu diễn các kiểu dữ liệu trong OpenGL

Ví dụ: glVertex2i(1, 3) tƣơng ứng với xác định một điểm(x, y) với x, y nguyên.

 Lưu ý:

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 18

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

OpenGL có định nghĩa một số kiểu biến, việc sử dụng các định nghĩa này thay vì định

nghĩa có sẵn của C sẽ tránh gây lỗi khi biên dịch code trên một hệ thống khác.

Một vài lệnh của OpenGL kết thúc bởi v ám chỉ rằng tham số truyền vào là một vector.

Ví dụ: glColor3fv(color_array) là mảng 1 chiều có 3 phần tử là float.

2.1.2.3. Thƣ viện OpenGL

 Core library

 OpenGL utility library(GLU)

 Links với hệ thống window

 OpenGL Utility Toolkit(Glut)

Để khắc phục một số nhƣợc điểm của OpenGL, GLUT đƣợc tạo ra với nhiều hàm hỗ

trợ:

 Quản lý window

 Display callback

 Nhập xuất (bàn phím, chuột…)

 Vẽ một số đối tƣợng 3D phức tạp (mặt cầu, khối hộp…)

 OpenGL cho hệ thống nhúng

• Mobile phone

• PDAS

• Video game consoles

 Hệ tọa độ của OpenGL

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 19

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

OpenGL dùng hệ tọa độ theo quy tắc bàn tay phải.

 Mối quan hệ giữa OpenGL với các API

Hình 1. Biễu diễn OpenGl và mối quan hệ với các API

2.1.2.4. Đƣờng ống dẫn trong OpenGL (OpenGL Rendering pipeline)

Đƣờng ống dẫn của OpenGL gồm một chuỗi các quá trình xử lý theo trình tự. Hai đồ

họa thông tin, dữ liệu vertex-based và pixel-based, đƣợc xử lý thông qua các đƣờng ống, Kết

hợp với nhau sau đó đƣợc viết vào frame buffer.Chú ý rằng OpenGL có thể gửi các dữ liệu đã

đƣợc xử lý lại cho ứng dụng của chúng ta.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 20

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 2. Biễu diễn đường ống dẫn trong OpenGL

2.1.3. Giới thiệu về OpenGL ES 2.0

Là một phần mềm giao diện để vẽ đồ họa 3D phức tạp trên các thiết bị cầm tay và

nhúng. Nó chính là thƣ viện đồ họa cho các thiết bị cầm tay và nhúng với lập trình 3D phần

cứng bao gồm điện thoại di động, PDA, thiết bị, xe cộ, và hệ thống điện tử. Với OpenGL ES

2.0 thì chúng ta có thể lập trình shader trên các thiết bị nhỏ và di động.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 21

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Đường ống dẫn(pipeline) trong OpenGL ES 2.0

Hình 3. Biễu diễn đường ống dẫn trong OpenGL 2.0

2.1.4. Giới thiệu về hệ điều hành ANDROID

2.1.4.1. ANDROID là gì?

 Android là một hệ điều hành điện thoại di động đƣợc dựa trên một phiên bản sửa lỗi của Linux. Ban đầu nó đƣợc phát triển bởi một tổ chức cùng tên là Android. Vào năm 2005, nhƣ là một chiến lƣợc của mình vào thị trƣờng di động, Google đã mua lại Android và đã qua công tác phát triển nó. Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tƣơng lai.

 Các lợi thế chính của việc áp dụng Android là nó cung cấp một cách tiếp cận thống nhất để phát triển ứng dụng. Các nhà phát triển chỉ cần phát triển cho Android và các ứng dụng của họ sẽ có thể chạy trên nhiều thiết bị khác nhau, miễn là thiết bị đƣợc hỗ trợ

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 22

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

bằng cách sử dụng Android. Trong thế giới của điện thoại thông minh ứng dụng là một phần quan trọng nhất của chuỗi thành công. Do đó, các nhà sản xuất thiết bị nhìn thấy Android nhƣ hy vọng tốt nhất của họ để thách thức sự tấn công dữ dội của Iphone, mà đã chỉ huy một cơ sở lớn các ứng dụng.

 Android cung cấp một bộ đầy đủ các phần mềm cho các thiết bị di động: Nó là một hệ thống điều hành, middleware và các ứng dụng di động chủ chốt. Các Android Software

Development Kit (SDK) bây giờ đã có.

Hình 4. Biễu tượng của hệ điều hành Android

 Android đƣợc xây dựng để cho phép các nhà phát triển tạo ra các ứng dụng di động hấp dẫn tận dụng tất cả một chiếc điện thoại đã cung cấp. Nó đƣợc xây dựng để đƣợc thực sự mở. Ví dụ, một ứng dụng có thể kêu gọi bất kỳ chức năng lõi của điện thoại nhƣ thực hiện cuộc gọi, gửi tin nhắn văn bản, hoặc bằng cách sử dụng máy ảnh, cho phép các nhà phát triển để tạo ra phong phú hơn và nhiều hơn nữa những kinh nghiệm cố kết cho ngƣời dùng.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 23

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh đƣợc thiết kế để tối ƣu hóa bộ nhớ và tài nguyên phần cứng trong một môi trƣờng di động. Android là mã nguồn mở, nó có thể

đƣợc liberally mở rộng.

 Android không phân biệt giữa các ứng dụng lõi của điện thoại và các ứng dụng của bên thứ ba. Với các thiết bị xây dựng trên Hệ điều hành Android, ngƣời dùng có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ. Họ có thể trao đổi trên màn hình của điện thoại, những phong cách của dialer, hoặc bất kỳ ứng dụng.

 Android phá bỏ rào cản để xây dựng các ứng dụng mới và sáng tạo. Ví dụ, một nhà phát triển có thể kết hợp thông tin từ các trang web với dữ liệu trên điện thoại di động của

một cá nhân – ví dụ nhƣ địa chỉ liên hệ của ngƣời dùng, lịch, hoặc vị trí địa lý – để cung

cấp một trải nghiệm ngƣời dùng có liên quan hơn. Với Android, một nhà phát triển có

thể xây dựng một ứng dụng cho phép ngƣời dùng xem vị trí của bạn bè của họ và đƣợc

cảnh báo khi họ đang có trong vùng phụ cận cho họ một cơ hội để kết nối.

 Với Android tốc độ nhanh và phát triển ứng dụng dễ dàng.

 Android cung cấp truy cập đến một loạt các thƣ viện công cụ hữu ích và có thể đƣợc sử dụng để xây dựng các ứng dụng phong phú. Ví dụ, Android cho phép các nhà phát triển

để có đƣợc vị trí của điện thoại, và cho phép các thiết bị giao tiếp với nhau tạo điều kiện

cho đồng đẳng rich-to-peer ứng dụng xã hội.

 Rất nhiều nhà phát triển hệ điều hành Android đã vào cuộc và các ROM cho Android

độc đáo đƣợc ra đời với nhiều tích năng nổi trội đƣợc tích hợp và đầy sáng tạo.

2.1.4.2. Các phiên bản của ANDROID

 Android 1.5

 Android 1.6

 Android 2.0

 Android 2.1

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 24

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Android 2.2

 Android 2.3.3

 Android 3.0

 Android 3.1

 Android 3.2

 Android 4.0

 Android 4.0.3

2.2. Giới thiệu về 3D cơ bản

2.2.1. Hệ tọa độ 3D

Đƣợc định nghĩa bởi 3 trục tọa độ: ox, oy, oz.

Hình 5. Biễu diễn hệ tọa độ 3D

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 25

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.2.2. Quy tắc bàn tay trái- bàn tay phải

Hình 6. Biễu diễn quy tắc bàn tay trái- bàn tay phải

2.2.3. Xác định vị trí của một điểm trong tọa độ 3D

Cho điểm P (Px, Py, Pz) trong tọa độ 3D. Ta biểu diễn nhƣ sau:

Hình 7. Biễu diễn một điểm trong hệ tọa độ 3D

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 26

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.2.4. Các phép dịch chuyển cơ bản ở trong 3D

 Translate

 Scale

 Rotate

2.2.4.1. Phép Tịnh tiến (Translate)

 Tịnh tiến một đối tượng P theo một vector V

Hình 8. Biễu diễn phép tịnh tiến một đối tượng theo một vector

Cho vector V:

V = Vx * i + Vy *j + Vz *k

Phép tịnh tiến P thành P’ theo vector V đƣợc xác định nhƣ sau:

Tv: P -> P’

Tv = { Px’ = Px + Vx, Py’ = Py + Vy, Pz’ = Pz + Vz}

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 27

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.2.4.2. Phép biến đổi

 Biến đổi theo một tỷ lệ

S: P -> P’

S = { Px’ = Px *Sx, Py’ = Py *Sy, Pz’ = Pz * Sz}

Hình 9. Biễu diễn phép biến dạng theo một tỷ lệ.

 Biến đổi không theo tỷ lệ

Hình 10. Biễu diễn phép biến dạng không theo tỷ lệ.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 28

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.2.4.3. Phép quay quanh một trục tọa độ theo một góc a

Hình 11. Biễu diễn phép quay quanh một trục tọa độ theo một góc a

 Quay quanh trục Ox, Oy, Oz

 Cách xác định tọa độ theo phép quanh quay một trục

 Quay quanh trục Ox:

R (a, x): P -> P’

R (a, x) = {

Px’ = Px

Py’ = Py * Cos (a) – Pz * Sin (a)

Pz’ = Py * Sin (a) + Pz * Cos (a)

}

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 29

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 12. Phép quay theo trục Ox

 Quay quanh trục Oy:

R (a, y): P -> P’

R (a, y) = {

Py’ = Py

Px’ = Py * Cos (a) + Pz * Sin (a)

Pz’ = -Px * Sin (a) + Pz * Cos (a)

}

 Quay quanh trục Oz:

R (a, z): P -> P’

R (a, z) = {

Pz’ = Pz

Px’ = Px * Cos (a) - Py * Sin (a)

Py’ = Px * Sin (a) + Py * Cos (a)

}

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 30

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 13. Phép quay theo trục Oz

2.2.5. Phép chiếu trong 3D

Giới hạn vùng để vẽ ảnh trên thiết bị 3D:

Trái, phải, trên, dƣới, gần, xa.

2.2.5.1. Chiếu phối cảnh

Là hình chiếu đƣợc xây dựng bằng phép chiếu xuyên tâm.

Đặc điểm của phép chiếu này là tạo cho ngƣời xem có cảm giác xa gần giống nhƣ nhìn

trong thực tế.

Là một cách vẽ trong hội họa, hay tạo hình, dùng để thể hiện các hình ảnh 3 chiều một

cách gần đúng trên một bề mặt 2 chiều nhờ vào các quy luật phối cảnh. Các quy luật phối cảnh

đƣợc xây dựng trên các quy tắc hình học chặt chẽ. Các quy tắc phối cảnh giúp hình ảnh 2 chiều

trở thành 3 chiều, khiến chúng đƣợc quan sát đƣợc trực quan hơn trên tranh vẽ.

Ứng dụng của hình chiều phối cảnh là đi kèm theo các hình chiếu vuông góc trong bản

vẽ thiết kế kiến trúc và xây dựng để biễu diễn các công trình có kích thƣớc lớn.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 31

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 14. Biễu diễn phép chiếu phối cảnh

2.2.5.2. Chiếu trực giao (phép chiếu vuông góc)

Trong phép chiếu này, khoảng cách của vật tới camera không ảnh hƣởng tới độ lớn của

vật đó khi hiển thị.

Phép chiếu trực giao hay còn đƣợc gọi là phép chiếu nhìn từ trên xuống hoặc từ dƣới

lên. Có 2 phép chiếu khác cũng khá thông dụng là:

 Phép nhìn từ trước: Tia chiếu song song với trục x và mặt phẳng quan sát là yz. Phép chiếu này loại bỏ thành phần x của P.

 Phép chiếu nhìn từ phía bên cạnh: Tia chiếu song song với trục y và mặt phẳng chiếu này loại bỏ thành phần y của P.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 32

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 15. Biễu diễn phép chiếu vuông góc

2.2.6. Tọa độ thực đến thiết bị

 Tọa độ thực -> tọa độ mắt -> NDC -> Thiết bị

Hình 16. Biễu diễn tọa độ thực đến thiết bị thông qua NDC

 NDC

Là thiết bị chuẩn hóa tọa độ. Có hình dạng là một lập phƣơng có tọa độ các điểm cố

định. Chỉ có những điểm nằm trong NDC mới đƣợc vẽ.

Xác định tọa độ theo quy tắc bàn tay trái.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 33

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 17. Biễu diễn về NDC

 Biểu đồ thể hiện sự biến đổi 3 chiều thành thành điểm có tọa độ 2 chiều

Hình 18. Biễu diễn sự biến đổi 3 chiều thành 2 chiều

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 34

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.3. Cấu trúc của một game

 Các khái niệm trong game

2.3.1. Game Loop (vòng lặp của game)

Là thành phần quan trọng của bất kỳ game nào. Game loop giúp game chạy ổn định hơn

không bị ảnh hƣởng bởi tác động của ngƣời dùng.

Hầu hết các chƣơng trình truyền thống đều đáp ứng thông điệp đƣa vào của ngƣời dùng .

Ví dụ nhƣ: word thì định dạng và text theo nhƣng gì ngƣời dùng nhập vào, nếu ngƣời dùng không nhập vào thì nó không làm gì cả. Nhƣng đối với một chƣơng trình game thì dù ngƣời

dùng có nhập vào thông điệp hay không thi nó vẫn thực hiện theo một cấu trúc chƣơng trình có

sẵn đây chính là vòng lặp của game.

Một vòng lặp game rất đơn giản nó có thể trông nhƣ thế này:

While ( user doesn't exit )

check for user input

run AI

move enemies

resolve collisions

draw graphics

play sounds

end while

Các vòng lặp game có thể thay đổi nhƣ sự phát triển của game nhƣng hầu hết chúng đều

dựa trên ý tƣởng cơ bản này.

Vòng lặp game khác nhau tùy thuộc vào nền tảng mà nó phát triển.Vòng lặp game đƣợc

thực hiên thông qua 2 hàm chính là Update và Paint.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 35

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.3.2. Framerate (FPS)

Số lần vẽ khung hình trên một giây. Framerate chậm sẽ làm cho ngƣời dùng không có

cảm giác thật, ảnh hƣởng đến sự tƣơng tác của ngƣời dùng với trò chơi.

 Các yếu tố làm cho framerate chậm

 Hình vẽ có kích thƣớc lớn.

 Tính toán trong game nhiều.

 Lỗi của thiết bị.

 Cách cải thiện framerate

 Tối ƣu hóa tính toán và các điều kiện thực hiện trong game:

+ Sử dụng ít vòng lặp.

+ Dùng phép toán dịch chuyển bit thay cho phép nhân và phép chia.

+ Khai báo các biến và phƣơng thức ở dạng static.

 Caching module của các file ảnh, tối ƣu hóa các module dùng để vẽ sao cho số lƣợng

module vẽ ra là ít.

 Dùng Bacbuffer: Không vẽ từng sprite ra màn hình mà ta vẽ các sprite lên một ảnh

sau đó vẽ ảnh đó ra màn hình.

 Bỏ các hiệu ứng không cần thiết.

 Limit Frame rate

Là sự giới hạn lại số lần vẽ trên một giây của trò chơi. Nhằm mục đích dùng trong

những trƣờng hợp ứng dụng có frame rate quá nhanh, sẽ làm cho ứng dụng không ổn định. Ảnh hƣởng đến quá trình xử lý, ngƣời chơi không chơi kịp và một điều nữa là nó dẫn đến

việc nhanh hết pin của thiết bị.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 36

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.3.3. Bộ nhớ (memory)

Là kích thƣớc bộ nhớ có thể dùng để chạy chƣơng trình game của thiết bị.

 Các yếu Tố ảnh hưởng đến bộ nhớ trong game

• File ảnh dùng trong game.

• Âm thanh dùng trong game.

• Các file text, mảng chứa text trong game.

 Tối ưu hóa bộ nhớ

• Đơn giản hóa các frame và hình ảnh động.

• Chia ảnh ra thành các module nhỏ.

• Xóa các module của dữ liệu sau khi caching.

• Dùng gói sound có dung lƣợng nhỏ, Load sound khi chạy sound và giải phóng (free)

khi dừng sound.

• Dùng mảng một chiều thay vì dùng mảng 2 chiều.

• Chỉ giữ những đối tƣợng cần thiết trong bộ nhớ. Để tránh vấn đề phân mảnh bộ nhớ (là

các đối tƣợng thƣờng dùng (fonts, main characters, common interface sprites, … ) ).

• Load khi muốn vẽ và giải phóng khi đi ra khỏi màn hình.

• Tránh phân mảnh bộ nhớ: load đối tƣợng có kích thƣớc lớn trƣớc. Giữ cho bộ nhớ ổn

định. Không load và giải phóng quá nhiều lần.

2.3.4. State

Là các trạng thái của một game. Chúng có liên quan chặt chẽ với nhau.Thông thƣờng một game thƣờng có các trạng thái sau: mainmenu, gamestart, gamewin, gameover, about,

highscore, Exit…

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 37

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

2.4. Giới thiệu về NDK

Là bộ công cho phép nhúng các mã code lên các ứng dụng android. ứng dụng Android

chạy trong máy ảo Dalvik. NDK cho phép chúng ta dùng các ứng dụng viết bằng ngôn ngữ C và C++ lên thiết bị android.

NDK cung cấp một số hỗ trợ sau:

• Một tập hợp các Toos và files build dùng để tạo ra các thƣ viện mã từ sources C và

C++.

• Cách để nhúng các thƣ viện mã vào một file (.apk) gói ứng dụng mà chúng ta có thể

chạy đƣợc trên các thiết bị android.

• Tài liệu, ví dụ và một số hƣớng dẫn.

• Một bộ các thƣ viện C/C++ đƣợc hỗ trợ trong tất cả các phiên bản sau này của hệ điều

hành Android, bắt đầu từ Android 1.5. Từ phiên bản 2.3 trở đi, hệ điều hành android còn hỗ trợ

them cách viết Activity bằng C/C++.

NDK cung cấp bộ header cho libc ( bột thƣ viện C ), libm (bột thƣ viện toán học),

openGL ES(thƣ viện đồ họa 3D), giao diện JNI(là giao diện để liên lạc giữa java và native

code), một số thƣ viện khác, đƣợc chứa trong Development Tools.

 Khi nào thì Native code

Không phải khi nào NDK cũng đều có lợi với tất cả các ứng dụng. Vì vậy chúng ta cần

cân bằng lợi ích với nhƣợc điểm của nó. Đặc biệt trong trƣờng hợp sử dụng native code không

làm tăng hiệu suất thực thi mà làm tăng sự phức tạp của ứng dụng. Nói chung chỉ nên sử dụng

native code nếu nó là cần thiết đối với ứng dụng của mình. Chứ không phải vì chúng ta thích

chƣơng trình trong C/C++.

Frame android cung cấp 2 cách để dùng native code :

 Dùng Android framework để viết ứng dụng của mình và dùng JNI để truy cập API

đƣợc cung cấp bởi Android NDK. Kỹ thuật này cho phép chúng ta tận dụng các tiện ích của

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 38

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Android framework, nhƣng vẫn cho phép chúng ta viết native code khi cần thiết. Chúng ta có

thể cài ứng dụng sử dụng Native code thông qua JNI trên thiết bị chạy android 1.5 hoặc mới

hơn.

 Viết một native activity, cho phép chúng ta thực hiện cài đặt vòng đời của ứng

dụng android trên native code. Android SDK cung cấp lớp NativeActivity cho phép chúng ta

cài đặt vòng đời thông qua các hàm sau (onCreate(), onResume(), ..).

 Development tool

NDK gồm một bộ công cụ (compilers, linkers, …) dùng để tạo ra mã nhị phân cho bộ vi

xử lý ARM trên hệ điều hành Linux, OS X, và Windows(với Cygwin).

Cung cấp một bộ headers của hệ thống cho các API native chuẩn mà đƣợc đảm bảo

đƣợc hỗ trợ trong tất cả các phiên bản sau này của nền tảng:

• Libc (thƣ viện C) headers.

• Libm (thƣ viện toán học) headers.

• Giao diện JNI headers.

• Liblog (Android logging) header.

• OpenGL ES 1.1 và OpenGL ES 2.0(thƣ viện graphics library) headers.

• Libjnigraphics (Pixel buffer access) header(for Android 2.2. trở lên).

• Thƣ viện OpenSL ES native audio.

• API cho ứng dụng android.

NDK cũng cung cấp một hệ thống biên dịch giúp chúng ta làm việc hiệu quả với mã

nguồn của mình mà không cần điều khiển chi tiết các công cụ/ nền tảng/ CPU/ ABI. Ngƣời dùng chỉ cần tạo các file biên dịch đơn giản để mô tả mã nguồn của mình mà trong ứng dụng Android sử dụng. Và hệ thống biên dịch sẽ sử dụng các file này để biên dịch, và tạo ra một thƣ viện động bỏ trực tiếp vào trong dự án của mình.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 39

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Hệ thống và phần mềm yêu cầu

• The Android SDK

- Hoàn tất cài đặt một Android SDK (bao gồm tất cả các phụ thuộc).

- Phiên bản SDK Android 1.5 trở đi.

• Hệ điều hành hỗ trợ

- Window XP (32-bit) hoặc vista (32- hoặc 64 -bit).

- Linux (32 hoặc 64 bit, thử nghiệm trên Linux Ubuntu Dapper Drake).

• Các công cụ Cần Thiết

- Đối với tất cả các nền tảng, bắt buộc GNU Make 3.81 trở lên.

- Đối với Window, bắt buộc Cygwin 1.7 trở lên. NDK không làm việc với Cygwin 1.5.

• Nền tảng Android tƣơng thích

Các thƣ viện native đƣợc tạo ra bởi Android NDK chỉ có thể sử dụng trên các thiết bị

Android phiên bản 1.5 trở đi. Điều này là do Bộ công cụ và ABI liên quan đến những thay đổi

làm cho các thƣ viện native không tƣơng thích với hình ảnh hệ thống 1.0 và 1.1.

Vì lí do này nên chúng ta nên sử dụng thƣ viện native đƣợc tạo ra với NDK trong ứng

dụng mà đƣợc triển khai trên các thiết bị chạy trên nền tảng android 1.5 trở đi.

Để đảm bảo tính tƣơng thích, một ứng dụng dùng thƣ viện native tạo ra với NDK phải

khai báo phần tử trong file mainfese của nó, với một giá trị thuộc tính của android:minSdkVersion 3 hoặc lớn hơn.

Ví dụ:

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 40

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

...

Nếu sử dụng NDK để tạo ra thƣ viện native có sử dụng OpenGL ES API, thì ứng dụng

chứa các thƣ viện chỉ có thể đƣợc triển khai trên các thiết bị chạy tối tiểu là các phiên bản đƣợc

nêu dƣới đây:

OpenGL ES Version Compatible Android Required uses-sdk Attribute

Used Platform(s)

OpenGL ES 1.1 Android 1.6 and android:minSdkVersion="4"

higher

OpenGL ES 2.0 Android 2.0 and android:minSdkVersion="5"

higher

Bảng 2. Các phiên bản OpenGL ES có thể sử dụng ND để tạo ra thư viện native

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 41

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

CHƢƠNG 3 PHÂN TÍCH TRÕ CHƠI

3.1. Hệ thống và tính khả chuyển (portability):

3.1.1. C/C++ và thƣ viện

Để đạt đƣợc yêu cầu đặt ra của bài toán, là hệ thống có thể chạy đƣợc trên cả hai Hệ

điều hành: Windows, Android . Và trong quá trình làm không cần mất nhiều thời gian, chúng ta

cần phải phân tích kỹ lƣỡng và đề xuất phƣơng án phù hợp để tiến hành đề ra giải pháp và xây

dựng bài toán.

Nhận xét:

 Cả hai hệ điều hành đều cung cấp môi trường lập trình trên ngôn ngữ ANSI C/C++.

 Windows: Hổ trợ sẵn.

 Android: JNI từ Android 1.5, Native Activity từ Android 2.3.

 Cả hai hệ điều hành đều cung cấp thư viện OpenGL ES 2.0.

 Android: Từ phiên bản 2.1.

 Windows: Thông qua bộ giả lập OpenGL ES 2.0 của PowerVR.

 Môi trường C/C++ trên cả hai hệ điều hành tương đối giống nhau. Tuy nhiên số lượng các thư viện hổ trợ khác nhau, do đó chúng ta chỉ sử dụng các thư viện chuẩn mà cả hai đều hỗ trợ.

 Có thể dễ dàng chuyển một thư viện C chuẩn lên cả hai hệ điều hành (trong trường hợp ứng dụng này, tôi đã chuyển thành công thư viện LIB PNG – hổ trợ đọc và xử lí tập tin hình ảnh PNG trong C/C++).

 Tất cả đều hổ trợ các công cụ phát triển mạnh mẽ, Android chạy trên nền tảng GCC.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 42

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Do đó, trong quá trình lập trò chơi, chúng ta nên sử dụng hợp lí các công cụ, thƣ viện, mã nguồn và lập trình một cách tối ƣu để có thể sử dụng lại trên cả hai nền tảng khác nhau này.

3.1.2. Phân tích tính khả chuyển (portability) của các thành phần trong trò chơi

Thông thƣờng, trong một trò chơi (tức là một ứng dụng) sẽ có các thành phần nhƣ sau:

- Vòng lặp trò chơi: là trung tâm của trò chơi, quản lí vòng đời, trạng thái của trò chơi.

- Logic: là phần xử lí của trò chơi, xử lí thuật toán, trí thông minh nhân tạo, tƣơng tác

với ngƣời chơi.

- Đồ Họa: là phần thể hiện của trò chơi.

- Âm thanh: là phần không thể thiếu của trò chơi, giúp trò chơi trở nên sinh động hơn.

- Nhập: đối với các thiết bị Android thì tƣơng tác chủ yếu thông qua cảm ứng chạm

(touch screen), giúp ngƣời dùng tƣơng tác với trò chơi.

- Giao diện ứng dụng: là bộ khung tƣơng tác với nền tảng của ứng dụng: cho phép ứng

dụng khởi chạy, tạm ngƣng, ngƣng, và xử lí các sự kiện liên quan.

Đối với các thành phần trên, ta có bảng thực tế nhƣ sau:

Nền tảng / Yếu tố Windows Android

Vònglặp trò chơi

Có thể cài đặt giống nhau trên cả hai hệ thống do đều viết bằng C/C++. Có thể cài đặt giống nhau trên cả hai hệ thống do đều viết bằng C/C++.

Logic

Đồ Họa

Tƣơng tự, ta có thể cài đặt giống nhau trên cả ba hệ thống. - Direct X. - OpenGL. OpenGLES (thông qua bộ giả lập). Tƣơng tự, ta có thể cài đặt giống nhau trên cả ba hệ thống. - OpenGL ES 1.1. OpenGL ES 2.0. (C/C++: từ Android 2.1; Java: từ Android 2.2).

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 43

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Âm thanh

Có thể sử dụng các bộ thƣ viện âm thanh.

- MediaPlayer. - SoundPool. - Open SL ES (Từ Android 2.2). Hổ trợ các định dạng: midi, wav, m4a, mp3 …

Nhập thông điệp từ

Nhận windows.

Từ View – phƣơng thức OnTouchEvent(). Không hổ trợ nhận sự kiện cảm ứng trực tiếp từ JNI.

Giao diện ứng dụng:

main()  tạo cửa sổ và tƣơng tác.

- Activity viết bằng Java. Native activity viết bằng C/C++. (từ Android 2.3).

Xuất nhập tập tin Dùng thƣ viên .

Đọc tập tin từ res/raw qua JNI.

Bảng 3. Thực tế của các thành phần trong trò chơi trên 3 hệ thống

Từ bảng thực tế trên, ta có bảng nhận xét sau:

Tính Khả Chuyển

Giải Pháp Cài đặt bằng C/C++. trò lặp Yếu tố Vòng chơi

Cài đặt bằng C/C++.

Đồ Họa

 Logic Trò Chơi  

Âm thanh

Dùng OpenGL ES 2.0. API 2.0 mạnh mẽ hơn nhiều so với 1.1 và hầu hết các thiết bị hiện tại đều hổ trợ. Không có một chuẩn chung về âm thanh. Tuy nhiên ở mức độ đơn giản, chúng ta không xử lí nhiều tới âm thanh (âm thanh nổi, v.v…). - Trên windows: không cài đặt âm thanh. - IOS: Sử dung AVAAudioPlayer.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 44

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Nhập

Giao diện ứng dụng Xuất nhập tập tin - Android OS: Sử dụng MediaPlayer. Tƣơng tự, ta không có một API chung để nhận cảm ứng, do đó phần này ta phải viết riêng trên từng hệ thống. Phần này ta phải viết riêng trên từng hệ thống. Phần này ta phải viết riêng trên từng hệ thống.

 

Bảng 4. Bảng nhận xét các thành phần trò chơi trên cả 3 hệ thống.

Với lựa chọn trên, trò chơi của chúng ta sẽ chạy đƣợc trên các nền tảng với cấu hình

nhƣ sau:

 Windows: 32 bit, card đồ họa hỗ trợ OpenGL ES 2.0.  Android: phiên bản 2.1 trở về sau.

Dựa vào bảng phân tích trên, ta tiến hành chia phần cài đặt ra các phần sau.

 Phần có thể sử dụng chung:

 Chung cho tất cả các trò chơi: các thành phần chung cho toàn bộ các trò chơi.  Riêng biệt của trò chơi hiện tại: ví dụ thuật toán, logic, ý tƣởng trò chơi.  Phần phải cài đặt riêng: đây là phần mình phải cài đặt riêng cho từng hệ thống, tuy nhiên, các phần này đơn giản hơn nhiều so với các phần còn lại, chúng ta sẽ thiết kế để cài đặt phần này có thể sử dụng chung cho toàn bộ các trò chơi.

Từ đó, ta suy ra quy trình thực hiện như sau:

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 45

Cài đặt phần chung.

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Windows 32

Cài đặt cho windows,

Cài đặt trò chơi

Cài đặt và chuyển

Hình 19. Biễu diễn quá trình xây dựng và chuyển trò chơi.

Ta sẽ ƣu tiên xây dựng các thành phần chung nhất, sau đó hoàn thành trò chơi trên windows. Nơi chúng ta đƣợc sự trợ giúp của các công cụ và môi trƣờng quen thuộc giúp chúng ta cài đặt và gỡ rối một cách dễ dàng. Sau đó chúng ta sẽ thực hiện đƣa lên các nền tảng khác một cách dễ dàng.

3.2. Xây dựng hệ thống khả chuyển

Để dễ dàng hơn trong việc lập trình cũng nhƣ việc chuyển trò chơi từ hệ thống này sang

các nền tảng khác, ta cần phải xây dựng hệ thống theo các phƣơng pháp sau.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 46

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

3.2.1. Sử dụng các tiền xử lý

Các thông số kỹ thuật của các thiết bị tƣơng đối khác nhau, đôi khi cũng có sự khác nhau giữa các thƣ viện trên các thiết bị. Do đó ta cần phải sử dụng các định nghĩa tiền xử lí để có thể viết mã nguồn chạy tốt trên mọi hệ thống.

Các định nghĩa tiền xử lí có sẵn trên hệ thống:

 WIN32: có giá trị đúng khi nền tảng biên dịch hiện tại là windows.  ANDROID: có giá trị đúng khi nền tảng biên dịch hiện tại là Android.

Các cách sử dụng tiền xử lí để tăng tính khả chuyển trong chƣơng trình:

Định nghĩa các thông số: các thiết bị có thể có màn hình khác nhau, do đó ta đƣa các

#define SCREEN_W 960 #define SCREEN_H 640

thông số đó vào các định nghĩa lúc biên dịch.

Viết riêng cho từng cấu hình: sử dụng tiền xử lí #if, #else, #endif để viết một đoạn mã

mà chỉ chạy trên một nền tảng mong muốn.

3.2.2. Sử dụng nguyên mẫu hàm, lớp trừu tƣợng

Khai báo một nguyên mẫu hàm, lớp trừu tƣợng chung cho tất cả các hệ thống sau đó ta

cài đặt khác nhau trên mỗi nền tảng khác nhau.

// Play Sound void PlaySound(int id, int loop = 1);

// Stop all sound void StopSound();

Ví dụ, do xử lí âm thanh trong trò chơi này tƣơng đối đơn giản, do đó, ta cần hai hàm để thực hiện chơi một âm thanh bất kỳ và dừng tất cả các âm thanh đang chơi. Ta khai báo nguyên mẫu hàm nhƣ sau:

Và sau đó ta sẽ viết hàm này trên các hệ thống khác nhau sử dụng tiền xử lý nhƣ phƣơng

pháp trên.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 47

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

3.3. Cấu trúc của một Trò chơi

3.3.1. Vòng lặp trò chơi

Vòng lặp trò chơi chính là trung tâm của trò chơi. Trò chơi khác hẳn với các ứng dụng hƣớng sự kiện khác, ngay cả khi không có sự kiện xuất nhập, trò chơi vẫn phải hoạt động và đáp ứng liên tục để tạo ra hiệu ứng hoạt động của các nhân vật, đối tƣợng trong trò chơi.

Có thể ví dụ trò chơi nhƣ một cuốn phim hoạt hình mà ngƣời chơi có thể tƣơng tác với các nhân vật trong trò chơi. Để tạo đƣợc hiệu ứng hoạt hình, trò chơi phải vẽ hơn 12 hình trên một giây để đảm bảo hiệu ứng hoạt hình. Ngoài ra trò chơi cần phải tính toán, xử lí các sự kiện phát sinh, tính toán các vật thể, các nhân vật và hoạt động trong trò chơi.

Đó là hai công việc chính của vòng lặp trò chơi

Đúng

Kết thúc

Sai

Xử lí sự kiện

Vẽ

- Cập nhật, tính toán trạng thái hiện tại. - Vẽ các nhân vật, đối tƣợng, giao diện màn hình.

Hình 20. Biễu diễn vòng lặp của trò chơi

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 48

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hai hành động này đƣợc lặp đi lặp lại liên tiếp nhau trong suốt trò chơi hình thành nên vòng lặp chính của trò chơi. Để mọi việc rõ ràng và dễ dàng hơn, chúng ta nên tách riêng biệt hai hành động này và sử dụng các biến trạng thái để lập trình.

Ví dụ:

Trong game cần vẽ một quả bóng di động. Ta nhận thấy:

- Để xử lí cập nhật, tính toán trạng thái của quả bóng ta cần các thông tin bao gồm: bán kính

bóng, vị trí trái bóng, và vận tốc của trái bóng.

- Để vẽ trái bóng lên màn hình: ta cần biết các thông tin: bán kính, vị trí.

Bán kính, vị trí, vận tốc: chính là các biến trạng thái chung cho chƣơng trình. Sử dụng các biến trạng thái này, ở hành động cập nhật, ta không cần quan tâm trái bóng đƣợc vẽ nhƣ thế nào vẫn có thể thực hiện đƣợc và ngƣợc lại. Việc nhìn một góc nhìn riêng biệt sẽ khiến chúng ta làm mọi việc dễ dàng và đơn giản hơn nhiều.

Số lần vẽ/cập nhật trên một giây gọi là FPS (Frame per second). Thông thƣờng, một trò chơi 3D có số FPS chuẩn là 60 FPS. Số FPS càng lớn thì trò chơi chạy càng mƣợt mà, tuy nhiên nếu số FPS quá lớn thì sẽ gây hiện tƣợng trò chơi quá nhanh, ngƣời dùng không thể chơi tốt đƣợc, khi đó, chúng ta cần phải giới hạn số FPS lại một giá trị mong muốn.

FPS là giá trị phụ thuộc nhiều vào cấu hình của thiết bị, do đó: việc chuyển đổi trò chơi trên nhiều hệ thống khác nhau sẽ dẫn đến số FPS khác nhau. Trên một thiết bị mạnh hơn, số FPS sẽ tăng lên, do đó chúng ta sẽ phải giới hạn lại. Ngƣợc lại, chúng ta cần tối ƣu hóa thuật toán, cách vẽ hoặc chỉnh sửa nội dung của trò chơi đó để đạt đƣợc số FPS mong muốn tạo ra kết quả tối ƣu cho ngƣời chơi.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 49

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

3.3.2. Cấu trúc trò chơi

Hình 21. Cấu trúc của một trò chơi

Một trò chơi bao gồm nhiều giao diện khác nhau. Ví dụ: bảng chọn chính, mục giới thiệu trò chơi, mục điểm cao nhất và trò chơi. Để tích hợp điều này vào vòng lặp chính, chúng ta sẽ có một biến trạng thái lƣu lại giao diện hiện tại của trò chơi, rồi theo đó xử lí tƣơng ứng.

Dựa vào biến trạng thái chúng ta sẽ lƣu lại giao diện hiện tại và xử lí trạng thái tƣơng

ứng. Tƣơng tự nhƣ trong hàm cập nhật hoặc hàm vẽ.

Trong thiết kế trò chơi của mình, tôi đưa ra các giao diện sau

- Bảng chọn chính: Hiển thị các mục để ngƣời chơi có thể truy xuất đƣợc các mục khác

trong trò chơi.

- Điểm cao: Ghi lại các kỷ lục đƣợc lập trong trò chơi. - Giới thiệu: Giới thiệu sơ lƣợc về trò chơi. - Trò chơi: nơi ngƣời chơi chơi và ghi điểm. - Kết thúc trò chơi: Khi ngƣời chơi bị mất hết mạng.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 50

Xử lí sự kiện

Trạng thái hiện tại

Xử lí bảng chọn

Xử lí trò chơi

Xử lí giới thiệu

Vẽ

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 22. Giao diện của trò chơi

Chọn Xem Điểm

Chọn Giới thiệu

Xem Điểm

Bảng chọn chính

Giới Thiệu

Chọn Vào chơi

Vào chơi

Mất hết mạng

Hết

Chọn nút quay lại

-

Các trạng thái của trò chơi

Hình 23. Trạng thái của trò chơi

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 51

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

3.3.3. Nội dung trò chơi

Trò chơi mô phỏng hành động cắt trái cây của một kiếm sĩ. Trò chơi chỉ có một chế độ chơi duy nhất tính điểm. Ngƣời chơi đƣợc bắt đầu với năm mạng và một thanh kiếm. Trái cây lần lƣợt đƣợc tung lên từ bên dƣới, ngƣời chơi có nhiệm vụ sử dụng kiếm để cắt trái cây ra làm đôi trƣớc khi trái cây đó rơi ra khỏi tầm nhìn. Cứ mỗi trái cây cắt thành công, ngƣời chơi sẽ dành đƣợc một điểm.

Độ khó của trò chơi: tăng dần, cứ 50 điểm đạt đƣợc, trò chơi sẽ xuất hiện thêm một trái

cây khiến mức độ khó của trò chơi tăng lên. Ngƣợc lại ngƣời chơi sẽ đƣợc tặng một mạng.

Trò chơi kết thúc: khi ngƣời chơi mất tất cả các số mạng của mình. Cứ mỗi khi ngƣời

chơi làm rơi một trái cây, ngƣời chơi sẽ bị trừ một mạng.

Các thiết kế thuật toán:

 Chuyển động của trái cây:

Ban đầu vị trí P trái cây đƣợc đặt bên dƣới màn hình. Trái cây đƣợc cung cấp một vận . Theo đó, sau . Trong môi trƣờng tồn tại gia tốc trọng trƣờng và tốc ban đầu

mỗi khung hình, ta có cập nhật trạng thái của trái cây đã cho nhƣ sau:

P

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 52

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 24. Biễu diễn chuyển động của trái cây

 Thanh kiếm của ngƣời chơi:

Thanh kiếm, vết chém của ngƣời chơi đƣợc nhập từ màn hình thông qua cảm ứng chạm. Dữ liệu vào tƣơng đối rời rạc do hạn chế của hệ điều hành. Ví dụ khi ngƣời dùng lƣợt tay trên màn hình thì sẽ có khoảng n điểm đƣợc ghi lại (không phải tất cả các điểm). Từ những dữ liệu này, chúng ta xây dựng thành thanh kiếm có hình dạng tƣơng đối nhƣ hình.

Chạm và các điểm được ghi nhận

Quy tắc:

Thanh kiếm sau khi được render

DB = BC = w/2.Trong đó, w là độ rộng của

D B

thanh kiếm tại B.

A

C Hình 25. Biễu diễn thanh kiếm của người chơi

 Kiểm tra va chạm:

Ta kiểm tra va chạm giữa thanh kiếm và trái cây bằng cách kiểm tra va chạm giữa thanh

kiếm và hình chữ nhật viền xung quanh trái cây.

Hình 26. Biễu diễn va chạm giữa thanh kiếm và trái cây

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 53

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Tính toán tọa độ sau va chạm:

Trƣớc khi va chạm: Gia tốc của vật là . Sau khi va chạm: Trái cây đƣợc cắt làm 2, và

đƣợc truyền thêm một gia tốc tƣơng ứng do lực chém truyền vào là . Gia tốc sau:

.

Hình 27. Biễu diễn tính toán tọa độ sau va chạm

3.3.4. Đồ họa

Chúng ta sử dụng bộ thƣ viện OPENGL ES 2.0. Ta cài đặt một số phƣơng thức để vẽ

một đối tƣợng 3D và vẽ giao diện 2D.

Vẽ đối tƣợng 3D:

- Một đối tƣợng 3D bao gồm định nghĩa về tọa độ và một đối tƣợng texture đƣợc lƣu riêng

rẻ.

- Dữ liệu về tọa độ trong trò chơi đƣợc tạo ra bằng phần mềm 3DS Max Studio, và sau đó đƣợc xuất ra tập tin văn bản kiểu obj (wave front object), đây là dữ liệu bao gồm các thông tin để vẽ một đối tƣợng:

 Tọa độ. (vertex position).  UV. (textcoord).  Vector Normal. (để tính toán ánh sáng).

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 54

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

- Đối tƣợng 3D trong trò chơi chủ yếu là trái cây và đã đƣợc cắt sẵn ra làm 2 phần bằng

nhau đễ dễ dàng xử lí trong trò chơi.

Hình 28. Biễu diễn đối tượng 3D trong trò chơi

Các đối tƣợng này đƣợc tự vẽ để đảm bảo tính đơn giản và tăng tốc độ thực thi trong

chƣơng trình.

Vẽ giao diện 2D:

Giao diện 2D là một phần không thể thiếu trong trò chơi, vì nó là phần quan trọng để thể

hiện thông tin tới ngƣời dùng.

Để vẽ 2D trong OpenGL ES 2.0 chúng ta tạo một texture rồi tiến hành vẽ từng bộ đôi tam

giác 1 ra màn hình. Ví dụ, để vẽ hình bên dƣới thì chúng ta vẽ hai tam giác nhƣ sau:

Hình 29. Biễu diễn giao diện 2D

Để tạo ra toàn bộ giao diện 2D trong chƣơng trình, ta nén tất cả vào một texture có kích

thƣớc lớn, sau đó tải vào bộ nhớ và vẽ từng bộ đôi tam giác nhƣ mô hình trên.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 55

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Hình 30. Biễu diễn cách bố trí để vẽ giao diện 2D trong trò chơi

3.3.5. Âm Thanh

Trò chơi tƣơng đối đơn giản, do đó trong chƣơng trình ta có hai loại âm thanh sau:

 Âm thanh nền.

 Âm thanh hiệu ứng.

Ta có bản thiết kế âm thanh nhƣ sau:

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 56

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Mô tả Nhạc nền. Âm hiệu ứng Tên âm thanh MUSIC_TITLE CUT

Nhạc nền. Kích hoạt Kích hoạt tại bảng chọn chính. Ngƣời dùng chọn một menu. Ngƣời dùng cắt thành công một trái cây. Khi trò chơi kết thúc. GAME_OVER

Bảng 5. Bản thiết kế âm thanh

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 57

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

CHƢƠNG 4 QUÁ TRÌNH LẬP TRÌNH

4.1. Thiết kế chương trình

Dựa vào các phân tích, ta có thiết kế khung của một chƣơng trình.

Hình 31. Biễu diễn khung thiết kế của chương trình

- Lớp Application là bộ giao tiếp giữa ứng dụng và các nền tảng.

- Lớp FileSystem là lớp trừu tƣợng đƣợc dùng để thực hiện các hành động đọc/ghi tập

tin.

-Lớp VideoDriver: là lớp cài đặt các phƣơng thức vẽ hình liên quan đến OpenGLES

2.0.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 58

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

- Lớp Sprite2DManager, Sprite3DManager là lớp chịu trách nhiệm tải các đối tƣợng

3D cũng nhƣ giao diện 2D và vẽ lên trong chƣơng trình.

Ở mỗi nền tảng các đối tƣợng này sẽ đƣợc kế thừa và cài đặt khác nhau nếu cần thiết.

Hình 32. Cách kế thừa các lớp trừ tượng trên các nền tảng khác nhau

 Đây là bộ khung cần thiết để chúng ta tiến hành xây dựng các thành phần trong

chƣơng trình.

4.2. Vòng lặp trò chơi

Chúng ta thực hiện vòng lặp trò chơi qua hai phƣơng thức của lớp Application, đó là

phƣơng thức Update() và Render().

- Phƣơng thức Update: cập nhật trạng thái của trò chơi.

- Phƣơng thức Render: Render nội dung của trò chơi ra màn hình thiết bị.

void UpdateGame(int type) {

switch (s_iCurrentState) {

Do trò chơi bao gồm nhiều giao diện (bảng chọn chính, xem kỷ lục, xem giới thiệu, chơi game…). Chúng ta sẽ khai báo một biến trạng thái để lƣu trữ trạng thái hiện tại. Sau đó ở hàm Update và Render, chúng ta sẽ dựa vào biến trạng thái này để cập nhật trò chơi.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 59

case GAME_START: UpdateGameStart(type); break; case MAIN_MENU:

UpdateMainMenu(type);

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Ứng với mỗi trạng thái ta sử dụng một chỉ thị để xác định hành động hiện tại là Paint

hay Render. Ngoài ra mỗi trạng thái cần có các hành động để tải và hủy bỏ các đối tƣợng trên.

- UPDATE: Cập nhật trạng thái hiện tại. - PAINT: Render trạng thái hiện tại. - CTOR: Tải các đối tƣợng cần thiết để vẽ và tính toán trạng thái hiện tại. - DTOR: Hủy bỏ các biến đã sử dụng trong trạng thái hiện tại.

Hình 33. Biễu diễn vòng lặp của trò chơi

4.3. Nội dung trò chơi

Chúng ta định nghĩa các biến trạng thái rồi lần lƣợt cài đặt các nội dung nhƣ sau:

float x; float y; float ax; float ay; int model;

enum {ST_NORMAL, ST_CUT, ST_HIDDEN}; struct Fruit { int status; };

Các biến dùng để vẽ và cập nhật trái cây:

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 60

Fruit fruits[MAX];

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

int blades[MAX_BLADE][2]; int bladesLength = 0; Ta có vòng đời của một trái cây nhƣ sau:

Các biến dùng để lƣu trữ và xử lí nhập từ ngƣời chơi:

Hình 34. Vòng đời của một trái cây

 Các chức năng cài đặt:

// gán gia tốc fruits[i].ay = 0.28f; fruits[i].ax = (rand() % 10 - 5) * 0.01f; // gán vịtrí fruits[i].y = -2.8f; fruits[i].x = (rand() % 90) / 10.0f - 4.0f; // gán trạng thái fruits[i].status = ST_NORMAL; // gán loại trái cây fruits[i].model = (rand() % 3) * 3;

4.3.1. Khởi tạo vị trí hiện tại của trái cây

fruits[i].status = ST_HIDDEN;

// Tính toán lại gia tốc fruits[i].ay -= 0.007f; fruits[i].y += fruits[i].ay; fruits[i].x += fruits[i].ax; // Xác định lại trạng thái if (fruits[i].y < -3.0f) { }

4.3.2. Cập nhật trạng thái của trái cây

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 61

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

4.3.3. Kiểm tra va chạm

Chúng ta kiểm tra cắt nhau giữa các điểm thuộc thanh kiếm và đƣờng biên va chạm của

trái cây nhƣ sau:

float cx = blades[bladesLength - 2][0] + vx * j * stepLength; float cy = blades[bladesLength - 2][1] + vy * j * stepLength; if(fruits[i].status == ST_NORMAL && PointerInRect(cx, cy, ax - 56, ay - 58, 112, 116)) {

// Đã cắt nhau…

// ax, ay là tọa độ của trái cây.

fruits[i].ax += 0.02f * vx; fruits[i].ay += 0.02f * vy; fruits[i].model = fruits[i].model + 1; fruits[i].status = ST_CUT;

4.3.4. Tính toán lại các trạng thái sau khi va chạm

fruits[i + 1].ax = -fruits[i].ax; fruits[i + 1].x = fruits[i].x; fruits[i + 1].y = fruits[i].y; fruits[i + 1].ay = -fruits[i].ay; fruits[i + 1].model = fruits[i].model + 1; fruits[i + 1].status = ST_CUT;

Tuy nhiên bây giờ, trái cây của chúng ta đã đƣợc cắt làm 2: do đó, chúng ta sẽ có:

4.4. Đồ Họa

Sơ đồ hoạt động của OpenGLES 2.0 trong chƣơng trình nhƣ sau:

Hình 35. Sơ đồ hoạt động của OpenGl ES 2.0 trong chương trình

Để cài đặt đồ họa với OpenGLES 2.0 chúng ta cần phải cài đặt các tính năng sau.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 62

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

4.4.1.Tải shader và biên dịch

OpenGLES 2.0 cung cấp một đƣờng ống để chúng ta có thể lập trình cách thức hoạt

động của bộ xử lí đồ họa.

Shader là bộ điều khiển hoạt động của OpenGLES 2.0 và đƣợc chạy ngay trên bộ xử lí đồ họa. Shader đƣợc viết bằng ngôn ngữ shader (glsl) và bao gồm hai phần: shader đỉnh (vertex shader) và shader điểm ảnh (fragment shader). Ứng dụng OpenGLES 2.0 chỉ có thể hoạt động khi đã đƣợc xác định một cặp shader trong hệ thống. Do đó chúng ta phải cài đặt shader cho lớp xử lí đồ họa của mình.

- Tải shader từ tập tin. - Biên dịch shader. - Liên kết shader thành chƣơng trình. - Sử dụng chƣơng trình đó để vẽ.

4.4.2. Vẽ một đối tƣợng 3D

Để vẽ một đối tƣợng 3D, chúng ta sử dụng phép chiếu phối cảnh. Một đối tƣợng 3D

đƣợc xác định bởi các thuộc tính:

- Vị trí, dữ liệu, màu sắc, UV của từng đỉnh thuộc đối tƣợng. - Quan hệ giữa các đỉnh thuộc đối tƣợng. - Texture: hình ảnh đƣợc áp lên đối tƣợng đó.

Trong chƣơng trình, vị trí, dữ liệu, màu sắc, uv của đối tƣợng đƣợc lƣu dƣới dạng file

.OBJ có định dạng nhƣ sau:

v $x $y $z ; đỉnh có tọa độ x y z

vt $u $v ; tọa độ uv của đối tƣợng.

vn $x $y $z ; vec-tơ chính phƣơng.

f $i/$j/$k $i’/$j’/$k’ $i’’/$j’’/$k’’; Xác định một mặt tam giác của đối tƣợng, trong đó:

$i: vị trí của tọa độ, $j: vị trí của uv, $k: vị trí của vector chính phƣơng tại đỉnh đó,

Các thông tin này đƣợc nén lại vào một file nhị phân chứa nhiều đối tƣợng cùng lúc 

mục đích: dễ dàng tải và thực hiện trong chƣơng trình.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 63

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Lúc vẽ, chúng ta truyền các tham số này vào một shader trong OPENGL ES và bộ xử lí

driver->SetArray(ATTRIB_VERTEX, 3, meshes[i].vertices); driver->SetArray(ATTRIB_TEX_COORD, 2, meshes[i].texCoords); //driver->SetArray(ATTRIB_NORMAL, 3, meshes[i].normals); driver->SetTexture2D(0, manager-

>GetTexture(meshes[i].textureId));

driver->DrawArray(TRIANGLES, meshes[i].nVertices);

đồ họa sẽ vẽ đối tƣợng này lên màn hình.

4.4.3. Vẽ một đối tƣợng 2D

Để vẽ một đối tƣợng 2D, chúng ta sử dụng phép chiếu vuông góc. Tƣơng tự nhƣ đối tƣợng 3D, chúng ta sẽ lƣu thông tin của các đối tƣợng 2D vào một file nhị phân, sau đó tải vào bộ nhớ và vẽ ra.

4.5. Nhập

Ta sử dụng hàm PointerEvent trong đối tƣợng Application để nhận và xử lí các sự kiện

case WM_LBUTTONDOWN: mouseDown = true; bt::core::Application::GetApplication()

->PointerEvent(bt::core::POINTER_START, x, y);

break; case WM_MOUSEMOVE: if (mouseDown) { bt::core::Application::GetApplication()

->PointerEvent(bt::core::POINTER_MOVED, x, y);

}; break; case WM_LBUTTONUP: mouseDown = false; bt::core::Application::GetApplication()

->PointerEvent(bt::core::POINTER_ENDED, x, y);

break;

nhập từ cảm ứng / chuột. Ở trên windows, ta xử lí nhƣ sau:

Ở trong trò chơi của mình, chúng ta chỉ cần cài đặt và xử lí hàm PointerEvent mà không

cần phải biết thật sự cảm ứng/chuột đƣợc nhận nhƣ thế nào.

Ví dụ:

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 64

if (pointerState == POINTER_START &&

PointerInRect(m_iLastPointerX, m_iLastPointerY,

SCREEN_W - 100, SCREEN_H - 100, 100, 100))

{ SwitchState(MAIN_MENU); }

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

4.6. Âm thanh

// Play Sound void PlaySound(int id, int loop = 1); // Stop all sound void StopSound();

Ta đƣa ra hai phƣơng thức để chơi âm thanh:

Tuy nhiên, trong windows, chúng ta không xử lí âm thanh – do không cần thiết và

không có đủ thời gian để thực hiện.

4.7. Giao diện ứng dụng

Ứng dụng của chúng ta xây dựng là ứng dụng console: để có giao diện giúp chúng ta

debug dễ dàng. Đầu vào của ứng dụng là hàm main() -> chúng ta thực hiện các việc sau:

- Khởi tạo ứng dụng.

- Tạo cửa sổ và khởi tạo đối tƣợng OpenGL ES 2.0.

- Bắt đầu trò chơi.

app->StartApp(); while (!exit) { // Update and Paint app->Update(); app->Render(); eglSwapBuffers(context->display, context->surface); }; app->Destroyed();

- Gọi vòng lặp trò chơi.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 65

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

4.8. Giao diện xuất nhập tập tin

Việc xuất nhập tập tin trong windows tƣơng đối đơn giản. Chúng ta chỉ cần sử dụng các

// Open a file in Windows 32bits so easily FILE* Win32FileSystem::OpenFile(const char *filename, const char *mode) { FILE *file; fopen_s(&file, filename, mode); return file; };

phƣơng thức cơ bản của thƣ viện để thực hiện.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 66

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

CHƢƠNG 5 QUY TRÌNH CHUYỂN TRÕ CHƠI

Sau khi thực hiện cài đặt các bƣớc trên, ta có đƣợc ứng dụng trò chơi hoàn chỉnh trên windows. Tuy nhiên, mục tiêu của chúng ta là khiến chƣơng trình đó chạy đƣợc trên các thiết bị Android. Để làm đƣợc điều đó, chúng ta cần phải tiến hành chuyển sang Android OS. Để làm đƣợc điều đó ta cần phải cài đặt các thành phần khác nhau trên hệ thống này.

5.1. Chuyển sang Android

5.1.1 Cài đặt phần mềm

Để tạo môi trƣờng phát triển trên Android ta cần cài đặt các công cụ sau:

- Java SDK: yêu cầu để chạy ứng dụng Java. - Cygwin 1.7 trở về sau: dùng để giả lập môi trƣờng phát triển linux, gcc và chạy NDK. - Android SDK: cần thiết để biên dịch, đóng gói ứng dụng Android. Ngoài ra Android SDK còn cung cấp cho chúng ta các công cụ để tƣơng tác với thiết bị di động, và bộ giả lập.

- Android NDK: Dùng để biên dịch mã nguồn C ra thƣ viện từ đó gọi từ java.

5.1.2. Hoạt động của JNI và quy trình biên dịch

Nhƣ chúng ta đều biết, ứng dụng android chạy trên nền chính là Java. Muốn chạy

C/C++ ta có hai giải pháp:

- Sử dụng JNI: từ android 1.5 trở về sau. - Sử dụng Native Activity: từ android 2.3 trở về sau.

Native Activity là phƣơng án lựa chọn tốt hơn, bởi vì chƣơng trình sẽ không tốn chi phí giao dịch giữa máy ảo Java và C/C++. Tuy nhiên, tới thời điểm hiện tại, số lƣợng các thiết bị hổ trợ Android 2.3 tƣơng đối hiếm nên chúng ta sẽ sử dụng giải pháp JNI.

Hoạt động của JNI đƣợc mô tả nhƣ sau:

- Các phƣơng thức JNI đƣợc đánh dấu bằng từ khóa native. - Các phƣơng thức này đƣợc viết bằng C++ và biên dịch ra thƣ viện liên kết động .so. - Thƣ viện liên kết động đƣợc Load lên trong chƣơng trình Java bằng lời gọi

System.loadLibrary(…);

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 67

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

- Khi trong chƣơng trình Java có lời gọi tới hàm native, máy ảo Java sẽ tìm kiếm trong thƣ viện động xem hàm này đã đƣợc cài đặt chƣa, sau đó các đối tƣợng Java sẽ đƣợc chuyển thành C++ để thực hiện lời gọi tới C++.

- Trong C++ cũng cung cấp các thƣ viện cho phép giao tiếp tới máy ảo và chƣơng trình Java.

 Quy trình xây dựng một chƣơng trình có sử dụng JNI nhƣ sau:

- Khai báo phƣơng thức native ở trong lớp Java.

- Khai báo và cài đặt phƣơng thức này trong C. (Nếu C++ thì phải sử dụng extern “C” để

tránh sửa tên trong C++). Quy tắc đặt tên hàm đó nhƣ sau:

tengoi_tenlop_tenphuongthuc

- Sau đó dùng NDK để biên dịch mã nguồn C thành thƣ viện liên kết động và thƣ viện này

đƣợc tự động bỏ vào thƣ mục lib của dự án android.

- Viết chƣơng trình java gọi các hàm native này. - Dùng bộ SDK để biên dịch thành ứng dụng apk.

Do các bƣớc sử dụng NDK để biên dịch đƣợc thực hiện trên dấu nhắc lệnh, do đó chúng

ta sẽ tạo tập tin lệnh để thực hiện điều này.

5.1.3. Đồ họa

Android hổ trợ OpenGLES 2.0 trong NDK từ phiên bản 2.1 trở về sau. Và trong ví dụ NDK có sẵn ví dụ thực thi với OpenGL ES 2.0 nên ta có thể sử dụng ví dụ này, sau đó thay đổi các thành phần trong đó để tải ứng dụng C++ và chạy lên.

Ngoài ra để biên dịch với OpenGL ES 2.0 thì trong make file của dự án NDK ta phải

thêm dòng LOCAL_LDLIBS := -llog -lz -lGLESv2.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 68

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

5.1.4. Âm thanh

NDK không hổ trợ chơi âm thanh cho đến Android phiên bản 2.2 trở về sau. Do đó

chúng ta sẽ sử dụng Java để chạy các tập tin âm thanh.

Phần tải các tập tin âm thanh, Play Sound và StopSound đƣợc cài đặt trong Java:

Trong C++, ta cài đặt các hàm PlaySound và Stop Sound bằng cách gọi tới hàm

PlaySound trong đối tƣợng Java.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 69

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

5.1.5. Cảm ứng chạm

Trong ứng dụng Android, ta nhận sự kiện cảm ứng chạm thông qua hàm OnTouchEvent.

Từ đó ta gọi đến các hàm native trong C++ và xử lí nó.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 70

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

5.1.6. Giao diện ứng dụng

Ứng dụng Java đƣợc viết theo Activity. Trong ứng dụng Java, chúng ta tải một GLSurfaceView để thể hiện giao diện OpenGL ES 2.0. Trong các hàm này, chúng ta thêm các phƣơng thức để gọi chƣơng trình C/C++ của chúng ta từ thƣ viện native lên và thực hiện.

Các phương thức:

- onSurfaceCreate: đƣợc gọi khi đối tƣợng GLSurfaceView đƣợc tạo ra, tại đây ta cần gọi

hàm app->Init(), và app->StartGame().

- onDrawFrame: hàm đƣợc gọi khi đối tƣợng đƣợc vẽ ra. Tại đây ta cần gọi các hàm app-

>Update(), và app->Render.

5.1.7. Xử lí file

Các tập tin trong res/raw sẽ truy cập đƣợc từ Android bằng lệnh fdopen(). Tuy nhiên, ta

cần phải biết các thông số ID để thực hiện truy xuất này.

 Từ Java ta có thể lấy các thông số này và truyền vào C/C++:

 Trong C++ ta lƣu lại các tham số này.

 Sau đó sử dụng lúc cần thiết.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 71

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

Vậy là ta có thể đọc các tập tin tài nguyên và hiển thị lên trong trò chơi.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 72

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

CHƢƠNG 6 QUÁ TRÌNH CÀI ĐẶT HỆT THỐNG TRÊN MOBIE

6.1. Cài đặt hệ thống trên Android

Có 2 cách để cài đặt

 Dùng Thẻ nhớ

Copy file apk sau khi build ra vào thẻ nhớ của điện thoại.

Sau đó vào điện thoại. Chọn chƣơng trình vừa copy vào thẻ nhở để cài đặt.

 Dùng câu lệnh

Cắm điện thoại vào máy tính để cho máy tính kết nối với điện thoại Android. Dùng câu lệnh:

adb devices để kiểm tra xem máy tính đã kết nối với điện thoại chƣa.

Sau khi điện thoại Android đã kết nối với máy tính. Ta dùng lệnh:

Adb install -r để cài đặt trên điện thoại.

Cách hủy bỏ game đã cài đặt

Chúng ta vào mục setting -> Applications->Manage application. Rồi sau đó chọn vào ứng

dụng game mà chúng ta đã cài đặt trên máy. Chọn Unstill để gỡ ứng dụng game đó.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 73

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

CHƢƠNG 7 MỘT SỐ KẾT QUẢ VÀ DEMO CỦA GAME

7.1. Kết quả demo trên Windows

 Màn Hình main menu

Hình 36. Kết quả demo về main menu ở trên Windows

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 74

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Ở màn hình lúc đang chơi game

Hình 37. Kết quả demo giao diện lúc đang chơi game trên windows

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 75

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Lúc người dùng chạm vào trái cây đang chuyển động

Hình 38. Kết quả demo lúc người chơi chạm vào trái cây trên windows

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 76

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Màn hình lúc bị Game over

Hình 39. Kết quả demo lúc Game over trên windows

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 77

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Màn hình Highscore

Hình 40. Demo giao diện màn hình highscore trên windows

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 78

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

7.2. Kết quả demo trên Android (điện thoại Galaxy mini)

 Biểu tượng Icon của game

Hình 41. Kết quả demo biểu tượng icon của game trên Android

 Màn hình Mainmenu

Hình 42. Kết quả demo màn hình mainmenu trên Android

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 79

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Màn hình Gameplay

Hình 43. Kết quả demo màn hình game play trên Android

 Màn hình Higscore

Hình 44. Kết quả demo màn hình highScore trên Android

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 80

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

 Màn hình GameOver

Hình 45. Kết quả demo màn hình GameOver trên Android

 Màn hình About

Hình 46. Kết quả demo màn hình About trên Android

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 81

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

CHƢƠNG 8 KẾT LUẬN

8.1. Kết quả đạt được

Tìm hiểu đƣợc cách xây dựng một game đa nền tảng, và quả trình chuyển game từ

windows sang Android.

Biết đƣợc cấu trúc của một game 3D.

Xây dựng thành công một game 3D trên hệ điều hành Windows và ĐTDĐ có HĐH

Android với giao diện thân thiện và dễ sử dụng.

8.2. Những vấn đề còn tồn đọng

Các tính năng của game còn khá đơn giản.

8.3. Hướng phát triển của đề tài

Xây dựng thêm các tính năng mới của game : xuất nhập tên ngƣời chơi, Tạo thêm các

hiệu ứng cho game. Và đặc biệt là phát triển để game có thể chuyển qua Không chỉ có

windows, Adroid mà trên còn nhiều hệ điều hành khác nữa.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 82

Xây dựng game 3D chém trái cây trên Windows và ĐTDĐ sử dụng HĐH Android

TÀI LIỆU THAM KHẢO

[1] Trang web: http://fly.cc.fer.hr/~unreal/theredbook/ [2] Lê Phong: Hƣớng dẫn lập trình OpenGL căn bản. [3] Trang web: http://glprogramming.com/red/ [4] Lê Tấn Hùng, Huỳnh Quyết Thắng: kỹ thuật đồ họa. Nhà xuất bản khoa học và kỹ thuật, Hà Nội-2000.

[5] Donald Hearn, M. Pauline Baker: Computer Graphics, Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 1986.

[6] Trang web: http://forums.gamevn.com/archive/index.php/t-43474.html,

www.vietnamandroid.com, …

[7] Và một số tài liệu khác.

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 83