Game BreakOut
Trang 1MỞ ĐẦU 2
LỜI CẢM ƠN 3
CHƯƠNG I : GIỚI THIỆU 5
1 Giới thiệu về đề tài 5
2 Mục tiêu 5
3 Các chức năng chính 5
2.3 Hiệu ứng đồ họa 13
3.Kiểm Tra các Va Chạm của Quả Bóng 14
3.3 Va chạm giữa Quả bóng Với Tường 16
4.Kiểm soát Tốc dộ Game 17
5 Save và Load Game 17
CHƯƠNG IV: CÀI ĐẶT VÀ THỬ NGHIỆM 17
KẾT LUẬN 19
[2] Beginning Java ME Platform – Ray Rischpater 20
[3] J2ME™ Game Programing – Martin J Wells 20
Trang 2MỞ ĐẦU
Số lượng thiết bị di động ngày càng tăng ở Việt Nam, nhiều người đã coi điện thọai di động như một vật không thể thiếu trong cuộc sống hằng ngày Cùng với sự gia tăng số lượng người dùng thì các tính năng dành cho điện thoại cũng tăng theo tương ứng Hàng loạt các tính năng cao cấp được giới thiệu như chụp hình số, nghe nhạc và đặc biệt nhất là có thể sử dụng các chương trình không phải do nhà sản xuất điện thọai cung cấp Đây có thể được coi là một cuộc cách mạng trong lĩnh vực di động, nó biến chiếc điện thọai nhỏ bé của bạn thành một chiếc máy tính thu nhỏ, với những chủng loại điện thoại này bạn có thể đọc báo, tiểu thuyết, tra từ điển, bản đồ và nhất là mang thế giới giải trí đến bên cạnh, những bản nhạc hay, những games hay sẽ luôn sẵn sàng mỗi khi bạn cần đến
Bài báo cáo của nhóm chúng em sẽ nói về cách thiết kế một game đơn giản có thể sử dụng trên điện thoại di động Đó là Game “Breakout”
Trang 3LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn cô Phan Thị Nguyệt Minh đã dạy chúng em môn “Lập trình nhúng căn bản “.Qua đó giúp chúng em có những kiến thức cơ bản về ngôn ngữ java để có thể hoàn thành tốt đề tài này
Tuy nhiên do kiến thức có hạn nên đề tài không tránh khỏi những thiếu sót, rất mong nhận được sự đóng góp ý kiến của cô và các bạn để đề tài của nhóm chúng em được hoàn thiện hơn
Trang 4NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Trang 5CHƯƠNG I : GIỚI THIỆU
1 Giới thiệu về đề tài
Hiện nay, lập trình game nói chung hay lập trình game trên di động nói riêng là một công việc khá khó khăn và vất vả với số lượng code lớn và phức tạp đòi hỏi sự tập trung cao, khả năng sáng tạo, sự đam mê và nhiều yếu tố khác 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ế 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 mình 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.Việc chơi game trên di động hiện nay là một nhu cầu giải được rất nhiều người quan tâm Vì vậy việc tạo ra và phát triển game trên di động là một công việc cần thiết
Game “ Breakout” của nhóm chúng em là một game thuộc thể loại phá gạch quen thuộc Trong game người chơi phải điều khiển thanh chắn và quả bóng để phá hủy tất cả những viên gạch để đạt được cấp độ tiếp theo
2 Mục tiêu
Mục tiêu của nhóm chúng em là phát triển một ứng dung game đơn giản chay tốt trên điện thoại di động với nền tảng là công nghệ J2ME và các kến thức về lập trình hướng đối tượng và ngôn ngữ lập trình Java
3 Các chức năng chính
Game của nhóm chúng em đã đáp ứng hầu như đầy đủ các chức năng cần có của một game “Breakout” đơn giản:
-New game
-Resume
Trang 6-Sound: on/off
-Exit
Game có hỗ trợ cho cả bàn phím và màn hình cảm ứng
CHƯƠNG II:THIẾT KẾ GIAO DIỆN VÀ TÍNH NĂNG
1 Màn hình Menu:
Trang 72 Màn hình Play:
Trang 83 Mô tả tính năng:
Game được nâng cấp và thêm mới nhiều tính năng hơn so với breakout
cổ điển, làm game bớt nhàm chán và tạo cảm giác hứng thú hơn cho người chơi:
Game có giao diện và hiệu ứng đồ họa đẹp như:
+Phát ra các cung sung điện sấm sét
+Nổ pháo hoa khi va chạm với gạch
Trang 9+Shock ánh sáng rung khi va chạm với 4 tường.
+Phát pháo hóa và sóng rung lan truyền hình eclipse khi thanh chắn không đỡ được bóng
Trang 10+Ngoài ra, game còn có tính năng lưu và load map hổ trợ lưu và chơi lại khi có việc bận
Trang 11CHƯƠNG III: CẤU TRÚC VÀ GIẢI THUẬT
1.Cấu trúc chương trình:
1.1 Cấu trúc của Game
Trang 121.2 Cấu trúc của Menu
1.3 Cấu trúc của MainMidlet
Trang 131.4 Cấu trúc của GameManager
2 Phân tích chương trình
2.1 Tương tác cảm ứng(Touch Gesture):
Game có tương tác cảm ứng có thể thich hợp với các dòng điện thoại cảm ứng
2.2 Âm thanh
Với sự hỗ trợ của các thư viện trong MMAP 1.2 đặc biệt là gói
Mobile Media API 1.2 âm thanh trong chương trình đã trở nên dễ dàng
và sống động
import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
2.3 Hiệu ứng đồ họa
Trang 14Phần đồ họa được thiết kế chi tiết , mỗi loại gạch đều có màu sắc nổi bật đa dạng , hơn hết game được lập trình có cấu trúc mở để developer
có thể dễ dàng thêm tùy ý các Level mới
Hình 2.3 Ảnh các viên gạch
+Class Levels làm nhiệm vụ này
+Class SamSet :dùng để tạo hiệu ứng sấm sét khi lên màn hình
Menu Gồm các đừng thẳng phát sinh ngẫu nhiên từ điểm user
mousePress
+Class ShockWave : vẽ các cung sóng 360 độ khi thanh chắn không
đỡ được quả bóng
3.Kiểm Tra các Va Chạm của Quả Bóng
3.1Va chạm giữa quả bóng với lưới gạch
3.1.1 Quả bóng trước khi va chạm với gạch
Tham số :Qua bóng
Return: Viên gạch nào va chạm với quả bóng
Việc kiểm tra viên gạch trong lưới gạch dựa vào hàm collidesWith()
mà J2ME cung cấp sẵn ,nó kiểm tra va chạm giữa 2 sprite theo hình chữ nhật bao ngoài :
luoigach[i][j].collidesWith(ball, false)
Trang 15Lược đồ trạng thái:
Tối ->Sáng-> Nổ
3.1.2 Quả bóng sau khi va chạm với gạch
Hàm BongVaChamLuoiGach() : xác định xem viên gạch nào va
chạm với quả bóng (nếu có va chạm)
Nếu quả bóng va chạm:
+ Tại mặt phía trên hay phía dưới viên gajcn thì chỉ có vận tốc theo trục dọc Vy đổi ngược còn Vx ko đổi
+Tại hai mặt bên thì chỉ có Vx thay đổi con Vy không đổi
Trang 16Hình minh họa cho trường hợp va chạm tại 2 Tại hai mặt bên
3.2 Va chạm giữa quả bóng với thanh chắn
Hàm BongVaChamThanhChan() :tính Toán vận tốc ngang tỉ lên thuận với khoảng cách giữa điểm va chạm với tâm đĩa
Nếu va chạm càng xa tâm đĩa thì bóng sẽ bay ra với góc bay càng lớn
3.3 Va chạm giữa Quả bóng Với Tường
Hàm KTBongVaChamTuong() :hoàn toàn tương tự như gạch sau
khi va cham hiệu ứng tường bật sáng
Trang 174.Kiểm soát Tốc dộ Game
Interaval =1000/33 =30 giây cho biết mỗi chu kì cập nhật vẽ mất 30 giấy
Tức là 33 FPS 33 khung hình trên 1 giây tốc độ này phù hợp để có thể cảm nhận đươc di chuyển nhưng ở các thiết bị di động khác nhau tốc độ xử
lý là khác nhau này cả hàm đo thời gian giữa 2 thời điểm cũng sai lệch do đó cần kiểm soát tốc độ game
time = INTERVAL - (System.currentTimeMillis() - time);
Thread.sleep((time < 0 ? 0 : time));
Nếu như thời gian để
checkKeys();
update();
render();
nhỏ hơn 30 giây thì game sẽ được sleep cho tới khi đủ 30 s
5 Save và Load Game
Phương thức public byte[] getSnapshot(): ghi lại level ,life , vị trí, tốc
độ quả bóng vị trí của lưới gạch vào Record
Game sẽ Save khi click button Resume hoặc tự lưu khi thoát chương trình
Phương thức private void loadOrCreateGame()
Load dữ liệu từ Record từ phương thức SavaGame() hoặc tạo 1 game mới Level=1
CHƯƠNG IV: CÀI ĐẶT VÀ THỬ NGHIỆM
• Môi trường : J2ME
• Yêu cầu cài đặt : Netbeans 6.9.1, Series 40 6th Edition, FP1 SDK
• Ngôn ngữ cài đặt :Java
Trang 18• Thử nghiệm giả lập: Điện thoại DefaultCldcMsaPhone2, DefaultFxPhone1 trong Netbeans, DefaultColorPhone trong Wireless Toolkit.
• Thiết bị thật : Sony Ericsson P1i, Nokia 3110 classic, Nokia X3 Touch and Type (X3-02), Nokia E51, Nokia E71, Nokia X6, Nokia N8
• Đá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
► Ghi chú: nếu chạy trực tiếp từ file jad thì chắc năng âm thanh không được tốt
Trang 19KẾT LUẬN
Chúng em đã cố gắng để hoàn thành các phần cơ bản của một ứng dụng game chạy trên di động, cụ thể ở đây là game “Breakout” Qua đó giúp người chơi có một cái nhìn tổng quan về game.Tuy nhiên nếu có thêm thời gian thì nhóm chúng em sẽ cải thiện về giao diện và phát triển thêm một số tính năng mới như: có thêm bonus khi phá vỡ gạch, đa dạng hóa hình dạng của các viên gạch,… để game thêm sinh động và hấp dẫn người chơi
Trang 20TÀI LIỆU THAM KHẢO
[1] Creating Mobile Games Using J2ME™ Platform to Put the Fun into Your Mobile Device and Cell Phone - Carol Hamer
[2] Beginning Java ME Platform – Ray Rischpater
[3] J2ME™ Game Programing – Martin J Wells
[4].Một số wedsite, diễn đàn về lập trình
http://mobilesprogramming.wordpress.com
http://www.congdongjava.com
http://www.javavietnam.org
http://developers.sun.com/mobility/allarticles/
[5].Slide bài giảng của Thạc sĩ.Phan Nguyệt Minh
https://sites.google.com/site/laptrinhnhungcanban/my-forms