1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lập trình trò chơi lines cho điện thoại trên j2me

64 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 64
Dung lượng 0,93 MB

Nội dung

Mục lục LờI NóI ĐầU Ch-¬ng I: tỉng quan vỊ J2ME 1.1 Giíi thiƯu vỊ Java c«ng nghƯ J2ME 1.1.1 Giíi thiƯu vÒ Java 1.1.2 Kh¸i qu¸t c¸c líp J2ME 1.2 KiÕn tróc cđa J2ME 11 1.3 Đóng gói triĨn khai øng dơng 13 1.4 Tối -u mà ch-ơng trình giảm kÝch th-íc øng dơng .16 Ch-¬ng II 17 LËP TR×NH VíI J2ME .17 2.1 MIDlet đối t-ợng Display 17 2.1.1 MIDlet 17 2.1.2 Đối t-ợng Display, Displayable Screens .21 2.2 Screen (giao diªn ng-êi dïng cÊp cao) 22 2.2.1 Thành phần Form vµ Items 22 2.2.2 Thành phần List, Textbox, Alert, Ticker .24 2.3 HƯ thèng qu¶n lý b¶n ghi (Record Management System - RMS) 25 2.3.1 L-u trữ cố định thông qua Record Store 25 2.3.2 Các hàm API RMS 28 2.3.3 Më (open), Định dạng (Format), Thêm (Add), Đọc(Read) Xóa (Delete) ghi 29 2.3.4 Läc (Filtering ), s¾p xÕp ghi 32 2.3.5 Các ngoại lệ phát sinh RMS .33 Ch-¬ng III .34 LËp tr×nh Game b»ng J2ME 34 3.1 Các hàm API mức thÊp 34 3.2 Líp Canvas 34 3.3 Líp Graphics .38 3.4 Các gói hỗ trợ cho lập tr×nh game .41 3.4.1 GameCanvas 42 3.4.2 Layer class 43 3.4.3 Sprite Class 43 3.4.4 TiledLayer class 48 3.4.5 LayerManager class 50 Ch-¬ng IV .51 Xây dựng ch-ơng trình trò ch¬i Lines 51 4.1 Tỉng quan vỊ lµm Game 51 4.1.1 Phân loại game 51 4.1.2 Những đòi hỏi chung game 52 4.2 Giải toán trò chơi Lines 52 4.2.1 Giới thiệu trò chơi Lines 52 4.2.2 ThuËt to¸n Trò chơi Lines 52 4.3 Xây dựng trò chơi Lines J2ME 56 4.4 KÕt qu¶ thu đ-ợc 59 KÕt luËn 61 tài liệu tham khảo 63 Danh mục thuật ngữ 64 LờI NóI ĐầU Ngày công nghệ viễn thông có b-ớc phát triển vô to lớn Cùng với ngành khoa học khác, công nghệ viễn thông ®· ®em ®Õn cho ng-êi nh÷ng øng dơng quan trọng tất nghành, lĩnh vực đời sống nh-: kinh tÕ, gi¸o dơc, y häc, khoa häc kü thuậtđể thoả mÃn nhu cầu ngày cao ng-ời Song song với phát triển công nghệ viễn thông phát triển không ngừng công nghệ điện thoại di động điện thoại di động nhanh chóng trở thành phần sống Các thiết bị di động ngày đại hơn, "thông minh" ngày có nhiều tính bật Chúng không đơn đảm nhận chức hội thoại mà có thêm nhiều chức nh- chụp ảnh, nghe nhạc, xem phim, chơi game nh- "trung tâm giải trí" Nhu cầu phát triển phần mềm cho thiết bị di động ngày tăng cao đ-ợc đánh giá ngành công nghệ đem lại nhiều lợi nhuận Một thực tế đặt cho nhà phát triển phần mềm thiết bị chuẩn hóa dành cho nhà sản xuất phần cứng Các thiết bị thị tr-ờng đa dạng mang nhiều đặc điểm nh- cấu hình khác Tr-ớc thực tế đó, việc chạy nhiều môi tr-ờng lợi lớn ngôn ngữ Java Các nhà phát triển Java đà cho đời ngôn ngữ J2ME (Java Micro Edition) h-ớng đến việc phát triển phần mềm cho thiết bị di động Ngôn ngữ J2ME thực ngôn ngữ nhỏ gọn, dễ nắm bắt, chặt chẽ thích hợp cho thiết bị có khả hạn chế Các thiết bị di động thị tr-ờng nay, đặc biệt điện thoại di động hầu hết hỗ trợ ngôn ngữ J2ME J2ME thực đà trở thành ngôn ngữ phổ biến lÃnh vực lập trình di động Từ yêu cầu thiết yếu đà chọn đề tài đồ án tốt nghiệm là:" Lập trình trò chơi Lines cho điện thoại di động J2ME (Java Platform, Micro Edition)" Nội dung đồ án bao gồm Ch-ơng I: "Tổng quan J2ME" Ch-ơng tìm hiểu đ-ợc đời, ý nghĩa hay khái niệm, định nghĩa, kiến trúc bản, quan trọng J2ME cách đóng gãi, triĨn khai øng dơng cđa J2ME Ch-¬ng II: "LËp trình với J2ME" Ch-ơng trình bày kỹ lập trình với J2ME (MIDlet, Dislay) Và làm quen víi giao diƯn ng-êi dïng cÊp cao nh- form, list, textbox Hay biết cách l-u trữ kiểu ghi J2ME Ch-ơng III: "Lập trình Game J2ME" Ch-ơng trình bày th- viện API J2ME để phát triển Game Nh- gói Canvas, Graphics, Layer, TiledLayer, Sprites, Ch-ơng IV: "Xây dựng ch-ơng trình trò chơi Lines" Trình bày tổng quan game, ứng dụng toán cụ thể Cách giải vấn việc xây dựng trò chơi Lines J2ME kết thu đ-ợc Ch-ơng I tổng quan vỊ J2ME 1.1 Giíi thiƯu vỊ Java c«ng nghƯ J2ME 1.1.1 Giíi thiƯu vỊ Java Java lµ mét công nghệ đ-ợc hÃng Sun Microsystems xây dựng từ cuối năm 1990 với tên Oak phát triển v-ợt bậc với đóng góp hàng vạn lập trình viên giới Ban đầu, Oak đ-ợc kỹ s- James Gosling cộng xây dựng với mục đích lập trình cho mặt hàng điện dân dụng với mục tiêu nhỏ gọn t-ơng thích đ-ợc với nhiều loại thiết bị phần cứng khác Sau Oak đ-ợc sử dụng nhiều dự ¸n nh- dù ¸n Xanh (Blue Project), dù ¸n Phim theo yêu cầu (Video on demand Project) Sau chuyến du lịch tới đảo Java Indonesia, nhóm phát triển Oak đà đổi tên Oak thành Java Java mà tiền thân Oak đ-ợc xây dựng chủ yếu dựa công cụ phát triển (Java Development Kit - JDK) nh- th- viện chuẩn ch-a trình biên dịch, trình thông dịch, trình đóng gói, tài liệu, Đây tảng cho việc phát triển ứng dụng Java Hiện nay, cộng đồng Java giới mà đầu hÃng Sun Microsystems đà xây dựng nhiều nhánh cho Java nh-: JavaMail (th- điện tử), Java TAPI (viễn thông), Java3D (đồ họa chiều), J2ME (ứng dụng cho thiết bị di động), Hiện Java có phiên sau: TM + J2SE (Java Platform, Standart Edition): Phiên chuẩn gồm công cụ thông dụng dùng để chạy máy PC mạng máy tính nhỏ TM + J2EE (Java Platform, Enterprise Edition): Phiên dành cho m¸y chđ víi bé nhí lín Bao gåm c¸c kiÕn trúc nâng cao nh- Web, EJB, Transaction,dùng để xây dựng ứng dụng có quy mô lớn TM + J2ME (Java Platform, Micro Edition): Bao gồm môi tr-ờng th- viện Java dùng để phát triển ứng dụng thiết bị có nhớ nhỏ nh- điện thoại di động, PDA, đồ gia dụng, 1.1.2 Khái quát lớp J2ME J2ME đ-ợc phát triển từ kiến trúc JavaCard, EmbededJava PersonalJava phiên Java 1.1 Đến đời phiên Java Sun định thay PersonalJava phiên có tên Java Micro Edition, viết tắt J2ME J2ME đ-ợc sử dụng cho thiết bị nhỏ gọn với dung l-ợng nhớ bé khả xử lý thấp Mục tiêu J2ME cho phép ng-ời lập trình viết ứ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 Với mục tiêu đó, J2ME đ-ợc xây dựng tầng (layer) khác để giấu việc thực phần cứng khỏi nhà phát triển Các tầng J2ME đ-ợc xây dựng CLDC (Connected Limited Device Configuration - cấu hình thiết bị kết nối giới hạn) nh- sau: HiƯn tr¹ng MIDP – Mobile Information Device Profile Các API khác Cấu hình CLDC Connected Limited Device Configuration Máy ảo Java Phần cứng thiết bị Hình 1.1 Các tầng J2ME đ-ợc xây dựng CLDC + Tầng Phần cứng thiết bị (Device Hardware Layer): Tầng thiết bị di động thật với nhớ tốc độ xử lý cụ thể Dĩ nhiên phần J2ME nh-ng điểm xuất phát để phát triển phần mềm ứng dụng thiết bị Các thiết bị di động khác có vi xử lý tập lệnh khác Mục tiêu J2ME cung cấp cho lập trình viên khả giao tiếp giống với tất loại thiết bị di động khác Hình 1.2 Quá trình xây dựng ứng dụng cho thiết bị di động sử dung KVM + Tầng máy ảo Java (Java Virtual Machine Layer): Đây tầng đóng vai trò thông ngôn ch-ơng trình thiết bị Nó thông dịch mà bytecode (mà có đ-ợc sau biên dịch mà nguồn ch-ơng trình) thành mà máy thiết bị di động Tầng sử dụng KVM (Kernel Virtual Machine - Máy ảo đ-ợc thiết kế nhỏ gọn với mục tiêu tiết kiệm nhớ) để biên dịch mà bytecode thành mà máy Chính KVM chuẩn hóa đầu ch-ơng trình Java cho thiết bị di động khác có vi xử lý tập lệnh khác Nó cung cấp chuẩn hóa cho thiết bị di động để ứng dụng J2ME sau biên dịch chạy đ-ợc thiết bị di động hỗ trợ KVM Nh- vậy, KVM ch-ơng trình Java phải đ-ợc biên dịch thành tập lệnh cho thiết bị di động v lập trình viên phải xây dựng nhiều đích cho loại thiết bị di động + Tầng cấu hình (Configuration Layer): Kế tầng KVM CLDC (Connected Limited Device Configuration: Cấu hình thiết bị kết nối giới hạn) Mục đích tầng cung cấp tập tối thiểu th- viện cho phép ứng dụng Java chạy thiết bị di động Tầng cung cấp hàm API nhân J2ME Lập trình viên sử dụng lớp ph-ơng thức API nhiên không thực phong phú tập API tầng trạng + Tầng trạng (Profile Layer): Đây tầng cao J2ME, tầng cung cấp hàm API hữu dụng cho việc lập trình Mục đích tầng xây dựng nên lớp cấu hình cung cấp nhiều th- viện ứng dụng Một thiết bị di động hỗ trợ nhiều trạng Một trạng áp đặt thêm giới hạn loại thiết bị di động (nhnhiều nhớ hay độ phân giải hình cao hơn) Hiện trạng tập API hữu dụng cho ứng dụng cụ thể Lập trình viên viết ứng dụng cho trạng cụ thể không cần quan tâm đến chạy thiết bị Hiện trạng đ-ợc công bố MIDP (Mobile Information DeviceProfile: Cấu hình thông tin thiết bị di động) với đặc tả JSR - 37 Có 22 công ty thành viên nhóm chuyên gia tạo chuẩn MIDP MIDP cung cấp API cho phép thay đổi trạng thái chu kỳ sống ứng dụng, đồ họa (mức cao mức thấp), tuyến đoạn, timer, l-u trữ bền vững (persistent storage), mạng Những chức MIDP cung cấp: o Có thể sử dụng phần lớn lớp kiểu liệu quen thuộc đ-ợc giữ lại ví dụ nh- lớp gói java.util nh- Stack, Vector vµ Hastable cịng nh- Enumeration Java o Hỗ trợ đối t-ợng Display: Đúng nh- tên gọi ch-ơng trình MIDP hỗ trợ đối t-ợng Display đối t-ợng quản lý việc hiển thị liệu hình điện thoại o Hỗ trợ Form giao diện ng-ời dùng o Hỗ trợ Timer Alert o Cung cấp tính Record Management System (RMS) cho việc l-u trữ liệu Ngoài vào tháng 11 năm 2003 Sun đà tung MIDP 2.0 với hàng loạt tính khác đ-ợc cung cấp thêm so với 1.0 (Hiện Việt Nam đà có đời điện thoại hỗ trợ MIDP 2.0 vÝ dô nh- Nokia 6600 hay Sony Ericsson P900) Một số cải tiến bật MIDP 2.0 so với MIDP 1.0: o Nâng cấp tính bảo mật: Download qua mạng an toàn qua việc hỗ trợ giao thức HTTPS o Kiểm soát việc kết nối máy di động server: ví dụ nh- ch-ơng trình kết nối tới server thiÕu sù chÊp thn cđa ng-êi sư dơng o Thªm API hỗ trợ Multimedia Một nh-ng cải tiến hấp dẫn MIDP 2.0 tập API media Các API tập hỗ trợ âm Mobile Media API (MMAPI) o Mở rộng tính Form Nhiều cải tiến đà đ-ợc đ-a vào API javax.microedition.lcdui MIDP 2.0, nh-ng thay đổi lớn (ngoài API cho game) Form Item o Hỗ trợ lập trình viên Game cách tung Game API: Có lẽ Sun đà kịp nhận thị tr-ờng đầy tiềm thiết bị di động lĩnh vực Game Với MIDP 1.0 lập trình viên phải tự viết code để quản lý hành động nhân vật nh- quản lý đồ họa Việc làm tăng kích th-ớc file sản phẩm nh- việc xuất đoạn mà bị lỗi §-ỵc h-ëng lỵi nhÊt tõ Game API MIDP 2.0 không lập trình viên Game mà lập trình viên cần sử dụng tính đồ họa cao cấp Với Game API nhà phát triển đ-ợc cung cấp tính nh- quản lý thao tác bàn phím o Hỗ trợ kiểu ảnh RGB: cải tiến hấp dẫn cho nhà phát triển MIDP việc biểu diễn hình ảnh d-ới dạng mảng số nguyên, cho phép MIDlet thao tác với liệu hình ảnh cách trực tiếp Tuy nhiên MIDP thực hiện: o Phép tính dấu phẩy động (floating point): Phép tính đòi hỏi nhiều tài nguyên CPU Phần lớn CPU dùng cho thiết bị di động không hỗ trợ phép tính này, MIDP o Bộ nạp class (Class Loader) o Hỗ trợ từ khóa finalize() nh- J2SE: Việc 'dọn dẹp' tài nguyên tr-ớc xóa đ-ợc đẩy phía lập trình viên o Hỗ trợ JNI (Java Native Interface - gọi hàm đ-ợc viết ngôn ngữ khác từ Java.) o Hỗ trợ thao tác bắt lỗi: Chỉ hỗ trợ hạn chÕ o Th- viƯn API cho Swing vµ AWT(Abstract Windowing Toolkit công cụ chứa lớp để tạo cửa sổ): Phần lớn sử dụng MIDP o Hỗ trợ tính quản lý file th- mục: Điều làm bạn ngạc nhiên nh-ng thực tế thiết bị J2ME hỗ trợ thiết bị l-u trữ thông th-ờng nh- ổ cứng v.v Tuy nhiên, điều nghĩa bạn phải liệu quan trọng tắt máy, Sun đà cung cấp chức khác t-ơng đ-ơng gọi Record Management system (RMS) để l-u trữ cho thiết bị 10 3.4.5 LayerManager class Lớp quản lý tất đối t-ợng khác, thay trực tiếp xác định vị trí để vẽ đối t-ợng lên hình ph-ơng thức paint(), ta tạo đối t-ợng LayerManager cho vào tất đối t-ợng ph-ơng thức: public void append(Layer l); Đối t-ợng append đối t-ợng Layer đối t-ợng lớp kế thừa từ Layer nh- Sprite TiledLayer ta vẽ đối t-ợng lên hình nh-ng khác so với vẽ trực tiếp lên hình chỗ trình vẽ đ-ợc thâu tóm lại đối t-ợng LayerManager mà không vẽ rời rạc thành phần Việc vẽ tất đối t-ợng đồng loạt nh- vËy sÏ tèt cho tÝnh thèng nhÊt xt hiƯn cđa đối t-ợng khác hình Lớp LayerManager cung cấp ph-ơng thức quản lý Layer nh-: + insert (Layer l, int index): chÌn mét Layer vµo líp ë vÞ trÝ cã chØ sè index + remove (Layer l): lo¹i bá Layer khái LayerManager + getLayerAt (int index): lấy Layer có số index 50 Ch-ơng IV Xây dựng ch-ơng trình trò chơi Lines 4.1 Tổng quan làm Game Trò chơi điện tử tiện ích công nghệ điện tử-tin học nhằm phục vụ nhu cầu giải trí ng-ời Đó phần mềm xây dựng theo nội dung định, cho phép ng-ời tham gia điều khiển "nhân vật" theo ý muốn tuân theo quy tắc trò chơi đà đ-ợc cài đặt Thông qua hình liệu đà mà hóa đ-ợc đ-a d-ới dạng hình ảnh, cho ng-ời chơi quan sát diễn biến trò chơi Đây điểm qua trọng làm nên hấp dẫn trò chơi Kèm theo hệ thống âm đ-ợc cài đặt để phát ©m theo sù ®iỊu khiĨn cđa ng-êi sư dơng ®ång thời với hình ảnh hình Nh- phim hấp dẫn mà ng-ời chơi thay đổi theo ý muốn Hấp dẫn hình ảnh sống động âm kích thích hiếu thắng trÝ t-ëng t-ỵng cđa ng-êi, bc hä chinh phơc trò chơi 4.1.1 Phân loại game Thế giới game đa dạng đ-ợc phân loại nh- sau: + Action game: Game hành động: đòi hỏi nhiều đầu t- liên quan ®Õn ®å häa (Game ®ua xe Harley) + Game Puzzle: Game đố th-ờng đơn giản đồ họa (Game Tetris) + Adventure Game: Game ph-u l-u – (Game Diablo) + Strategy Game: Game chiÕn thuËt – lµ game đ-ợc -a chuộng (Warcraft ) game khó làm đòi hỏi nhiều AI + Traditional Game: Game truyền thống ví dụ đánh bài, xúc sắc 51 4.1.2 Những đòi hỏi chung game Tùy thuộc vào loại game mà có đòi hỏi khác yêu cầu : + Fun: tính vui nhộn + Addictive: tÝnh cuèn hót + Compelling: tÝnh hÊp dÉn + Commercial successful: tính th-ơng mại 4.2 Giải toán trò chơi Lines 4.2.1 Giới thiệu trò chơi Lines Lines trò chơi đ-ợc đời đà lâu đ-ợc yêu thích Mọi ng-ời đà quen thuộc với Lines98 theo sau phiên Lines2003, 2007, phiên trang web ch¬i Lines trùc trun Cã thĨ thÊy nã đáp ứng đầy đủ yêu cầu game Đây trò chơi đơn giản, luật chơi dễ hiểu, ng-ời chơi việc vận dụng kĩ xếp viên bi màu màu cho chúng thẳng hàng, có năm viên bi trở lên màu liên tục nhận đ-ợc điểm 4.2.2 Thuật toán Trò chơi Lines a Thuật toán tìm đ-ờng hai ô line: Vấn đề cần giải viết ch-ơng trình cho trò chơi phải xác định đ-ợc ®-êng ®i cđa viªn bi (khi ng-êi sư dơng chän viên bi chuyển đến ô trống bảng) Dựa lý thuyết đồ thị, để tìm đ-ờng từ ô đến ô khác bảng ta có nhiền cách giải khác Tuy nhiên phạm vi luân văn xin trình bày thuật toán BFS (Breadth first search) để tìm đ-ờng viên bi bảng ¸p dơng tht to¸n BFS, ta xem b¶ng nh- mét đồ thị với ô bảng nh- đỉnh đồ thị Giả sử, cần tìm đ-ờng từ ô (i1, j1) đến (i2, j2), ta phải sử dụng hàng đợi[] để load ô Một hàng đợi để l-u tọa độ x, hàng đợi để l-u tọa độ y Và 52 hai mảng hai chiều để chứa vết ô Đầu tiên ta cần bỏ phần tử (i2, j2) vào hàng đợi Sau đó, tiếp tục lặp vòng lặp sau để tìm đ-ờng đi: Function vector timduongdi() { Trong (Hàng đợi[] ch-a rỗng) { Lấy phần tử Hàng đợi[] { Kiểm tra ô xung quanh (trên, d-ới, trái, phải) phần tử { Nếu ô trống { - Bỏ phần tử vào Hàng đợi[] - L-u lại đ-ờng từ phần từ đến vị trí (l-u vết)(là ô xung quanh phần tử tại) - Nếu phần tử ô đích-> Dừng vòng lặp (Thành công), từ vết trả vector đ-ờng từ ô (i1,j1) đến ô (i2,j2) } } } } Trả giá trị null } Xây dựng thuật toán trả vector nến null đ-ờng ng-ợc lại đ-a đ-ờng hai « (i1, j1) (i2, j2) sÏ thn tiƯn cho việc di chuyển bóng trò chơi 53 b Thuật toán tính điểm: Điểm trò chơi đ-ợc thực theo ba cách sau: theo đ-ờng (Lines), theo góc vuông Squares theo khối (Blocks) Khi thực tính điểm, ta phải xác định viên bi ô có vị trí (i, j) ghi đ-ợc điểm hay không xác định ô ghi điểm nên ta xây dựng thuật toán trả vector Vì vậy, xem thuật toán tìm điểm xung quang ô (i, j) theo cách Nếu vector trả giá trị null không ghi đ-ợc điểm, ng-ợc lại ta ghi đ-ợc điểm Các thuật toán tính điểm Lines đ-ợc thực nh- sau: +) Thuật toán tính điểm theo Lines: Theo thuật toán ch-ơng trình tính điểm xuất viên bi trở lên màu liên tiếp đ-ờng thẳng Thuật toán đ-ợc thực nh- sau: Function Vector tinhdiemLines() { Thiết lập vector chứa ô ghi điểm Kiểm tra bốn h-ớng t-ơng ứng với đ-ờng thẳng qua { Xây dựng biến đếm =1; Trong (viên ô xét màu với viên bi ô (i, j)) { - Xét viên bi h-ớng lên ô (i, j) - Tăng biến đếm } Trong (viên ô xét màu với viên bi ô (i, j)) { - XÐt viªn bi tiÕp theo h-íng xng d-íi ô (i, j) - Tăng biến đếm } 54 Nếu biến đếm lớn thực thêm vào vector ô mà tạo với ô (i, j) ghi điểm } Nếu vector khác null thêm ô (i, j) vào trả vector Ng-ợc lại trả giá trị null } +) Thuật toán tính ®iĨm theo Squares: Víi tht to¸n tÝnh ®iĨm theo Squares ch-ơng trình thực tính điểm xuất viên bi màu liên tiếp xếp thành hình vuông Thuật toán đ-ợc thực nh- sau: Function Vector tinhdiemSquares() { Khëi t¹o biÕn kiĨm tra b»ng 0; Kiểm tra tuần h-ớng ; { Nếu màu ô h-ớng xét màu với viên bi ô (i, j); { BËt c¸c bit thø k cđa biÕn kiĨm tra lên; } } - Kiểm tra bit biến kiểm tra thỏa mÃn điếu kiện tạo thành hình vuông, hay chữ nhật đ-a vào vector đ-a kết - Ng-ợc lại trả giá trị null } +) Thuật toán tính điểm theo Blocks: Khác với hai cách thuật toán tính điểm theo khèi Blocks sÏ thùc hiƯn tÝnh ®iĨm nÕu ng-êi chơi xếp viên bi trở lên màu gần ghi đ-ợc điểm Thuật toán đ-ợc thùc hiÖn nh- sau: 55 Function Vector checkBlocks() { Trong (Hàng đợi[] ch-a rỗng) { Lấy phần tử Hàng đợi[] { Kiểm tra ô xung quanh (trên, d-ới, trái, phải) phần tử { Nếu ô có viên bi màu với ô xét ch-a xét { - Bỏ phần tử vào Hàng đợi[] vector - Đánh dấu ô } } } } Nếu độ dài vector có bé bơn trả giá trị null Ng-ợc lại trả vector chứa điểm } 4.3 Xây dựng trò chơi Lines J2ME a Font chữ chuỗi ký tự: J2ME không cho phép thay đổi loại font chữ cho đối t-ơng Graphics nghĩa can thiệp vào quy định font Family, font size, Khi tạo đối t-ợng thuộc lớp Font để sử dụng, có cách : Font font = Font.getFont(int face, int style, int size) Trong tham số truyền phải bắt buộc phải số + Face: FACE_SYSTEM,FACE_MONOSPACE,FACE_PROPORTIONAL + Style: STYLE_PLAIN,hoặc tổ hợp từ dạng STYLE_BOLD, STYLE_ITALIC, STYLE_UNDERLINED 56 + Size: SIZE_SMALL SIZE_MEDIUM SIZE_LARGE Đặc điểm gây số bất lợi cho ch-ơng trình, khó xác định đ-ợc xác kích th-ớc font chữ đ-ợc sử dụng để lựa chọn cho phù hợp Vì với số điện thoại, font có kích th-ớc trung bình đẹp, nh-ng số điện thoại to, nhỏ, không đẹp không theo mong muốn Chính khó khăn nên đà xây dựng font chữ theo chuẩn mà mong muốn Bằng cách ta phải xây dựng file chứa hình ảnh, hình ảnh hình ảnh đơn mà chứa chữ Vậy ảnh chứa tập hình ảnh chữ thấy hình sau: Hình 4.1 Hình chứa font chữ Từ hình ảnh lớn chứa nhiều chữ ta sử dụng ph-ơng pháp public static Image createImage(Image image, int x, int y, int width, int height, int transform) để xây dựng ảnh nhỏ chứa chữ Vậy việc vẽ chuỗi ký tự graphics vẽ lần l-ợt ảnh hình Với ph-ơng pháp ta tạo nhiều kiểu chữ khác đặc biệt ph-ơng pháp in đ-ợc chữ có dấu tiếng việt b Âm thanh: Viết Game cho mobile phần thiếu hiệu ứng âm thanh, tr-ớc với 1.0 điều ch-a thể thực đ-ợc với 2.0 chuyện đơn giản Với phiên có thêm tính MMAPI cung cấp tập khả đa ph-ơng tiện cho thiết bị di động, bao gồm phát lại ghi âm liệu âm video từ nhiều nguồn khác 57 Mọi thứ ta cần đà có sẵn gói javax.microedition.media.* hỗ trợ nhiều loại định dạng file khác nhau, nh-ng loại đơn giản phổ biến wav, mp3 MIDI Để khởi tạo player ta dùng ba ph-ơng thức sau đây: + createPlayer(DataSource source): tạo player dựa DataSource + createPlayer(InputStream stream, String type): t¹o mét player sư dơng input stream nh- nguồn giả định kiểu media đà đ-ợc cung cấp + createLayer(String url): tạo player sử dụng url để xác định liệu nguồn Sau ta đà tạo player, ta bắt đầu sử dụng cách đơn giản gọi ph-ơng thức start() Nếu lặp lại đoạn đạt đến kết thúc media stop cách tự động Và ng-ợc lại đơn giản cần gọi ph-ơng thức stop() dừng lại c Xây dựng hình ảnh Với trò chơi Lines di chuyển bóng 9x9 ô ô nên đ-ợc đánh số để quản lý kiện Vì vậy, cách sử dụng tốt sử dụng lớp TiledLayer Theo quy tắc lớp TiledLayer có ảnh, ảnh đ-ợc chia nhỏ thành tile, TiledLayer gồm mảng tile đặt theo thứ tự định ảnh TiledLayer đ-ợc phân chia nhiều tiles đ-ợc đánh số Sử dụng ph-ơng thức khởi tạo public TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight) Víi ¶nh TiledLayer là: Hình 4.2 Hình sử dụng xây dựng trò chơi 58 Vậy tileWidth tileHeight chiều dài chiều rộng ô vuông nhỏ hình 4.2 Lúc ô vuông nhỏ lần l-ợt mang giá trị từ đến 32 đ-ợc đánh số theo thứ tự từ trái sang phải, từ xuống d-íi Khi mn thay ®ỉi néi dung mét tile cđa TiledLayer ta cã ph-¬ng thøc: public void setCell(int col, int row, int tileIndex) Ta đặt miền chữ nhật TiledLayer tile ph-ơng thức: public void fillCells(int col, int row, int numCols, int numRows, int tileIndex); 4.4 Kết thu đ-ợc a Màn hình Splash Screen: SplashScreen hình bạn bắt đầu ứng dụng hay game Màn hình Splash Screen xuất giây lát tr-ớc chạy ch-ơng trình game xuất Màn hình th-ờng thấy game dùng để làm hình quảng cáo cho tất trò chơi Nó cho phép hiển thị số đồ họa, đ-a số công ty thông tin / tái xây dựng th-ơng hiệu thi hành công ty Splash hình đơn giản nhmột hộp báo tuỳ chỉnh hình mà xuất với thời gian ngắn, khoảng giây Tất nhiên, hình Splash vô nghĩa cần phải đ-ợc triệu gọi MIDlet Hình 4.3 hình Splash game b Menu: Hệ thống menu để chơi game ứng dụng quan trọng điện thoại di động thiết bị Xây dựng menu đơn giản, dễ sử dụng, sử dụng menu theo dạng list 59 Hình 4.4 Màn hình menu game tr-ớc chơi c HighScore: Mọi game có tính điểm xếp hạng điểm cao Mà MIDP không sử dụng hệ thống file để l-u trữ liệu Chính sử dụng l-u trữ ghi (Record Store) giải quết đ-ợc vấn đề L-u trữ ghi cho phép l-u liệu ứng dụng thoát, khởi động lại thiết bị di động tắt hay thay pin Dữ liệu l-u trữ ghi tồn thiết bị di động ứng dụng thật đ-ợc xóa khỏi thiết bị di động Khi MIDlet bị xóa, tất l-u trữ ghi bị xóa d Màn hình chơi game: Đây giao diện tiếp xúc nhiều ng-ời chơi Do trò chơi Lines đà máy tính lâu nên ta cần xây dựng hình game t-ơng đồng game đà có máy tính tạo thao tác dễ dàng cho sử dụng, cách xây dựng với phím chức năng, hay hình cảm ứng Hình 4.5 Màn hình chơi game 60 Kết luận Cùng với phát triển công nghệ viễn thông, số l-ợng thiết bị di động ngày tăng Việt Nam, nhiều ng-ời đà coi điện thoại di động nhmột vật thiÕu cc sèng h»ng ngµy Cïng víi sù gia tăng số l-ợng ng-ời dùng tính dành cho điện thoại tăng theo t-ơng ứng Hàng loạt tính cao cấp đ-ợc giới thiệu nh- chụp hình số, nghe nhạc đặc biệt sử dụng ch-ơng trình nhà sản xuất điện thoại cung cấp Đây đ-ợc coi cách mạng lĩnh vực di ®éng, nã biÕn chiÕc ®iƯn tho¹i nhá bÐ cđa b¹n thành máy tính thu nhỏ, với chủng loại điện thoại bạn đọc báo, tiểu thuyết, tra từ điển, đồ mang giới giải trí đến bên cạnh, nhạc hay, games hay sẵn sàng bạn cần đến Cùng với phát triển phần cứng hỗ trợ tảng phần mềm sử dụng cho thiết bị di động, nhà lập trình thiết kế ch-ơng trình ứng dụng cho thiết bị Bằng J2ME, đề tài đà xây dựng ch-ơng trình trò chơi Lines điện thoại di động đà đạt đ-ợc số kết quả: Lý thuyết: - Tìm hiểu tổng quan Java công nghệ J2ME (cấu trúc, cấu hình, cài đặt đóng gói ch-ơng trình ứng dụng J2ME) - Tìm hiểu kỹ thuật lập trình J2ME - Tìm hiểu kỹ thuật lập trình game: + Kỹ thuật xử lý hình ảnh, dùng kỹ thuật xử lý hình ảnh để tạo font lớp Graphics + Kỹ thuật xử lý phím bấn điên thoại thông th-ờng kỹ thuật xử lý điểm điện thoại cảm ứng + Kỹ thuật xử lý âm 61 Về mặt thực nghiệm: - Thiết kế cài đặt ch-ơng trình trò chơi Lines điện thoại di động J2ME - Đóng gói chạy ch-ơng trình điện thoại di động H-ớng phát triển - Tìm hiểu nghiên cứu để viết số ứng dụng điện thoại di động có tính khả dụng cao 62 tài liệu tham khảo Ee-Peng Lim vµ Keng Siau, “Advances in Mobile Commerce Technologies“, Idea Group Publishing, 2003 “Sony Ericsson Java MIDP Development Online Training Course“, Sony Erricson Developer World, 2002 http://www.sonyericsson.com/spg.jsp?template=frameset_dev_zone Qusay H.Mahmoud, “WAP for Java developers“, Java World, 2000 http://www.javaworld.com/javaworld/jw-06-2000/jw-0602-wap.html Tim Fielden vµ Ana Orubeondo, “J2ME and WAP: Together forever?“, Java World, 2000 http://www.javaworld.com/javaworld/jw-12-2000/jw-1201-iw-J2ME.html Dreamtech Software Team, “Wireless Programming with J2METM: Cracking the CodeTM“, Hungry Minds Inc, 2002 Forum Nokia, “Brief Introduction to Networked MIDlets“, Forum Nokia, 2002 http://www.forum.nokia.com Michael J Yuan vµ Ju Long, “Build database-powerd mobile applications on the Java platform“, Java World, 2002 http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-midp.html Nguyễn Ph-ơng Lan Hoàng Đức Hải, Lập trình ứng dụng Web với JSP/Servlet, Nhà xuất Giáo Dục, 2001 Tìm hiểu th- viện lập trình game J2ME http://www.J2MEdev.com/api/midp/javax/microedition/lcdui/game/Layer html 63 Danh mục thuật ngữ STT ThuËt ng÷ tiÕng Anh Java Micro Edition (J2ME) Java Enterpise Edition (J2EE) Java Platform, Standart Edition(J2SE) Java Development Kit (JDK) Connected Limited Device Configuration (CLDC) Connected Device Configuration (CDC) Mobile Information Device Profile (MIDP) Application Program Interface (API) Kernel Virtual Machine (KVM) 10 Java Specification Requests (JSR) 11 12 Intergrated Development Environment (IDE) Record Management System (RMS) 13 Personal Digital Assistant (PDA) 14 Mobile Media API (MMAPI) ThuËt ngữ tiếng Việt Phiên Java cho thiết bị nhỏ Phiên dành cho máy chủ với nhớ lớn Phiên chuẩn gồm công cụ thông dụng dùng để chạy máy PC mạng máy tính nhỏ Bộ công cụ phát triển Cấu hình thiết bị kết nối giới hạn Cấu hình thiết bị kết nối Cấu hình thông tin thiết bị di động Giao diện lập trình ứng dụng Máy ảo Những yêu cầu cần bổ sung cho phiên Java Môi tr-ờng phát triển tích hợp L-u trữ ghi Thiết bị kỹ thuật số hỗ trợ cá nhân Hỗ trợ đa ph-ơng tiện cho ứng dụng thiết bị hỗ trợ Java ME 64 ... Giải toán trò chơi Lines 52 4.2.1 Giới thiệu trò chơi Lines 52 4.2.2 ThuËt toán Trò chơi Lines 52 4.3 Xây dựng trò chơi Lines J2ME 56 4.4 Kết thu đ-ợc 59 KÕt... biệt điện thoại di động hầu hết hỗ trợ ngôn ngữ J2ME J2ME thực đà trở thành ngôn ngữ phổ biến lÃnh vực lập trình di động Từ yêu cầu thiết yếu đà chọn đề tài đồ án tốt nghiệm là:" Lập trình trò chơi. .. J2ME Ch-ơng III: "Lập trình Game J2ME" Ch-ơng trình bày th- viện API J2ME để phát triển Game Nh- gói Canvas, Graphics, Layer, TiledLayer, Sprites, Ch-ơng IV: "Xây dựng ch-ơng trình trò chơi Lines"

Ngày đăng: 15/10/2021, 00:01

w