Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
347,87 KB
Nội dung
ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA : CÔNG NGHỆ PHẦN MỀM BÁO CÁO MÔN HỌC : LẬP TRÌNH NHÚNG CĂN BẢN GAME STAR WARS Giảng viên hướng dẫn : ThS. PHAN NGUYỆT MINH Sinh viên thực hiện : LÊ ĐỨC TIÊN, LƯƠNG HỮU MINH Lớp : CNPM04 Khóa : 04 TP. Hồ Chí Minh, tháng 12 năm 2011 MỞ ĐẦU Hiện nay, công việc lập trình trên thiết bị di động ngày càng phát triển. Nhiều công nghệ đã ra đời giúp chúng ta hiện thực hóa ý tưởng của mình lên trên các thiết bị nhỏ gọn ấy. Ngoài công nghệ .NET Compact Framework của Microsoft, có thể nói công nghệ Java nói chung và J2ME (Java 2 Micro Edition) nói riêng do Sun phát triển đã tạo nên một bước ngoặt lớn cho nhân loại. Giờ đây, chúng ta có thể làm hầu như mọi thứ trên chiếc di động bé nhỏ của mình. Và giải trí cũng là một trong những nhu cầu thiết yếu mà chiếc điện thoại di động có thể đáp ứng cho người sử dụng. Cùng với sự phát triển của công nghệ game trên máy tính thì game trên di động cũng ngày một phát triển.Hơn nữa, game cũng chính là một thành phần cơ bản nhất cho mọi chiếc điện thoại di động. Do vậy, để tạo nên các game hay và hấp dẫn thì việc lập trình game trên di động là một công việc tất yếu. Nhận thức được điều đó, nhóm chúng em đã phát triển một game nho nhỏmang tên “Game STAR WARS”. Cấu trúc của bài báo cáo gồm có 5 phần chính : - Chương 1 – Giới thiệu. - Chương 2 – Phân tích. - Chương 3 –Thiết kế. - Chương 4 – Cài đặt và thử nghiệm. - Kết luận. Nêu lên những vấn đề, kết quả đã đạt được và hướng phát triển trong tương lai. LỜI CẢM ƠN Đầu tiên, chúng em xin chân thành cảm ơn côPhan Nguyệt Minh đã truyền đạt cho chúng em những kiến thức quý báu trong môn “Lập trình nhúng căn bản” để chúng em hoàn thành bài báo cáo này. Chúng em cũng xin gửi lời cảm ơn chân thành đến các thầy cô trong trường ĐH Công Nghệ Thông Tin đã tận tình giúp đỡ chúng em trong thời gian học vừa qua. Do kiến thức có hạn nên bài làm của chúng em không tránh khỏi nhiều thiếu sót. Chúng em rất mong nhận được sự đóng góp quý báu của các thầy cô. NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN MỤC LỤC Trang 6 CHƯƠNG 1 – GIỚI THIỆU 1.1. Giới thiệu về đề tài Hiện nay, lập trình game trên di động là một công việc khá khó khăn và vấtvả.Với số lượng code lớn và phức tạp thì đòi hỏi người lập trình phải tập trung cao. Lập trình game trên di động khó khăn hơn lập trình trên PC rất nhiều do đặc tính về phần cứng của chiếc điện thoại thường rất hạn chế như bộ nhớ ít, bộ vi xử lý chậm, … Vì thế, công việc tối ưu code chương trình, cấp phát và thu hồi bộ nhớ hợp lý để cho game có thể chạy tốt trên thiết bị thật luôn là vấn đề được quan tâm hàng đầu. Phát triển game trên di động là một công việc rất cần thiết trong cuộc sống. Game di động cũng góp phần nào đó làm cho thế giới xung quanh thêm sinh động, giúp cho mọi người giải trí hoặc tìm cảm giác mới mẻ. Game STAR WARS của nhóm chúng em lấy ý tưởng trong bộ phim cùng tên “Star Wars”và game bắn máy bay. Khi chơi bạn sẽ nhập vai vào chiến binh Jedi lái chiếc phi thuyền của mình chiến đấu với quân xâm lược định thôn tính hành tinh của bạn. Bạn cần phải vượt qua các thử thách và tiêu diệt chỉ huy của địch để hoàn thành nhiệm vụ bảo vệ hành tinh của mình. 1.2. Mục tiêu Mục tiêu của nhóm chúng em là phát triển một ứng dụng đơn giản có thể chạy tốt trên chiếc điện thoại di động. Và ứng dụng game chính là sự lựa chọn của nhóm chúng em. Với công nghệ J2ME, kiến thức lập trình hướng đối tượng và sự giúp đỡ tận tình của cô, nhóm chúng em đã hoàn thành việc mô phỏng game. Tuy nhiên trong game còn nhiều thiếu sót do thiếu kinh nghiệm thực tiễn nhưng nhóm chúng em đã cố gắng để hoàn thành những ý tưởng cơ bản của game. Hy vọng rằng phiên bản tiếp theo của game có thể bù đắp được những thiếu sót hiện có của nó. GVHD : ThS. Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 7 1.3. Các chức năng chính Game này sở hữu gần như toàn bộ các yêu cầu, chức năng cơ bản mà một game bắn máy bay đơn giản cần phải có. Các chức năng chính của game có thể được tóm lược như sau : • Tàu mình sẽ có các đại lượng như áo giáp, máu, điểm số, đạn, … và các chức năng như là tăng tốc, bắn đạn, ăn các vật thể để tăng áo giáp, máu, điểm số, … • Tàu địch sẽ có các đại lượng như tốc độ di chuyển, tốc độ bắn, … và các chức năng như là bắn, ẩn nắp, tăng tốc đạn, … • Chỉ huy địch sở hữu toàn bộ các chức năng như tàu thường nhưng có thêm các đại lượng máu, điểm thưởng, … và các chứ năng như chuyển hướng di chuyển, tạo ra các cục đá, … • Để làm cho game thêm sinh động thì không thể thiếu các vật thể lạ xuất hiện như những cục máu, cục đá, … GVHD : ThS. Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 8 CHƯƠNG 2 – PHÂN TÍCH + Về khái niệm, việc phân tích yêu cầu bao gồm ba loại hoạt động sau: • Làm rõ yêu cầu (Eliciting requirements): giao tiếp với khách hàng và người sử dụng để xác định các yêu cầu của họ. • Xem xét yêu cầu (Analyzing requirements): xác định xem các yêu cầu được đặt ra có ở tình trạng không rõ ràng, không hoàn chỉnh, đa nghĩa, hoặc mâu thuẫn hay không, và giải quyết các vấn đề đó. • Làm tài liệu yêu cầu (Recording requirements): các yêu cầu có thể được ghi lại theo nhiều hình thức, chẳng hạn các tài liệu ngôn ngữ tự nhiên, các tình huống sử dụng (use case),câu chuyện sử dụng (user story), hoặc các đặc tả tiến trình. + Các yêu cầu về game của nhóm chúng em bao gồm : • Game thuộc dòng Molibe Java Games 240x320. • Game chạy tốt trên các dòng điện thoại từ cấp trung bình đến cấp cao. • Game có đầy đủ các chức năng cơ bản của một game bắn máy báy thông thường. • Game có hỗ trợ người chơi các mức chơi khác nhau (dễ, trung bình, khó). • Game có hỗ trợ phần điều chỉnh âm lượng cho người chơi. • Game có khả năng lưu lại 5 mức điểm số cao nhất của người chơi. • Game có phần liên hệ với người lập trình khi gặp trục trặc về kỹ thuật. • Game có khả năng quay lui khi game over. • … GVHD : ThS. Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 9 CHƯƠNG 3 – THIẾT KẾ 3.1. Cấu trúc chương trình 3.1.1. Cấu trúc của Game 3.1.2. Cấu trúc của Menu 3.1.3. Cấu trúc của MainMidlet 3.1.4. Cấu trúc của GameManager GVHD : ThS. Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 10 3.2. Giới thiệu các lớp 3.2.1. Lớp “BackgroundLayer” : được kế thừa từ lớp TiledLayer, dùng để load hình nền cho màn hình level và màn hình game chính. 3.2.1.1. Các thuộc tính chính : không có. 3.2.1.2. Các phương thức chính : • BackgroundLayer(): constructor dùng để khởi tạo đối tượng mới. 3.2.2. Lớp “Boss” : được kế thừa từ lớp Sprite, dùng để tạo ra đối tượng tàu chỉ huy địch. 3.2.2.1. Các thuộc tính chính : active (sống/chết) ; xSpeed, ySpeed (tốc độ x, y) ; fireTick (thời gian cuối cùng khi nó xuất hiện) ; shootRate (khoảng thời gian giữa 2 lần bắn) ; RATE (tỷ lệ frame trên giây), … 3.2.2.2. Các phương thức chính : • Boss() : constructor dùng để khởi tạo đối tượng mới. • destroy() : hủy đối tượng. • fire() : trả về true nếu khoảng thời gian giữa 2 lần bắn là hợp lý, ngược lại là false. • advance() : vẽ lại đối tượng này lên màn hình tùy theo biến thời gian. 3.2.3. Lớp “Bullet” : được kế thừa từ lớp Sprite, dùng để tạo ra đối tượng viên đạn. 3.2.3.1. Các thuộc tính chính : active, ySpeed, RATE, … 3.2.3.2. Các phương thức chính :destroy(), advance() như lớp Boss. Ngoài ra còn có các phương thức sau : • Bullet() : constructor dùng để khởi tạo đối tượng mới. • shoot() : thể hiện viên đạn lên màn hình. GVHD : ThS. Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh [...]... Hình 3.2 Màn hình Menu Game Menu là phần bắt buộc trong quá trình làm Game Một Game Menu thể hiện đầy đủ các chức năng có trong Game Ở đây chúng em thiết kế Menu gồm có: New Game, Settings, High Scores, Help, About và Exit • New Game: Vào game mới Hình 3.3 Màn hình Level trước khi vào game GVHD : ThS Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 16 Hình 3.4 Màn hình game chính • Settings:... 3.2.11 Lớp “GameScreen” : được kế thừa từ lớp GameCanvas và giao diện Runnable dùng để tạo ra đối tượng màn hình chính của game 3.2.11.1 Các thuộc tính chính : tick(biến điều khiển thời gian), delay (khoảng thời gian giữa 2 lần render), … 3.2.11.2 Các phương thức chính : start(), stop(), run() và • GameScreen() : constructor dùng để khởi tạo đối tượng mới • render() : vẽ lại màn hình chính của game • advance()... giả lập : Điện thoại DefaultCldcMsaPhone2, DefaultFxPhone1 trong Netbeans ; DefaultColorPhone trong Wireless Toolkit • Thiết bị thật : Nokia N78 • Đánh giá kết quả : Giả lập chạy tốt, thiết bị thật chạy tốt khi không có âm thanh, chạy hơi giật khi load âm thanh lên GVHD : ThS Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 20 KẾT LUẬN Chúng em đã điểm qua các phần cơ bản nhất của việc lập trình. .. SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 20 KẾT LUẬN Chúng em đã điểm qua các phần cơ bản nhất của việc lập trình game trên di động bằng công nghệ J2ME thông qua một ví dụ game cụ thể Qua đó, chúng ta cũng phần nào thấy được tầm quan trọng của game nói chung và game trên di động nói riêng Game của nhóm chúng em chỉ dừng lại ở mức độ đơn giản, nhằm giúp cho người chơi có một cái nhìn tổng quát về nó Hướng... 3.7 Màn hình Help • About:Hiển thị thông tin của nhóm lập trình, địa chỉ liên hệ Người sử dụng có bất cứ lỗi phát sinh nào trong game có thể liên hệ tại đây GVHD : ThS Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 18 Hình 3.8 Màn hình About • Exit: Ở phần này, nếu người chơi chọn thì sẽ hiện ra câu hỏi để hỏi người chơi có muốn thoát game hay không Hình 3.9 Màn hình Exit GVHD : ThS Phan... nữa, hy vọng rằng phiên bản sau của game có thêm các đặc tính như là : • Sửa các lỗi hiện có • Tăng số level lên • Có khả năng kết nối mạng để cập nhật các phiên bản trên mạng về • … GVHD : ThS Phan Nguyệt Minh SVTH : Lê Đức Tiên, Lương Hữu Minh Trang 21 DANH MỤC TÀI LIỆU THAM KHẢO [1] Jason Lam, “Settings and High Scores”, J2ME & Gaming [2] Martin J.Wells, “The J2ME API”, J2METM Game Programming,Course... hình chính của game • advance() : gọi hàm advance trong lớp GameManager 3.2.12 Lớp “MainMidlet” : được kế thừa từ lớp MIDlet và giao diện CommandListener dùng để quản lý các đối tượng settings, high scores, … và kết hợp các lớp khác lại với nhau 3.2.12.1 Các thuộc tính chính : Menu, SplashScreen, GameScreen, … 3.2.12.2 Các phương thức chính : startApp(), pauseApp(), destroyApp() và • MainMidlet() : constructor... trúng đạn là hợp lý, ngược lại là false 3.2.10 Lớp “SplashScreen” : được kế thừa từ lớp GameCanvas và giao diện Runnable dùng để tạo ra đối tượng màn hình khởi động game 3.2.10.1 Các thuộc tính chính : image(hình nền), … 3.2.10.2 Các phương thức chính : • SplashScreen() : constructor dùng để khởi tạo đối tượng mới • start() : tạo một thread mới • paint() : vẽ hình nền • dismiss() : chuyển qua màn hình... (Splash screen) Hình 3.1 Màn hình khởi động Có nhiều cách để tạo ramàn hình Splash screen.Chúng ta có thể dùng lớp Canvas kết hợp với Timer hay dùng lớp GameCanvas kết hợp với Thread, …Chức năng của màn hình Splash Screen này chủ yếu dùng để trang trí cho game Trong các doanh nghiệp, màn hình splash Screen này chủ yếu dùng để quảng bá cho nhà phát triển Màn hình này có thời gian chờ vào khoảng 3000ms Nhưng... helpForm() : khởi tạo Form Help • aboutForm() : khởi tạo Form About 3.2.13 Lớp “GameManager” : được kế thừa từ lớp LayerManager, dùng để kết hợp các đối tượng ở các lớp khác lại với nhau 3.2.13.1 Các thuộc tính chính : các biến tạo hình ảnh, các mảng Enemy, các mảng Explosion, các mảng Item, … 3.2.13.2 Các phương thức chính : • GameManager() : constructor dùng để khởi tạo đối tượng mới • paint() : vẽ lại . MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA : CÔNG NGHỆ PHẦN MỀM BÁO CÁO MÔN HỌC : LẬP TRÌNH NHÚNG CĂN BẢN GAME STAR WARS Giảng viên hướng dẫn : ThS. PHAN NGUYỆT MINH Sinh viên thực hiện : LÊ ĐỨC. đề tài Hiện nay, lập trình game trên di động là một công việc khá khó khăn và vấtvả.Với số lượng code lớn và phức tạp thì đòi hỏi người lập trình phải tập trung cao. Lập trình game trên di động. hay và hấp dẫn thì việc lập trình game trên di động là một công việc tất yếu. Nhận thức được điều đó, nhóm chúng em đã phát triển một game nho nhỏmang tên Game STAR WARS . Cấu trúc của bài