2

「Conways Game of Life」のビジュアライゼーションをコーディングしようとしています。私はそれをどうやって進めるかについてしっかりした考えを持っていると思いますが、私が遭遇している問題はこれです: 2次元配列の行と列を出力しようとすると、最後に向かって数字の間でジャンプし始め、スクロールが止まりません数字。78の「×」に引っかかりそうです。

#include <iostream>
#include <cstring>
#include <cstdlib>
#define HEIGHT 25
#define WIDTH 80
using namespace std;

void makeBoard();
int seed = 0;

int main()
{
    makeBoard();
}

void makeBoard()
{
    int board[79][24] = {0};
    /* Seed the random number generator with the specified seed */
    srand(seed);
    for(int x = 0; x <= 79; x++)
    {
        for(int y = 0; y <= 24; y++)
        {
            /* 50% chance for a cell to be alive */
            if(rand() % 100 < 50)
            {
                board[x][y] = {1};
            }
            else
            {
                board[x][y] = {0};
            }
            /*if(board[x][y] == 1) {
                    cout << "SPAM" << endl;
                     }*/
                     //this is just printing out the current location it is iterating through.
            cout << "X: " << x << " Y: " << y << endl;
        }
        cout << endl;
    }
}

実行に必要なすべてのコードがすぐそこにあるはずです。

ご協力いただきありがとうございます。

4

2 に答える 2

6

インデックスが範囲外です。[79][24] の配列には、0 ~ 19 および 0 ~ 23 のインデックスがあります。あなたの状態はそれぞれ 79 と 24 で止まります。<= を < に置き換えます。

于 2013-07-14T02:41:16.090 に答える
0

サイズ N の配列は、0 から n-1 になります。配列の各次元に沿って境界を使い果たしているため、<= を < に置き換える必要があります。

また、プログラムの上部で定義した 80 と 25 ではなく、79 列と 24 行しかないことにも注意してください。これを修正するには、次のようにします。

int board[HEIGHT][WIDTH];

次に、79 と 24 をそれぞれ HEIGHT と WIDTH に置き換え、ループ条件の <= を < に変更します。そうすれば、上部の単一の値を変更して、ボード全体のサイズを変更するだけです。

于 2013-07-14T03:04:12.690 に答える