Tôi đang chơi xung quanh với một kẻ đánh bom nhân bản để học phát triển trò chơi.
Cho đến nay tôi đã thực hiện gạch, di chuyển, phát hiện va chạm và nhận vật phẩm. Tôi cũng có chế độ ném bom giả (chỉ là đồ họa và va chạm, không có chức năng thực sự).
Tôi đã tạo một jsFiddle của trò chơi với chức năng tôi hiện có. Các mã trong fiddle là rất xấu mặc dù. Cuộn qua bản đồ và bạn tìm thấy cách tôi đặt bom.
Dù sao, những gì tôi muốn làm là một đối tượng, có thông tin chung về bom như:
function Bomb(){
this.radius = player.bombRadius;
this.placeBomb = function (){
if(player.bombs != 0){
// place bomb
}
}
this.explosion = function (){
// Explosion
}
}
Tôi thực sự không biết làm thế nào để phù hợp với nó vào mã. Mỗi khi tôi đặt bom, tôi làm var bomb = new Bomb();
hay tôi cần liên tục có nó trong kịch bản để có thể truy cập nó.
Làm thế nào để quả bom gây thiệt hại? Có đơn giản như làm X, Y theo mọi hướng cho đến khi bán kính hết hoặc đối tượng dừng nó không? Tôi có thể sử dụng cái gì đó như setTimeout (bomb.explumping, 3000) làm bộ đếm thời gian không?
Bất kỳ trợ giúp đều được đánh giá cao, có thể là một lời giải thích đơn giản về lý thuyết hoặc ví dụ mã dựa trên câu đố. Khi tôi thử cách đối tượng, nó phá mã.
Cập nhật: Bây giờ tôi đặt bom, và sau một khoảng thời gian nhất định xóa nó tùy thuộc vào vị trí tôi đặt nó. Nhưng nếu tôi đặt một quả bom trước khi quả bom đầu tiên phát nổ thì nó chỉ xóa một trong số chúng (rõ ràng vì bomX và bom đã thay đổi kể từ khi quả bom đầu tiên được đặt).
Bây giờ tôi cần biết làm thế nào để khắc phục vấn đề này, có thể tạo ra một mảng mới với tất cả các vị trí bom? Cách tốt nhất để làm điều này là gì?
Mã hiện tại:
function placeBomb(){
if(placebomb && player.bombs != 0){
map[player.Y][player.X].object = 2;
bombX = player.X; bombY = player.Y;
placebomb = false;
player.bombs--;
setTimeout(explode, 3000);
}
}
function explode(){
alert('BOOM!');
delete map[bombY][bombX].object;
player.bombs++;
}