簡體   English   中英

為什么我的C ++生命游戲無法正常工作?

[英]Why is my C++ Game of Life not working properly?

這編譯並運行正常,但結果與它們應該是完全不同的。

我已經剪斷了無關緊要的代碼:

bool grid[1280][1024]; // hardcoded to my screen res for now

for (int x = 0; x<1280; x++)     //init grid to false
{
    for (int y = 0; y<1024; y++)
    {
        grid[x][y] = false;
    }
}

grid[320][120] = true; // add a simple pattern
grid[320][121] = true;
grid[320][122] = true;
grid[320][123] = true;
grid[320][124] = true;
grid[320][125] = true;
grid[320][126] = true;
grid[320][127] = true;
grid[320][128] = true;

// [snipped]

for (int x = 1; x< (1280 - 1); x++)
{
    for (int y = 1; y< (1024 - 1); y++)
    {
        int n = 0; // neighbours
        if (grid[x-1][y-1]) n++; // top left
        if (grid[x][y-1])   n++; // top middle
        if (grid[x+1][y-1]) n++; // top right

        if (grid[x-1][y])   n++; // left
        if (grid[x+1][y])   n++; // right

        if (grid[x-1][y+1]) n++; // bottom left
        if (grid[x][y+1])   n++; // bottom middle
        if (grid[x+1][y+1]) n++; // bottom right


        if (grid[x][y]) // current cell is on
        {
            SetPixel(screen, x, y, on); // drawing function

            if (n < 2) grid[x][y] = false; // die. :(
            if (n > 3) grid[x][y] = false; // die. :(
            // otherwise (2 or 3), survive. :)

        }
        else // current cell is off
        {
            SetPixel(screen, x, y, off); // drawing function

            if (n == 3) grid[x][y] = true; // IT'S ALIVE!!!
        }



    }
}

首先,它不起作用,因為你沒有分離每個單元格的結果,即,如果grid [0] [0]死亡,那么這將立即反映在grid [1] [0]的生死中,不是生命游戲的運作方式。 其次,它不起作用,因為你似乎沒有多次運行游戲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM