500 likes | 788 Views
Lập Trình Game Di Động Với J2ME. Nhóm sinh viên IT2: Tô Trọng Hiến Nguyễn Việt Phương Nguyễn Ngọc Dũng Phạm Trung Kiên. Mục lục. Cơ Sở Lý Thuyết J2ME Game API Tổng Quan làm game, Kịch Bản Game Xây dựng mô hình UML
E N D
Lập Trình Game Di Động Với J2ME Nhóm sinh viên IT2: Tô Trọng Hiến Nguyễn Việt Phương Nguyễn Ngọc Dũng Phạm Trung Kiên
Mục lục • Cơ Sở Lý Thuyết • J2ME Game API • Tổng Quan làm game, Kịch Bản Game • Xây dựng mô hình UML • Lập trình Game J2ME trong Netbeans • Giới thiệu luật chơi Kết luận Tài liệu tham khảo
I. Cơ Sở Lý Thuyết • Những hạn chế của lập trình di động • Các loại bộ nhớ: • Heap memory • RMS (Record Management System) • Sự phân mảnh • Sự đa dạng về giao diện điện thoaị
Tổng quan về ngôn ngữ J2ME • Sự phổ biến của J2ME • Nền tảng của J2ME • Căn bản lập trình J2ME
Nền tảng J2ME Như vậy J2ME gồm các tầng sau: • Tầng phần cứng thiết bị • Tầng máy ảo Java • Tầng cấu hình • Tầng hiện trạng
Căn bản lập trình J2ME Bộ MIDlet: • MIDlet có 3 phương thức: startApp(), pauseApp(), và destroyApp(). importjavax.microedition.midlet.*; public class MIDletExample extends MIDlet{ public void MIDletExample() { } • public voidstartApp() { } • public voidpauseApp() { } • public voiddestroyApp(boolean unconditional) { } }
II. J2ME Game API javax.microedition.lcdui.game. • Lớp Canvas • Lớp Layer • Lớp Sprite • Lớp TiledLayer • Lớp LayerManager
J2ME Game API • GameCanvas: kế thừa từ lớp Canvas, có thể coi đây là màn hình điện thoại • Layer: ít được sử dụng trực tiếp nhưng được kết bởi lớp Sprite và TiledLayer • Sprites: lớp để tạo các nhân vật và các đối tượng chuyển động • TiledLayer: lớp để tạo các khung cảnh khác nhau của game và tạo bản đồ • LayerManager: lớp quản lý các Sprites và các TiledLayer
Animation Int[] frameSequence = { 0, 1, 2, 3, 4, 5 ,6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; Chuỗi ảnh tạo chuyển động cho Sprire
TiledLayers • Một số khung cảnh trong game Alpha Wing
Xây dựng background • Một ảnh gồm hai tile
Tile Studio (TS) • Chức năng chính của TS là: • Vẽ các tile set (bộ các tile) có kích thước đa dạng • Vẽ bản đồ dựa vào các tile set đã thiết kế • Export ra ảnh (.bm; .png) để dùng cho game • Vẽ các nhân vật, hỗ trợ làm ra các nhân vật chuyển động • Đặc biệt phần mềm chỉ có khoảng 600 Kb và hoàn toàn miễn phí.
III. Tổng Quan Và Kịch Bản Game • Tổng quan làm game • Kịch bản game
Tổng quan về làm Game Phân loại game: • Action game: Game đua xe Harley. • Game Puzzle: game Tetris • Adventure Game: Game Diablo • Strategy Game: Warcraft • Traditional Game: đánh bài, xúc sắc..
Những đòi hỏi của một game Tùy vào từng loại game mà có những đòi hỏi này khác nhau về mức độ: • Fun – Chơi game phải vui nhộn • Addictive – Game phải có tính cuốn hút • Compelling – Game có tính cạnh tranh • Commercial successful – Cuối cùng game phải thành công trên thị trường
Các nhân vật trong game • Player (Người chơi) có những chức năng sau: • Di chuyển trái phải lên xuống • Quay tại chỗ theo hai chiều – để thiết lập chế độ bảo vệ. • Gặp địch trong bán kính bắnthì có khả năng bắn đạn theo hai chế độ: tự động hay nhấn phím. • Turret (pháo) – nhân vật này không di chuyển. • Bắn Player nếu player nằm trong bán kính bắn của nó
Các nhân vật trong game (2) • Black • Di chuyển trái phải lên xuống • Đi theo quỹ đạo bất kì trong bản đồ • Gặp Player trong bán kính bắnthì bắn • Fighter (Nhân vật này sẽ bổ xung sau này) • Di chuyển trái phải lên xuống • Đi và tìm Player nếu player nằm trong vùng phát hiện của nó • Gặp Player trong bán kính bắn thì bắn
IV. Xây dựng mô hình UML • Use Case Diagram • State Diagram • Class Diagram • Một số luồng quan trọng
V. lập trình Game J2ME trong Netbeans • GameDesign • VisualMIDlet
Ảnh dùng làm game Ảnh đươc phân chia thành các tile cùng kích thước
Nhân vật chuyển động • Tạo nhân vật chuyển động xang phải
Tạo bản đồ • Tạo scene từ các TileLayer và các Sprite
VI. Giới thiệu luật chơi Nhiệm vụ: • Câu chuyện bắt đầu khi máy bay chiến đấu của bạn được giao nhiệm vụ đặc biệt là xung kích vào hang ổ quân địch. Nhiệm vụ là phải tiêu diệt hết số pháo của địch để quân ta có thể vào tiếp ứng. • Bạn phải dè chừng với pháo vì chúng có sức công phá, tầm bắn rất xa, mạng lớn, tuy chỉ có nhược điểm bắn chậm và không di chuyển. Hãy lợi dụng điểm yếu đó vì bạn có tốc độ rất tốt. Tuy nhiên phải luôn luôn cảnh giác trước máy bay của địch . Chúng rất đông và luôn rình rập khắp nơi. Một điều không may là bạn sẽ không thể “xử lý” chúng. Luôn nhớ mục tiêu của bạn là phải diệt hết pháo. Chúc bạn thành công!
Cách chơi • Game có 3 loại bản đồ tương rộng hẹp khác nhau (mặc định là bản đồ trung bình). • Game cho phép chọn chế độ autofire trong Settings. Nếu chọn chức năng này Player sẽ tự bắn khi gặp quân địch (giống với quân địch hễ gặp Player thì bắn).
VII. Kết luận • Những kết quả đạt được • Những hạn chế • Hướng phát triển
Những kết quả đạt được Về kiến thức • Đã nắm bắt được cơ chế hoạt động của máy ảo Java trên điện thoại di động, nhờ đó hoàn thiện kỹ năng xây dựng một ứng dụng bằng ngôn ngữ J2ME. • Học được những kiến thức cơ bản về làm game cũng như lập trình thực tế trên ngôn ngữ J2ME. • Hiểu được những khái niệm cơ bản về ngôn ngữ UML. Về chương trình • Kích thước file JAR là 106 KB, phù hợp với hầu hết các dòng điện thoại có hỗ trợ MIDP 2.0. • Chương trình chỉ sử dụng những thư viện cơ bản của J2ME nên có thể chạy trên nhiều dòng máy
Những hạn chế • Kích thước của chương trình chưa được tối ưu hóa do các nguyên nhân: • Chưa tránh khỏi lối lập trình hướng đối tượng của J2SE. • Chưa có nhiều thời gian để tối ưu hóa các đoạn mã • Chưa có âm thanh cho game – chúng em mới chỉ tìm hiểu công cụ Adobe Audition xử lý âm thanh khá tốt. Nhưng vấn đề tìm dữ liệu bộ âm thanh và cho âm thanh vào game đòi hỏi nhiều thời gian và tỉ mỉ.
Hướng phát triển • Với 6 tuần tìm hiểu và code, em mới chỉ bắt đầu bước vào thế giới làm game di động. Hướng phát triển sau này của chúng em là nghiên cứu thêm các kỹ thuật làm game như tạo âm thanh, tạo game 3D, và tìm hiểu những công cụ mạnh hơn cho việc xây dựng đồ họa của Game.
Tài liệu tham khảo • [1]. J2ME Game Programming – by Martin Wells • [2]. Wireless Game Development in Java with MIDP.2.0 - by Ralph Barbagallo • [3]. J2ME Game Development with MIDP2 – by Jason Lam