2013-04-23 32 views
5

Im xây dựng trò chơi John Conways về cuộc sống bằng canvas HTML5. Nó có một đối tượng gameOfLife chứa một mảng với tất cả các ô và trạng thái của chúng (đã chết/còn sống). Đây là mã xây dựng một ô:Có vẻ như không thêm hai số nguyên vào javascript?

function cell(x,y){ 
    this.x = x; 
    this.y = y; 
    this.isAlive = false; 
} 

Tôi đang khám phá cách kiểm tra ô xung quanh các trạng thái ô. Theo tôi hiểu, một cách là lặp qua mảng và tìm một ô có tọa độ khớp với nhau xung quanh ô hiện đang được chọn.

Tôi đã nghĩ đến việc đi theo một cách khác. Bằng cách cộng và trừ số ô (với các biến thể nhỏ của +1 và -1) trên trục Y (và X) từ chỉ mục của ô đang được đánh giá, bạn sẽ có thể tìm ra chỉ mục của bất kỳ đầu trang nào bên trái, bên trái, dưới cùng bên trái, trên cùng bên phải, bên phải, ô dưới cùng bên phải.

tôi đã không thể kiểm tra ý tưởng này mặc dù, vì nó không cho tôi có được chỉ số mong muốn:

Vì vậy, trong bản cập nhật lặp của tôi:

//I know that there is a cell at the index of exampleIndex + cellsY 
exampleIndex = 200; 

game.getLivingNeighbours(exampleIndex); 


function getLivingNeighbours(i){ 

    console.log(i) //Logs an integer 
    console.log(grid.cellsY) //Logs an integer 
    console.log(game.cells[i + grid.cellsY]); //Undefined?! 

} 
+0

đó là gì? 'cellsX' hoặc' cellsY'? – Joseph

+0

Bạn đang cố thêm 'i' và' cellsY'. Bạn đang kiểm tra xem liệu 'cellsX' có phải là số nguyên không, nhưng bạn không bao giờ kiểm tra' cellsY' –

+0

cellsY, rất tiếc. – styke

Trả lời

5

Có thể có hai lý do:

  1. trong các biến JavaScript là lỏng lẻo kiểu đó là lý do tại sao nó tốt để phân tích int trước hoạt động số học.

    thử:

    console.log(game.cells[parseInt(i,10) + parseInt(grid.cellsY,10)]); 
    
  2. Bạn đang cố gắng truy cập vào một mảng, bạn cần phải kiểm tra xem parseInt(i,10) + parseInt(grid.cellsY,10) chỉ số tồn tại trong mảng của bạn hay không.

+1

Nó có thể là một lỗi đánh máy hoặc một vấn đề từ ngữ nhưng tôi không thể hiểu những gì bạn có nghĩa là với "Trong biến javascript không phải là mặc định một int". Một loại biến JavaScript là bất kỳ loại nào bạn gán cho nó. –

+2

Biến JavaScript không được nhập.Và vì '+' được sử dụng cho cả việc thêm số và nối chuỗi, nên chuyển đổi rõ ràng các chuỗi có thể thành số trước khi thực hiện bổ sung. – Blazemonger

+0

cảm ơn bạn bè ... Cập nhật bài viết :) –

Các vấn đề liên quan