Tải bản đầy đủ (.doc) (69 trang)

ĐỀ TÀI : THIẾT KẾ VÀ XÂY DỰNG GAME LINES TRÊN ĐIỆN THOẠI DI ĐỘNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.63 MB, 69 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.ud.edu.vn, E-mail:

LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI :
THIẾT KẾ VÀ XÂY DỰNG GAME LINES TRÊN ĐIỆN THOẠI DI
ĐỘNG
Mã số : 06T2-042, 06T2-011
Ngày bảo vệ : 15-16/06/2011

SINH VIÊN: Nguyễn Hữu Toàn
Nguyễn Dương Hải
LỚP :
06T2
CBHD :
Th.S Phan Chí Tùng

ĐÀ NẴNG, 06/2011

Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

1



Thiết kế và xây dựng game Line trên điện thoại di động

LỜI CẢM ƠN
Lời đầu tiên, chúng em xin chân thành cảm ơn quý thầy cô giáo khoa Công
Nghệ Thông Tin, trường Đại Học Bách Khoa – Tp.Đà Nẵng đã dạy dỗ chúng em suốt
năm năm học vừa qua và tạo điều kiện cho phép chúng em được thực hiện luận văn
tốt nghiệp này.
Đặc biệt, chúng em xin được bày tỏ lòng kính trọng và biết ơn sâu sắc tới thầy
giáo Th.S Phan Chí Tùng đã tận tình hướng dẫn và giúp đỡ chúng em trong quá trình
hoàn thành luận văn này.
Xin cảm ơn gia đình và bạn bè đã giúp đỡ, động viên chúng em trong thời gian
thực hiện đề tài.
Do còn thiếu nhiều kinh nghiệm thực tế nên không tránh khỏi những sai sót.
Chúng em hy vọng sẽ nhận được những ý kiến nhận xét, góp ý của các nhà khoa học,
các thầy cô giáo và bạn bè về những vấn đề được triển khai trong luận văn. Xin trân
trọng cảm ơn!

LỜI CAM ĐOAN
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

2


Thiết kế và xây dựng game Line trên điện thoại di động

Chúng tôi xin cam đoan :
1


Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn
trực tiếp của thầy Th.S Phan Chí Tùng.

2

Mọi tham khảo dùng trong luận văn đề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á,
tôi xin chịu hoàn toàn trách nhiệm.
Nhóm sinh viên thực hiện,
Nguyễn Dương Hải
Nguyễn Hữu Toàn

Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

3


Thiết kế và xây dựng game Line trên điện thoại di động

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

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
…………………………………………………………………………………..
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
…………………………………………………………………………………....
……………………………………………………………………………………
…………………………………………………………
Ngày…… tháng……năm 2011
Ký tên

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

4


Thiết kế và xây dựng game Line trên điện thoại di động

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………………

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
…………………………………………………………………………………....
……………………………………………………………………………………
…………………………………………………………
Ngày…… tháng……năm 2011
Ký tên

MỤC LỤC
DANH MỤC HÌNH VẼ...................................................................................8
CHƯƠNG 1......................................................................................................9
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

5


Thiết kế và xây dựng game Line trên điện thoại di động

MỞ ĐẦU...........................................................................................................9

I. Bối cảnh thực hiện đề tài...........................................................................................9
II.
Mục đích đề tài......................................................................................................9
III.
Giới thiệu sản phẩm.............................................................................................10

CHƯƠNG 2....................................................................................................13
CƠ SỞ LÝ THUYẾT.....................................................................................13
I. Giới thiệu về J2ME..................................................................................................13
II.
Kiến trúc J2ME....................................................................................................14
II.1. Configuration...............................................................................................14
II.2. Profile...........................................................................................................15
III.
Các thành phần giao diện mức thấp của ứng dụng MIDP...................................17
III.1. Các hàm API ở mức thấp.............................................................................17
III.2. Các lớp Canvas............................................................................................18
III.3. Các hàm API dùng để lập trình Game.........................................................23

CHƯƠNG 3....................................................................................................27
PHÂN TÍCH VÀ THIẾT KẾ GAME..........................................................27
I.

Đặc tả hệ thống.........................................................................................................27
I.1.
Use case........................................................................................................27
I.2.
Màn hình game logo.....................................................................................28
I.3.
Màn hình loading.........................................................................................29

I.4.
Màn hình Ask for sound...............................................................................30
I.5.
Màn hình main menu....................................................................................31
I.6.
Màn hình options..........................................................................................32
I.7.
Màn hình About...........................................................................................33
I.8.
Màn hình help...............................................................................................34
I.9.
Màn hình ingame..........................................................................................35
I.10. Màn hình game menu...................................................................................36
I.11. Màn hình game over.....................................................................................37
I.12. Màn hình high score.....................................................................................38
II.
Biểu đồ lớp...........................................................................................................39
III.
Biểu đồ tuần tự.....................................................................................................40
IV.
Biểu đồ hoạt động................................................................................................43

CHƯƠNG 4....................................................................................................44
CÀI ĐẶT, TEST VÀ CHẠY THỬ CHƯƠNG TRÌNH..............................44
I.

Cài đặt......................................................................................................................44
I.1.
Giao diện......................................................................................................44
I.2.

Cấu trúc chương trình..................................................................................47
I.3.
Các thuật toán..............................................................................................51
II.
Test và sửa lỗi......................................................................................................53
II.1. Test...............................................................................................................53
II.2. Kết quả test..................................................................................................59
II.3. Sửa lỗi..........................................................................................................59
III.
Kết quả chạy thử chương trình............................................................................63
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

6


Thiết kế và xây dựng game Line trên điện thoại di động

CHƯƠNG 5....................................................................................................65
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN....................................................65
I.

Kết luận....................................................................................................................65
I.1.
Kết quả đạt được..........................................................................................65
I.2.
Những hạn chế.............................................................................................65
II.
Hướng phát triển..................................................................................................66


DANH MỤC HÌNH VẼ
Hình 1 – Giới thiệu – Màn hình Game Logo.............................................................10
Hình 2 - Giới thiệu – Màn hình In Game..................................................................12
Hình 3 – So sánh 2 version của J2ME.......................................................................13
Hình 4 - Các cấu hình của J2ME...............................................................................14
Hình 5 – Kiến trúc của J2ME....................................................................................17
Hình 6 – Hệ trục tọa độ trong lớp Canvas.................................................................18
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

7


Thiết kế và xây dựng game Line trên điện thoại di động

Hình 7 – Bàn phím di động.......................................................................................22
Hình 8 – 64 x 48 pixels..............................................................................................25
Hình 9 – Tile..............................................................................................................25
Hình 10 – Biều đồ use case........................................................................................27
Hình 11 – Màn hình Game Logo...............................................................................28
Hình 12 – Màn hình loading......................................................................................29
Hình 13 – Màn hình Ask for Sound...........................................................................30
Hình 14 – Màn hình Main Menu...............................................................................31
Hình 15 – Màn hình Options.....................................................................................32
Hình 16 – Màn hình About........................................................................................33
Hình 17 – Màn hình help...........................................................................................34
Hình 18 - Màn hình in game.....................................................................................35
Hình 19 – Màn hình Game Menu..............................................................................36
Hình 20 – Màn hình game over.................................................................................37
Hình 21 – Màn hình high score.................................................................................38

Hình 22 – Biểu đồ lớp................................................................................................39
Hình 23 – Biểu đồ tuần tự: chơi game.......................................................................40
Hình 24 – Biểu đồ tuần tự: pause game.....................................................................41
Hình 25 – Biểu đồ tuần tự: restart game...................................................................42
Hình 26 - Biểu đồ tuần tự: end game........................................................................42
Hình 27 – Biểu đồ hoạt động.....................................................................................43
Hình 28 – Màn hình Game........................................................................................63
Hình 29 – Màn hình khi chơi game...........................................................................64
CHƯƠNG 1

MỞ ĐẦU
.I Bối cảnh thực hiện đề tài
Ngày nay, đi đôi với sự phát triển của ngành Công nghệ thông tin là sự phát
triển mạnh mẽ của thế giới game trên PC và trên Điện thoại di động. Các hãng sản
xuất game lớn trên thế giới đua nhau phát hành vô số các loại game đủ thể loại bao
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

8


Thiết kế và xây dựng game Line trên điện thoại di động

gồm các game Online ( Fifa, Audition, võ lâm, …) , Offline ( Diablo, Warcraft, AOE
,… ) trên PC và vô số các game trên Điện Thoại Di Động thu hút hầu hết các bạn
trẻ tham gia.
Bên cạnh đó cũng có một số game đã xuất hiện từ lâu nhưng rất được phổ
biến và được nhiều người chọn là công cụ giải trí sau những giờ làm việc. Trong số
đó game Lines là một game nhỏ nhưng thể hiện được sự tinh tế và chiến thuật của
người chơi, và có tính giải trí cao.

Nhưng cuộc sống bận rộn, không phải lúc nào người chơi cũng có thể ngồi
trên PC để chơi. Để đáp ứng nhu cầu giải trí chúng em đã phát triển ý tưởng “Thiết
kế và xây dựng game Lines trên Điện Thoại Di Động“ để mọi người có thể chơi
bất ký lúc nào trên chiếc di động của mình.

.II Mục đích đề tài
Tìm hiểu công nghệ J2ME, bước đầu xây dựng thành công một ứng dụng
game trên Điện Thoại Di Động, hiểu và sử dụng được các lớp đối tượng hỗ trợ lập
trình game trên J2ME, xử lý âm thanh, thiết kế giao diện cho Game và vận dụng
được một số thuật toán về đồ thị khi xử lý trong lập trình Game, cài đặt ứng dụng
lên điện thoại.

.III Giới thiệu sản phẩm

Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

9


Thiết kế và xây dựng game Line trên điện thoại di động

Hình 1 – Giới thiệu – Màn hình Game Logo

Game Lines 2011 được phát triển cho các dòng điện thoại có hỗ trợ Java và có
độ phân giải màn hình là 240x320(chiều rộng 240, chiều cao 320). Lines 2011 có giao
diện đẹp mắt và bộ cài đặt tương đối nhẹ (159 Kb), có thể chạy trên các dòng điện
thoại có cấu hình và bộ nhớ thấp.

Luật chơi của Lines Mobile 2011 cũng tương tự như các game Lines trên PC trước

đó:
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

10


Thiết kế và xây dựng game Line trên điện thoại di động

-

Mỗi ô vuông nhỏ chứa một viên bi, có nhiều loại bi, mỗi loại là một
màu phân biệt. Đầu tiên trong lưới ô vuông chỉ có một số viên bi.

-

Người chơi chọn một viên bi và chọn vào 1 ô trống để di chuyển
viên bi đó đến vị trí mới.

-

Khi người chơi ghép được trên 4 viên bi thẳng hàng theo đường
ngang, dọc hoặc theo đường chéo thì số viên bi đó sẽ nổ và người
chơi thu được điểm.

-

Mỗi nước đi của người chơi thì trong lưới ô vuông sẽ mọc thêm một
số viên bi đủ màu vào vị trí bất kỳ.


-

Trò chơi kết thúc khi lưới ô vuông chứa đầy viên bi. Khi đó chương
trình sẽ tính điểm cho người chơi.

-

Có nhiều mức độ dễ, bình thường, khó cho người chơi chọn lựa, với
mỗi cấp độ sẽ có số màu và số viên bi khác nhau.

Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

11


Thiết kế và xây dựng game Line trên điện thoại di động

Hình 2 - Giới thiệu – Màn hình In Game

CHƯƠNG 2

CƠ SỞ LÝ THUYẾT
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

12


Thiết kế và xây dựng game Line trên điện thoại di động


.I Giới thiệu về J2ME
J2ME được phát triển từ kiến trúc Java Card, Embeded Java và Personal
Java của phiên bản Java 1.1. Đến sự ra đời của Java 2 thì Sun quyết định thay thế
Personal Java và đươc gọi với tên mới là Java 2 Micro Edition, hay viết tắt là J2ME.
Đúng với tên gọi, J2ME là nền tảng cho các thiết bị cấu hình nhỏ.

Hình 3 – So sánh 2 version của J2ME

a) Java ban đầu được thiết kế dành cho các máy với tài nguyên bộ nhớ hạn
chế.
b) Thị trường của J2ME được mở rộng ra cho nhiều chủng loại thiết bị như:
 Các loại thẻ cá nhân như Java Card
 Máy điện thoại di động
 Máy PDA (Personal Digital Assistant - thiết bị trợ giúp cá nhân)
 Các hộp điều khiển dành cho tivi, thiết bị giải trí gia dụng …

Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

13


Thiết kế và xây dựng game Line trên điện thoại di động

.II Kiến trúc J2ME
.II.1. Configuration

Hình 4 - Các cấu hình của J2ME


- Định nghĩa về Configuration (Cấu hình): là đặc tả định nghĩa một môi
trường phần mềm cho một dòng các thiết bị được phân loại bởi tập hợp các đặc tính,
ví dụ như:
• Kiểu và số lượng bộ nhớ
• Kiểu và tốc độ bộ vi xử lý
• Kiểu mạng kết nối
Do đây là đặc tả nên các nhà sản xuất thiết bị như Samsung, Nokia …bắt buộc
phải thực thi đầy đủ các đặc tả do Sun qui định để các lập trình viên có thể dựa vào
môi trường lập trình nhất quán và thông qua sự nhất quán này, các ứng dụng được tạo
ra có thể mang tính độc lập thiết bị cao nhất có thể. Ví dụ như một lập trình viên viết
chương trình game cho điện thoại Samsung thì có thể sửa đổi chương trình của mình
một cách tối thiểu nhất để có thể chạy trên điện thọai Nokia.
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

14


Thiết kế và xây dựng game Line trên điện thoại di động

Hiện nay Sun đã đưa ra 2 dạng Configuration:
• CLDC (Connected Limited Device Configuration-Cấu hình thiết
bị kết nối giới hạn): được thiết kế để nhắm vào thị trường các thiết bị cấp
thấp (low-end), các thiết bị này thông thường là máy điện thọai di động và
PDA với khoảng 512 KB bộ nhớ. Vì tài nguyên bộ nhớ hạn chế nên CLDC
được gắn với Java không dây (Java Wireless), dạng như cho phép người sử
dụng mua và tải về các ứng dụng Java, ví dụ như là Midlet.
• CDC ( Connected Device Configuration - Cấu hình thiết bị kết
nối ): CDC được đưa ra nhắm đến các thiết bị có tính năng mạnh hơn dòng
thiết bị thuộc CLDC nhưng vẫn yếu hơn các hệ thống máy để bàn sử dụng

J2SE. Những thiết bị này có nhiều bộ nhớ hơn (thông thường là trên 2Mb) và
có bộ xử lý mạnh hơn. Các sản phẩm này có thể kể đến như các máy PDA cấp
cao, điện thoại web, các thiết bị gia dụng trong gia đình…
Cả 2 dạng Cấu hình kể trên đều chứa máy ảo Java (Java Virtual Machine) và
tập hợp các lớp (class) Java cơ bản để cung cấp một môi trường cho các ứng dụng
J2ME. Tuy nhiên, bạn chú ý rằng đối với các thiết bị cấp thấp, do hạn chế về tài
nguyên như bộ nhớ và bộ xử lý nên không thể yêu cầu máy ảo hổ trợ tất cả các tính
năng như với máy ảo của J2SE, ví dụ, các thiết bị thuộc CLDC không có phần cứng
yêu cầu các phép tính toán dấu phẩy động, nên máy ảo thuộc CLDC không được yêu
cầu hỗ trợ kiểu float và double. Các thiết bị thuộc CLDC không có phần cứng yêu cầu
các phép tính toán dấu phẩy động, nên máy ảo thuộc CLDC không được yêu cầu hỗ
trợ kiểu float và double.

.II.2. Profile
Profile mở rộng Configuration bằng cách thêm vào các class để bổ trợ các
tính năng cho từng thiết bị chuyên biệt. Cả 2 Configuration đều có những Profile liên
quan và từ những profile này có thể dùng các class lẫn nhau. Đến đây ta có thể nhận
thấy do mỗi profile định nghĩa một tập hợp các class khác nhau, nên thường ta không
thể chuyển một ứng dụng Java viết cho một profile này và chạy trên một máy hỗ trợ
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

15


Thiết kế và xây dựng game Line trên điện thoại di động

một profile khác. Cũng với lý do đó, bạn không thể lấy một ứng dụng viết trên J2SE
hay J2EE và chạy trên các máy hỗ trợ J2ME. Sau đây là các profile tiêu biểu:
• Mobile Information Device Profile (MIDP): profile này sẽ bổ sung

các tính năng như hỗ trợ kết nối, các thành phần hỗ trợ giao diện người dùng
… vào CLDC. Profile này được thiết kế chủ yếu để nhắm vào điện thọai di
động với đặc tính là màn hình hiển thị hạn chế, dung lượng chứa có hạn. Do đó
MIDP sẽ cung cấp một giao diện người dùng đơn giản và các tính năng mạng
đơn giản dựa trên HTTP. Có thể nói MIDP là profile nổi tiếng nhất bởi vì nó
là kiến thức cơ bản cho lập trình Java trên các máy di động (Wireless
Java)
• PDA Profile: tương tự MIDP, nhưng với thị trường là các máy PDA
với màn hình vào bộ nhớ lớn hơn
• Foundation Profile: cho phép mở rộng các tính năng của
CDC với phần lớn các thư viện của bộ Core Java2 1.3
Ngoài ra còn có Personal Basis Profile, Personal Profile, RMI Profile, Game Profile.

Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

16


Thiết kế và xây dựng game Line trên điện thoại di động

Hình 5 – Kiến trúc của J2ME

.III Các thành phần giao diện mức thấp của ứng dụng
MIDP
.III.1. Các hàm API ở mức thấp
Mặc dù các hàm API cấp cao cung cấp một tập đầy đủ các thành phần để xây
dựng giao diện ứng dụng người dùng. Tuy nhiên các thành phần cấp cao không cung
cấp phương tiện để vẽ trực tiếp lên thiết bị thể hiện. Vì thiếu khả năng này nên các
ứng dụng được tạo ra sẽ gặp nhiều giới hạn. Ví dụ hầu hết các nhà phát triển game di

động dựa trên khả năng vẽ các đường thẳng và các hình dạng như là một phần tích
hợp quá trình phát triển.
Nếu các hàm API cấp cao cho phép chúng ta tạo ra giao diện cho các ứng dụng
theo chuẩn, thì các hàm API cấp thấp cho phép chúng ta có thể thể hiện các
ý tưởng của mình.
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

17


Thiết kế và xây dựng game Line trên điện thoại di động

Canvas và Graphics là 2 lớp trái tim của các hàm API cấp thấp. Bạn sẽ làm
tất cả các công việc bằng tay. Canvas là một khung vẽ cho phép người phát triển có
khả năng vẽ lên thiết bị trình bày cũng như là việc xử lý sự kiện. Còn lớp Graphics
cung cấp các công cụ thật sự để vẽ như drawRoundRect() và drawString().

.III.2. Các lớp Canvas
.III.2.1. Hệ trục tọa độ
Hệ thống tọa độ cho lớp Canvas có tâm tọa độ là điểm trái trên của thiết bị
trình bày. Giá trị x tăng dần về phía phải, giá trị y tăng dần khi đi xuống phía dưới.
Khi vẽ độ dày bút vẽ là một điểm ảnh.

Hình 6 – Hệ trục tọa độ trong lớp Canvas

Các phương thức sau đây sẽ giúp xác định chiều rộng và chiều cao của canvas:
-

int getWidth(): xác định chiều rộng của canvas


-

int getHeight (): xác định chiều cao của canvas

Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

18


Thiết kế và xây dựng game Line trên điện thoại di động

Chiều rộng và chiều cao của Canvas cũng đại diện cho toàn bộ diện tích khung
vẽ có thể trên thiết bị trình bày. Nói cách khác, bạn không thể chỉ định kích thước cho
canvas, mà phần mềm trên một thiết bị MIDP sẽ trả về diện tích lớn nhất có thể có
đối với một thiết bị cho trước.
.III.2.2. Tạo đối tượng canvas
Bước đầu tiên để làm việc với một lớp Canvas là tạo ra một lớp thừa kế từ lớp
Canvas
class TestCanvas extends Canvas implements
CommandListener
{
private Command cmdExit;
...
display = Display.getDisplay(this);
cmdExit = new Command("Exit", Command.EXIT, 1);
addCommand(cmdExit);
setCommandListener(this);
...

protected void paint(Graphics g)
{
// Draw onto the canvas
}
}
TestCanvas canvas = new TestCanvas(this);

.III.2.3. Vẽ trên đối tượng Canvas
Phương thức paint của lớp Canvas cho phép bạn vẽ các hình dạng, vẽ ảnh, xuất
chuỗi. Đoạn mã sau minh họa việc xóa màn hình thể hiện bằng một màu trắng
protected void paint(Graphics g)
{
// Set background color to white
g.setColor(255, 255, 255);

}

// Fill the entire canvas
g.fillRect(0, 0, getWidth(), getHeight());

Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

19


Thiết kế và xây dựng game Line trên điện thoại di động

Chúng ta có thể sử dụng một tham chiếu đến một đối tuợng Graphics bên trong
thân phương thức paint() để thực hiện công việc vẽ thực sự.

.III.2.4. Xử lý sự kiện hành động
Cũng như các thành phần Form, List, và TextBox, một Canvas có thể xử lý
các sự kiện Command. Chúng ta có thể xử lý các sự kiện Command trên thành phần
Canvas cung cách như các thành phần khác Đoạn mã sau minh họa việc xử lý sự kiện
Command trên thành phần Canvas:
class TestCanvas extends Canvas implements
CommandListener
{
private Command cmdExit;
...
display = Display.getDisplay(this);
cmdExit = new Command("Exit", Command.EXIT, 1);
addCommand(cmdExit);
setCommandListener(this);
...
protected void paint(Graphics g)
{
// Draw onto the canvas
}
public void commandAction(Command c, Displayable d)
{
if (c == cmdExit)
...
}
}

.III.2.5. Xử lý sự kiện phím ấn
Trong trường hợp xử lý các hành động của các phím mềm, một Canvas có thể truy
cập đến 12 mã phím. Những mã này được đảm bảo luôn luôn có trên bất kỳ các thiết
bị MIDP nào.

KEY_NUM0
KEY_NUM1
KEY_NUM2
KEY_NUM3
KEY_NUM4
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

20


Thiết kế và xây dựng game Line trên điện thoại di động

KEY_NUM5
KEY_NUM6
KEY_NUM7
KEY_NUM8
KEY_NUM9
KEY_STAR
KEY_POUND
Năm phương thức để xử lý các mã phím là:
void keyPressed(int keyCode)
void keyReleased(int keyCode)
void keyRepeated(int keyCode)
boolean hasRepeatEvents()
String getKeyName(int keyCode)
.III.2.6. Xử lý sự kiện hành động của Game
MIDP thường được sử dụng để tạo các trò chơi trên nền Java. Các hằng số sau
đã được định nghĩa để xử lý các sự kiện có liên quan đến trò chơi trong MIDP.
UP

DOWN
LEFT
RIGHT
FIRE
GAME_A
GAME_B
GAME_C
GAME_D
Nói một cách đơn giản thì các giá trị này được ánh xạ thành các phím mũi tên
chỉ hướng của thiết bị, nhưng không phải tất cả các thiết bị di động đều có những giá
trị này. Nếu một thiết bị di động thiếu các phím mũi tên thì các hành động của trò
chơi sẽ được ánh xạ vào các nút bấm, ví dụ phím trái được ánh xạ vào phím số 2,
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

21


Thiết kế và xây dựng game Line trên điện thoại di động

phím phải được ánh xạ vào phím số 5, và cứ tiếp tục như thế. Hình dưới đây cho thấy
các hành động của trò chơi sẽ được ánh xạ lên một thiết bị di động dựa trên khả năng
của các phím chỉ hướng

Hình 7 – Bàn phím di động

.III.3. Các hàm API dùng để lập trình Game
Các hàm API dành để lập trình Game được giới thiệu trong bản MIDP
2.0, những hàm này là phương tiện để phát triển game với nhiều phần đồ họa. Các
hàm API dành cho Game là một phần của gói javax.microedition.lcdui.game.


Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

22


Thiết kế và xây dựng game Line trên điện thoại di động

.III.3.1. Lớp game canvas
Lớp GameCanvas gần như giống lớp Canvas, GameCanvas cung cấp
nền tảng để tạo giao diện người dùng, nhưng trong trường hợp này chỉ cho việc tạo
games. GameCanvas chứa một vùng nhớ tách rời với vùng nhớ màn hình cho
mỗi thể hiện và cung cấp các phương tiện tích hợp để xác định tình trạng các
phím trò chơi. Dưới đây là lớp GameCanvas:
public abstract class GameCanvas extends Canvas
GameCanvas cho phép bạn khắc phục được việc vẽ hình theo cách thông
thường và cơ chế sự kiện nhấn phím để cho tất cả các logic của game có thể được
chứa trong một vòng lặp đơn. Đầu tiên, GameCanvas cho phép bạn truy xuất trực
tiếp đối tượng Graphics của nó sử dụng phương thức getGraphics(). Bất kỳ công
việc vẽ nào trên đối tượng Graphics được trả về sẽ được hoàn thành trong bộ đệm
ngoài màn hình (offscreen). Sau đó bạn có thể chép bộ đệm vào màn hình sử dụng
flushGraphics(), không cần phải đợi cho đến khi màn hình được cập nhật. Cách tiếp
cận này cho phép bạn điều khiển tốt hơn việc gọi repaint(). Phương thức repaint()
trả về ngay lập tức và ứng dụng của bạn không cần phải bảo đảm chính xác khi nào
hệ thống sẽ gọi paint() để cập nhật màn hình.
GameCanvas cũng có một phương thức để lấy trạng thái hiện thời của bàn
phím thiết bị, một kỹ thuật được gọi là thăm dò (polling). Thay vì chờ cho hệ thống
gọi phương thức keyPressed(), bạn có thể xác định ngay lập tức các phím nào được
nhấn bằng cách gọi phương thức getKeyStates() của GameCanvas.

Một vòng lặp game mẫu sử dụng GameCanvas sẽ giống như thế này:
public void MyGame extends GameCanvas implements
Runnable {
public void run( ) {
Graphics g = getGraphics( );
while (true) {
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

23


Thiết kế và xây dựng game Line trên điện thoại di động

// xử lý và cập nhật giao diện game.
int keyState = getKeyStates( );
// xử lý sự kiện nhấn phím
// Painting code
flushGraphics();
// chờ đợi trong 1 số đơn vị thời gian
}
}
}
Các game hành động 2D điển hình bao gồm một nền và nhiều nhân vật chuyển
động. Mặc dù bạn có thể tự vẽ loại cảnh này, Game API cho phép bạn xây dựng các
cảnh bằng cách sử dụng các layer. Bạn có thể tạo một layer là nền thành phố, và một
layer khác là chiếc xe hơi. Đặt layer xe hơi lên trên hình nền sẽ tạo thành một cảnh
hoàn chỉnh. Sử dụng chiếc xe như là một layer riêng biệt giúp việc thao tác được dễ
dàng và độc lập với hình nền, và với bất kỳ layer nào khác trong cảnh game.
.III.3.2. Lớp Layer

Là một lớp cha abstract của tất cả các layer. Nó định nghĩa các thuộc tính cơ
bản của một layer, bao gồm vị trí, kích thước, và việc layer có được hiển thị hay
không. Mỗi lớp con của Layer phải định nghĩa một phương thức paint() để hiển thị
layer trên bề mặt vẽ của Graphics. Hai lớp con cụ thể là TiledLayer và Sprite, sẽ
đáp ứng đầy đủ yêu cầu làm game 2D của bạn.
public abstract class Layer extends Object

.III.3.3. Lớp TiledLayer
Có ích trong việc tạo các hình nền. Bạn có thể sử dụng một tập nhỏ các hình
ảnh nguồn ghép lại với nhau để tạo thành các hình ảnh lớn một cách hiệu quả.
TiledLayer tương tự như một bảng tính, với mỗi ô đại diện cho một tấm ảnh. Một
TiledLayer đơn giản được dùng để thể hiện các phần tử trực quan có kích thước lớn,
như là nền của một trò chơi.
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

24


Thiết kế và xây dựng game Line trên điện thoại di động

Ví dụ, hình sau đây có kích thước là 64 x 48 pixels.

Hình 8 – 64 x 48 pixels

.
Hình này có thể được chia thành 12 tile, mỗi tile có kích thước 16 x 16 pixels.
TiledLayer gán cho mỗi tile một con số, bắt đầu từ 1 kể từ góc trái trên. Các tile trong
hình nguồn được đánh số như sau:


Hình 9 – Tile

Tạo một TiledLayer trong chương trình cũng khá đơn giản. Chỉ cần xác định
số cột và số hàng, hình nguồn, và kích thước theo pixel của các tile trong hình nguồn.
Đoạn chương trình sau biểu diễn cách nạp hình và tạo một TiledLayer.
public class TiledLayer extends Layer
.III.3.4. Lớp Sprite
Là một lớp hoạt họa. Bạn cung cấp các frame nguồn và có toàn quyền điều khiển
việc chuyển động. Sprite cũng cung cấp khả năng để lật ngược và quay các frame
nguồn theo bội số của 90o. Để thực hiện khả năng chuyển động, các khung ảnh
được thể hiện theo một thứ tự để tạo hiệu ứng di chuyển ảnh. Các phép biến đổi như
là phép quay và phép lật ảnh có thể được áp dụng đối với một đối tượng Sprite.
public class Sprite extends Layer
Nguyễn Hữu Toàn, Lớp 06T2
Nguyễn Dương Hải, Lớp 06T2

25


×