Tải bản đầy đủ (.pdf) (26 trang)

Dự án xây dựng game có ý tưởng bắt nguồn từ trò chơi xe tăng (tank) cổ điển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (796.99 KB, 26 trang )

TANK WAR
Báo cáo bài tập lớn
Môn Kỹ thuật lập trình hướng đối tựợng
• Người viết
Bùi Kim Dung
1
Bùi Anh Dũng
2
Lê Quý Dương
3
Nguyễn Trọng Hiếu
4
Phạm Tuấn Long
5
Lê Anh Tú
6
• Nhóm, Lớp
Nhóm 11, Lớp Công nghệ phần mềm K51
• Người hướng dẫn
TS. Nguyễn Khanh Văn
7
• Tổng số trang
23
• Ngày & địa điểm viết
Hà Nội, Ngày 19 tháng 11 năm 2009
1
Email:
2
Nhóm trưởng, Email:
3
Email:


4
Email:
5
Email:
6
Email:
7
Bộ môn CNPM, Viện CNTT & TT, ĐH BKHN, Email:
Mục lục
1 Tổng quan 1
1.1 Nội dung dự án . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Phạm vi dự án . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Công nghệ sử dụng . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Nội dung công việc 2
2.1 Chi tiết công việc . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Cách thức tổ chức hoạt động nhóm . . . . . . . . . . . . . . . 3
3 Đặc tả phần mềm 4
3.1 Các modules của phần mềm . . . . . . . . . . . . . . . . . . . 4
3.1.1 Các module do nhóm xây dựng . . . . . . . . . . . . . 5
3.1.2 Các modules được kế thừa từ các nguồn có sẵn . . . . 6
3.1.3 Use case Diagram . . . . . . . . . . . . . . . . . . . . . 8
3.2 Sequence Diagram . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3 Package Diagram . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.4 Class Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.5 Danh sách các pattern đã sử dụng . . . . . . . . . . . . . . . . 12
3.5.1 Factory method . . . . . . . . . . . . . . . . . . . . . . 12
3.5.2 Observer . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5.3 Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5.4 Singleton . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5.5 Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.5.6 State . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.6 Thuật toán điều khiển xe tăng tự động (AI) . . . . . . . . . . 16
3.6.1 Giải pháp hiện tại . . . . . . . . . . . . . . . . . . . . 16
3.6.2 Giải pháp đề xuất . . . . . . . . . . . . . . . . . . . . . 16
3.7 Giao diện đồ họa phác thảo . . . . . . . . . . . . . . . . . . . 18
4 Các kết quả đạt được 19
4.1 Giao diện trò chơi . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2 Gameplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5 Kết luận và hướng phát triển 21
5.1 Ưu điểm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Hạn chế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.3 Hướng phát triển . . . . . . . . . . . . . . . . . . . . . . . . . 21
A Một số APIs cơ bản của Jgame 3.3 23
B Code repository 23
1 TỔNG QUAN
1 Tổng quan
1.1 Nội dung dự án
Dự án xây dựng Game có ý tưởng bắt nguồn từ trò chơi Xe Tăng (Tank)
cổ điển nhưng chúng em sẽ bổ sung thêm nhiều tính năng mới, vũ khí mới
khiến nó trở nên đẹp hơn, hấp dẫn hơn và kịch tính hơn. Đặc biệt, luật chơi
được thay đổi, thay vì bắn nổ xe tăng đối phương để qua bài thì trong phiên
bản mới này, người chơi phải phá hủy thành lũy của đối phương.
1.2 Phạm vi dự án
Mục đích thực hiện dự án là học tập nên chúng em sẽ cắt giảm nhiều tiểu
tiết của game để giữ cho game có cấu trúc rõ ràng như số lượng hạn chế các
loại khí tài, bản đồ, bonus, mà thay vào đó, chúng em sẽ chứng minh tính
khả thi khi mở rộng chương trình với các tính năng đó.
Một số phần trong bản phân tích thiết kế chi tiết (specification) có thể
không được thực hiện căn cứ vào mức ưu tiên của chúng và tiến độ thực hiện
dự án.

Phần mềm được mặc định sẽ chạy trên phiên bản mới nhất của JRE 6+
trên hệ điều hành Ubuntu 9.10+ hoặc windows XP SP3, ram tương thích,
chip tương thích, card đồ họa tương thích.
1.3 Công nghệ sử dụng
• Ngôn ngữ sử dụng: JAVA
• IDE sử dụng: NETBEAN 6.5 + ECLIPSE 3.3
• Framework: JRE 6+
• Engine: JGame 3.3
8
• Thư viện đồ họa: Thu thập, chọn lọc từ mạng Internet
8
Jgame 3.3 sẽ được trình bày chi tiết trong phần sau của tài liệu. Nguồn:
boris/jgame/
1
2 NỘI DUNG CÔNG VIỆC
2 Nội dung công việc
2.1 Chi tiết công việc
TT Nhiệm vụ Mô tả Thời gian Thành
viên
Trạng thái
1 Khảo sát
hệ thống
10/9/2009
-
15/9/2009
100%
Khảo sát phạm
vi hệ thống
All 100%
Khảo sát chi tiết

hệ thống
LongPT,
HiếuNT,
TúLA
100%
Dự trù cho dự án
(định lượng thời
gian và khó khăn
gặp phải)
Dũng BA,
Hiếu NT,
Dương LQ
100%
Review All 100.00%
2 Phân tích 15/9/2009
-
22/9/2009
100%
Phân tích yêu
cầu
Dũng BA,
Dung BK,
Dương LQ
100%
Phân tích chức
năng
Dũng BA,
Dung BK,
Dương LQ
100%

Review All 100.00%
3 Thiết kế 22/09/2009
-
05/10/2009
100.00%
Thiết kế tổng
thể
Long PT,
Hiếu NT
100%
Thiết kế giao
diện
TúLA 100%
Thiết kế multi-
media
Dung BK,
Long PT
100.00%
Thiết kế module
(chi tiết)
Dũng BA,
Dung BK,
Dương LQ
100.00%
Review All 100.00%
2
2.2 Cách thức tổ chức hoạt động nhóm 2 NỘI DUNG CÔNG VIỆC
TT Nhiệm vụ Mô tả Thời gian Thành
viên
Trạng thái

4 Cài đặt 6/10/2009
-
30/10/2009
95.00%
Cài đặt giao diện Long PT,
Dung BA
90.00%
Cài đặt business All 95.00%
Ghép code Dũng BA 100.00%
5 Kiểm thử 31/10/2009
-
5/11/2009
100.00%
Danh sách test
case (các tình
huống có thể có
khi người dùng
chơi game)
DungBK 100.00%
Thực hiện test
case
Tú LA,
Dương LQ,
Hiếu NT
100.00%
6 Chuyển
giao
6/10/2009
-
10/11/2009

100.00%
Viết hướng dẫn
sử dụng phần
mềm
Dương LQ 100.00%
Viết báo cáo DungBK 100.00%
Đóng gói &
chuyển giao
chương trình
Long PT 100.00%
2.2 Cách thức tổ chức hoạt động nhóm
• Tổ chức nhóm thành 2 teams:
– Team 1: Dũng BA, Dung BK, Dương LQ
– Team 2: Long PT, Hiếu NT, Tú LA
3
3 ĐẶC TẢ PHẦN MỀM
Công việc của nhóm sẽ được chia cho các cá nhân hoặc cho cả team
nhưng dù trong trường hợp nào, các team sẽ phải chủ động hỗ trợ đốc
thúc nhau thực hiện công việc.
• Nhóm họp 1 tuần 2 lần, 1 buổi online bằng skype vào tối thứ 7 và một
buổi offline vào 2 tiết cuối ngày thứ 5 (2 tiết trống). Ngoài ra, nhóm
vẫn thường xuyên trao đổi khó khăn cũng như ý kiến về công việc của
nhau qua email.
• Để tiện trong việc lập trình và quản lý các revision và việc lưu trữ mã
nguồn, nhóm đã đăng kí dự án trên code.google.com. Địa chỉ dự án của
nhóm là: />Bất cứ ai cũng có thể tải mã nguồn của dự án về, thông qua các SVN
client. Sau khi hoàn thành việc kiểm thử và viết tài liệu hướng dẫn sử
dụng, nhóm sẽ tổ chức offline để đánh giá hiệu quả làm việc cũng như
chất lượng của phần mềm, so sánh với mục tiêu đặt ra khi bắt đầu dự
án.

3 Đặc tả phần mềm
3.1 Các modules của phần mềm
4
3.1 Các modules của phần mềm 3 ĐẶC TẢ PHẦN MỀM
3.1.1 Các mo dule do nhóm xây dựng
• Game Engine: Module này có vai trò điều phối hoạt động của Game,
như sinh tank địch, sinh bonus, tính điểm, xử lí va chạm, hiển thị hình
ảnh, điều khiển tank địch, Module này bao gồm một số module nhỏ
như sau:
– Game: Module chính quản lý các hoạt động nói trên.
– Keysettings: Quản lý phím điều khiển của người chơi (phím di
chuyển, bắn, đổi súng )
– State: Quản lý diễn biến các state của game (lúc ở menu chính,
lúc vào chơi, lúc hoàn thành nhiệm vụ, lúc thất bại )
Module này nằm trong gói com.battletank.engine
• Factory: Module này có nhiệm vụ sinh và quản lý một vài tập hợp đối
tượng cần thiết cho Game như tập hợp các xe tank, tập hợp các bonus,
tập hợp các phần địa hình (terrain) Module này bao gồm các module
nhỏ:
– TankFactory: để sinh tank địch cũng như tank phe ta, dựa vào các
thông số đọc từ map, như số lượng xe tank, số lượng từng chủng
loại tank.
– TerrainFactory: sinh địa hình (gạch, đá, rừng, biển, nhà )
– BonusFactory: sinh bonus
Module này nằm trong gói com.battletank.factory
• Object: Module này bao gồm các đối tượng được hiển thị trên bản đồ,
bao gồm:
– Tank: Các chủng loại tank.
– Bullet: Các chủng loại đạn.
– BonusImage: Các chủng loại bonus.

– Terrain: Địa hình.
Module này nằm trong gói com.battletank.object
5
3.1 Các modules của phần mềm 3 ĐẶC TẢ PHẦN MỀM
• Core: Module bao gồm một số class thiết yếu cho game. Một số phần
chính của module:
– AI: Trí tuệ nhân tạo, điều khiển việc di chuyển của tank địch.
Hiện giờ game hỗ trợ cấp độ Normal với việc di chuyển của tank
địch là ngẫu nhiên và cấp medium khi xe tank địch có khả năng
quan sát xung quanh để tiêu diệt xe tăng của người chơi. Cấp độ
Hard đang trong giai đoạn phát triển, ở cấp độ này, tank địch có
thể truy tìm tank hoặc nhà của phe ta để tiêu diệt. Chức năng
tìm nhà đã hoàn thành.
– Map: Bản đồ, chứa thông tin về bản đồ, quản lý các đối tượng
trên bản đồ.
– Gun: Một số chủng loại súng của tank.
– Bonuses: Thực thi tác dụng của các chủng loại bonus.
Module này nằm trong gói com.battletank.core
3.1.2 Các mo dules được kế thừa từ các nguồn có sẵn
• Resource: Module này chứa thư viện hình ảnh & âm thanh cần thiết
cho chương trình, bao gồm:
– Các hiệu ứng khi chơi (đạn, cháy nổ, )
– Các hình vẽ được hiện trên màn hình (background, button )
– Địa hình (textures)
– Các loại xe tank, máy bay (units) Module này được thu thập từ
nhiều nguồn trên Internet, và có một số thành phần tự thiết kế.
Nó này nằm trong gói resources
• JLayer: Module dùng để thao tác với định dạng MP3 trên Java. Đây là
một dự án mã nguồn mở, được đăng kí giấy phép LGPL (GNU Lesser
General Public License). Hiện gi JLayer đã ra phiên bản 1.0.1, bao gồm

các chức năng sau:
– Converter: Chuyển đổi giữa định dạng MP3 và các định dạng khác
– Decoder: Decode MP3
– Player: Dùng để phát các bài MP3
6
3.1 Các modules của phần mềm 3 ĐẶC TẢ PHẦN MỀM
Website: Module này
nằm trong gói javazoom.jl Trong Game sử dụng chức năng Player của
JLayer.
• JGame: Module chủ yếu hỗ trợ phần front-end, và một phần backend
của Game. JGame là một engine đồ họa được dùng để hỗ trợ trong việc
lập trình các game 2D, trên máy tính hoặc các thiết bị di động. Đây
là dự án m ã nguồn mở, được đăng kí giấy phép BSD. Hiện giờ JGame
đã ra phiên bản 3.3, hỗ trợ những chức năng sau:
Frontend:
– Hiển thị hình ảnh: Nạp và hiển thị hình ảnh từ các file PNG và
JPG.
– Phát âm thanh: Nạp và phát nhạc từ các file WAV.
– Hiệu ứng animation: Nạp và hiển thị hiệu ứng animation từ các
file PNG và JPG
– Vẽ: Cung cấp một số API cơ bản để vẽ hình (đường thẳng, hình
tròn, đa giác, hình chữ nhật).
– Hiển thị đối tượng: Hiển thị các đối tượng dựa vào tọa độ (x,y)
của đối tượng.
Backend:
– Kiểm tra va chạm: Kiểm tra va chạm giữa các đối tượng.
– Thiết lập Game: Thiết lập cấu hình cho Game (độ phân giải, kích
thước của mỗi tile )
– JGame cung cấp một cơ chế lập trình hướng sự kiện thay vì lập
trình đa luồng. Một số sự kiện chính:

Sự kiện của toàn bộ chương trình:
∗ initGame: Sự kiện lúc bắt đầu khởi tạo game. Có thể nạp hình
ảnh, khởi tạo các thông số cho game, như chỉ số FPS (Frame
Per Second) tại thời điểm này
∗ paintFrame: Cơ chế lập trình game phổ biến hiện nay là chia
các cảnh game thành nhiều frame, và chạy lần lượt các frame
này. Sự kiện paintFrame được gọi mỗi khi frame cần được vẽ
lại (bước sang frame mới). Có thể thực hiện việc vẽ hình ở
đây.
7
3.1 Các modules của phần mềm 3 ĐẶC TẢ PHẦN MỀM
∗ doFrame: Giống paintFrame, nhưng doFrame được dùng để
điều khiển hoạt động của game.
Sự kiện của các đối tượng:
∗ move: Sự kiện được gọi khi đối tượng cần cập nhật vị trí.
∗ hit: Sự kiện được gọi khi có va chạm với đối tượng khác.
Website: boris/jgame/
Module này nằm trong gói jgame
3.1.3 Use case Diagram
Chỉ có 1 actor là player, có 2 thao tác chính là hiệu chỉnh tùy chọn và điều
khiển xe tăng trong khi chơi
8
3.2 Sequence Diagram 3 ĐẶC TẢ PHẦN MỀM
3.2 Sequence Diagram
9
3.3 Package Diagram 3 ĐẶC TẢ PHẦN MỀM
3.3 Package Diagram
10
3.4 Class Diagram 3 ĐẶC TẢ PHẦN MỀM
3.4 Class Diagram

Giải thích
• Hầu hết các đối tượng đều kế thừa từ IObject. IObject cung cấp một
giao diện chung để quản lý các đối tượng trong những thời điểm nhất
định:
– begin: Lúc đối tượng bắt đầu được kích hoạt
– onEnterFrame: Lúc mỗi frame được hiển thị.
– end: Lúc đối tượng kết thúc (ví dụ như khi tank bị bắn nổ)
• IArmor, IGun, IBonus, IDisplayObject, là những interface kế thừa trực
tiếp từ IObject. Chúng nằm trong module Core.
– IArmor: Áo giáp của các đối tượng. Nhằm chống đỡ sức công phá
của đạn.
– IGun: Súng của tank. Mỗi loại súng tương ứng với một hay nhiều
loại đạn, súng quyết định số lượng đạn, thời gian nạp đạn.
– IMoveBehaviour là AI của tank địch, cũng nằm trong module
Core.
11
3.5 Danh sách các pattern đã sử dụng 3 ĐẶC TẢ PHẦN MỀM
– IDisplayObject là interface chung cho các đối tượng được hiển
thị lên màn hình. Những đối tượng này bao gồm: Tank, Bullet,
Terrain. Chúng nằm trong module Object.
Các đối tượng thuộc module này đều được kế thừa từ JGObject,
đây là một class chuẩn của JGame cho những đối tượng cần hiển
thị.
• Để sinh ra các đối tượng trên, cần các Factory, bao gồm TankFactory,
TerrainFactory, BonusFactory. Chúng nằm trong module Factory.
Các implementation của những interface trên đều phải là singleton.
Nhằm đảm bảo không có 2 factory cùng loại được sinh ra.
• Việc quản lý diễn biến game, khởi tạo game và các đối tượng cần thiết,
cần class Game và các class khác trong module GameEngine. (Xem lại
phần 3.1 Các module chính của chương trình)

3.5 Danh sách các pattern đã sử dụng
3.5.1 Factory method
12
3.5 Danh sách các pattern đã sử dụng 3 ĐẶC TẢ PHẦN MỀM
Factory method pattern được sử dụng với 2 mục đích chính:
• Che giấu cách thức khởi tạo các đối tượng. Khi muốn khởi tạo thêm
đối tượng mới, ta chỉ cần sử dụng các method mà Factory cung cấp,
không quan tâm cách thức tạo ra đối tượng đó như thế nào.
• Quản lý mối ràng buộc giữa các đối tượng thuộc cùng tập hợp. Ví dụ,
với 1 bản đồ nào đó, số lượng xe tăng địch chỉ tối được phép có tối đa
20 chiếc, trong đó có 10 chiếc loại A, 5 chiếc loại B, 5 chiếc loại C. Tất
cả những việc này sẽ do Factory quản lý.
Factory method pattern được áp dụng trong module Factory, bao gồm
TankFactory, TerrainFactory, BonusFactory (xem hình vẽ).
3.5.2 Observer
Observer pattern được sử dụng với mục đích:
• Đồng thời kích hoạt tất cả các components (buttons) khi xảy ra một
sự kiện xác định (nhấp chuột).
• Khi người dùng nhấp chuột, với Observer pattern, ta không cần phải
quan tâm có bao nhiêu components (buttons), và vị trí của từng com-
ponents.
13
3.5 Danh sách các pattern đã sử dụng 3 ĐẶC TẢ PHẦN MỀM
3.5.3 Proxy
Proxy pattern được sử dụng với mục đích: Tạo ra một đối tượng trung gian
(BonusImage), quản lý việc truy cập đối tượng thật (Bonus). BonusImage
chỉ là hình ảnh bonus hiển thị trên sân chơi, nhằm giúp người chơi nhận biết
được sự xuất hiện của các loại bonus. Bonus là đối tượng chính thực thi các
tác dụng của từng chủng loại bonus (tăng tốc, bất tử ). Khi các xe tăng
“ăn” được BonusImage thì đối tượng thật Bonus mới được kích hoạt và thực

thi các tác dụng của mình.
3.5.4 Singleton
Singleton được sử dụng với mục đích: Đảm bảo với m ột số class chỉ có duy
nhất một đối tượng được sinh ra. Với các Factory class, rõ ràng chỉ có thể có
duy nhất 1 Factory được sinh ra, hoặc với class Game, không thể có hai đối
tượng Game cùng chạy trong một chương trình.
14
3.5 Danh sách các pattern đã sử dụng 3 ĐẶC TẢ PHẦN MỀM
3.5.5 Strategy
Strategy pattern được sử dụng với mục đích: Giúp cho AI của các tank địch
trở nên linh hoạt, và có thể dễ dàng thay đổi, nâng cấp. Với strategy pattern,
phần AI được tách riêng ra khỏi đối tượng tank, do đó sẽ dễ dàng sửa đổi,
hoặc có thể thay đổi một cách linh hoạt phụ thuộc vào mức độ khó của màn
chơi.
3.5.6 State
State pattern được sử dụng với mục đích: Giúp thay đổi diễn biến của Game
một cách linh hoạt phụ thuộc vào từng trạng thái Game có rất nhiều trạng
thái khác nhau (ví dụ ở màn hình chính, lúc chơi game, lúc hoàn thành nhiệm
vụ, lúc thất bại ). Với một trạng thái, Game sẽ hoạt động theo diễn tiến
khác nhau. Sử dụng state pattern, ta có thể thay đổi diễn biến của game một
cách linh hoạt mỗi khi game bước sang một trạng thái mới.
15
3.6 Thuật toán điều khiển xe tăng tự động (AI)3 ĐẶC TẢ PHẦN MỀM
3.6 Thuật toán điều khiển xe tăng tự động (AI)
3.6.1 Giải pháp hiện tại
Các loại MoveBehaviour (AI di chuyển cho tank):
• NormalMoveBehaviour: di chuyển theo các hướng ngẫu nhiên, yêu cầu
tank phải đi một độ dài nhất định rồi mới được quay đầu.
• GoodMoveBehaviour: phát triển từ NormalMoveBehaviour, tuy nhiên
khi Player tank cùng hàng với tank địch (ngang hay dọc) thì tank địch

sẽ quay ra bắn Player tank ngay lập tức.
• HardMoveBehaviour: tank địch tự tìm đường đến phá thành của mình.
Trong quá trình kiểm nghiệm chương trình, chúng tôi nhận thấy chế độ
NormalMoveBehaviour là chế độ đơn giản dành cho người mới bắt đầu chơi.
Với GoodMoveBehaviour và HardMoveBehaviour thì tank địch khó chịu hơn
rất nhiều, đặc biệt là GoodMoveBehaviour thì không thể bắn lén tank địch
theo các cách chơi thông thường trước đây. HardMoveBehaviour thì phù hợp
với những tank chạy nhanh hoặc với những map mà tank địch xuất hiện gần
thành của Player.
Ngoài ra độ khó của game có thể được tăng lên bằng số lượng tank xuất hiện
trên bản đồ trong cùng một thời điểm.
3.6.2 Giải pháp đề xuất
Thực ra với AI hiện có thì game đã có chế độ chơi rất khó đòi hỏi người chơi
phải rất có kinh nghiệm mới chiến thắng được. Do đó, việc đề xuất các AI
mới không nhằm vào việc tăng độ khó của game mà là tạo ra một phương
thức chơi mới hấp dẫn hơn, gần thực tế hơn. Hiện chúng em có một số giải
pháp đề xuất như sau:
• Xe tăng địch đuổi theo xe tăng người chơi: Ta có thể đánh số các ô
(tile) trên bản đồ. Bản đồ hiện thời có mặc định là 25x25 ô. Xây dựng
mảng a[i,j] ở đó, a[i,j]=1 nếu 2 ô i,j kề nhau (tức là có thể trực tiếp đến
nhau), a[i,j]=0 nếu 2 ô không kề nhau hoặc 1 trong 2 là đá hoặc nước
(các địa hình không thể phá vỡ được). Từ mảng a[i,j] đang có, ta xây
dựng mảng d[i,j] chính là khoảng cách ngắn nhất giữa 2 ô i và j. Việc
xây dựng mảng d có thể bằng thuật toán Floyd
9
. Việc này chỉ cần
9
algorithm
16
3.6 Thuật toán điều khiển xe tăng tự động (AI)3 ĐẶC TẢ PHẦN MỀM

làm một lần, có thể xây dựng lúc bắt đầu vào màn chơi hoặc có thể
tính toán ngay sau khi tạo map (bởi nhà sản xuất hoặc người sử dụng).
Khi có mảng d[i,j], xe tăng địch sẽ chọn đi sang trái, phải, thẳng, quay
lại tùy xem hướng nào làm giảm khoảng cách (d) giữa nó và mục tiêu
(player tank hoặc là thành lũy của người chơi).
• Chế độ radar và truyền tin của xe tăng địch. Vẫn sử dụng thuật toán
trên nhưng xe tăng địch chỉ có thể nhận thức sự tồn tại của player
tank khi player tank cách nó trong một khoảng nào đó. Khi một xe
tăng địch phát hiện ra player tank, nó có thể lan truyền thông tin cho
xe tăng đồng đội trong bán kính cho phép. Thông tin được lan truyền
và một số xe tăng sẽ được điều động để bao vây tiêu diệt player tank
• Chế độ kính tiềm vọng của xe tăng địch: Xe tăng địch không có radar
nên không thể truy vết player tank, thay vào đó, nó có kính tiềm vọng
tức là có khả năng quan sát cả 4 hướng. Điều đó có nghĩa là xe tăng
địch có thể nhận thấy sự tồn tại của player tank khi chúng ở trên cùng
một hàng hoặc cột và không bị chắn tầm nhìn bởi địa hình (cây, đá,
gạch). Khi phát hiện ra thông tin, chúng sẽ lan truyền thông tin cho
nhau và tổ chức vây bắt tại địa điểm xung quanh nơi xuất hiện player
tank.
• Chế độ đa mục tiêu của xe tăng địch. Chế độ này sẽ đặc biệt hữu hiệu
trong trường hợp game có nhiều hơn 1 người chơi. Xe tăng địch sẽ có
nhiều mục tiêu theo dõi và việc chọn lựa đúng đối tượng để đi theo
cũng sẽ làm cho game trở nên thú vị và thử thách hơn!
17
3.7 Giao diện đồ họa phác thảo 3 ĐẶC TẢ PHẦN MỀM
3.7 Giao diện đồ họa phác thảo
18
4 CÁC KẾT QUẢ ĐẠT ĐƯỢC
4 Các kết quả đạt được
4.1 Giao diện trò chơi

19
4.2 Gameplay 4 CÁC KẾT QUẢ ĐẠT ĐƯỢC
• Trò chơi được bố trí theo màn, với các bản đồ được xác định sẵn hoặc
do người chơi đưa vào dạng matrix .
• Các bản đồ được định nghĩa bằng các file XML (eXtensible Markup
Language ) chuẩn .
• Menu chính
Menu chính cho phép chọn các chức năng :
– Xác định chế độ một người chơi / hai người chơi
– Các tùy chọn thiết lập
– Sơ lược về nhóm phát triển
– Chức năng thoát khỏi trò chơi (Exit )
• Chế độ một người chơi (One player) được xác định như sau :
– Người chơi trong vai trò là người điều khiển chiếc xe tank, có
nhiệm vụ bảo vệ thành của mình và tấn công thành , tiêu diệt các
xe tank địch.
– Xe tank trúng đạn sẽ bị tiêu diệt tùy theo cấp độ và các bonus
item mà xe tank của người chơi thu được trên bản đồ , xe tank
của người chơi có số lần chết xác định , nếu bị chết quá nhiều,
người chơi sẽ thua và màn chơi kết thúc ( Game over )
– Người chơi sẽ được tăng điểm và tiền tương ứng với số xe tank
địch tiêu diệt được
• Chế độ hai người chơi (Two player): chưa hỗ trợ
• Credits: Trang thông tin về nhóm phát triển trò chơi
4.2 Gameplay
• Trò chơi được điều khiển bằng keyboard, với các phím mũi tên để di
chuyển, phím Ctrl để bắn.
• Địa hình được bố trí bao gồm nhiều loại vật liệu khác nhau, như đá,
gạch, rừng , nước, với các loại xe tăng đa dạng và độ mạnh yếu khác
nhau

20
5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
• Các loại địa hình cũng dẫn đến trở ngại khác nhau cho xe tăng, như
có thể xuyên qua rừng, nhưng không thể xuyên qua gạch, đá, nước.
Tường gạch có thể bị xe tăng bắn sụp.
5 Kết luận và hướng phát triển
5.1 Ưu điểm
• Trò chơi đã đạt được các chức năng cơ bản của một game tank, có độ
tùy biến cao và thuận tiện cho người chơi đưa vào các bản đồ khác
nhau. Việc bổ sung chủng loại tank, đạn, bonus là khá dễ dàng. Game
cũng cho phép điều chỉnh chế độ chơi dễ hay khó làm thêm tăng sức
hấp dẫn.
• Trò chơi được phát triển bằng Java, nên có ưu điểm cao về tính đa nền
, chạy được trên các hệ điều hành khác nhau
5.2 Hạn chế
• Chưa có Shop mua đạn.
• Chưa phát triển khả năng xe tăng địch đuổi theo xe tăng của người
chơi (ở chế độ rất khó của game)
5.3 Hướng phát triển
Các hạn chế phía trên chủ yếu do thời gian chưa cho phép nên có thể cải
thiện dễ dàng
• Tiếp tục phát triển công cụ cho phép người chơi tạo bản đồ bằng GUI
(thay vì tạo file XML như hiện nay)
• Phát triển phiên bản phù hợp dành cho điện thoại, chạy trên HDH
Symbian ( Mobile Tank War)
• Đăng ký PPA trên Launchpad, nhằm giúp những người sử dụng Ubuntu
có thể cài đặt game một cách dễ dàng.
• Tiếp tục bổ sung những tính năng mới, như chế độ Highscore, bổ sung
các loại tank, đạn
21

5.3 Hướng phát triển 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
• Đăng ký giấy phép cho Game, cụ thể là GPL v3. Phát triển theo hướng
mã nguồn mở.
22

×