LỜIMỤC CẢMLỤC ƠN Trước tiên em xin gửi lời cám ơn chân thành sâu sắc tới thầy cô LỜI CẢM ƠN .1 giáo trường Đại học Dân Lập Hải Phòng nói chung thầy cô giáo khoa Công Thông tin nói riêng tận tình giảng dạy, truyền đạt Lòinghệ Mở Đầu cho em kiến thức, kinh nghiệm quý báu suốt thời gian qua Chương Cơ sở lý thuyết Đặc biệt em xin gửi lời cảm ơn đến thầy Đỗ Xuân Toàn tận tình giúp 1.1 Máy ảo java cho điện thoại di động đỡ, trực tiếp bảo, hướng dẫn em suốt trình làm đồ án tốt 1.2 Lập trình java cho Mobile .5 nghiệp Trong thời gian làm việc với thầy, em không ngừng tiếp thu thêm nhiều1.2.1 kiến thức íchjava mà học tập tinh thần làm việc, thái độ Ngônbốngữ nghiên cứu khoa học nghiêm túc, hiệu quả, điều cần thiết 1.3 Giới thiệu J2ME cho em trình học tập công tác sau 1.3.1 J2ME(Java Micro Edition): Đồng thời xin chân thành cảm ơn, trường Đại học Dân Lập Hải Phòng Kiếnkiện trúc củacơ J2ME tạo1.3.2 điều sở vật chất giúp em có môi trường tốt đế thực tài 1.3.3đề- MIDP(Mobile Information Device ProEile) 1.3.4 Những hạnlời chếcảm củaơn lậpchân trìnhthành di động .11 Sau xin gửi tới gia đình, bạn bè động viên, đóng góp ý kiến giúp đỡ trình học tâp, nghiên cứu 1.3.5 Tì m hiểu ứng dụng ĐTDĐ .11 Hải Phòng, tháng 1.3.5.1 C ăn lập trình J2ME 11 07/2009 1.3.5.2 Cách quản lý hình ĐTDĐ : .14 1.3.5.3 Kiến trúc tống quan giao diện người dùng MIDP 15 Lời Mở Đầu Ngày nay, phát triển nhu cầu sở hữu thiết bị kỹ thuật số mà thiết bị di động có thị phần lớn Sự đòi hỏi mẫu mã, chất lượng dịch vụ mà đặc biệt tính điện thoại, phần mềm tiện ích kèm kéo theo phát triến Hệ điều hành đế nhà phát triển ứng dụng thực ý tưởng mình.Các hệ điều hành phổ biến như: Windows Mobile, Linux Mobile, Symbian Cùng với tốc độ phát triển tiến vượt bậc tốc độ xử lý Nhờ lập trình ứng dụng cho loại thiết bị tăng lên nhanh chóng, đặc biệt dịch vụ giá trị gia tăng mạng di động SMS, RSS, WAP ứng dụng dịch vụ game Qua tìm hiếu về, em thấy thị trường Game di động Việt Nam phát triển có tiềm lớn; lý em chọn đề tài Hiển nhiên có nhiều hạn chế cho game ứng dụng điện thoại có nhiều tương tác bàn phím, hình ảnh, sinh động, âm hiệu ứng rung Hơn nữa, lập trình bạn không quan tâm đến khác nhà sản xuất mà đến khác dòng sản phấm nhà sản xuất Mặc dù hầu hết điện thoại đời thị trường hồ Chương Co’ sỏ’ lý thuyết 1.1 Máy ảo java cho điện thoại di động Đe có điện thoại tốt đòi hỏi phần mềm cao cấp kèm Nhưng vấn đề lại đặt có nhiều nhà sản xuất điện thoại sử dụng nhiều công nghệ khác Chính thế, việc tạo ứng dụng chạy tất dòng sản phấm vấn đề không đơn giản Nhưng với đời J2ME, đáp ứng vấn đề nêu mà tạo nên tiền đề quan trọng việc phát triến mạnh ứng dụng cho Mobile Độc lập với phần cứng, chạy tảng khác nhà sản xuất khác nhau, mục tiêu đồng thời mạnh mà J2ME mang lại Khi mã nguồn Java biên dịch chuyến đối thành mã bytecode Mã bytecode sau chuyến thành mã ngôn ngữ máy thiết bị di động Tầng máy ảo Java bao gồm KVM (K Virtual Machine) biên dịch mã bytecode có nhiệm vụ chuyến mã bytecode chương trình Java thành ngôn ngữ máy để chạy thiết bị di động Vai trò máy ảo Java hay KVM dịch mã bytecode sinh từ chương trình Java biên dịch sang ngôn ngữ máy Chính KVM chuấn hóa output chương trình Java cho thiết bị di động khác có vi xử lý tập lệnh khác Không có KVM, chương trình Java phải biên dịch thành tập lệnh cho thiết bị di động Như lập trình viên phải xây dựng nhiều đích cho loại thiết bị di động Tra* phái tíV* Hình Biếu diễn tiến trình xây dựng ứng dụng MIDlet hoàn chỉnh vai trò KVM 1.2 Lập trình java cho Mobile 1.2.1 Ngôn ngữ java a Java ngôn ngữ biên dịch Tuy nhiên khác với ngôn ngữ biên dịch phổ biến khác C/C++, chương trình nguồn Java không biên dịch trực tiếp sang mã máy đích cụ thể mà biên dịch sang mã máy ảo Java Mã má ảo thực máy ảo Java cần thông dịch sang hệ máy cụ Ưu điểm dễ nhận thấy phương thức mã đích không phụ thuộc vào phần cứng hay hệ điều hành cụ thể đảm bảo tính khả chuyến chương trình Nhược điểm phải thực môi trường máy ảo nên tốc độ chậm so với dịch sang mã máy thực trực Một ưu điếm quan trọng khác chế máy ảo cho phép kiếm soát truy cập đến tài nguyên hệ thống b.Quá trình phát triến Java c So sánh công nghệ Java Microsoft.Net 1.3 Giới thiệu J2ME 1.3.1 J2ME(Java Micro Edition): J2ME phát triển từ kiến trúc Java Card, Embeded Java Personal Java phiên Java 1.1 Đen đời Java Sun định thay Personal Java đươc gọi với tên Java Micro Edition, hay viết tắt J2ME Đúng với tên gọi, J2ME tảng cho thiết bị có tính chất nhỏ, gọn Java ban đầu thiết kế dành cho máy với tài nguyên nhớ hạn chế Thị trường J2ME mở rộng cho nhiều chủng loại thiết bị như: - Các loại thẻ cá nhân Java Card - Máy điện thoại di động - Máy PDA (Personal Digital Assistant- thiết bị trợ giúp cá nhân ) - Các hộp điều khiển dành cho tivi,thiết bị giải trí gia dụng Các công cụ phát triến J2ME cung cấp miễn phí Đây thuận lợi cho người bắt đầu với J2ME 1.3.2 Kiến trúc J2ME Jsva2 Enterprise Edltlo n Java Stinds rd Frlltior ì MOP CLDC CDC Prdile Lovol Corrtgjroticn L Java Virtual Macrune -y^ Java Micro Hình Kiến trúc J2ME Kiến trúc J2ME bao gồm thành phần: cẩu hình (coníĩguration), trạng (proíĩle), gói tuỳ chọn (optional package) cho việc xây dựng hoàn thiện môi trường thực thi Java mà đáp ứng yêu cầu cho phạm vi lớn thiết bị thị trường đích Các nhà sản xuất thiết bị phát triển tính thiết bị họ cung cấp dịch vụ, ứng dụng Các cấu hình mở rộng với thư viện bổ sung cho thiết bị Cẩu hình: Cấu hình bao gồm máy ảo Java tập hợp nhỏ hàm API theo đặc tả loại thiết bị định Hình trạng: Đe cung cấp môi trường thực thi hoàn thiện loại thiết bị định, cấu hình phải kết nối với tập API mức cao Gói tuỳ chọn: Nen tảng J2ME mở rộng gói tùy chọn với cấu hình CLDC, CDC, hình trạng tương ứng Các gói tuỳ chọn đưa chuẩn cho việc sử dụng công nghệ có công nghệ sử dụng rộng rãi Bluetooth, dịch vụ Web, nhắn tin không dây, đa phương tiện, kết nối sở liệu Các nhà sản xuất thiết bị kèm theo gói tùy chọn để thúc tính thiết bị 1.3.3 - MIDP(Mobile Iníormation Device Proíĩle) Tầng J2ME cao tầng trạng mục đích định nghĩa API cho thiết bị di độ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 (như nhiề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ụ the Lập trình viên viết ứng dụng cho trạng cụ không cần quan tâm đến chạy thiết bị Hiện trạng công bố MIDP (Mobile Iníormation ProTile) 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 Nó không định nghĩa cách mà ứng dụng nạp thiết bị di động Đó trách nhiệm nhà sản xuất Nó không định nghĩa loại mô hình bảo mật end-toend nào, vốn cần thiết cho ứng dụng kinh doanh nhận số thẻ tín dụng người dùng Nó không bắt buộc nhà sản xuất cách mà lóp M1DP ❖ M1DP Proíìle định nghĩa dành riêng cho thiết bị di động thành phần J2ME, cung cấp chức co cho hầu hết dòng thiết bị di động phổ biến máy điện thoại di động máy PDA ❖ Các ứng dụng J2ME gọi MlDĩet (Mobile Iníbrmation Device applet) ❖ ứng dụng MIDP với di động Do M1DP chuẩn phát triển ứng dụng Java điện thoại Symbian nên nay,có nhiều hãng điện thoại lớn sử dụng công nghệ J2ME Symbian có hồ trợ M1DP Vào tháng 11 năm 2003, Sun tung phiên MIDP 2.0 vói hàng loạt tính cung cấp so với MIDP 1.0 : nâng cao tính bảo mật, hỗ trợ Form tốt hơn, chụp ảnh RGB V.V Các thiết bị nhắm tới J2ME : Các hãng Điện thoại di động : SGH-730 SGH-D500 10 SGH-E630 NOKIA N6230 1.3.4 N7610 N6600 Những hạn chế lập trình di động Sự khác lớn lập trình cho di động so vói lập trình cho PC ta phải quan tâm lớn đến nhớ, kích thước hình hay chí màu sắc thiết bị Những đề lại không quan trọng bậc PC Hơn ta phải quan tâm đến khác hãng sản xuất dòng máy di động hãng Các dòng máy khác có nhớ, kích thước, màu sắc hình hỗ trợ cho lập trình khác Các loại nhớ Bộ nhớ làm việc hay gọi heap memory phần nhớ dùng suốt trình chạy giải phóng ứng dụng kết thúc, ứng dụng dành cho di động phải có bô nhớ nhỏ vùng nhớ chạy Một loại nhó' khác dùng đế lưu trữ nhớ RMS (Record Management System) RMS nhớ mà thông tin lun ta tắt ứng dụng Lấy ví dụ game ta dùng nhớ đế lưu top người chơi cao điếm Các thông tin cập nhật cho lần chơi 1.3.5 TÌIĨ1 hiểu ứng dụng ĐTDĐ 1.3.5.1 Căn bán lập trình J2ME 11 • insert (Layer 1, int ỉndex) • remo ve (Layer Ị) • getLayerAt (int index) Phương thức thứ chèn Layer vào lớp vị trí có chiều xâu index Ở layer chèn vào có tính đến chiều sâu mà đặt (layer có chiều sâu lớn bị che layer có chiều xâu nhỏ hơn) Do việc đặt layer lên hình sử dụng LayerManager không phụ thuộc vào thứ tự viết code, mà phụ thuộc vào biến index mà truyền vào Công cụ lập trình Netbeans NetBean IDE “môi trường phát triển tích hợp” (Integrated Development Environment) kiếu Visual Studio Microsoữ xem một ứng dụng "must-download" dành cho nhà phát triến phần mềm NetBean IDE hỗ trợ nhiều hệ điều hành khác Windows, Mac, Linux, Solaris NetBean bao gồm IDE mã nguồn mở tảng ứng dụng cho phép nhà phát triến nhanh chóng tạo nên ứng dụng dành cho web, doanh nghiệp, desktop thiết bị di động ngôn ngữ lập trình Java, C/C++, JavaScript, Ruby, Groovy, PHP NetBean IDE hồ trợ hai công cụ thiết kế game GameDesign VisualMidlet Trong GameDesign làm phần giao diện game phần VisualMIDlet làm phần menu cho game Sau tìm hiểu lý thuyết GAME API ta đến với việc thực hành 25 Hình 10 GameDesign Netbeans 26 ằ ®®r ằ 200 msỊr-Ị ầ ầ ầ Tạo ảnh chuyển động nhân vật Hình 11 Hình tạo Sprite với Image duke.png Có tụ' điều chỉnh độ rộng độ dài Frame Hình 12 Tạo Sprite 27 Hình 13 Đế tạo nhân vật chuyển động ta cần kéo tile vào ô tương ứng đế tạo thành chuỗi ảnh ím) •©© Hình 14 GameDesign hỗ trợ test thử cách nhấn nút play hay pause số lOOms có nghĩa độ trễ hai ảnh Sau chạy hết Hìnhlặp 15lại Tạo TiledLayer lượt, trình Tạo TiledLayer Tạo TiledLayer cách chọn tile đặt lên khung hình trắng Kích thước TiledLayer thay đối 28 29 Tạo khung hình game Bước cuối tạo tạo đồ cho game cách kết họp TiledLayer nhân vật Hình 16 Tạo scene 30 VisualMlDlet Properties Methods GameScree n Properties Methods GameDesig n Properties Methods Chương 3: Phân vàmột thiếtGameCanvas kế Game đơn GameScreen: chấtTích lớpgiản chứa tất họacủa lấy trò tù' lớp GameDesign đối Mô tượng tả luậtđồchơi chơi Tên trò chơi: Jame thức như: Lóp có rấtDuke nhiều&phương trò đối chơitượng đơn 1Logic Vẽ lêngiản màn: hình Trò có nhận nhân vật là: Chờchơi xác phím bấmDuke Jame Tạo hình ảnh chuyển động: Các nhân vật 7Ễr Duke Jame Xác nhận trạng thái game: Game Over, Running Nhân vật Duke khung đế tìm Jame Lớp có phương thức run() có vòng lặp While Duke đi, nhảy, rơi Jame đứng chỗ đảo mắt xung quanh Jame đứng đâu khung Khi Duke thấy Jame Hình trò chơi thúc 17 3kết lớp làm giao diện 6.Được Thờihiếu gianlàmà tìm tính ghi điểm lópDuke MIDlet Jame lóp GameScreen cóđếquan hệ kếtngười họp chơi (Association) với Thời gian mà Duke thấy điểm cànggiao cao (VisualMIDlet tìmmenu gamenhanh GameScreen diện chơi game gửi thông diệp đến nhau) Còn lóp GameDesign có quan hệ Một số luồng quan trọng chuơng trình chiều với lớp GameScreen Chưoug trình có lóp làm giao diện: lớp GameDesign trợ API đế phương quản lý thức layerpublic mạnh chuyên linh 1.Trong GameDesign: gồm cáchỗthuộc tínhdùng hoạt việc dựng game TiledLayer, phức tạp cách hiệu tạogiúp đốixây tượng đồ họa cảnh Sprite, Image Tạo đối tượng đồ hoạ đế lớp GameScreen cập nhật lên hình VisualMIDlet: chất MĨDlet mở rộng từ lớp Trong lớp GameScreen (GameCanvas) có luồng thực tất 32 31 +Cập nhật hình + Vẽ lại hình +Xử lỷ thời gian tính toán cho môi vòng lặp} Lớp GameCanvas vẽ lên hình đáp ứng lại liệu nhập phần thân vòng lặp game, thay dựa vào thread vẽ nhập liệu hệ thổng.Đầu tiên, GameCanvas cho phép bạn truy xuất trực tiếp đối tuợng Graphics sử dụng phuơng thức getGraphics() Bất kỳ công việc vẽ đối tượng Graphics trả hoàn thành đệm hình (offscreen) Sau bạn chép đệm vào hình sử dụng flushGraphics(), không cần phải đợi hình cập nhật Cách tiếp cận cho phép bạn điều khiến tốt việc gọi repaint() Phương thức repaint() trả ứng dụng bạn không cần phải bảo đảm xác hệ thống gọi paint() đế cập nhật hình GameCanvas có phương thức đế lấy trạng thái thời bàn phím thiết bị, kỹ thuật gọi thăm dò (poỉỉing) Thay chò' cho hệ thong gọi phương thức keyPressed(), bạn xác định phím nhấn cách gọi phương thức getKeyStates() GameCanvas Cuối lópVisualMĨDlet java sử dụng lớp Canvas 33 2.1 Các lóp đối tượng : MIDlet: Sò GameMIDlet:: CommandListener // Đối tượng GameMỈDlet lớp ộ GameMIDletO chương trình initialize() o startMIDletO // gọi đối tựong Display thị Q resumeMIDletO Alert hình game không o switchDisplayable(Alert alert, hiển Displayable nextDisplayable) thị o commandAction(Command command, Displayable displayat // hiến thị hình menu Q getSvgMainMenuO : SVGMenu // thao tác thực Q svgMainMenuAction() > ) getSvgMenuImageO : SVGImage o get5vgGameSplashScreen(): // hàm gọi đế hiến thị SVGSplashScreen o getSvgGameScoresWaitScreen(): ảnh :màn hình About, SVGWaitScreen GameScore Q getSvgWaitImage(): SVGImage o get5vg5plashlmage(): SVGImage o getAddHighScoreTaskO : SimpleCancellableTask o getFormllserAndScore(): Form Q getOkCommandlO : Command o getCancelCommandO : Command o getNameTextField(): TextField // Hàm thiết lập đối tượng o getAlertO : Alert mazeCanvaz getSvgSplashScreenAboutQ : SVGSplashScreen // Gợi đối tựong Display đế Q getSvgAboutlmageO : SVGImage thị o getSvgNewScoreWaitScreen() : hình 5VGWaitScreen o getSvgScoresTableO : // Hàm bắt đầu ứng dụng SVGSplashScreen //Hàm dừng chương trình đế bắt Q getOkCommand2(): Command Q getHighScoresTaskQ : kiện timer SimpleCancellableTask Q getSvgScoresImageO : SVGImage Q getScoreTextField(): TextField • o getMazeCanvas(): MazeCanvas 34 & MazeCanvas :: GameCanvas : CommandListener ộ MazeCanvas(GameMIDlet midlet) o checkKeysO Q commandAction(Command argO, Displayable argl) o flushKeys() \- getGameOverO : boolean o getManagerO : MazeManager hideNotify() keyPressed(mt keyCode) o paint(Graphics g) Q reseto o setGameOverO tó_,i showNotify() Ị- o starto o updateScreen O Ị- m BLACK : int CORNER_ X : int % CORNER_ V : int íặp CORNER_Y : int > Egp DISP_HEIGHT : 35 // đối tượng MazeCanvas kế thừa GameCanvas // Hàm khởi tạo // Hàm lấy trạng thái bàn phím đế di chuyến nhân vật // lấy trạng thái bàn phím // Hàm trả giá trị biến MyGameOver // lấy trạng thái phím để di chuyển hiển thị hình ghi diêm // Thực vẽ đồ họa hình,và gọi L-%] wall: Image // đối tượng MazeGameDesign đê "\ thực đối tượng đồ họa B- |V MazeGameDesign o getBigGO : Image // Các hàm để load đối tượng : o getDukeO : Image, Image Ị .Q getDukeSO : Sprite y o getJames5(): Sprite o getMazel{): TiledLayer Q getWall(): Image ^ o updateLayerManagerForLevell(Layer Manager Im) ậ] bigG : Image duke :Image r-%1 dukeS : Sprite □ dukeStalling : int[] 36 Ngôn ngữ cài đặt: Java ngôn ngữ lập trình có hiệu cao, cấu trúc độc lập nên ứng dụng cần viết cho chạy máy ảo Java cài đặt chạy tốt hệ thống > Môi trường soạn thảo: NetBean IDE 6.0 > Môi trường chạy chương trình: Sun J2ME Wireless Toolkit 2.5 (WTK) Chạy ửng dụng Game Y ưrn V B +5550000 Main menuDeíaultCoIorPhone fT| |xj Game running MIDIet View Help • $Sun ® MIDlet Vỉew Help • &Sun ® • $Sutỉ ® Launch game Write Usemame Splash screen Ar„ I c II £„„„ Hình 20 Hình 21 44 43 High Scores Table Kết luận hưóng phát triển 3.1 Những kết đạt Sau làm xong tập thực tập “Lập trình game di động với J2ME” em đạt kết sau: kiến thức • Đã nắm bắt chế hoạt động máy ảo Java điện thoại di động, nhờ hoàn thiện kỹ xây dựng ứng dụng ngôn ngữ J2ME • Học kiến thức làm game lập trình thực tế ngôn ngữ J2ME chương trình • Kích thước file JAR phù hợp với hầu hết dòng điện thoại có hỗ trợ MIDP 2.0 • Chương trình sử dụng thư viện J2ME nên chạy nhiều dòng máy 3.2 Những hạn chế Bên cạnh kết trên, thân em thấy hạn chế cần 45 TÀI LIỆU THAM KHẢO JavaVietNam.org & Nhà sách Đất Việt, Lập trình Mobỉỉe Games J2ME, NXB Giao Thông Vận Tải Phưong Lan & Hoàng Đức Hải, Java(Tập I),NXB Lao Động Xã Hội Addison Wesley Publisher, Programming lYireless Devices with the Java™ Pỉatform, Micro Edition, Second Edition Sams Publisher, Java™ Micro Edition Application Development Hungry Minds, Wireless Programming with J2ME™: Cracking the code, Inc James White, Java ỉn Small Things, Maning Publications J2ME Game Programming - by Martin Wells Wireỉess Game Development in Java with MIDP.2.0 - by Ralph Barbagallo J2ME Game Development with MIDP2 - by Jason Lam 46 [...]... 29 Tạo ra khung hình trong game Bước cuối cùng là tạo ra tạo ra bản đồ cho game bằng cách kết họp các TiledLayer và các nhân vật Hình 16 Tạo scene 30 VisualMlDlet Properties Methods GameScree n Properties Methods GameDesig n Properties Methods Chương 3: Phân vàmột thiếtGameCanvas kế Game đơn 3 GameScreen: bản chấtTích đây là lớpgiản này chứa tất cả các họacủa lấy trò tù' lớp GameDesign 1 đối Mô tượng... bị di động bằng các ngôn ngữ lập trình Java, C/C++, JavaScript, Ruby, Groovy, và PHP NetBean IDE hồ trợ hai công cụ thiết kế game là GameDesign và VisualMidlet Trong đó GameDesign làm phần giao diện game còn phần VisualMIDlet làm phần menu cho game Sau khi tìm hiểu về lý thuyết GAME API ta đến với việc thực hành 25 Hình 10 GameDesign của Netbeans 26 ằ ®®r ằ 200 msỊr-Ị ầ ầ ầ Tạo ảnh chuyển động của nhân... làm game sẽ rất tốn kém và khối lượng công việc liên quan đến vẽ giao diện là rất lớn.Qua tìm hiếu em thấy J2ME có một gói hỗ trợ tốt cho lập trình game gọi là chung là Game API Các lớp của nó nằm trong javax.microedition.lcdui .game Một sổ lớp quan trọng của nó như: GameCanvas, Layer, Sprites, TiledLayer, và LayerManager 19 • LayerManager: lớp quản lý các Sprites và các TiledLayer 1 GameCanvas class GameCanvas... thấy Jame thì Hình trò chơi thúc 17 3kết lớp làm về giao diện 6.Được Thờihiếu gianlàmà đi tìm thì sẽ được tính ghi điểm lópDuke MIDlet và Jame lóp GameScreen sẽ cóđếquan hệ kếtngười họp chơi (Association) với nhau Thời gian mà Duke thấy càng thì điểm cànggiao cao (VisualMIDlet tìmmenu gamenhanh và GameScreen diện chơi game có thể gửi thông diệp đến nhau) Còn lóp GameDesign chỉ có quan hệ 2 Một số... thể làm game J2ME với kiến thức về lập trình di động J2ME, và đặc biệt là thành phần giao diện mức thấp Canvas của nó Lóp Canvas cho phép ta vẽ lên màn hình điện thoại, nó hỗ trợ vẽ các đổi tượng như đường thằng, đường tròn, tô màu một vùng màn hình, hay có thế copy một vùng màn hình vào vùng đệm và đặt nó vào chỗ khác Với những công cụ như thế ta có thể làm được một chương trình game từ đơn giản đến... hay vào một bộ đệm hình cùng với các phương thức xử lý sự kiện bàn phím Lóp này dùng cho các ứng dụng trò chơi cần điều khiến nhiều về màn hình Với phiên bản MIDP 2.0, công việc lập trình di động nói chung và lập trình game nói riêng sẽ dễ dàng hơn rất nhiều * Lóp GameCanvas mới có thế vẽ lên màn hình và đáp ứng lại dữ liệu nhập trong phần thân của vòng lặp game, thay vì dựa vào các thread vẽ và nhập... phóng Graphics 2 Layer class Trước khi đi đến hai lớp quan trọng tiếp theo là Sprite và TiledLayer ta phải nói về khái niệm Layer Lớp layer của Game API rất đơn giản nhưng nó được kế thừa bởi hai lớp Sprite và TiledLayer Layer được hiếu là một khối hình ảnh trong Game Tất cả các hình ảnh có thế hiện được trên màn hình đều kế thừa lớp này Các Layer là những ảnh mà ta có thể vẽ lên màn hình, ân đi, di chuyến... MĨDlet vì nó được mở rộng từ lớp Trong lớp GameScreen (GameCanvas) có một luồng chính thực hiện tất 32 31 +Cập nhật màn hình + Vẽ lại màn hình +Xử lỷ thời gian tính toán cho môi vòng lặp} Lớp GameCanvas mới có thế vẽ lên màn hình và đáp ứng lại dữ liệu nhập trong phần thân của vòng lặp game, thay vì dựa vào các thread vẽ và nhập liệu của hệ thổng.Đầu tiên, GameCanvas cho phép bạn truy xuất trực tiếp... chuơng trình một chiều với lớp GameScreen Chưoug trình có 3 lóp làm về giao diện: lớp GameDesign trợ API đế phương quản lý thức layerpublic mạnh chuyên và linh 1.Trong GameDesign: gồm cáchỗthuộc tínhdùng và các hoạt việc dựng game TiledLayer, phức tạp một cách hiệu quả hơn về tạogiúp ra các đốixây tượng đồ các họa cảnh như Sprite, Image Tạo các đối tượng đồ hoạ đế lớp GameScreen cập nhật lên màn hình... chơitượng rất đơn 1Logic Vẽ các lêngiản màn: hình 1 Trò có nhận 2 nhân vật là: 2 Chờchơi và xác phím bấmDuke và Jame 3 Tạo các hình ảnh chuyển động: Các nhân vật 7Ễr Duke Jame 4 Xác nhận trạng thái của game: Game Over, Running 2 Nhân vật Duke sẽ đi bộ trong khung đế tìm Jame 5 Lớp này là có một phương thức run() trong đó có vòng lặp While 3 Duke có thế đi, nhảy, hoặc rơi Jame thì đứng một chỗ và đảo mắt ... Methods GameDesig n Properties Methods Chương 3: Phân vàmột thiếtGameCanvas kế Game đơn GameScreen: chấtTích lớpgiản chứa tất họacủa lấy trò tù' lớp GameDesign đối Mô tượng tả luậtđồchơi chơi Tên... desktop thiết bị di động ngôn ngữ lập trình Java, C/C++, JavaScript, Ruby, Groovy, PHP NetBean IDE hồ trợ hai công cụ thiết kế game GameDesign VisualMidlet Trong GameDesign làm phần giao diện game. .. tô màu vùng hình, hay copy vùng hình vào vùng đệm đặt vào chỗ khác Với công cụ ta làm chương trình game từ đơn giản đến phức tạp Tuy nhiên thời gian làm game tốn khối lượng công việc liên quan