2013-04-23 14 views
5

Im buduję grę John Conways z płótnem HTML5. Ma obiekt gameOfLife, który zawiera tablicę zawierającą wszystkie komórki i ich stany (martwe/żywe). Oto kod, który tworzy komórkę:Nie można dodać dwóch liczb całkowitych w javascript?

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

jestem odkrywanie sposobów sprawdzania do komórek otaczających komórek stany. Jak rozumiem, jednym ze sposobów jest iteracja poprzez tablicę i znalezienie komórki o współrzędnych, które pasują do otaczającej aktualnie zaznaczonej komórki.

Myślałem o przejściu w inny sposób. Dodając i odejmując liczbę komórek (z małymi odchyleniami +1 i -1) na osi Y (i X) od indeksu komórki będącej przedmiotem oceny, powinieneś być w stanie wymyślić indeks dowolnego wierzchołka lewa, lewa, dolna lewa, górna prawa, prawa, dolna prawa komórka.

nie byłem w stanie przetestować ten pomysł, chociaż, ponieważ nie pozwala mi uzyskać żądany indeks:

Więc, moim pętli aktualizacji:

//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

co to jest? 'cellsX' lub' cellsY'? – Joseph

+0

Próbujesz dodać 'i' oraz' cellsY'. Sprawdzasz, czy 'cellX' jest liczbą całkowitą, ale nigdy nie zaznaczasz' cellsY' –

+0

cellsY, bardzo przepraszam. – styke

Odpowiedz

5

nie może być dwa powody:

  1. zmienne JavaScript są luźne typu, dlatego dobrze jest przeanalizować int przed operacja arytmetyczna.

    try:

    console.log(game.cells[parseInt(i,10) + parseInt(grid.cellsY,10)]); 
    
  2. Próbujesz uzyskać dostęp do tablicy, trzeba sprawdzić, czy parseInt(i,10) + parseInt(grid.cellsY,10) indeks istnieje w tablicy czy nie.

+1

Jest to prawdopodobnie literówka lub problem z tekstem, ale nie mogę zrozumieć, co masz na myśli, mówiąc "In javascript zmienna nie jest domyślnie int". Typ zmiennej JavaScript jest tym, który przypisujesz do niego. –

+2

Zmienne JavaScript nie są wpisywane wcale.A ponieważ '+' jest używane zarówno do dodawania liczb, jak i łączenia łańcuchów, dobrym pomysłem jest jawne przekonwertowanie możliwych łańcuchów na liczby przed wykonaniem dodawania. – Blazemonger

+0

dzięki znajomym ... Zaktualizowano wpis :) –

Powiązane problemy