2

最初に、この小さなプロジェクトでは XNA や LINQ を使用していないことに注意してください。基本的には、C# Windows アプリケーションを使用して Tetris のクローンを作成したいと考えています。私はすでにグリッドを描画しており、ピクチャボックスのサイズは 250x500 で、各正方形ブロックを 25 ピクセル x 25 ピクセルにしています。

現在、形を描くのは素人です。グリッド上に線と長方形、円、楕円、および多角形を描画し、それらを色で塗りつぶすことができます。それだけです。私は絵を描くこと以外に多くのことをすることができません。言い換えれば、テトリスの「T」形状などのポリゴンを描画するために作成したポイントを使用して、基本的な形状です。

私の質問は、テトリス シェイプを作成するときに、C# の Drawing メソッドを使用して描画する必要があるか、テトリス シェイプのビットマップ画像を作成してインポートし、それらを使用してテトリス クローンを作成する必要があるかということです。

形の描き方が分かれば、あとは自分で考えます。また、ゲーム グリッドで作業を行う場合、GameGrid というクラスから Picturebox プロパティを継承する必要がありますか?

4

2 に答える 2

0

各フレームのレンダリングが高速化されるため、ビットマップと事前にレンダリングされたイメージを使用することをお勧めします。これは、そのようなゲームのほとんどが行うことです。

于 2013-03-09T06:39:05.783 に答える
0

形状をレンダリングする方法は、衝突検出に影響します。たとえば、形状のビットマップの場合、おそらくピクセルごとの衝突または特定の形状を維持する別の構造によってT、 がいつ衝突したかを検出する方法が必要になります。T一方、使用中のブロックのリストを維持するだけであれば、衝突検出ははるかに簡単になります。

元のゲームと同じように、ブロックのマトリックスとして形状を持っている場合、レンダリング、処理、および衝突がはるかに簡単になることがあります。

たとえば、次の疑似コードを見てください。

class Shape
{
    bool [3][3] Blocks;

    Pos pos;
}

Shape T = new Shape();

T.Blocks[0][0] = true;
T.Blocks[0][1] = true;
T.Blocks[0][2] = true;

T.Blocks[1][0] = false;
T.Blocks[1][1] = true;
T.Blocks[1][2] = false;

T.Blocks[2][0] = false;
T.Blocks[2][1] = true;
T.Blocks[2][2] = false;

レンダリング時には、次の行に沿って何かを行うことができます。

foreach(Shape s in currentBlocks)
{
    for(int x = 0; i < 3)
    {
        for(int y = 0; y < 3; y++)
        {
            if(s.Blocks[x][y])
            {
                gameGrid.Render(s.Pos.X + x, s.Pos.Y + y);
            }
        }
    }
}
于 2013-03-11T06:48:48.203 に答える