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

Lập trình ứng dụng cho điện thoại di động trên nền tảng J2ME

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 (803.51 KB, 16 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA ĐIỆN TỬ VIỄN THÔNG

BÁO CÁO PROJECT
MÔN LẬP TRÌNH NÂNG CAO
ĐỀ TÀI : LẬP TRÌNH ỨNG DỤNG CHO ĐIỆN THOẠI DI ĐỘNG
TRÊN NỀN TẢNG J2ME
Giảng viên hướng dẫn : Thầy Vũ Song Tùng
Sinh viên thực hiện
: Nguyễn Văn Hiến

HÀ NỘI

1


BÁO CÁO PROJECT
MÔN LẬP TRÌNH NÂNG CAO
ĐỀ TÀI : LẬP TRÌNH ỨNG DỤNG CHO ĐIỆN THOẠI DI ĐỘNG
TRÊN NỀN TẢNG J2ME
Giảng viên hướng dẫn : Thầy Vũ Song Tùng
Sinh viên thực hiện
: Nguyễn Văn Hiến

2


MỤC LỤC

1.
2.


3.
4.
5.

Giới thiệu đề tài ………………………………………………… 4
Tổng quan về J2ME ……………………………………………. 5
Xây dựng BrickBreaker ………………………………………... 10
Phát triển đề tài ………………………………………………… 15
Tài liệu tham khảo ……………………………………………....16

3


1. GIỚI THIỆU ĐỀ TÀI
Đề tài lập trình game BrickBreaker trên điện thoại di động được xuất
phát từ yêu cầu của bài tập lớn môn Lập Trình Nâng Cao . Đó là phát
triển một chương trình trên điện thoại di động trên nền J2ME . Với
kiến thức căn bản về Java , em đã xây dựng một chương trình game
đơn giản với đồ họa , gameplay và âm thanh . Chương trình được chạy
mô phỏng trên Java Wireless Toolkit Version 2.5.1 và chạy thử trên
điện thoại di động .
BrickBreaker là một game 2D đơn giản với phong cách chơi
BreakOut truyền thống . Người chơi sẽ điều khiển pad hứng và điều
chỉnh hướng bay của của bóng để bóng chạm vào tất cả các viên gạch
phía trên . Bóng sẽ chuyển động theo quy tắc phản xạ . Người chơi sẽ
thắng khi tất cả các viên gạch bị bóng chạm vào , và sẽ thua khi để
bóng chạm vào biên dưới . Trò chơi có thể được tạm dừng và có thể
chọn hai chế độ chơi : tự động hoặc có người chơi .
Em xin chân thành cảm ơn thầy Vũ Song Tùng đã hướng dẫn em
hoàn thành bài tập này .


4


2. TỔNG QUAN VỀ J2ME
Kiến trúc J2ME:

A. Giới thiệu các thành phần trong nền tảng J2ME
1. Đị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. Qua đây ta thấy khẩu hiệu
“Write Once, Run Everywhere” của Java đã không còn đúng nữa, nhưng
ta cũng phải đánh giá cao sự nổ lực của Sun trong việc tạo ra một môi
trường phần mềm chung cho vô số chủng loại thiết bị di động có trên thị
trường. Hiện nay Sun đã đưa ra 2 dạng Configuration.

5


2. 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.
3. 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, đố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.

6


Bảng dưới là sự so sánh các thông số kỹ thuật của CDC và CLDC

B. Định nghĩa về 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ợ 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. Chúng ta sẽ điểm qua các profile tiêu
biểu:
1. Mobile Information Device Profile (MIDP)ban : 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)
2. 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à bộ nhớ lớn hơn
3. 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.
Bạn đọc có thể hiểu rõ hơn về vị trí của các profile này trong kiến trúc
J2ME theo hình bên dưới

7


C. Sơ lược về MIDP
Định nghĩa: Đây là Profile được định nghĩa dành riêng cho các thiết bị
di động và là thành phần chính trong J2ME. MIDP cung cấp các chức
năng cơ bản cho hầu hết các dòng thiêt bị di động phổ biến nhất như
các máy điện thoạI di động và các máy PDA. Tuy nhiên MIDP không
phải là cây đũa thần cho mọi lập trình viên vì như chúng ta đã biết,

MIDP được thiết kế cho các máy di động có cấu hình rất thấp. Trong
phần sau tôi sẽ liệt kê qua các tính năng mà MIDP cung cấp và những
giới hạn của nó.
Những chức năng MIDP không thể làm được:
1. Phép tính dấu phẩy động (floating point): Phép tính này đòi hỏi
rất nhiều tài nguyên CPU và phần lớn các CPU cho các thiết bị di
động không hỗ trợ phép tính này, do đó MIDP cũng không có.
2. Bộ nạp class (Class Loader).
3. Hỗ trợ từ khóa finalize() như trong J2SE: Việc “dọn dẹp“ tài
nguyên trước khi nó bị xóa được đẩy về phía các lập trình viên.
4. Không hỗ trợ JNI
5. Hỗ trợ hạn chế thao tác bắt lỗi.
6. Phần lớn các thư viện API cho Swing và AWT không thể sử dụng
được trong MIDP.
7. Không hỗ trợ các tính năng quản lý file và thư mục: Đây có thể làm
bạn ngạc nhiên nhưng thực tế là các thiết bị J2ME không có hỗ trợ các
thiết bị lưu trữ thông thường như ổ cứng v.v. Tuy nhiên, điều đó
không có nghĩa là bạn phải mất đi mọi dữ liệu quan trọng mỗi khi tắt
máy, Sun đã cung cấp một chức năng khác tương đương gọi là Record
Management system (RMS) để cung cấp khả năng lưu trữ cho các
thiết bị này.

8


Những chức năng MIDP cung cấp:
1. Các lớp và kiểu dữ liệu: Phần lớn các lớp mà các lập trình viên Java
quen thuộc vẫn còn được giữ lại ví dụ như các lớp trong gói java.util như
Stack, Vector và Hastable cũng như Enumeration.
2. Hỗ trợ đối tượng Display: Đúng như tên gọi một chương trình MIDP

sẽ hỗ trợ duy nhất một đối tượng Display là đối tượng quản lý việc hiển
thị dữ liệu trên màn hình điện thoại.
3. Hỗ trợ Form và các giao diện người dùng.
4. Hỗ trợ Timer và Alert
5. Cung cấp tính năng Record Management System (RMS) cho việc lưu
trữ dữ liệu

9


3. XÂY DỰNG BRICKBREAKER
A . Xây dựng code
Chu trình một game hoạt động trên nền J2ME :

Start :
Pause :
Stop :

Khởi tạo game
Tạm dừng game
Kết thúc game

10


Giản đồ hoạt động của BrickBreaker có thể mô tả rõ ràng hơn như
sau :

Từ giản đồ ta xây dựng các lớp quan trọng nhất trong chương trình là:
• MainCanvas: Khởi tạo các màn hình của trò chơi, và điều khiển các bản cập nhật,

vẽ, và chuyển tiếp giữa các màn hình.
• BrickBreakerScreen: Các lớp có chứa logic của trò chơi
• Ball: Điều khiển chuyển động của quả bóng, va chạm, phát hiện và vẽ.
• Brick: Đại diện của một viên gạch duy nhất.
• BrickField: Đại diện của tất cả những viên gạch trong trò chơi.
• Paddle: Đại diện pad; lưu ý rằng lớp này dựa trên một PaddleController để thực sự
kiểm soát pad.
• PaddleController: Giao diện được thực hiện bởi ComputerPaddleController và
HumanPaddleController để cho phép hoặc là một con người hay một máy tính cầm để
kiểm soát pad.
• MenuScreen: Thực hiện game menu

11


Ví dụ về code của lớp khởi tạo màn hình
Việc khởi tạo màn hình trò chơi là một bước rất quan trọng trong việc xây
dựng toàn bộ trò chơi . Việc này có thể thực hiện bằng cách xây dựng
một lớp GameScreen class
Collapse
package com.bornander.games.utils;
import javax.microedition.lcdui.Graphics;
public abstract class GameScreen {
protected Background background;
protected int width;
protected int height;
public GameScreen(int width, int height) {
this.width = width;
this.height = height;
this.background = null;

}
public void setBackground(Background background) {
this.background = background;
}
protected void paintBackground(Graphics graphics) {
if (background != null)
background.paint(graphics);
}
public abstract void activated(GameScreen previousScreen);
public abstract void paint(Graphics graphics);
public abstract int doUpdate();
public abstract void keyPressed(int keyCode, int gameAction);
public abstract void keyReleased(int keyCode, int gameAction);
}

B. Mô phỏng và chạy thử trên điện thoại di động
Việc mô phỏng trò chơi trên Java Wireless Toolkit khá dễ dàng . Sau khi
xây dựng code cho BrickBreaker . Chạy Java Wireless Toolkit . Sau đó
load BrickBreaker . Và run .

12


Các bước chạy mô phỏng

13


14



4. PHÁT TRIỂN ĐỀ TÀI

Với cùng phong cách BreakOut , trò chơi có thể được phát triển theo
nhiều hướng khác nhau , như nâng cấp đồ họa , hoặc chơi với nhiều level
hơn nữa .
Với sự đa dạng trong cách phát triển game trên nền J2ME , thì việc xây
dựng các game sẽ trở nên phong phú hơn nữa
Mục tiêu tiếp theo của em sẽ là nghiên cứu và xây dựng một game 3D
trên điện thoại di động .

15


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

1.
2.
3.
4.

J2ME All – Ngô Nhất Phương
Java 3d Programming – O’Reilly
Mobile Game Programming for Beginner – Fredrik Bornander
Programming 2D Game in J2ME – Hoàng Tuấn

16




×