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

56 334 0
Lập trình trò chơi lines cho điện thoại trên J2ME

Đ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

Mục lục LấI N I ĐầU CHơNG I TặNG QUAN Về J2ME 1.1 GII THIệU Về JAVA V CôNG NGHệ J2ME 1.2 KIếN TRểC CẹA J2ME 1.3 ĐNG GI V TRIểN KHAI ỉNG DễNG 11 1.4 TẩI U Mã CHơNG TRìNH V GIảM KíCH THC ỉNG DễNG 13 2.1 MIDLET V đẩI TẻNG DISPLAY 14 2.2 SCREEN (GIAO DIêN NGấI DẽNG CấP CAO) 18 2.3 Hệ THẩNG QUảN Lí BảN GHI (RECORD MANAGEMENT SYSTEM - RMS) 21 3.1 CáC HM API ậ MỉC THấP 29 3.2 LP CANVAS 29 3.3 LP GRAPHICS 32 3.4 CáC GI Hầ TRẻ CHO LậP TRìNH GAME 35 4.1 TặNG QUAN Về LM GAME 44 4.2 GIảI QUYếT BI TOáN TRONG TRSS CHơI LINES 45 4.3 XâY DNG TRSS CHơI LINES TRêN J2ME 48 4.4 KếT QUả THU đẻC 51 CHơNG II 14 LậP TRìNH V I J2ME 14 CHơNG III 29 LậP TRìNH GAME BằNG J2ME .29 CHơNG IV 44 XâY D NG CHơNG TRìNH TRSS CHơI LINES 44 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 ứ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 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 lu 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 J2ME 1.1 Giới thiệu Java v công nghệ J2ME 1.1.1 Giới thiệu Java Java 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 cha 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: + J2SETM (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ỏ + J2EETM (Java Platform, Enterprise Edition): Phiên dành cho máy chủ với nhớ lớn Bao gồm 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 + J2METM (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 nhng đ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 (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ụ 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, lu 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 Hastable 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 lu 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 chấp thuận ngời sử dụng o Thêm API hỗ trợ Multimedia Một nhng 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, nhng 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 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 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 nhng thực tế thiết bị J2ME hỗ trợ thiết bị lu 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) để lu trữ cho thiết bị 1.2 Kiến trúc J2ME Kiến trúc tổng quát J2ME dựa tảng Java Hình 1.3 Kiến trúc tổng quát J2ME dựa tảng Java Trong thành phần J2ME bao gồm Configuration Profile a Configuration (Cấu hình) Là đặc tả môi trờng phần mềm cho dòng thiết bị đợc phân loại tập hợp đặc tính Ví dụ nh: - Kiểu số lợng nhớ - Kiểu tốc độ vi xử lý - Kiểu mạng kết nối Do yêu cầu đặc tả môi trờng phát triển phần mềm, nên nhà sản xuất thiết bị nh Samsung, Nokia,bắt buộc phải thực thi đầy đủ đặc tả Sun qui định để lập trình viên dựa vào môi trờng lập trình quán thông qua quán này, ứng dụng đợc tạo mang tính độc lập thiết bị cao Ví dụ nh lập trình viên viết chơng trình game cho điện thoại Samsung sửa đổi chơng trình cách tối thiểu để chạy điện thọai Nokia Hiện Sun đa dạng Configuration: - CLDC (Connected Limited Device Configuration - Cấu hình thiết bị kết nối giới hạn): đợc thiết kế để nhắm vào thị trờng thiết bị cấp thấp (low-end), thiết bị thông thờng máy điện thọai di động PDA với khoảng 512 KB nhớ Vì tài nguyên nhớ hạn chế nên CLDC đợc gắn với Java không dây (Java Wireless ), dạng nh cho phép ngời sử dụng mua tải ứng dụng Java, ví dụ nh Midlet - CDC (Connected Device Configuration - Cấu hình thiết bị kết nối): CDC đợc đa nhắm đến thiết bị có tính mạnh dòng thiết bị thuộc CLDC nhng yếu hệ thống máy để bàn sử dụng J2SE Những thiết bị có nhiều nhớ (thông thờng 2Mb) có xử lý mạnh Các sản phẩm kể đến nh máy PDA cấp cao, điện thoại web, thiết bị gia dụng gia đình Cả dạng Cấu hình kể chứa máy ảo Java (Java Virtual Machine) tập hợp lớp (class) Java để cung cấp môi trờng cho ứng dụng J2ME Tuy nhiên, ý thiết bị cấp thấp, hạn chế tài nguyên nh nhớ xử lý nên yêu cầu máy ảo hổ trợ tất tính nh với máy ảo J2SE, ví dụ, thiết bị thuộc CLDC phần cứng yêu cầu phép tính toán dấu phẩy động, nên máy ảo thuộc CLDC không đợc yêu cầu hỗ trợ kiểu float double Bảng so sánh thông số kỹ thuật CDC CLDC: CLCD CDC Ram 32K, 512K 256K Rom 128K, 512K 512K Nguồn l- Có giới hạn ợng (nguồn Pin) Không giớ hạn Network Nhanh Chận 10 Hình 3.10 Một blackground đợc xây dng từ ma trận map[][] Bằng cách sử dụng tile để tạo background ta tạo đồ mà không cần thêm ảnh 3.4.4 TiledLayer class Mỗi lớp TiledLayer có ảnh, ảnh đợc chia nhỏ thành tile theo quy tắc khác Sprite class chỗ lớp Sprite chia ảnh thành tile vị trí thứ lớp TiledLayer lại bắt đâu vị trí vị trí tiled mang giá trị null, TiledLayer gồm mảng tile đặt theo thứ tự định ảnh TiledLayer đợc phân chia nhiều tiles đợc đánh số Một đồ đợc tạo nên từ TiledLayer hay nhiều TiledLayer Lớp TiledLayer cho phép lớp lớn đợc tạo mà không cần hình ảnh vô lớn Kỹ thuật thờng đợc sử dụng tảng chơi game 2D Hàm tạo lớp TiledLayer nh sau: public TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight); - Colums số cột TiledLayer, hay số tiles hàng - Rows số hàng TiledLayer, hay số tiles cột - Image ảnh TiledLayer - tileWidth tileHeight cho biết kích thớc tile Khi muốn thay đổi nội dung tiled TiledLayer ta có phơng thức: public void setCell(int col, int row, int tileIndex): ý nghĩa đặt tiled có vị trí (col, row) TiledLayer với tiled có số 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); + col, row, numCols, nunRows: xác định miền chữ nhật cần phủ tiled + tileIndex: số tile đem phủ Để xác định số tile TiledLayer ta dùng phơng thức public int getCell(int col, int row); Tile phần lớn đợc dùng để tạo đối tợng tĩnh nh đồ, nhiên để tạo khung thú vị ta nên có tiled động (các tile đơn giản 42 tiles thay đổi hình ảnh sau chu kì vẽ lại hình) Các tiled động đối tợng hoạt động không chịu điều khiển ngời chơi mà hoạt động theo chu kì Các bớc để tạo tile động nh sau: Để xác định tile tile động TiledLayer ta dùng phơng thức: + public int createAnimatedTile(int staticTileIndex); + staticTileIndex số tile TiledLayer Sau lần vẽ lại hình, TiledLayer đợc vẽ lại tiled đợc cập nhật theo Để thay đổi vị trí tile với tile vị trí khác ta dùng phơng thức: public void setAnimatedTile(int animatedTileIndex, int staticTileIndex); Trong phơng thức tile có số animatedTileIndex đợc cập nhật hình ảnh tile có số staticTileIndex 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 nhng 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 tốt cho tính thống xuất đố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 Layer vào lớp vị trí có số index + remove (Layer l): loại bỏ Layer khỏi LayerManager + getLayerAt (int index): lấy Layer có số index 43 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 điều khiển 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 ngời, buộc 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 phu lu (Game Diablo) 44 + Strategy Game: Game chiến thuật 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 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 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 truyến Có thể thấy đá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 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 thuật toán BFS, ta xem bảng nh đồ 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 để lu tọa độ x, hàng đợi để lu tọa độ y Và hai 45 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[] cha 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[] - Lu lại đờng từ phần từ đến vị trí (lu 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) thuận tiện cho việc di chuyển bóng trò chơi 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 46 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 hớng xuống dới ô (i, j) - Tăng biến đếm } 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 thuật 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 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); 47 { Bật bit thứ k 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 thực tính điểm 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 nh sau: Function Vector checkBlocks() { Trong (Hàng đợi[] cha 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 cha 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ự: 48 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 + 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, nhng 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: 49 Viết Game cho mobile phần thiếu hiệu ứng âm thanh, trớc với 1.0 điều cha 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 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, nhng 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 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à: 50 Hình 4.2 Hình sử dụng xây dựng trò chơi 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 muốn thay đổi nội dung tile 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 nh 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 51 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 để lu trữ liệu Chính sử dụng lu trữ ghi (Record Store) giải quết đợc vấn đề Lu trữ ghi cho phép lu 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 lu 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 lu 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 52 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 nh vật thiếu sống ngày Cùng với 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, biến điện thoại nhỏ bé 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 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 53 - 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 54 tài liệu tham khảo Ee-Peng Lim 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 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 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 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) 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ỏ 55 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 Intergrated Development Environment (IDE) 12 Record Management System (RMS) 13 Personal Digital Assistant (PDA) 14 Mobile Media API (MMAPI) 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 Lu 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 56 [...]... viết code xử lý cho phơng thức đó e Các hành động trong xử lý các trò chơi: MIDP thờng đợc sử dụng để tạo các trò chơi trên nền Java nên cũng hỗ trợ lập trình game bằng cách định nghĩa sẵn một bộ các phím bấm xử lý sự kiện game Mỗi sự kiện game cũng đợc gán bởi một số nguyên nh sự kiện phím bấm Các sự kiện chính bao gồm các sự kiện sang trái, sang phải, lên, xuống và bắn Với các loại điện thoại có hỗ trợ... dùng đầu cuối Sau khi đã gỡ rối và kiểm tra mã lệnh trên trình giả lập (simulator), mã lệnh đã sẵn sàng đợc kiểm tra trên điện thoại di động và sau đó đợc phân phối cho ngời dùng - Download ứng dụng về thiết bị di động: Ngời dùng cách để download tập tin JAR chứa ứng dụng về thiết bị di động: o Kết nối cáp dữ liệu từ PC sang cổng dữ liệu của điện thoại di động: Việc này yêu cầu ngời dùng phải có tập... chơng trình đang chạy e ChoiceGroup: Thành phần ChoiceGroup cho phép ngời dùng chọn từ một danh sách đầu vào đã đợc định nghĩa trớc f Spacer: Spacer là thành phần không nhìn thấy, đợc dùng để định vị trí cho các đối tợng khác trên màn hình hiển thị Chúng ta có thể dùng Spacer để chỉ rõ khoảng trắng theo chiều dọc và chiều ngang giữa các thành phần, đơn giản bằng cách chỉ ra chiều dài và chiều rộng cho. .. dùng để cho phép nhập nhiều dòng Thành phần TextBox và TextField có những ràng buộc giống nhau trong việc chỉ định loại nội dung đợc phép nhập vào c Alert và AlertType: Một Alert đơn giản là một hộp thoại rất nhỏ thông báo cho ngời dùng biết có một sự kiện xảy ra Có 2 loại Alert: - Modal: là loại hộp thoại thông báo đợc trình bày cho đến khi ngời dùng ấn nút đồng ý 20 - Non-modal: là loại hộp thoại thông... toạ độ trong lập trình Windows, gốc toạ độ (0,0) nằm ở góc trái trên của màn hình Tung độ y tăng dần theo chiều dọc từ trên xuống, hoành độ x tăng dần theo chiều từ trái sang phải Độ dày mặc định của các đối tợng đồ hoạ trong J2ME là 1 pixel 29 Hình 3.1 Hệ trục tọa độ của đối tợng đồ họa trong J2ME Đối tợng Canvas đặc trng bởi 2 giá trị là chiều dài và chiều rộng Hai giá trị này là cố định cho các đối... thành phần cần xuất hiện trên màn hình cũng nh thời điểm 17 phù hợp để hiển thị chúng Đối tợng Display cần thiết cho bộ quản lý việc trình bày trên thiết bị điều khiển thành phần nào sẽ đợc hiển thị lên trên thiết bị b Displayable: Mặc dù chỉ có một đối tợng Display ứng với mỗi MIDlet, nhng nhiều đối tợng trong một MIDlet có thể đợc hiển thị ra trên thiết bị nh Forms, TextBoxes, ChoiceGroups, Đó chính... anchor) Chúng ta cũng áp dụng từng bớc khi vẽ ảnh cũng giống nh khi xuất chuỗi ra màn hình, đều phải bắt đầu bằng việc thiết lập tọa độ x, y cũng nh điểm neo Tuy nhiên, các điểm neo cho việc hiển thị ảnh cũng khác với việc xuất chuỗi là một bức ảnh có một điểm trung tâm Ví thế VCENTER đợc thay thế cho giá trị BASELINE khi làm việc với ảnh 34 Hình 3.5 Các điểm neo cho vẽ hình 3.4 Các gói hỗ trợ cho lập. .. bằng cách thêm vào các class để bổ trợ các tính năng cho từng thiết bị chuyên biệt Do mỗi profile định nghĩa một tập hợp các class khác nhau, nên thờng không thể chuyển một ứng dụng Java viết cho một profile này sang chạy trên một máy hỗ trợ một profile khác Với lý do đó, bạn không thể lấy một ứng dụng viết trên J2SE hay J2EE và chạy trên các máy hỗtrợ J2ME Sau đây là các profile tiêu biểu: - Mobile Information... kiểm tra kiểm tra tất cả các lớp đều có một thuộc tính hợp lệ đã đợc thêm vào bởi bộ tiền kiểm tra trên trạm phát triển ứng dụng Nếu tiến trình tiền kiểm tra thất bại thì ứng dụng sẽ không đợc download về thiết bị di động - Lu trữ chơng trình: bộ quản lý ứng dụng trên thiết bị di động sẽ lu trữ chơng trình trên thiết bị di động Bộ quản lý ứng dụng cũng điều khiển trạng thái của ứng dụng trong thời gian... Hầu hết các nhà phát triển game di động dựa trên khả năng vẽ nh các đờ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 rồi đặt nó chỗ khác và các hình dạng nh là một phần tích quá trình phát triển Nếu các hàm API cấp cao cho phép chúng ta tạo ra giao diện cho các ứng dụng theo chuẩn, thì các hàm API cấp thấp cho phép chúng ta có thể thể hiện các ý tởng ... 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 Lines9 8 theo sau phiên Lines2 003, 2007, phiên trang web chơi Lines trực... qui định để lập trình viên dựa vào môi trờng lập trình quán thông qua quán này, ứng dụng đợc tạo mang tính độc lập thiết bị cao Ví dụ nh lập trình viên viết chơng trình game cho điện thoại Samsung... 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

Ngày đăng: 15/12/2015, 12:41

Từ khóa liên quan

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 v công nghệ J2ME

    • 1.2 Kiến trúc của J2ME

    • 1.3 Đóng gói và triển khai ứng dụng

    • 1.4 Tối ưu mã chương trình và giảm kích thước ứng dụng

    • Chương II

    • LậP TRìNH VớI J2ME

      • 2.1 MIDlet và đối tượng Display

      • 2.2. Screen (giao diên người dùng cấp cao)

      • 2.3. Hệ thống quản lý bản ghi (Record Management System - RMS)

      • Chương III

      • Lập trình Game bằng J2ME

        • 3.1 Các hàm API ở mức thấp

        • 3.2 Lớp Canvas

        • 3.3 Lớp Graphics

        • 3.4 Các gói hỗ trợ cho lập trình game

        • Chương IV

        • Xây dựng chương trình trò chơi Lines

          • 4.1 Tổng quan về làm Game

          • 4.2 Giải quyết bài toán trong trò chơi Lines.

          • 4.3 Xây dựng trò chơi Lines trên J2ME.

          • 4.4 Kết quả thu được.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan