Để có thể đáp ứng mộtcách tốt nhất thị hiếu cho người chơi thì game cần phải có những tính năng ưu việthơn các phần mềm khác.. Ngoài một số chức năng như các game bắn tăng khác,game của
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2TP Hồ Chí Minh, tháng 5 năm 2012
Trang 3LỜI CẢM ƠN
Trong suốt thời gian học tập và hoàn thành báo cuối cuối kỳ, chúng em đã nhậnđược sự giúp đỡ, chỉ bảo tận tình của các thầy cô Trường đại học công nghệ thông tin –Đại học quốc gia thành phố Hồ Chí Minh Chúng em xin gửi lời cảm ơn sâu sắc đến quýthầy cô
Đặc biệt xin chân thành cảm ơn thầy Phạm Thi Vương – người đã trực tiếp hướngdẫn và tạo mọi điều kiện thuận lợi giúp đỡ chúng em hoàn thành báo cáo này
Chúng em cũng xin cảm ơn chân thành tới gia đình và bạn bè đã tạo điều kiện,giúp đỡ và động viên chúng em hoàn thành bài báo cáo đúng thời hạn
Mặc dù đã cố gắng hết khả năng nhưng bài báo cáo không thể nào tránh khỏinhững thiếu xót Rất mong nhận được sự góp ý quý báu của quý thầy cô để đồ án hoànchỉnh hơn
Nhóm sinh viên thực hiện
Nhóm 7Tháng 5 – 2012
Trang 4NHẬN XÉT CỦA GIÁO VIÊN
Trang 5
MỤC LỤC
I Giới thiệu Game Tank: 1
1 Mô tả Game Tank: 1
2 Các chức năng chính của Game Tank: 1
II Giao diện chính của Game Tank: 3
1 Màn hình Loading game: 3
2 Menu game: 3
3 Màn hình Play (Chơi game): 4
4 Màn hình Pause: 4
5 Màn hình Option (Tùy chọn): 5
6 Màn hình Construction (Hướng dẫn): 6
7 Màn hình High Score (Thành tích): 7
8 Màn hình About (Thông tin): 7
III Các giải thuật dùng trong Game Tank: 8
1 Sơ đồ lớp và chức năng: 8
1.1 Sơ đồ lớp xây dựng giao diện cho game: 8
1.2 Sơ đồ lớp xây dựng tường: 9
1.3 Sơ đồ lớp xây dựng Gift: 9
1.4 Sơ đồ lớp xây dựng Map Editor: 10
1.5 Hình ảnh, âm thành và font chữ trong game: 10
2 Giải thuật toán quan trọng trong game: 11
Trang 6IV Tổng kết: 15
Trang 7I. Giới thiệu Game Tank:
1 Mô tả Game Tank:
Như chúng ta đã biết, hiện nay đã có rất rất nhiều game bắn xe tăng khác nhau,dường như trò chơi bắn xe tăng đã trở nên quá phổ biến Để có thể đáp ứng mộtcách tốt nhất thị hiếu cho người chơi thì game cần phải có những tính năng ưu việthơn các phần mềm khác Ngoài một số chức năng như các game bắn tăng khác,game của chúng ta cần phải xây dựng lên những tích năng mà các game kháckhông có nhiều và làm nổi bật những tính năng đó
Hiện nay có một sô công cụ, ngôn ngữ, môi trường để phát triển game, nhómchúng em đã chọn XNA để hoàn thành game bắn xe tăng bởi:
- Ngôn ngữ lập trình CSharp đơn giản, dễ học và hiểu nhanh hơn so với cácngôn ngữ lập trình khác
- Môi trường XNA làm việc chuyên nghiệp, quản lý tốt khi làm game trênwindows
- Microsoft tín nhiệm thư viện XNA này
2 Các chức năng chính của Game Tank:
Cũng như các tính năng chính của các game bắn xe tăng thông thường, GameTank có một số tình năng cơ bản và ưu việt sau:
Cho phép người chơi khởi tạo trò chơi mới
Trong khi chơi, game có một số chức năng nổi bật sau:
Người chơi điều khiển xe tăng bảo vệ Heart và tiêu diệt các xe tăngđịch Khi người chơi tiêu diệt toàn bộ xe tăng địch và bảo vệ an toànHeart thì người chơi sẽ hoàn thành level đó Qua các level cao hơn thìtốc độ di chuyển, tốc độ bắn đạn của xe tăng địch sẽ tăng lên và cùngvới đó là các tường bảo vệ được đơn giản hơn
Để trợ giúp một phần nào đó cho người chơi thì trong khi chơi game xetăng bảo vệ có thể nhận được một số gift sau:
ItemBomb ItemBullet ItemLife ItemMove ItemScore
ItemBomb: Là một item nguy hiểm cho người chơi và xe tăngđịch, khi xe tăng bảo vệ hay xe tăng địch va chạm với item này thì
xe tăng đó sẽ bị tiêu diệt ngay tức khắc Vì vậy, trong khi chơingười chơi nên cẩn thận với item này
Trang 8 ItemBullet: Tăng tốc độ bắn đạn cho xe tăng địch.
ItemLife: Tăng số mạng của xe tăng bảo vệ lên 1 mạng
ItemMove: Tăng tốc độ di chuyển cho xe tăng bảo vệ
ItemScore: Cộng điểm thành tích cho người chơi
Trong phần Option của game, người chơi có thể tắt/mở âm thanh tronggame tùy theo ý thích
Cùng với đó là tính năng Map Editor của game, cho phép người chơithực hiện một số chức năng cơ bản sau:
Thiết kế map chơi game tùy chọn theo ý thích của người chơi.Bạn có thể thiết kế map với nhiều loại tường khác nhau như: gạch,
bê tông, nước và cỏ sao cho người chơi cảm thấy thích thú và hấpdẫn khi chơi game
Sau khi thiết kế map hoàn chỉnh, người chơi có thể lưu map dướidạng file txt và sử dụng tính năng open map để chơi game vớimap do bạn thiết kế
Open tùy chọn do người chơi thiết kế hoặc các level cao hơn tronggame
Giúp người chơi lưu thành tích cao nhất khi chơi game
Nếu người chơi chưa biết được cách chơi game, làm để nào để điềukhiển xe tăng, game có hướng dẫn cách chơi game cụ thể cho ngườichơi
Hiển thị thông tin cơ bản về nhóm hoàn thành game
Trang 9II Giao diện chính của Game Tank:
Các giao diện chính của game như sau:
Trang 103 Màn hình Play (Chơi game):
Phần giao diện quan trọng nhất trong game, nơi người chơi chơi và cảm nhận
về game
4 Màn hình Pause:
Trang 115 Màn hình Option (Tùy chọn):
Trong phần Option, ta có thêm tùy chọn Map Editor dùng để thiết kế Map chơicho game Thiết kế map xong bạn có thể sử dụng chức năng lưu map, mở map theo ýthích
Giao diện ban đầu khi mở Map Editor:
Trang 12Giao diện sau khi thiết kế Map Editor theo ý thích của bạn:
6 Màn hình Construction (Hướng dẫn):
Hiển thị các hướng dẫn chơi và sử dụng game một cách tốt nhất
Trang 137 Màn hình High Score (Thành tích):
Hiển thị điểm số người chơi cao nhất trong game
8 Màn hình About (Thông tin):
Hiển thị thông tin về nhóm tác giả hoàn thành game
Trang 14III Các giải thuật dùng trong Game Tank:
1 Sơ đồ lớp và chức năng:
1.1 Sơ đồ lớp xây dựng giao diện cho game:
Lớp GameScene là một lớp trừu tượng, các lớp khác được kế thừa từ lớpGameScene dùng làm xây dựng nên các giao diện chính cho game và các màn hình hiểnthị khi hoàn thành một level hay hoàn thành game
Trang 151.2 Sơ đồ lớp xây dựng tường:
Game bao gồm các loại tường: gạch, bê tông, nước, cỏ và heart, nên game được xâydựng từ các class kế thừa từ lớp clsWall
1.3 Sơ đồ lớp xây dựng Gift:
Trang 161.4 Sơ đồ lớp xây dựng Map Editor:
1.5 Hình ảnh, âm thành và font chữ trong game:
Audio và Image chứa các hình ảnh và âm thanh được sử dụng game
Cùng với đó là kiểu chữ được định dạng ở font trong thư viện Font
Trang 172 Giải thuật toán quan trọng trong game:
2.1 Giải thuật quản lý và vẽ các thành phần giao diện:
// Đế! m số! thành phần trong giao diện
for ( int i = 0; i < components.Count; i++)
Trang 182.2 Kỹ thuật đọc Map từ file txt:
// Lưu thống tin map đọc vào
public static byte [,] _map;
// Biế! n cờ chỉ 4 trạng thái mơ 4 map bằng MapEditor hay chế! độ mặc định
public static bool isOpen;
// Đường dầK n đế! n file txt lưu map
public static String filePath = "" ;
public static void LoadMap( int level) {
System.IO StreamReader sr = null ; // Nế! u map được mơ 4 bằng MapEditor if (isOpen) {
// Lầ! y đường dầK n file txt sr = System.IO File OpenText(filePath); }
// Nế! u map được mơ 4 theo chế! độ mặc định trong game else {
// Lầ! y file txt theo level mà người chơi đang chơi sr = System.IO File OpenText( "Map" + level + ".txt" ); }
try {
// Lưu nội dung map _map = new byte [14, 17]; // Lưu nội dung file txt string s = "" ; int i = 0; while ((s = sr.ReadLine()) != null ) {
int n = s.Length; for ( int k = 0; k < n; k++) {
string mypoint = s[k].ToString(); // Lầ! y thống tin map _map[i, k] = byte Parse(mypoint); }
i++;
}
}
catch (System Exception ex) {
}
}
Trang 192.3 Kỹ thuật xét va chạm:
Va chạm giữa xe tăng với tường:
// Kiế4 m tra vị trí giữa xe tăng và tường
private bool isIn( Vector2 _position, clsWall wall) {
if (((_position.X > wall.position.X)
&& (_position.X < (wall.position.X + wall.size.X)))
&& ((_position.Y > wall.position.Y)
&& (_position.Y < (wall.position.Y + wall.size.Y))))
return true ; else
return false ; }
// Kiế4 m tra va chạm giữa xe tăng với tường
public bool IsCollides( clsWall wall) {
if (isIn(position, wall)
|| isIn(position + new Vector2 (size.X, 0), wall)
|| isIn(position + new Vector2 (0, size.Y), wall)
|| isIn(position + size, wall)
|| isIn(position + new Vector2 (size.X / 2, 0), wall)
|| isIn(position + new Vector2 (size.X, size.Y / 2), wall)
|| isIn(position + new Vector2 (size.X / 2, size.Y), wall) || isIn(position + new Vector2 (0, size.Y / 2), wall)) return true ;
else
return false ; }
Va chạm giữa xe tăng với đạn và giữa đạn với heart:
// Sư4 dụng hàm Intersects(Rectangle value) được xầy dựng
săK n đế4 kiế4 m tra va chạm
, new Rectangle (( int )position.X
, ( int )position.Y, texture.Width, texture.Height)
, new Rectangle (0, 0, texture.Width, texture.Height) , Color White
, 0
, Vector2 Zero
, SpriteEffects None, 5f);
Trang 20( int )positionCircleBurn.Y - 50, 120, 120) , new Rectangle (( int )(frameX * 120), 0, 120, 120) , Color White
Trang 21IV Tổng kết:
Việc sử dụng thư viện lập trình game XNA trong CSharp vào lập trình giúpviệc lập trình game và trình bày, thể hiển được trong sáng hơn, bên cạnh đó giúptối ưu hóa code dể dàng Giúp cho việc phân tích thiết kế dễ đi vào khuôn mẫu vàthực hiện
Mặc dù đã cố gắng hoàn thiện chương trình, tuy nhiên việc sai sót trong lậptrình là khó tránh khỏi và còn một số hạn chế mong thầy và các bạn thông cảm vàgóp để chương trình hoàn thiện hơn
Cảm ơn thầy và các bạn đã theo dõi báo cáo của nhóm!