1

それで、C# を使用した後、C++ の学習を開始しました。Microsoft.NET は私のお気に入りのフレームワークの 1 つであり、C# と C++ の両方で使用するのが大好きです。迷路/シューティングゲームを作ろうとしていますが、コントロールに問題があります。衝突検出を検出するには、これを使用します。

void check_col(Object^sender, EventArgs^e)
    {
        if((Sprites::character->Location.X == (Tiles::wall1->Location.X - 15))
            && (Sprites::character->Location.Y >= Tiles::wall1->Location.Y) 
            && (Sprites::character->Location.Y <= Tiles::wall1->Location.Y + 15))
        {
            col_right = true;
            System::Windows::Forms::MessageBox::Show("We Have A Collision");
        }
        else {col_right = false;}
    }

衝突検出について具体的に尋ねることもできますが、これは私にとってはうまくいきます。「wall1」の場所を尋ねるとき、コードは重要です。問題は、画面に描かれている最後の壁しか検出しないことです。さて、私は次のコードを使用して、画面内のすべてを描画します。

int tilex = 0;
        int tiley = 0;
        for(int row = 0; row < 20; row++)
        {
            for(int column = 0; column < 20; column++)
            {
                switch(map[row][column])
                {
                case 0: make_wall1(); 
                    Tiles::wall1->Location = System::Drawing::Point(tilex, tiley);
                    this->Controls->Add(Tiles::wall1);
                    Tiles::wall1->BringToFront();
                }
                tilex += 15;
                if(column == 19)
                {
                    tiley += 15;
                    tilex = 0;
                }
            }
        }

私の質問は次のとおりです。すべての「壁」の場所を取得するにはどうすればよいですか?!

注: これらのコードでは、壁が 15x15p のタイルであるため、15 と表示されることがあります。

4

0 に答える 0