Nội dung:
- Xây dựng game Tetris (Xếp gạch), BattleTank (Bắn xe tăng), AirStrike (Bắn máy bay).
Mục tiêu:
- Playable finished game.
- Music & sound effects.
- Giao diện thân thiện, giúp người chơi game dễ dàng sử dụng.
Công nghệ sử dụng:
- Các game được xây dựng bằng ngôn ngữ Java dựa trên bộ công cụ JCreatorPro 4.0 và J2SDK 1.4.2.16.
Các lớp chính được sử dụng trong 3 game:
- Package com.graphics:
+ Lóp ScreenManager quản lý việc khởi tạo và hiển thị chế độ fullscreen cho game.
• public DisplayMode findFirstCompatibleMode(DisplayMode modes[]): Tìm kiểu hiển thị cho màn hình thích hợp đầu tiên trong danh sách kiểu màn hình. Trả về null nếu không có kiểu hiển thị thích hợp cho màn hình.
• public void setFullScreen(DisplayMode displayMode): Tạo chế độ hiển thị toàn màn hình. Chế độ hiển thị này sử dụng 2 bộ đệm BufferStrategy.
public Graphics2D getGraphics(): Lấp device hiển thị đồ họa, ScreenManager sử dụng bộ đệm đôi nên chương trình phải gọi update()
30 trang |
Chia sẻ: maiphuongtl | Lượt xem: 3954 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đồ án Developing game 2D in java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
PROGRAMMING METHODS
[DEVELOPING GAME 2D IN JAVA]
[General view about: features, technological applications, program structure…]
SE-UIT
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
Bộ môn: CÁC PHƯƠNG PHÁP LẬP TRÌNH
BÁO CÁO ĐỀ ÁN CUỐI KỲ
DEVELOPING GAME 2D IN JAVA
Danh sách nhóm:
1. NGUYỄN PHƯƠNG ANH 06520017
2. HUỲNH TUẤN ANH 06520012
3. TRẦN ĐỨC CHINH 06520045
Niên khóa: 2006-2010
MỤC LỤC
Giới thiệu tổng quan về đề án…………………………………………..4
Game Tetris
2.1 Giới thiệu về game Tetris…………………………………….....6
2.2 Hướng dẫn sử dụng chương trình………………………………7
2.3 Tên và tính năng của các lớp chính trong chương trình………12
Game Battle Tank
3.1 Giới thiệu về game Battle Tank………………………………...13
3.2 Hướng dẫn sử dụng chương trình………………………………14
3.3 Tên và tính năng của các lớp chính trong chương trình………18
Game AirStrike
Giới thiệu về game Airstrike…...………………………………21
Hướng dẫn sử dụng chương trình………………………………22
Tên và tính năng của các lớp chính trong chương trình………28
Tài liệu tham khảo…………………………………………………….30
GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI
------***------
Nội dung:
Xây dựng game Tetris (Xếp gạch), BattleTank (Bắn xe tăng), AirStrike (Bắn máy bay).
Mục tiêu:
Playable finished game.
Music & sound effects.
Giao diện thân thiện, giúp người chơi game dễ dàng sử dụng.
Công nghệ sử dụng:
Các game được xây dựng bằng ngôn ngữ Java dựa trên bộ công cụ JCreatorPro 4.0 và J2SDK 1.4.2.16.
Các lớp chính được sử dụng trong 3 game:
Package com.graphics:
Lóp ScreenManager quản lý việc khởi tạo và hiển thị chế độ fullscreen cho game.
public DisplayMode findFirstCompatibleMode(DisplayMode modes[]): Tìm kiểu hiển thị cho màn hình thích hợp đầu tiên trong danh sách kiểu màn hình. Trả về null nếu không có kiểu hiển thị thích hợp cho màn hình.
public void setFullScreen(DisplayMode displayMode): Tạo chế độ hiển thị toàn màn hình. Chế độ hiển thị này sử dụng 2 bộ đệm BufferStrategy.
public Graphics2D getGraphics(): Lấp device hiển thị đồ họa, ScreenManager sử dụng bộ đệm đôi nên chương trình phải gọi update() để hiển thị bất kỳ công việc vẽ đồ họa nào.
public void update(): Cập nhật hiển thị.
public void restoreScreen(): Trả lại chế độ hiển thị trước khi chơi game.
Lớp Sprite quản lý hình ảnh và chuyển động của các vật thể trong game, mỗi Sprite có nhiều frame và giá trị của frame hiện thời currFrameIndex.
public Sprite(): Tạo một đối tượng Sprite với hiệu tứng chuyển động.
public synchronized void addFrame(Image image): Thêm frame cho Sprite.
public synchronized Image getImage(): Lấp frame của Sprite hiện thời.
Package com.input:
Lớp InputManager quản lý việc nhập liệu từ bàn phím và sự kiện chuột. Những sự kiện này được truyền cho lớp GameAciton xử lý.
Package com.test:
Lớp GameCore là lóp trừu tượng cho việc xử lý của game, Lớp con được thừa kế từ lớp này sẽ là lớp chứa các phương thức:
public void gameInit : tạo hiển thị fullscreen và khởi tạo các đối tượng.
public void gameLoop: chạy trong suốt game loop cho đến khi stop() được gọi.
public void stop(): báo hiệu cho game loop biết rằng đây là thời điểm để thoát.
Package com.sound:
Lớp SoundManager là quản lý việc phát âm thanh trong game. SoundManager là một ThreadPool. Mỗi thread có thể phát một file âm thanh
public InputStream play(Sound sound): phát một âm thanh.
public InputStream play(Sound sound, SoundFilter filter,boolean loop): phát một âm thanh với sự chọn lựa SoundFilter và loop.
Lớp MidiPlayer dùng để phát âm thanh có định dạng *.mid.
2. GAME TETRIS
------***------
2.1 Giới thiệu về Game Tetris:
SƠ ĐỒ NGỮ CẢNH CỦA GAME:
Game gồm hai phần cơ bản : play game và player’s guide có mô hình chung như sau :
Người Chơi
0
Hệ thống
trò chơi
Khởi động trò chơi
Hướng dẫn người chơi
Thoát game
SƠ ĐỒ PHÂN RÃ CHỨC NĂNG:
Các chức năng chính của trò chơi như sau :
Trò Chơi Tetris
Start Game
Help
Exit
Game Over
Ghi điểm, độ khó tăng lên
Hướng dẫn chơi
Quay lại màn hình bắt đầu
BIỂU ĐỒ LUỒNG DỮ LIỆU:
2.0
Xem thông tin hướng dẫn chơi
Người chơi
1.0
Chơi
Start Game
Gameover
3.0
Thoát game
Thoát trò chơi
A Tăng điểm, tăng cấp độ
2.2 Hướng dẫn sử dụng chương trình:
Khi khởi động game sẽ có Menu cho người chơi lựa chọn:
Khi chọn Start game, game sẽ được bắt đầu.
*Khi xếp được một hàng, người chơi sẽ được thưởng 10 điểm
*Sau khi xếp được 10 hàng, cấp độ sẽ tăng lên, tức là viên gạch sẽ rơi nhanh hơn, có 10 cấp độ.
Trong quá trình chơi, người chơi có thể bấm phím Esc để dừng game lại.
Khi chọn Game Info ở Main Menu, bảng hướng dẫn cách điều khiển sẽ hiện ra.
Chọn Exit ở Main Menu để thoát khỏi game!
2.3 Tên và tính năng của các lớp chính trong chương trình:
Tetris: lớp chính
void gameInit(): load hình ảnh và âm thanh cho game.
void update(long elapsedTime): cập nhật các đối tượng cho game.
void draw(Graphics2D g): vẽ các đối tượng cho game.
void upnext(): tạo trạng thái kế tiếp cho gạch.
void dropdown(): cho khối gạch rơi.
void check_lose(): kiểm tra thua.
void check_score(): kiểm ra ăn điểm.
Button: quản lý các button
void Render(Graphics2D g): vẽ button.
Score: quản lý hình ảnh số điểm và số mạng cho người chơi.
3. GAME BATTLE TANK
------***------
3.1 Giới thiệu về Game BattleTank:
NỘI DUNG:
Nhiệm vụ của người chơi là chiến đấu với các xe tăng địch qua 3 màn để bảo vệ chính mình và bảo vệ nhà chính. Nếu nhà chính bị bắn hoặc người chơi hết mạng thì game over, nếu qua được màn 3 thì nhiệm vụ của người chơi hoàn thành.
SƠ ĐỒ NGỮ CẢNH CỦA GAME:
Người Chơi
0
Hệ thống
trò chơi
Khởi động trò chơi
Thoát trò trò chơi
SƠ ĐỒ PHÂN RÃ CHỨC NĂNG:
Các chức năng chính của trò chơi như sau :
Trò Chơi BattleTank
Start Game
Exit
Game Over
Bảo vệ nhà chính, qua màn, về nước
BIỂU ĐỒ LUỒNG DỮ LIỆU:
Người chơi
1.0
Chơi
A Bảo vệ nhà chính, qua màn, về nước.
Start Game
Gameover
2.0
Thoát trò chơi
3.2 Hướng dẫn sử dụng chương trình:
Khi khởi động game sẽ có Menu cho người chơi lựa chọn:
Khi chọn Start game, game sẽ được bắt đầu.
Người chơi sẽ tiếp tục đi qua các màn 1, 2, 3 cho đến khi hoàn thành nhiệm vụ.
Khi bắn chết xe tăng có màu đỏ thì có 1 trong 4 bonus xuất hiện, các bonus là thưởng mạng, bom làm chết 1 mạng của các xe tăng đối thủ, xẻng làm xây lại nhà chính.
Trong quá trình chơi, nếu bị chết hết mạng hoặc nhà chính bị bắn thì bảng thông báo game over sẽ xuất hiện, người chơi có thể chọn New Game để chơi lại từ đầu hoặc Exit để thoát game.
3.3 Tên và tính năng của các lớp chính trong chương trình:
BattleTank: lớp chính
void gameInit(): load hình ảnh và âm thanh cho game.
void update(long elapsedTime): cập nhật các đối tượng cho game.
void draw(Graphics2D g): vẽ các đối tượng cho game.
update_left(Tank Player): kiểm tra trái của Player nếu đi được sẽ cho đi. Tương tự cho update_right(Tank Player), update_up(Tank Player), update_down(Tank Player).
void Run(Tank Com1,Tank Com2,Tank Com3,Tank Com4): tạo di chuyển cho các xe tăng địch, ở màn 1 các xe tăng chỉ di chuyển cho đến khi gặp chướng ngại vật sẽ đổi hướng ngẫu nhiên 4 hướng cho đến khi gặp được hướng đi được, còn ở màn 2 và 3 thì xe tăng đỏ và xe tăng xanh đậm chỉ đổi 3 hướng là phải, trái và xuống, không hướng lên để 2 xe tăng này bắn nhà chính tạo độ khó cho người chơi.
void checkexplo(Bullet bullet,Tank tank): kiểm tra va chạm đạn của xe tăng.
void Shoot(Tank Com1,Bullet bul1): phương thức bắn đạn cho các xe tăng đối thủ.
void BonusAppear(): bonus xuất hiện ngẫu nhiên 1 trong 3 thưởng mạng, xẻng xây nhà chính hoặc bom làm nổ hết các xe tăng địch.
void NewGame(): thiết lập lại các thuộc tính cho game để người chơi chơi lại từ đầu.
Bonus:
void Appear(): cho bonus xuất hiện khi bắn trúng xe tăng đỏ.
Bullet:
void SetSpeed(long x): thiết lập thuộc tính tốc độ cho viên đạn.
long GetSpeed(): lấy tốc độ của đạn.
boolean GetCanShot(): trả về giá trị true nếu xe tăng được bắn tiếp.
void SetCanShot(boolean x): thiết lập thuộc tính được phép bắn của xe tăng.
void Setdr(int x): thiết lập hướng cho viên đạn.
void ShootUp(): bắn đạn hướng lên.
void ShootDown(): bắn đạn hướng xuống.
void ShootLeft(): bắn đạn hướng qua trái.
void ShootRight(): bắn đạn hướng qua phải.
Digit: tạo hình ảnh là số mạng của người chơi và xe tăng đối thủ.
Eagle:
void SetGameOver(boolean x): thiết lập thuộc tính game over nếu nhà chính bị bắn.
boolean GetGameOver(): trả vể true nếu nhà chính bị bắn.
GameOver: thừa kế từ lớp Sprite, cho xuất hiện bảng thông báo game over nếu người chơi hết mạng hoặc nhà chính bị bắn.
Tank: quản lý, thiết lập các thuộc tính cho các đối tượng xe tăng.
void SetLife(int x): thiết lập mạng cho xe tăng.
int GetLife(): lấy thuộc tính mạng của xe tăng.
void SetDead(boolean x): cho xe tăng biến mất nếu bị trúng đạn.
void SetLastRun(long x): thiết lập thuộc tính thời gian cho lần di chuyển trước.
void SetLastDead(long x): thiết lập thuộc tính thời gian khi biến mất để tạo lần xuất hiện tiếp theo.
void SetID(int x): định danh cho xe tăng.
void Setdr(int x): thiết lập hướng cho xe tăng.
void NextUp(): cho frame kế tiếp của xe tăng xuất hiện, tạo hiệu ứng hình ảnh chuyển động của xe tăng đi lên. Tương tự cho NextDown(), NextRight(), NextLeft().
void MoveUp(): di chuyển lên. Tương tự cho MoveDown(), MoveRight(), MoveLeft().
class_map: tạo bản đồ cho game.
mapitem: đối chiếu với class_map để vẽ bản đồ lên màn hình, như cây cối, gạch, biển, tường.
4. GAME AIRSTRIKE
------***------
4.1 Giới thiệu về Game AirStrike:
NỘI DUNG:
Vào thế chiến II, quân đội của Mỹ tấn công Liên Xô. Lúc đó, Bộ Tư lệnh không quânViệt Nam đã phái 01 chiếc trực thăng mang tên Atomic Helicopter để giúp đỡ không quân Liên Xô.
Nhiệm vụ của Atomic Helicopter là chiến đấu ở 3 thành phố Dictastrolka, Tankylavania và Blastnya – nơi chiến đấu với hạm đội hải quân để hoàn thành nhiệm vụ.
SƠ ĐỒ NGỮ CẢNH CỦA GAME:
Game gồm hai phần cơ bản : play game và player’s guide có mô hình chung như sau :
Người Chơi
0
Hệ thống
trò chơi
Khởi động trò chơi
Hướng dẫn người chơi
Thoát game
SƠ ĐỒ PHÂN RÃ CHỨC NĂNG:
Các chức năng chính của trò chơi như sau :
Trò Chơi AirStrike
Start Game
Help
Exit
Game Over
Ghi điểm
Hướng dẫn chơi
Quay lại màn hình bắt đầu
BIỂU ĐỒ LUỒNG DỮ LIỆU:
2.0
Xem thông tin hướng dẫn chơi
Người chơi
1.0
Chơi
Start Game
Gameover
3.0
Thoát game
Thoát trò chơi
A Tăng điểm, thưởng mạng, qua màn
4.2 Hướng dẫn sử dụng chương trình:
Khi khởi động game sẽ có Menu cho người chơi lựa chọn:
Khi chọn Start game, game sẽ được bắt đầu.
Bảng thông báo về các màn chơi sẽ xuất hiện. Người chơi chọn Continue để chơi hoặc chọn Menu để quay lại màn hình điều khiển chính.
Người chơi sẽ tiếp tục đi qua các màn 1, 2, 3 (tương ứng với 3 thành phố) cho đến khi hoàn thành nhiệm vụ.
*Khi bắn trúng máy bay địch, người chơi sẽ được thưởng 40 điểm
*Khi bắn trúng vũ khí của địch, người chơi sẽ được thưởng 10 điểm.
*Khi người chơi đạt được mỗi 1000 điểm sẽ được thưởng 01 mạng
Trong quá trình chơi, người chơi có thể bấm phím Esc để dừng game lại. người chơi có thể chọn chơi tiếp(Esc) hoặc quay về Main menu (Q).
Khi chọn Player’s guide ở Main Menu, bảng hướng dẫn cách điều khiển sẽ hiện ra.
Chọn Exit ở Main Menu để thoát khỏi game!
4.3 Tên và tính năng của các lớp chính trong chương trình:
AirStrike: lớp chính
void gameInit(): load hình ảnh và âm thanh cho game.
void update(long elapsedTime): cập nhật các đối tượng cho game.
void draw(Graphics2D g): vẽ các đối tượng cho game.
boolean TestCollision(int X1,int Y1,int Width1,int Height1,int X2,int Y2,int Width2,int Height2): kiểm tra va chạm giữa các đối tượng.
void update_player_weapon(): cập nhật sự di chuyển và kiểm tra va chạm vũ khí của player.
void update_enemy_fly(): cập nhật di chuyển và kiểm tra va chạm cho máy bay đối thủ.
void update_enemy_weapon(): cập nhật di chuyển và kiểm tra va chạm cho vũ khí đối thủ.
void set_enemy(): cho đối thủ xuất hiện dựa trên map.
AirCraft: Tạo và quản lý các đối tượng Máy bay, xe phòng không và Boss.
void FlyForBoss(int direction): quản lý chuyển động cho Boss(Tàu chiến)
void FlyForComputer(int direction): quản lý chuyển động cho Máy bay địch và xe phòng không.
void FlyForPlayer(int direction): quản lý chuyển động cho Trực thăng người chơi
void Render(Graphics2D g): vẽ đối tượng lên màn hình.
Weapon: Tạo và quản lý các đối tượng vũ khí của người chơi và computer.
void Fly(int direction): quản lý chuyển động cho vũ khí
void Render(Graphics2D g): vẽ vũ khí lên màn hình.
void SetTimeNext(long _time_next): đặt thời gian chuyển dời kế tiếp của vũ khí.
void SetTimePre(long _time_pre): đặt thời gian chuyển dời hiện tại của vũ khí.
BackGround: quản lý cuộn màn hình.
void Roll(long elapsedTime): phương thức để làm cuộn màn hình.
void Render(Graphics2D g): vẽ hình nền.
Button: quản lý các button
boolean MouseHandler(): quản lý sự kiện chuột khi nhấn vào button.
void Render(Graphics2D g): vẽ button.
Explosion: khởi tạo và quản lý hình ảnh va chạm phát nổ.
Map: khởi tạo và quản lý map world.
int getEnemy(int i, int j): cho đối thủ xuất hiện ra màn hình.
int getCurrentMap(): lấp map hiện tại.
void setCurrentMap(): đặt map cho game.
int getMapPosition(): lấy vị trí của map hiện tại.
void setMapPosition(): đặt vị trí cho map.
void incMapPosition(): tăng vị trí cho map hiện tại.
Score: quản lý hình ảnh số điểm và số mạng cho người chơi.
5. TÀI LIỆU THAM KHẢO
------***------
Source code của các chương trong quyển sách Developing Game In Java - Java Game Book - David Brackeen.
Hình ảnh và âm thanh của game Tetris (AxySoft), Around the World in 80 Days (PlayRix Entertainment), Heavy Weapon Deluxe (PopCap Games)