Изменить переменную или структуру внутри функции C - PullRequest
0 голосов
/ 13 апреля 2019

Я хотел создать игру о жизни на C, чтобы выучить C, но она не работает. Я только что заметил, что мой код не работает, когда я пытаюсь изменить переменную, созданную внутри функции, даже если я пытаюсь изменить ее внутри той же функции.

Когда я передаю val = 1 в комментарии и цвет в комментарии, код работает поэтому val = 0 не вызывает проблем, ни color = {0,0,0,0}, потому что он не изменяет переменную. Как я могу это исправить?

void next_grid(int nbc, int nbr,Cell tab[][120],Cell newtab[][120]){

    for (int y = 0; y<120; y++){
        for(int x = 0; x<120; x++){

            int nb_neighbors = count_neighbors(tab,120,120,y,x);
            int val = 0;
            Color color = {0,0,0,0};

            // When a cell is dead
            if (tab[y][x].val == 0)
            {
                if (nb_neighbors == 3)
                {
                    val = 1;
                    color = (Color)  {230,160,0,255};
                }
                else{
                    val = 0;
                    color = (Color)  {0,0,0,255};
                }   

            }

            {
                if (nb_neighbors == 2 || nb_neighbors == 3)
                {
                    val = 1;
                    color = (Color) {230,160,0,255};

                }
                else
                {
                    val = 0;
                    color = (Color) {0,0,0,255};
                } 
            }


            newtab[y][x] = (Cell) {val,x,y,color};
        }
    }   
    // swap array
    for (int y = 0; y<120; y++){
        for(int x = 0; x<120; x++){
            tab[y][x] = (Cell) newtab[y][x];
        }
    } 
}
...