2 CHƢƠNG : PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.4 Thiết kế Game
2.4.12 Lớp Bản đồ (Page)
Bản đồ đƣợc tạo ngẫu nhiên mỗi lần chơi cấp độ mới. Để đơn giản, Game định nghĩa tọa độ bản đồ có chiều rộng 10 đơn vị, chiều cao 15 đơn vị. Tạo thành bản đồ 10x15 = 150 đơn vị.
public static final int PAGE_WIDTH = 10; public static final int PAGE_HEIGHT = 15;
Với mỗi hố đen, viên bi, đích có kích thƣớc khi vẽ lên mà hình là 32x32, với bản đồ kích thƣớc 10x15, khi vẽ lên màn hình chỉ cần nhân với tỉ lệ 32 sẽ ra tọa độ thực cần vẽ. Ví dụ., viên bi ở vị trí 2x10 trên bản đồ sẽ có vị trí trên màn hình là (2x32, 10x32) = 64x320 trên màn hình đƣợc vẽ. Bản đồ cần lần lƣợt các biến sau đây:
Biến xác định Game đã thắng hay thua:
public boolean gameOver = false; public boolean gameWin = false;
Biến lƣu điểm qua mỗi màn chơi.
public int score = 0;
Biến lƣu cấp độ qua mỗi màn chơi.
public int level = 1;
Nguyễn Bình Nguyên | CCLT03C Trang 50
float time;
Biến tính thời gian cịn lại của từng màn chơi.
int printTime;
Biến đếm số hố đen cần vẽ.
public int numHoles;
Mảng lƣu các hố đen cần vẽ.
public Hole[] holes;
Biến viên bi, kiểu dữ liệu Ball.
public Ball ball;
Biến tạo ngẫu nhiên sử dụng trong tạo vị trí trên bản đồ. Random random;
Hai biến lấy vị trí tạo ngẫu nhiên.
private int holeX; private int holeY;
Biến đếm số hố đen đã tạo.
private int sloted;
Mảng bản đồ là một mảng 2 chiều, xác định vị trí trên bản đồ đã có vật thể nào đƣợc tạo hay chƣa.
boolean maps[][] = new boolean[PAGE_WIDTH][PAGE_HEIGHT];
Các mảng đƣờng đi đƣợc tạo sẵn với các vị trí true ở đầu và cuối khung bản đồ cho viên bi là đích. Các vị trí true cịn lại nối từ đích đến viên bi để bảo đảm ln có đƣờng đi và các hố đen khi tạo mới không đƣợc thả vào đƣờng đi này. Bản đồ cần các phƣơng thức sau:
public Page() {
initMaps(level);}
initMaps() Tạo mới đối tƣợng Page (bản đồ), khởi tạo bản đồ bằng phƣơng thức initMaps(level) và truyền cấp độ vào để phƣơng thức tạo số hố đen thích hợp. Lấy ngẫu nhiên 1 trong các đƣờng đi đƣợc định sẵn, tạo đích, viên bi theo đƣờng đi này. Tạo các hố đen không nằm trong đƣờng đi, bảo đảm bản đồ ln có đƣờng đi mà không bị các hố đen tạo ngẫu nhiên lấp hết. Tiếp theo là phƣơng thức cập nhật:
Nguyễn Bình Nguyên | CCLT03C Trang 51 Nhận giá trị cảm biến gia tốc từ lớp GameScr truyền vào cho lớp viên bi để viên bi tự cập nhật lại tọa độ, kiểm tra va chạm với thành để giữ bi ln trong màn hình, kiểm tra va chạm với hố đen, đích để xác định thắng hay thua Game. Cập nhật thời gian chơi cho từng màn chơi.
Tổng hợp lại, Game đƣợc xây dựng với các lớp nhƣ sau:
Hình 11: Các lớp cần thiết của Game