0

私は任務のために戦艦プログラムに取り組んでいます。船を配置する良い方法を見つけるのに苦労しています。私が試しているアイデアは、10x10配列をゼロで埋めてから、特定の座標をキャリアの場合はc、デストロイヤーの場合はdなどに置き換えることです。しかし、あまり成功していません。誰かが私がこれを行う方法について何かアイデアを持っている場合、またはあなたがより良い方法を知っている場合は、助けやガイダンスをいただければ幸いです。

申し訳ありませんが、私がオンラインで支援するのはこれが初めてです。そして質問に答えるために。いいえ、助けを求める理由の一部である配列の実行方法がわかりません。私は教科書を読んでいますが、似たようなものは見つかりませんでした。具体的な理解がなければ、本の内容を正確に理解することは困難でした。しかし、これは私がこれまでに戦略ボードとプレイボードを作成するために持っているコードであり、船を配置する試みです

   //================================FillArray==========================================
void FillArray(int pboard[], int sboard[]);
{

    //Statement
    for(int y; y < col; y++);
    {
        printf("%d", y);//prints y axis boarder
        for(int x=0; x < row; x++);
        {
        printf("%d", x);//prints x axis boarder
        for(int y=0; y < col; y++);
            pboard[row][col] = 0;
        }//for
    }//Fills array for play


    for(int y; y < col; y++);
    {
        printf("%d", y);//prints y axis boarder
        for(int x=0; x < row; x++)
        {
        printf("%d", x);//prints x axis boarder
        for(int y=0; y < col; y++);
            sboard[row][col] = 0;
        }//for
    }//Fills array for Ships

    return;
}//FillArray


//================================PlaceShips==========================================

void PlaceShips(int air=5, int bat=4, int cru=3, int des=1, int sub=2);
{

    char ship;
    int x,y;
    int k;

    //Statement

    printf("Enter first letter of ship name: ");
    if(scanf("%c", ship) == a)
        { printf("You have 5 space, Please enter furthest left or futhest up coordinate: ");
            scanf("%d%d", &x,&y);
            while(x>10 && y > 10)
                {
                    printf("Enter 1. to place ship vertically\nEnter 2. to place ship horizontally: ")
                    scanf("%d", &k)
                    for(k==1, y > 6, y++);
                    {   pboard[row][y-1] = a;
                            if(y<0 || y >9)
                        printf("error");
                    }
                    for(k==2, x > 6, x++);
                    {
                        pboard[x-1][col] = a; 
                        if(x < 0 || x > 9)
                        printf("error");
                    }
                }
        }
}

これはこれを行うための良い方法ですか、それともより効率的な方法がありますか?私は次のような構造を試しました:

typedef struct
{
char id[5]={a,a,a,a,a}
char name[]=aircraft
int hits=5
} Aircraft Carrier

しかし、私は彼らがどのように役立つかわかりませんでした。

4

2 に答える 2

1
 for(&k==1, y > 6, y++)

これはあなたが抱えている問題の1つであると思います。

for()まず、ステートメントを で区切る必要があります;

次に、k のアドレスにアクセスし、等しいかどうかをチェックしています。通常、for ステートメントの最初の部分は変数を設定します。ロジックを再考する必要があります。

        while(x>10 && y >> 10)

>>彼は と同じではありませんか>、気をつけてください。

于 2012-12-15T02:25:25.503 に答える
0

PlaceShips関数でやりすぎているようです。これはスタイルの問題ですが、最初に aPlaceOneShipHorizontally()と a を書くかもしれません。PlaceOneShipVertically() function.

例えば、

void PlaceOneShipHorizontally(int board[], int ox, int oy, int character, int size) {
  for (int x = ox; x < (size+ox); x++) {
    board[x][oy] = character;
  }
}

次に、ユーザーが何をしたいのかを判断したら、上記の関数を使用するように PlaceShips() 関数を編集します。

于 2012-12-15T03:18:58.853 に答える