Vào những năm 80, khi máy tính và Internet vẫn chưa xuất hiện thì thứ giải trí “xa xỉ” nhất đối với những đứa trẻ con đô thị là màn hình tivi và máy điện tử bốn nút Nintendo của Nhật. Chính các trò chơi điện tử kinh điển thuở thập niên 80 này là sự khởi đầu của nguồn cảm hứng sáng tạo cho những game online ăn khách sau này.Thật thiếu sót nếu không liệt kê trò Battle City – bắn tăng – vào dòng game kinh điển của một thế hệ. Trò chơi này được Namco bán năm 1985 trên hệ máy NES, sau đó được phát triển cho một số nền máy như Game Boy, Arcade, Sharp X1. Battle City có khoảng 35 màn chơi mà khi vượt qua hết game thủ sẽ quay về chơi lại từ đầu với mức độ khó hơn. Ngoài ra, trò chơi cũng có chế độ cho phép thay đổi và tự tạo ra bản đồ.Máy điện tử Brick game đã thực sự tạo nên một cuộc cách mạng trong các phương tiện giải trí cầm tay từ những năm 1993 – 1994. Hiếm có cô cậu học sinh nào thời đó không bị “hút hồn” vào màn hình đen trắng của chiếc máy này trong nỗ lực chinh phục đỉnh cao của trò chơi “xếp gạch”. Các phiên bản về sau của Brick game còn có thể các trò khác như đấm bốc hay đua xe.Tuổi thơ đã đi qua và không bao giờ trở lại, đến bao giờ game thủ Việt mới có thể sống lại cảm giác của một thời đam mê điện tử bốn nút, có thể chơi đi chơi lại một trò chơi mà không thấy chán? Ngày đó, bao giờ? Để mang hồi tưởng lại một thời tuổi thơ với bao điều thú vị, tôi đã quyết định lựa chọn đề tài “Mô phỏng game bắn tăng trên máy điện tử cầm tay Brick Game”, mời các bạn tìm hiểu phần nội dung đề tài.
Trang 1KHOA CNTT&TT - -
BÀI TIỂU LUẬN HỌC PHẦN ĐỒ HỌA MÁY TÍNH
Đề tài:
“Mô phỏng game bắn tăng trên máy điện tử cầm tay Brick Game”
Thanh Hóa, 11/2014
Trang 2- -
BÀI TIỂU LUẬN HỌC PHẦN ĐỒ HỌA MÁY TÍNH
Đề tài:
“Mô phỏng game bắn tăng trên máy điện tử cầm tay Brick Game”
Thanh Hóa, 11/2014
Trang 3Trong quá trình học tập tại trường, chúng em đã được học hỏi và tiếp thu rất nhiều kiến thức đại cương cũng như chuyên ngành nhằm nâng cao vốn hiểu biết và là hành trang quý báu giúp chúng em vững bước vào đời Em xin gửi lời cảm ơn chân thành đến quý thầy cô đã giảng dạy chúng em trong suốt thời gian qua, khoa Công Nghệ Thông Tin và truyền thông cũng như tất cả quý thầy cô trong trường Đại học Hồng Đức Đặc biệt em xin chân thành cảm ơn cô Lê Thị Hồng - người đã trực tiếp giảng dạy chúng em học phần Đồ họa máy tính và cũng là người tận tình hướng dẫn em trong suốt thời gian thực hiện đề tài này
Tuy nhiên, dù rất cố gắng nhưng do thời gian có hạn nên bài tiểu luận của
em khó tránh khỏi những thiếu sót Em rất mong nhận được sự thông cảm và đóng góp ý kiến của quý thầy cô và các bạn để bài tiểu luận của em được hoàn chỉnh hơn
Em xin chân thành cảm ơn!
Thanh Hóa, 11/2014
Sinh viên thực hiện
Trang 4CHƯƠNG I: MỞ ĐẦU 1
1.1 Lí do chọn đề tài 1
1.2 Mục tiêu, nhiệm vụ của đề tài 1
1.2.1 Mục tiêu 1
1.2.2 Nhiệm vụ 2
1.3 Khách thể, đối tượng và phạm vi nghiên cứu 2
1.3.1 Khách thể nghiên cứu 2
1.3.2 Đối tượng và phạm vi nghiên cứu 2
1.4 Phương pháp nghiên cứu 2
CHƯƠNG II: CƠ SỞ LÍ LUẬN 3
2.1 Xe tăng 3
2.2 Đạn 3
2.3 Di chuyển 4
2.4 Boss 6
2.5 Luật chơi 7
CHƯƠNG III: NỘI DUNG 9
3.1 Tổ chức lưu trữ game 9
3.2 Nhóm các hàm điều khiển 10
3.2.1 Nhóm các hàm thao tác với đạn 10
3.2.2 Nhóm các hàm thao tác với xe tăng 11
3.2.3 Nhóm các hàm điều khiển xe tăng của địch 12
3.2.4 Hàm điều khiển Boss 13
3.2.5 Nhóm các hàm điều khiển việc chơi game của người chơi 13
3.3 Nhóm các hàm đồ họa 14
3.3.1 Hiển thị một điểm ảnh trên màn hình 14
3.3.2 Hàm hiển thị một số nguyên ra màn hình đồ họa 15
3.3.3 Nhóm các hàm hiển thị các đối tượng trong game 16
Trang 53.3.6 Menu chính 22
3.3.7 High Score 23
3.3.8 Option 24
3.3.9 Help 25
3.3.10 About 26
3.4 Nhóm các hàm khác 27
3.4.1 Nhóm các hàm điều khiển cửa sổ chương trình 27
3.4.2 Nhóm các hàm kiểm tra 27
3.4.3 Nhóm các hàm định hình hệ thống 28
3.4.4 Nhóm các hàm thao tác với chuột 28
3.5 Xây dựng một số level cho game 28
CHƯƠNG IV: KẾT LUẬN 32
4.1 Tóm tắt kết quả nghiên cứu 32
4.2 Đề xuất và hướng phát triển 32
TÀI LIỆU THAM KHẢO 34
Trang 6Hình 1: Xe tăng địch 3
Hình 2: Xe tăng do người chơi điều khiển 3
Hình 3: Đạn 3
Hình 4: Di chuyển xe tăng khi không bị vật cản 4
Hình 5: Di chuyển khi xe tăng bị cản một bên ở phía trước 5
Hình 6: Di chuyển xe tăng khi bị cản cả hai bên ở phía trước 6
Hình 7: Di chuyển khi xe tăng bị cản ở phía sau 6
Hình 8: Boss 6
Hình 9: Màn hình Welcome 20
Hình 10: Menu chính của chương trình 22
Hình 11: Bảng xếp hạng người chơi 23
Hình 12: Giao diện Option 24
Hình 13: Giao diện Help 25
Hình 14: Giao diện About 26
Hình 15: Level 1 29
Hình 16: Level 2 29
Hình 17: Level 3 30
Hình 18: Level 4 30
Hình 19: Đấu với Boss ở cuối mỗi Level 31
Trang 7CHƯƠNG I: MỞ ĐẦU
1.1 Lí do chọn đề tài
Vào những năm 80, khi máy tính và Internet vẫn chưa xuất hiện thì thứ giải trí “xa xỉ” nhất đối với những đứa trẻ con đô thị là màn hình tivi và máy điện tử bốn nút Nintendo của Nhật Chính các trò chơi điện tử kinh điển thuở thập niên
80 này là sự khởi đầu của nguồn cảm hứng sáng tạo cho những game online ăn khách sau này
Thật thiếu sót nếu không liệt kê trò Battle City – bắn tăng – vào dòng game kinh điển của một thế hệ Trò chơi này được Namco bán năm 1985 trên hệ máy NES, sau đó được phát triển cho một số nền máy như Game Boy, Arcade, Sharp X1 Battle City có khoảng 35 màn chơi mà khi vượt qua hết game thủ sẽ quay về chơi lại từ đầu với mức độ khó hơn Ngoài ra, trò chơi cũng có chế độ cho phép thay đổi và tự tạo ra bản đồ
Máy điện tử Brick game đã thực sự tạo nên một cuộc cách mạng trong các phương tiện giải trí cầm tay từ những năm 1993 – 1994 Hiếm có cô cậu học sinh nào thời đó không bị “hút hồn” vào màn hình đen trắng của chiếc máy này trong
nỗ lực chinh phục đỉnh cao của trò chơi “xếp gạch” Các phiên bản về sau của Brick game còn có thể các trò khác như đấm bốc hay đua xe
Tuổi thơ đã đi qua và không bao giờ trở lại, đến bao giờ game thủ Việt mới
có thể sống lại cảm giác của một thời đam mê điện tử bốn nút, có thể chơi đi chơi lại một trò chơi mà không thấy chán? Ngày đó, bao giờ?Để mang hồi tưởng lại
một thời tuổi thơ với bao điều thú vị, tôi đã quyết định lựa chọn đề tài “Mô phỏng
game bắn tăng trên máy điện tử cầm tay Brick Game”, mời các bạn tìm hiểu
phần nội dung đề tài
1.2 Mục tiêu, nhiệm vụ của đề tài
1.2.1 Mục tiêu
Đề tài này được thực hiện nhằm tạo ra một chương trình mô phỏng giao diện
và cách thức hoạt động của game bắn tăng trên máy điện tử cầm tay Brick game
Trang 81.2.2 Nhiệm vụ
- Tổ chức lưu trữ game một cách hợp lí nhất
- Xây dựng nhóm các hàm điều khiển mô phỏng hoạt động của game
- Xây dựng nhóm các hàm đồ họa mô phỏng giao diện của game
- Xây dựng nhóm các hàm điều khiển cửa sổ, kiểm tra, định hình hệ thống
- Đọc chuột và bạn phím đồng thời trong quá trình chơi game
- Xây dựng một số level cho game
1.3 Khách thể, đối tượng và phạm vi nghiên cứu
1.3.1 Khách thể nghiên cứu
Cài đặt chương trình mô phỏng game bắn tăng trên máy điện tử cầm tay Brick Game
1.3.2 Đối tượng và phạm vi nghiên cứu
Game bắn tăng trên máy điện tử cầm tay Brick Game
1.4 Phương pháp nghiên cứu
- Phương pháp thu thập tài liệu: thu thập tài liệu từ những bài báo khoa học, các trang web tin học và một số ebook về đề tài nghiên cứu, giáo trình và các tài liệu học tập khác
- Phương pháp phân tích và tổng hợp tài liệu: từ những tài liệu đã thu thập, tiến hành tìm hiểu, phân tích và tồng hợp nội dung liên quan đến
Trang 9CHƯƠNG II: CƠ SỞ LÍ LUẬN 2.1 Xe tăng
Ở trong game, mỗi xe tăng được biểu diễn bởi 6 điểm ảnh; điểm ảnh ở phía trước chính là nòng của xe tăng Hình 1 biểu diễn hình dạng của xe tăng khi ở những hướng khác nhau tương ứng là lên trên, sang trái, xuống dưới và sang phải
Xe tăng do người chơi điều khiển cũng giống như xe tăng của địch, chỉ khác
ở chỗ có tâm với một màu sắc khác để phân biệt (hình 2)
2.2 Đạn
Mỗi viên đạn được biểu diễn bởi 1 điểm ảnh Khi được một xe tăng bắn ra,
nó sẽ có vị trí ban đầu ở ngay trước nòng của xe tăng đó (hình 3) Viên đạn sẽ bay theo hướng ban đầu và sẽ không đổi hướng trong suốt quá trình Khi viên đạn
Hình 1: Xe tăng địch
Hình 3: Đạn Hình 2: Xe tăng do người chơi điều khiển
Trang 10chạm vào giới hạn của địa hình, một xe tăng thì viên đạn sẽ bị hủy Khi đạn chạm vào một vật cản của địa hình, ô địa hình đó sẽ bị phá hủy, đồng thời viên đạn đó cũng bị hủy Khi hai hay nhiều viên đạn chạm vào nhau, tất cả chúng sẽ bị hủy
nó sẽ được dịch chuyển 1 ô về hướng đó
- Khi xe tăng di chuyển một nấc về một hướng khác so với hướng hiện tại của xe tăng (xe rẽ trái, rẽ phải hoặc quay đầu) và những ô thuộc xe
Hình 4: Di chuyển xe tăng khi không bị vật cản
Trang 11tăng khi di chuyển không có vật cản thì tọa độ tâm của nó là không đổi và chỉ xoay toàn thân về hướng tương ứng (hình 4)
- Khi phía trước của xe tăng có vật cản ở một phía thì nó không thể tiến
về phía trước được; tuy nhiên nó vẫn có thể rẽ về 1 trong 3 hướng còn lại nếu như hướng đó không có vật cản Khi xe tăng rẽ về hướng ngược với hướng có vật cản, toàn thân của xe tăng dịch chuyển về hướng đó
1 nấc, đồng thời thân xe tăng quay về hướng đó (hình 5)
- Khi xe tăng bị vật cản ở cả hai bên phía trước, nó không thể tiến về phía trước cũng như rẽ trái hay rẽ phải, lúc này nó chỉ có thể quay đầu Khi quay đầu, ngoài việc xe tăng đổi hướng thì nó còn được dịch chuyển về hướng đó 1 nấc (hình 6)
Hình 5: Di chuyển khi xe tăng bị cản một bên ở phía trước
Trang 12- Khi xe tăng bị một vật cản ở phía sau (bởi nòng của một xe tăng khác),
nó không thể rẽ trái, rẽ phải hay quay đầu, nó chỉ có thể tiến về phía trước (hình 7)
2.4 Boss
Boss được biểu diễn bởi 81 điểm ảnh như hình 8 Toàn thân Boss được bọc
thép rất chắc chắn nên bạn chỉ có thể làm tổn thương Boss bằng cách bắn trúng điểm tận cùng trên nòng của Boss (điểm yếu) Khi Boss xuất hiện thì luôn ở tận
Hình 6: Di chuyển xe tăng khi bị cản cả hai bên ở phía trước
Hình 8: Boss Hình 7: Di chuyển khi xe tăng bị cản ở phía sau
Trang 13cùng, phía trên của địa hình Boss chỉ có thể di chuyển qua trái và qua phải theo một quỹ đạo nhất định Khi Boss bắn ra một viên đạn, viên đạn đó sẽ xuất hiện ngay phía trước nòng của Boss và sẽ bay từ trên xuống dưới
Khi ở chế độ đánh Boss, xe tăng do người chơi điều khiển sẽ xuất hiện ở tận
cùng, phía dưới của địa hình, xe tăng do người chơi điều khiển sẽ di chuyển ngang
và luôn hướng nòng về phía Boss
2.5 Luật chơi
Tại mỗi màn chơi, số lượng xe tăng của quân địch có mặt không quá 8 Khi một xe tăng của quân địch bị tiêu diệt, một xe tăng khác sẽ xuất hiện thay thế Xe tăng của quân địch có thể xuất hiện ở 1 trong 6 vị trị trên địa hình và sẽ di chuyển
và bắn một cách ngấu nhiên Đạn của xe tăng địch không làm hại quân địch mà chỉ có đạn do xe tăng người chơi bắn ra mới có thể tiêu diệt được quân địch Người chơi sẽ được yêu cầu tiêu diệt một số lượng xe tăng nhất định, khi
hoàn thành nhiệm vụ này, người chơi sẽ được đấu với Boss; nếu xe tăng người
chơi điều khiển điều khiển bị trúng đạn thì ngay lập tức nó sẽ nổ và người chơi phải chơi lại màn chơi đó, đồng thời số lượt chơi còn lại sẽ bị trừ đi 1
Khi đấu với Boss, người chơi sẽ được giao nhiệm vụ bắn trúng điểm yếu của
Boss một lượng đạn nhất định để tiêu diệt được nó và hoàn thành nhiệm vụ Khi
bị trúng đạn của Boss, xe tăng do người chơi điều khiển sẽ nổ ngay tức thì và người chơi sẽ phải quay lại chiến đấu với Boss từ đầu đồng thời số lượt chơi còn lại sẽ bị trừ đi 1 Sau khi hạ được Boss của Level đó, người chơi sẽ được đưa tới
Level tiếp theo với độ khó cao hơn
Trong quá trình chơi, người chơi có thể tạm dừng bất cứ lúc nào với chức
năng Pause hay dừng chơi với chức năng Stop Khi chọn chức năng Stop, toàn bộ
thông tin liên quan đến trò chơi sẽ được lưu lại; người dùng có thể thoát khỏi trò chơi và tiếp tục bất cứ lúc nào nếu muốn
Khi chức năng Reset được gọi tới khi người dùng đang chơi, toàn bộ kết quả
sẽ bị hủy bỏ, người dùng sẽ chơi lại game từ đầu
Khi xe tăng do người chơi điều khiển bị nổ và số lượt chơi còn lại đã hết thì người chơi sẽ thua Trò chơi sẽ tự động cập nhật bảng xếp hạng và yêu cầu người
Trang 14chơi nhập tên vào (nếu như số điểm của người chơi lớn hơn của người chơi có thứ hạng 10 trong bảng xếp hạng)
Khi người chơi hoàn thành được tất cả những Level trong game, trò chơi sẽ
kết thúc, kết quả của người chơi sẽ được cập nhật vào bảng thứ hạng, người chơi
có thể chơi lại từ đầu nếu muốn
Trang 15CHƯƠNG III: NỘI DUNG
3.1 Tổ chức lưu trữ game
Các thông tin chính về game được lưu trữ bằng những biến sau:
char a[maxx+2][maxy+2];
int score=0, destroy=0, level=1, target=0, cursor[5], turn=4;
int mball[101][4], c_mball=0, eball[101][4], c_eball=0, enemy[11][4], c_enemy=0; int a_boss[5];
Trong đó:
- char a[maxx+2][maxy+2]là biến mảng dùng để lưu lại toàn bộ địa hình trong game, mỗi phần tử của mảng ứng với mỗi điểm ảnh trên địa hình
- int score=0, destroy=0, level=1, target=0, cursor[5], turn=4 lần lượt
là các biến dùng để lưu lại số điểm của người chơi đạt được; nhiệm vụ
mà người chơi đã hoàn thành được trong mỗi level; level hiện tại của người chơi; mục tiêu của level hiện tại; những thông tin liên quan đến
xe tăng do người chơi điều khiển; số lượt chơi còn lại
- int mball[101][4], c_mball=0, eball[101][4], c_eball=0, enemy[11][4], c_enemy=0 lần lượt là các biến dùng để lưu lại thông
tin về những viên đạn do xe tăng người chơi điều khiển bắn ra; số lượng đạn do xe tăng người chơi bắn ra hiện có trên màn hình; thông tin về những viên đạn do xe tăng địch bắn ra; số lượng đạn do xe tăng địch bắn ra hiện có trên màn hình; thông tin về những xe tăng địch hiện có trên màn hình; số lượng xe tăng địch hiện có trên màn hình
- int a_boss[5] là mảng dùng để lưu các thông tin liên quan tới Boss trong mỗi level
Trang 16int r_score[12];
Trong đó:
- string path dùng để lưu lại thông tin về đường dẫn tới thư mục cài đặt
của game, đường dẫn này sẽ được cập nhật liên tục mỗi khi game đươc thực thi
- int lv_max=0 dùng để lưu lại thông tin về level tối đa đang được game
hỗ trợ Khi người chơi vượt được qua level này thì game sẽ kết thúc
Biến này sẽ được tự động cập nhật giá trị mỗi khi game được thực thi,
vì vậy, nếu muốn tăng số lượng level của game, ta chỉ cần copy file lưu trữ thông tin về level của game vào thư mục cài đặt, game sẽ tự
động nhận diện sự thay đổi này khi khởi động lại
- char r_name[12][16] và int r_score[12] là hai biến dùng để lưu lại
bảng xếp hạng của người chơi Chúng sẽ được tự động nạp vào khi game khởi động và cập nhật khi có một người chơi nào đó vượt qua thành tích của người chơi đứng cuối cùng trong bảng xếp hạng
Ngoài ra, còn một số biến khác dùng để lưu lại thông tin về sự cài đặt của người chơi:
int sound=1, music=1, speed=6;
bool InFullScreen=false;
int X0=0, Y0=0;
Trong đó:
- int sound=1, music=1, speed=6 là 3 biến dùng để lưu lại thông tin về
việc bật hay tắt hiệu ứng âm thanh, nhạc nền và tốc độ của game
- bool InFullScreen=false dùng để lưu lại thông tin về cửa sổ game có
đang ở chế độ toàn màn hình hay chế độ cửa sổ thông thường
- int X0=0, Y0=0 là hai biến dùng để lưu lại tọa độ trên cùng bên trái
của màn hình hiển thị game
3.2 Nhóm các hàm điều khiển
3.2.1 Nhóm các hàm thao tác với đạn
Các hàm thao tác với đạn bao gồm:
Trang 17void huy_dan(int i, int ball[][4], int &c_ball, int del=1);
void huy_danxy(int x, int y, int direction, int ball[][4], int &c_ball);
void huy_danxy_same(int x, int y, int direction, int ball[][4], int &c_ball, int &p);
Trong đó:
- Hàm void huy_dan(int i, int ball[][4], int &c_ball, int del=1) dùng để hủy viên đạn thứ i trong mảng đạn ball với số đạn trong mảng hiện tại
là c_ball Đối số del đưa vào để cho phép hàm này xóa viên đạn trên
màn hình đồ họa hay không
- Hàm void huy_danxy(int x, int y, int direction, int ball[][4], int
&c_ball) dùng để xóa tất cả những viên đạn có tọa độ (x, y) và có
hướng bay là direction trên màn hình game ra khỏi mảng lưu đạn ball, sau khi thao tác xóa hoàn thành, số đạn c_ball được lưu trên mảng sẽ
giảm đi 1
- Hàm void huy_danxy_same(int x, int y, int direction, int ball[][4], int
&c_ball, int &p) dùng để xóa tất cả những viên đạn có tọa độ (x, y) và
có hướng bay là direction trên màn hình game ra khỏi mảng lưu đạn
ball, sau khi thao tác xóa hoàn thành, số đạn c_ball được lưu trên mảng
sẽ giảm đi 1, viên đạn thứ p trên mảng lưu đạn ban đầu sẽ biến đổi thành viên đạn thứ p trên mảng lưu đạn sau khi xóa
3.2.2 Nhóm các hàm thao tác với xe tăng
Các hàm thao tác với xe tăng bao gồm:
int empty(int x, int y, int direction);
int damage(int x, int y, int direction, int xt, int yt, int directiont);
void move(int &x, int &y, int &o_direction, int n_direction);
void shoot(int x, int y, int direction, int a_ball[][4], int &c_ball);
int die(int x, int y, int direction, int ball[][4], int &c_ball);
Trong đó:
- Hàm int empty(int x, int y, int direction) dùng để kiểm tra xem tại vị trí (x, y) có còn trống để một xe tăng có hướng direction nằm hay
không
Trang 18- Hàm int damage(int x, int y, int direction, int xt, int yt, int directiont) dùng để kiểm tra xem một xe tăng nằm ở tọa độ (xt, yt) với hướng
directiont có bị một viên đạn có tọa độ (x, y) với hướng direction uy
hiếp hay không
- Hàm void move(int &x, int &y, int &o_direction, int n_direction) dùng để di chuyển một xe tăng ở vị trí (x, y) với hướng là o_direction sang hướng n_direction
- Hàm void shoot(int x, int y, int direction, int a_ball[][4], int &c_ball) dùng để bắn một viên đạn ra từ xe tăng có tọa độ (x, y) với hướng
direction Viên đạn được bắn ra sẽ được lưu vào mảng a_ball với số
đạn được lưu trong mảng c_ball tăng lên 1
- Hàm int die(int x, int y, int direction, int ball[][4], int &c_ball) dùng
để kiểm tra xem xe tăng có tọa độ (x, y) với hướng direction có bị giết bới một viên đạn thuộc mảng ball có c_ball viên đạn hay không
3.2.3 Nhóm các hàm điều khiển xe tăng của địch
Những hàm điều khiển xe tăng của địch được sử dụng bao gồm:
void sinhdich(int enemy[][4], int &c_enemy);
void dichlam(int enemy[][4], int &c_enemy, int eball[][4], int &c_eball, int mball[][4], int &c_mball);
Trong đó:
- Hàm void sinhdich(int enemy[][4], int &c_enemy) dùng để sinh ra
một xe tăng địch tại một trong 6 vị trí trên màn hình Sau khi xe tăng
được sinh ra sẽ được lưu vào mảng enemy với số xe tăng trong mảng
c_enemy được tăng lên 1 Việc sinh địch phục thuộc vào số lượng xe
tăng địch cho phép tối đa trên màn hình e_max
- Hàm void dichlam(int enemy[][4], int &c_enemy, int eball[][4], int
&c_eball, int mball[][4], int &c_mball) dùng để điều khiển hoạt động
của tất cả các xe tăng của địch Các thao tác này được thực hiện một cách ngẫu nhiên phụ thuộc vào những con số được sinh ngẫu nhiên bởi hệ thống
Trang 193.2.4 Hàm điều khiển Boss
if (rand()%2 && rand()%2 && rand()%2)
p_ball(eball, c_eball, mball, c_mball);
}
Hàm này sẽ điều khiển toàn bộ hoạt động của Boss bao gồm di chuyển và
bắn Cách thao tác này cũng được thực hiện phụ thuộc vào những con số ngẫu
nhiên được sinh ra bởi hệ thống Tốc độ bắn của Boss phụ thuộc vào b_speed
được quy định bởi chương trình
3.2.5 Nhóm các hàm điều khiển việc chơi game của người chơi
Các hàm điều khiển này bao gồm:
Trang 20Trong đó:
- Hàm void lv_initial() dùng để khởi tạo cho mỗi level bao gồm đọc địa
hình vào từ file, khởi tạo địch và một vài thông số khác liên quan tới
level đó
- Hàm int play() dùng để điều khiển tất cả các thao tác của người chơi
và xe tăng của địch khi chơi ở chế độ bắn xe tăng Giá trị trả về của hàm trả về sẽ quyết định thao tác tiếp theo của toàn chương trình
- Hàm int boss() dùng để điều khiển tất cả các thao tác của người chơi
và Boss khi chơi ở chế độ Boss Giá trị trả về của hàm sẽ quyết định
thao tác sẽ thực hiện tiếp theo của toàn chương trình
- Hàm void newgame() sẽ được gọi tới khi người dùng chơi một ván
mới Hàm này sẽ điều khiển toàn bộ quá trình chơi game của người
dùng qua các level Hoạt động của hàm sẽ phụ thuộc vào giá trị trả về của hàm play() và boss() đã được đề cập tới ở trên
- Hàm void continuegame() cũng tương tự như hàm play(), tuy nhiên
hàm này được gọi tới khi người dùng tiếp tục chơi với một trạng thái được lưu từ trước Khi được gọi đến, hàm này sẽ đọc tất cả những thông tin liên quan tới game đã được người chơi dừng lại tại phiên trước; sau khi đọc dữ liệu, quá trình chơi game sẽ được tiếp tục
3.3 Nhóm các hàm đồ họa
3.3.1 Hiển thị một điểm ảnh trên màn hình
Mỗi điểm ảnh trên màn hình chơi game được hiển thị ra bởi hàm
void point(int x, int y, int color=0)
floodfill(X0+xlt+(y-1)*p_size+p_size/2, Y0+ylt+(x-1)*p_size+p_size/2, color);
Y0+ylt+x*p_size-1);