Với đề tài là “Lập trình MIDlet thực hiện xử lý vẽ đồ họa và xử lý phím” và viết một số ứng dụng đơn giản nhằm khai thác các tínhnăng của các thiết bị di động mà chủ yếu là điện thoại di
Trang 1VIỆN ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2LỜI MỞ ĐẦU
Công nghệ thông tin ngày nay có vai trò rất quan trọng trongcuộc sống hàng ngày của chúng ta Hiện nay có rất nhiều công nghệmới phát triển song song với việc phát triển công nghệ thông tin nhưBluetooth, Wireless, WAP, SOAP,… nhằm giúp công nghệ thông tinngày càng thân thiết với người dùng hơn Một trong những công nghệgóp phần không nhỏ trong việc kết nối con người với thông tin cũngnhư con người với con người là công nghệ di động Với tốc độ pháttriển hiện nay và những lợi ích to lớn của công nghệ di động, có thểthấy nó có ảnh hưởng rất lớn đến cuộc sống của con người Khônggiống như trước đây những chiếc điện thoại chỉ có chức năng rất đơngiản là đàm thoại, điện thoại hiện nay còn có thêm rát nhiều chức năng,ứng dụng khác như: email, truy cập internet, video, nghe nhạc, chơigame,… đồng thời nới nó là sự phát triển vũ bão của các dịch vụ giatăng trên điện thoại di động dựa trên công nghệ WAP và SOAP
Với đề tài là “Lập trình MIDlet thực hiện xử lý vẽ đồ họa và xử
lý phím” và viết một số ứng dụng đơn giản nhằm khai thác các tínhnăng của các thiết bị di động mà chủ yếu là điện thoại di động Qua đónhóm em sẽ cố gắng nắm bắt và ứng dụng được tốt các kỹ thuật lậptrình trên thiết bị di động
Trong quá trình biên tập mặc dù nhóm đã cố gắng hết sức nhưng vì thờigian có hạn và kiến thức chuyên môn còn kém nên không tránh khỏi những saisót mong bạn đọc và thầy cô tham khảo và đóng góp ý kiến để bài tập củanhóm hoàn chỉnh hơn
Trang 3
MỤC LỤC
Trang 4• Xử lý phím mũi tên để di chuyển ô chọn
• Xử lý phím FIRE (chọn) để đảo giá trị trong ô đang chọn 1 thành 0 hoặc ngượclại,
• Có nút lệnh bên trái màn hình: máy tự động xóa số trong ô đang chọn và nhiềunhất có thể các ô quanh nó có cùng giá trị với nó (xóa loang dần)
1. Vẽ một lưới caro các ô vuông lên màn hình điện thoại, tại mỗi ô sẽ được điền các
số 0 hoặc 1 luân phiên nhau Các lưới caro và số đều được tô màu đỏ Trên lướicaro đó có một ô được chọn, để biết ô được chọn ta phải đổi tô mầu xanh cho ôđược chọn
2. Xử lý phím mũi tên để di chuyển ô chọn: Khi nhấn các nút mũi tên trên, xuống,trái, phải thì ô đang được chọn sẽ được vẽ lại màu đỏ và ô được chọn sẽ dịch lêntrên, xuống, trái, phải
3. Khi nhấn nút FIRE (chọn) trên điện thoại thì tại ô đang được chọn giá trị sẽ đượcđảo ngược, nếu tại ô đang được chọn nếu là số 0 thì được đổi thành số 1 và ngượclại
4. Bên trái màn hình điện thoại phải có một nút lệnh xóa số, để khi nhấn vào nútlệnh đó thì ô đang được chọn sẽ được xóa giá trị và các ô quanh nó nếu có cùnggiá trị cũng bị xóa theo (xóa loang dần)
Trang 5PHẦN 2: PHÂN TÍCH VÀ THIẾT KẾ CHO BÀI
TOÁN
1. Sơ đồ thiết kế cho bài toán.
Trang 62. Chức năng vẽ lưới Caro và điền số 0,1 luân phiên.
Trang 83. Chức năng đổi giá trị của ô chọn.
4. Chức năng di chuyển ô chọn bằng phím mũi tên.
Trang 95. Chức năng xóa loang dần
Trang 10II. MÔ TẢ THUẬT TOÁN XỬ LÝ TRONG CÁC CHỨC NĂNG.
1. Vẽ lưới caro ô vuông và điền các số 0,1 luân phiên nhau.
void veLuoi(){
Graphics g=getGraphics();
Trang 11public void keyPressed(int k) {
int k1=getGameAction(k); xoaHV();
Trang 12g.drawString("" +(a[ci][cj]), ci*20+5, cj*20+5, g.LEFT+g.TOP);
flushGraphics();
}
}
4. Xóa loang ô chọn và các ô có liền kề có cùng giá trị.
public void commandAction(Command t1,Displayable t2){
if( t1==cmdXoa){
int k = a[ci][cj];
Xoa_Loang(ci,cj,k);}
void Xoa_Loang (int i, int j, int k){
if (i>=0 && i<=r && j>=0 && j<= c) {
1. Khai báo/định nghĩa lớp.
class VEDH01 extends GameCanvas implements CommandListener {
Trang 13// Các thuộc tính và phương thức của lóp được khai báo trong đây.}
public class oluoi extends MIDlet {
// Các thuộc tính và phương thức của lóp được khai báo trong đây.}
2. Tạo đối tượng của lớp.
cmdXoa= new Command("Xoa", Command.OK, 1);
− Gắn lệnh vào 1 đối tượng hiển thị:
this.addCommand(cmdXoa);
− Đăng ký xử lý lệnh:
this.setCommandListener(this);
− Hàm xử lý của giao diện :
public void commandAction(Command t1,Displayable t2){ if( t1==cmdXoa){
int k = a[ci][cj];
Xoa_Loang(ci,cj,k);}
}
5. Xử lý sự kiện phím thực hiện thao tác khi người dùng nhấn phím.
public void keyPressed(int k){
int k1=getGameAction(k); xoaHV();
Trang 14Một lớp con (subclass) có thể kế thừa tất cả những vùng dữ liệu và phương thức của
một lớp khác Như vậy việc tạo một lớp mới từ lớp đã biết sao cho cácthành phần của lớp cũ cũng sẽ thành các thành phần của lớp mới Khi đó
ta gọi lớp mới là lớp dẫn xuất từ lớp cũ Có thể lớp cũ cũng là lớp dẫn xuất
từ một lớp nào đấy, nhưng đối với lớp mới vừa tạo thì lớp cũ đó là một lớpsiêu lớp trực tiếp
void Xoa_Loang(int i, int j, int k){
if (i>=0 && i<=r && j>=0 && j<= c) {
Trang 15import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
public class Oluoi extends MIDlet {
public void startApp() {
Display.getDisplay(this).setCurrent(new VEDH01()); }
public void pauseApp() {}
public void destroyApp(boolean t) {}
int a[][] = new int[40][20], c=12, r=15;
int ci=5,cj=6; //tọa độ ô chọn
void Xoa_Loang(int i, int j, int k){
if (i>=0 && i<=r && j>=0 && j<= c) {
if (a[i][j]== k) {
xoa(i,j);
a[i][j] =2;
Xoa_Loang(i-1,j,k);
Trang 16void veOChon(){
Graphics g=getGraphics();//tao doi tuong ve g.setColor(0,0,255);// xe mau cho doi tuong g.drawRect(ci*20, cj*20, 20, 20); //ve hinh vuong flushGraphics();// thuc hien lenh ve
} void xoaHV(){
Trang 17public void keyPressed(int k){
int k1=getGameAction(k); xoaHV();
1. Vẽ lưới carô các ô vuông lên màn hình.
Giao diện:
Trang 182. Vẽ số 0 hoặc 1 luân phiên nhau vào các ô trên lưới.
Giao diện:
Trang 193. Vẽ ô chọn một ô trên lưới.
Giao diện:
Trang 204. Xử lý phím mũi tên để di chuyển ô chọn Giao diện:
Trang 215. Xử lý phím FIRE ( chọn) để đảo giá trị Giao diện:
Trang 226. Tạo nút lệnh xóa loang.
Giao diện:
Trang 24PHẦN 4: KẾT LUẬN
Với sự hướng dẫn giảng dạy từ giáo viên và tự tìm hiểu tronggiáo trình, nhóm 1 đã cố gắng hoàn thành được bài tập đề 5 Trong quátrình thực hiện bài tập đã giúp nhóm em thu hoạch và củng cố lại cáckiến thức đã học
1. Những kết quả đạt của nhóm.
- Hoàn thành được bài tập được giao trong thời gian quy định.
- Trong quá trình thực hiện bài tập đã giúp nhóm củng cố được các kiến thức đã học được.
- Đã có sự phân công công việc giữa các thành viên trong nhóm để hoàn thành công việc.
2. Hạn chế của nhóm trong thời gian thực hiện bài tập.
- Kiến thức về chuyên môn và kinh nghiệm lập trình chưa có nên chương trình còn có nhiều thiếu sót.
- Tuy đã đã có sự phân công công việc giữa các thành viên trong nhóm vẫn chưa thực sự chuyên nghiệp và hợp lý nên hiệu quả và tiến độ công việc chưa cao.
• Tạo 1 nút bên trái màn hình Đảo giá trị của ô chọn cộng với 4 ô trên, dưới, trái, phải, liền kề với ô chọn
• Khi thực hiện thao tác xóa loang xong thì tô màu lên ô đã xóa