Hỏi về lỗi code game bằng js

chào mọi người ạ. em đang viết game nhỏ bằng js theo hướng dẫn trên kênh laptrinh.io bên youtube. đến đoạn xử lý trạng thái các viết gạch thì bị lỗi không hiển thị được. em ngồi tìm cách sửa từ hôm qua tới giờ không được nên đăng lên nhờ mọi người giúp ạ.

trong ảnh là đoạn code để xuất hiện các viên gạch ạ.

nếu khai báo theo vòng lặp for thì chạy ổn. mà khai báo theo kiểu như trong hình thì lại không hiển thị được ạ.

đây là source code em đã viết ạ [https://github.com/hiep98/gamejs]

EM XIN CẢM ƠN TRƯỚC.


function drawBricks(){
    BrickList.forEach( function(b) {
    //    if(!b.isBroken) {
            context.beginPath();
            context.rect(b.x,b.y,BrickConfig.width,BrickConfig.height);
            context.fill();
            context.closePath();
     //   }
    });
}

var isGameOver = false ;
var BrickConfig = {
    offsetX: 25,
    offsetY: 25,
    margin: 25,
    width: 70,
    height: 15,
    totalRow: 3,
    totolCol: 5
};

var BrickList = [];

for(var i = 0; i < BrickConfig.totalRow; i++ ){
    for(var j = 0; j < BrickConfig.totalCol; j++){
        BrickList.push({
            x: BrickConfig.offsetX + j * (BrickConfig.width + BrickConfig.margin),
            y: BrickConfig.offsetY + i * (BrickConfig.height + BrickConfig.margin),
            isBroken: false
        });
    }
}


Nếu dùng vòng for như code dưới này thay cho 2 code trên thì sẽ chạy bình thường ạ

function drawBricks() {
    for(var i = 0; i < 3; i++) {
        for(var j = 0; j < 5; j++) {
            context.beginPath();
            context.rect(
                25 + j * (70 + 25),
                25 + i * (15 + 25),
                70,
                15
            );
            context.fill();
            context.closePath();
        }
    }
}

Lỗi sai chính tả nhé, gợi ý, vấn đề nằm ở biến BrickConfig, có 1 chữ sai chính tả khiến biến của bạn undefined, và vòng lặp không bao giờ chạy được :penguin:

6 Likes

không phải sai chính tả đâu ạ. do nãy admin chuyển ảnh của em thành text nên cái j nó trùng đó ạ.
file code bên github của em nó đầy đủ với chính xác hơn ạ.

var BrickConfig = {
    offsetX: 25,
    offsetY: 25,
    margin: 25,
    width: 70,
    height: 15,
    totalRow: 3,
    totolCol: 5
};


for(var i = 0; i < BrickConfig.totalRow; i++ ){
    for(var j = 0; j < BrickConfig.totalCol; j++){
        BrickList.push({
            x: BrickConfig.offsetX + j * (BrickConfig.width + BrickConfig.margin),
            y: BrickConfig.offsetY + i * (BrickConfig.height + BrickConfig.margin),
            isBroken: false
        });
    }
}

totolCol
:sweat_smile:

6 Likes

hay quá anh ơi. đúng lỗi rồi =)) hèn gì em thử xóa rồi thử lại vòng lặp for thì nó vẫn ra. xong cứ qua đó là lại lỗi. Cảm ơn anh nhiều ạ

Bạn code bằng IDE như Webstorm hoặc cài thêm JS debug cho text editor như VSCode, có khi nó báo lỗi dễ hơn là dò bằng mắt đấy.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?