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.
20 trang |
Chia sẻ: vietpd | Lượt xem: 1644 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Đề tài Ứng dụng game phá gạch trên điện thoại, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC ĐÀ NẴNG
TRƯỜ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: E-mail: cntt@edu.ud.vn
Tuy Hòa, ngày 26 tháng 03 năm 2012
LỜ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!
Mục lục
CHƯƠNG I:GIỚI THIỆU TỔNG QUAN
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.
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.
Đối tượng nghiên cứu:
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:
Nghiê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.
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.
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ị.
CHƯƠNG II: LẬP TRÌNH J2ME
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ị lê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.
Lớp Command:
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().
Giao diện người dùng cấp cao.
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 đó.
Alert:Ứ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, NON_PREDICTIVE, INITIAL_CAPS_WORD, và 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.
DateField: 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.
CHƯƠNG III: TRÒ CHƠI PHÁ GẠCH
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
Nội dung thực hiện:
Tạo form chứa menu chương trình:
Ý 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.
Hình 1: Menu chương trình
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
Hì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 nút lên để bắt đầu chơi, khi bóng va chạm vào viên gạch nào thì viên gạ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)
Hì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
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
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.
Hình 9: Hướng dẫn chơi game
Tạo form giới thiệu về tác giả tạo nên ứng dụng:(hình10)
Hình 10: Thông tin về tác giả
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.
Hình 11: Thông báo Exit
KẾ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.
TÀI LIỆU THAM KHẢO
Trang web :