ỨNG DỤNG GAME PHÁ GẠCH TRÊN ĐIỆN THOẠI
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN CHUYÊN ĐỀ 1 NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI : ỨNG DỤNG GAME PHÁ GẠCH
TRÊN ĐIỆN THOẠI
SVTH :
1 Lê Quang Vũ
2 Trần Công Chiến LỚP : 11TLT.PY GVHD :TS.Huỳnh Hữu Hưng
Website: http://dut.ud.edu.vn/itf/, E-mail: cntt@edu.ud.vn
Tuy Hòa, ngày 26 tháng 03 năm 2012
Trang 2LỜI CẢM ƠN
Để hoàn thành đề tài này trước hết chúng em chân thành cảm ơn Thầy Ts.Huỳnh Hữu Hưng trong khoa Công nghệ thông tin trường Đại học bách khoa
Đà Nẵng đã tạo điều kiện giúp đỡ, chỉ bảo chúng em cách tiếp cận ngôn ngữ J2me để lập trình trên điện thoại di động, nhờ sự chỉ bảo của Thầy nhóm cũng như các bạn trong lớp tiếp thu được nhiều vấn đề và cũng là tiền đề để chúng
em hoàn thành đề tài này
Tuy bản thân đã rất cố gắng tìm hiểu tài liệu từ nhiều nguồn thông tin khác nhau như là giáo trình, sách ,internet,…Cũng như vốn hiểu biết của mình về đề tài thì không sao tránh khỏi thiếu sót
Kính mong được sự đóng góp ý kiến của quý thầy cô để tôi có thể hoàn thiện hơn về báo cáo và là cơ sở vững chắc để sau này ra trường làm việc
Chúng em xin chân thành cảm ơn!
Trang 3Mục lục
CHƯƠNG I:GIỚI THIỆU TỔNG QUAN 4
1 Lý do chọn đề tài: 4
2 Mục tiêu 4
3 Đối tượng nghiên cứu: 4
4 Môi trường thực hiện: 5
5 Giới thiệu về J2ME và lập trình cho thiết bị di động : 5
CHƯƠNG II: LẬP TRÌNH J2ME 6
1 MIDP 2.0 6
2.1 Lớp Command: 7
2.1 Giao diện người dùng cấp cao 7
CHƯƠNG III: TRÒ CHƠI PHÁ GẠCH 10
1 Giới thiệu các lớp: 10
2 Nội dung thực hiện: 10
a) Tạo form chứa menu chương trình: 10
b) Tạo form ứng dụng game: 11
c) Tạo form lưu điểm: (hình 7) 15
d) Tạo form Help: 15
e) Tạo form giới thiệu về tác giả tạo nên ứng dụng:(hình10) 16
f) Tạo nút thoát chương trình: 17
KẾT LUẬN 19
Trang 41 Lý do chọn đề tài:
Công nghệ thông tin ngày nay có vai trò rất quan trọng trong cuộ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 tin ngà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ũng như con người với con người
là công nghệ di động.Với tốc độ phát triể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ông giống như trước đây những chiếc điện thoại chỉ có chức năng rất đơn giả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ơi game, … đồng thời với nó là sự phát triển vũ bão của các dịch vụ gia tăng trên điện thoại di động dựa trên công nghệ WAP và SOAP
Chúng em chọn đề tài là “Viết ứng dụng “game phá gạch” chạy trên thiết bị di động bằng ngôn ngữ J2ME” và đây là một số ứng dụng đơn giản nhằm khai thác các tính năng của các thiết bị di động mà chủ yếu là điện thoại di động Qua đó chúng em sẽ cố gắng nắm bắt và ứng dụng được tốt các kỹ thuật lập trình trên thiết bị di động
2 Mục tiêu
Khi thực hiện đề tài này, mục tiêu mà chúng em mong muốn đạt được là:
Hiểu chi tiết về J2ME và ứng dụng của nó để lập trình trên các thiết bị di động
Nắm được các kỹ thuật xử lý form, âm thanh, hình ảnh, và lưu trữ trên điện thoại di động
Ứng dụng các kết quả đạt được để xây dựng chương trình đơn giản, có các tiện ích phục vụ nhu cầu của người sử dụng điện thoại
di động
Nâng cao trình độ, tự nghiên cứu, học hỏi, tư duy, làm việc theo nhóm, khả năng thuyết trình cho sinh viên, làm nền tảng vững chắc cho sinh viên sau này khi đi làm
Hiểu java, J2ME và ứng dụng của nó để lập trình trên các thiết bị di động Nắm được các kỹ thuật xử lý âm thanh, hình ảnh, và lưu trữ dữ liệu trên thiết bị di động
Ứng dụng các kết quả có được để xây dựng một ứng dụng thực tiễn trên thiết bị di động.Phạm vi nghiên cứu:
Trang 5Nghiên cứu về công nghệ J2ME và các kỹ thuật lập trình trên điện thoại
di động Ứng dụng các kết quả nghiên cứu được để xây dựng ứng dụng triển khai trên điện thoại di động
4 Môi trường thực hiện:
Viết trên Hệ điều hành Windows XP, Windows7
Bằng phần mềm Jcreator 4.50 Pro, JDK 1.6.02 và Wireless Toolkit 2.5.2
5 Giới thiệu về J2ME và lập trình cho thiết bị di động :
J2ME được phát triển từ kiến trúc JavaCard, EmbededJava và PersonalJava của phiên bản Java 1.1 Đến dự ra đời của phiên bản Java 2 thì Sun quyết định thay thế PersonalJava bằng một phiên bản mới có tên Java 2 Micro Edition, viết tắt là J2ME J2ME được sử dụng cho các thiết
bị nhỏ gọn với dung lượng bộ nhớ bé và khả năng xử lý thấp
Mục tiêu của Java là cho phép người lập trình viết các ứng dụng độc lập với thiết bị di động, không cần quan tâm đến phần cứng thật sự
Để làm được như thế, J2ME được xây dựng bằng các tầng khác nhau để che giấu đi việc tương tác trực tiếp với phần cứng của thiết bị
Trang 6CHƯƠNG II: LẬP TRÌNH J2ME
1 MIDP 2.0
Ta tìm hiểu về các thành phần giao diện người dùng(UI) có sẵn trong J2ME nhằm tạo ra sự tương tác giữa người dùng với điện thoại, đây
là vấn đề quan trọng bởi kích thước của màn hình điện thoại được giới hạn J2ME cung cấp đặc tả MIDP chứa các thành phần giao diện đồ họa, hiện nay đã có rất nhiều phiên bản MIDP 3.0, ta xét MIDP 2.0 Và đây là
sơ đồ phân lớp của nó
MIDP 2.0 cung cấp các lớp UI trong một gói javax.microedition.lcdui, trong đó lcdui là viết tắt của liquid crystal display user interface(LCD UI) Để show một phần tử UI lên màn hình, ta phải sử dụng một lớp Displayable Ví dụ, một lớp Displayable có thể có một title, một ticker, và các command liên kết với nó
Lớp Display quản lý những cái gì hiển thị lên màn hình Phương thức static getDisplay(MIDlet midlet) cho phép ta truy cập vào Display của MIDlet Sau đó, ta sử dụng phương thức setCurrent(Displayable element) để lựa chọn đối tượng nào extend từ Displayable được hiển thị
Trang 7lên màn hình Tại một thời điểm, chỉ có một đối tượng Displayable được hiển thị trên màn hình
Một MIDlet tương tác với người dùng thông qua các Command Một Command tương đương với một menu item trong một ứng dụng thông thường, và nó chỉ có thể kết hợp với một phần tử UI Displayable Lớp Displayable cho phép người dùng attacth một Command bằng cách sử dung phương thức addCommand(Command command) Một đối tượng Displayable có thể cón nhiều Command bên trong nó.Lớp Command được nắm giữ các thông tin về command Thông tin này được đóng gói trong 4 thuộc tính: short label, optional long label, command type và priority Ví dụ, sử dụng lớp Command để tạo ra đối tượng command thông qua cung cấp các giá trị trong Constructor:
// adds a command to exit the MIDlet
comExit = new Command("Exit", Command.EXIT, 1);
Nếu xác định command type,ta có thể cho phép thiết bị chạy MIDlet ánh xạ(map) bất kỳ phím định sẵn nào trên thiết bị vào command đó Ví
dụ, một command với kiểu OK được ánh xạ vào phím OK của thiết bị Trong MIDP 2.0, nó có sẵn các kiểu command sau: BACK, CANCEL, EXIT, HELP, ITEM, SCREEN và STOP Kiểu SCREEN liên quan đến một command được map trong ứng dụng cho màn hiền hiện thời Cả SCREEN và ITEM không có bất kỳ các phím được ánh xạ trên thiết bị.Để nhận được phản hồi từ người dùng, ta cần phải listen từ các command, điều này được thực hiện thông qua thực thi giao diện CommandListener Trong ví dụ Hello World, Interface được thực thi thông qua phương thức commandAction()
Vẽ để được hiển thị bởi hệ thống phần mềm của thiết bị Ứng dụng không định nghĩa giao diện trực quan như hình dáng, màu sắc… của các thành phần high-level
Điều hướng, cuộn, và các tương tác nguyên thủy khác với các thành phần giao diện người dùng được thực hiện bởi thiết bị Tuy nhiên, ứng dụng không nhận biết được các tương tác này
Ứng dụng không thể truy cập vào các kỹ thuật input cụ thể, như các phím nhấn cụ thể nào đó
Trang 8Ứng dụng Hello World sử dụng một alert Phần tử này đại diện cho một màn hình(Screen) dùng để show dữ liệu đến người dùng và đợi một thời gian trước khi xử lý đối tượng Displayable tiếp theo Một Alert thì có thể chứa môt chuỗi text và một image.Thông thường, Alert được sử dụng để thông báo lỗi hay các ngoại lệ khác
TextBox:
Kế thừa từ lớp Screen, cho phép người dùng nhập và chỉnh sửa text Lớp này có thể được cấu hình để thích nghi với các nhu cầu của người dùng
Ta có thể giới hạn maximum các ký tự hiển thị trong TextBox Ngoài ra,
ta có thể ràng buộc các kiểu nhập cho TextBox bằng cách sử dụng các flag được định nghĩa trong lớp TextField Có 6 ràng buộc(constrain) để giới hạn nội dung hiển thị, đó là: ANY, EMAILADRR, NUMBERIC, PHONENUMBER, URL và DECIMAL Có 6 ràng buộc ảnh hưởng tới kiểu nhập: PASSWORD, UNEDITABLE, SENSITIVE,
INITIAL_CAPS_SENSITIVE Ví dụ, chỉ cho phép địa chỉ email được phép nhập trong TextBox, ta thiết lập flag TextField.EMAILADRR sử dụng phương thức setConstrains(), ngoài ra để kết hợp nhiều ràng buộc cùng lúc, ta sử dụng toán tử OR giữa các flag Ví dụ: setConstraints(TextField.EMAILADDR | TextField.UNEDITABLE);
List:
Một List chứa một danh sách các chọn lựa Khi List được biểu diễn trên màn hình, người dùng có thể tương tác với nó bằng cách chon lựa các phần tử, di chuyển qua lại giữa các phần tử của List Nó có các kiểu cấu hình sau:
Choice.EXCLUSIVE: chỉ có 1 phần tử được chọn lựa
Choice.MULTIPLE: có thể có nhiều phần tử được chọn lựa
Choice.IMPLICIT: phần tử được hightlight được chọn lựa
Form:
Nó chứa nhiều item, bất kỳ lớp nào extends từ lớp Item để có thể được chứa trong một Form Việc thực thi xử lý các layout, traversal, và scrolling Nội dung của Form có thể được cuộn lại với nhau Các loại Item có thể được thêm vào trong Form:
StringItem: Là một label và không cho phép người dùng sửa lên nó Item
này có thể chứa một tiêu đề và một text, và cả hai đều có thể null
Trang 9DateField: Cho phép người dùng nhập ngày date/time một trong 3 dạng
sau: DATE, TIME và DATE_TIME
TextField: Tương tự như TextBox.
ChoiceGroup: Tương tự như List.
Gauge: Sử dụng để mô phỏng process bar, tuy nhiên nó có thể sử dụng
trong kiểu tương tác bởi người dùng, ví dụ nếu ta muốn dùng nó để show một Volume Control
ImageItem: Nắm giữ một image.
CustomItem: Là một lớp ảo abstract cho phép các subclass tạo ra giao
diện riêng, tương tác riêng và cơ chế thông báo riêng của nó Nếu muốn một phần tử UI khác so với các phần tử được cung cấp thì có thể tạo ra subclass
Giao diện người dùng cấp thấp(Low-level User Interface): Các API
của low-level user interface( như lớp Canvas) được thiết kế cho các ứng dụng cần sự sắp đặt và điều khiển các phần tử graphics một cách chính xác cũng như truy cập vào các low-level input event Ví dụ điển hình là game board, một chart object hay một graph Sử dụng low-level user interface, một ứng dụng có thể:
Kiểm soát những gì được vẽ trên màn hình
Điều khiển được các sự kiện primitive như các sự kiện nhấn phím(key press) và nhả phím(key release)
Truy cập vào cụ thể từng phím và các thiệt bị đầu vào khác
Trang 10CHƯƠNG III: TRÒ CHƠI PHÁ GẠCH
1 Giới thiệu các lớp:
MyMIDlet.java: Dùng để tạo ra menu chương trình Ball,java: Dùng để tạo ra quả bóng
Brick.java: Dùng để tạo ra gạch Pad.java: Dùng để tạo ra thanh đỡ quả bóng Entity.java: Dùng để kiểm tra va chạm giữa bóng, gạch và thanh đỡ Score.java: Dùng để nhập tên và điểm
Multimedia.java: Dùng để tạo ra âm thanh khi bóng va chạm với gạch
2 Nội dung thực hiện:
Ý tưởng:
- Tạo ra form chính gồm :(hình 1)
+ New game: dùng để truy cập vào game
+ Score: dùng để lưu điểm khi kết thúc game
+ Help: Hướng dẫn sử dụng ứng dụng game
+ Tác giả: thông tin tác giả
+ Exit: thoát ứng dụng game
Trang 11Hình 1: Menu chương trình
b) Tạo form ứng dụng game :
Bước 1: Tạo ra thanh đỡ dưới màng hình để hứng bóng và đẩy bóng lên phá gạch(hình 2) Thanh này mặc định nằm ở giữa bên dưới màng hình, dùng nút trái phải để di chuyển
Trang 12Hình 2: Thanh đỡ bóng Bước 2: Tạo bóng, bóng được đặt trên thanh đỡ, mỗi lần người chơi hứng bóng trật thì bóng sẽ xuất hiện lại vị trí ban đầu(Hình 3) Nhấn nút lên để đẩy bóng lên, nhân nút xuống đế tạm dừng
Hình 3: Thanh đỡ và bóng Bước 3: Tạo gạch, gồm có 6 hàng gạch mỗi hàng 8 viên, nhấn
Trang 13gạch đó mất đi, chơi đến khi nào phá hết những viên gạch ở phía trên thì dừng, hoặc thời gian chạy về 0 hoặc Lifes =0 thì dừng, mỗi lần bóng đi qua phía dưới thanh đỡ thì Lifes sẽ giảm đi 1.(hình 4)
Hình 4: Giao diện game
Bước 4: Tạo ra thông báo bạn thắng cuộc hoặc bạn đã thua khi
mà người chơi phá hết gạch hoặc Lifes =0 hoặc Time = 0 (hình 5)
Trang 14Hình 5:Thông báo Cuối cùng tạo form nhập tên và điểm (hình 6) của người chơi sau khi thông báo được load vài giây, thông tin nhập vào sẽ lưu vào Score
Hình 6: Nhập tên và điểm
Trang 15c) Tạo form lưu điểm: (hình 7)
Form này dùng để lưu tên và điểm khi người chơi phá hết gạch hoặc hết mạng hoặc hết thời gian chơi, ai có điểm cao nhất sẽ xếp đầu tiên Mặc định gồm 10 tên, nhấn nút back để trở về menu chính
Hình 7: Tên và điểm của người chơi
d) Tạo form Help:
Dùng để hướng dẫn chơi game(hình 8) Nhấn nút back trở về Menu chính
Trang 16Hình 9: Hướng dẫn chơi game
e) Tạo form giới thiệu về tác giả tạo nên ứng dụng:(hình10)
Trang 17Hình 10: Thông tin về tác giả
f) Tạo nút thoát chương trình:
Khi nhấn vào nút Exit trong Menu Chính thì nó sẽ hiện ra thông báo (hình 11) bạn muốn thoát ứng dụng hay không, bấm Yes để thoát, bấm no để quay lại Menu chính
Trang 18Hình 11: Thông báo Exit
Trang 19KẾT LUẬN
Đứng trước xu hướng phát triển nhanh và mạnh của nền công nghệ thông tin thế giới cũng những nền công nghệ thông tin nước nhà, công nghệ thông tin là vô cùng quan trọng và bức thiết hiện nay
Hiện nay, lập trình trên điện thoại di động là một lĩnh vực mới đang thu hút nhiều lập trình viên Việc xây dựng các ứng dụng trên thiết bị các thiết bị nói chung và trên điện thoại di động nói riêng là rất cần thiết do sự phát triển của công nghệ di động Khi làm đề tài giúp chúng ta hiểu thêm về kỹ thuật lập trình J2me viết ứng dụng trên điện thoại di động
Ứng dụng game phá gạch này nhằm mục đích giải trí, mặt dù
đã cố gắng nhưng ứng dụng còn nhiều thiếu sót, chưa hoàn chỉnh mong các bạn đóng góp ý kiến để ứng dụng được hoàn thiện hơn
Trang 20TÀI LIỆU THAM KHẢO
Trang web :
http://www.roseindia.net/j2me/
http://www.java-samples.com/j2me/
http://mobilesprogramming.wordpress.com/2010/01/27/phat-tri
%E1%BB%83n-game-d%C6%A1n-gian-tren-mobilep5/
http://www.kenh360.com/cntt/lap-trinh/java/java-co-ban-khai-niem-class-phan-1.htm
http://www.javavietnam.org
http://phocuongonline.com/forum/forumdisplay.php?88-Web(ASP-ASP.net-Java-PHP-C-%85)
http://thuthuat.chiplove.biz/post-502/bang-ma-mau-css.html