0

私はC#に非常に慣れていないため、サンドボックスタイプのゲームを作成しようとしています。乱数を使用して、どのブロックがどこに行くかを選択していますが、常に同じ「乱数」を選択しているため、ブロックは常に同じです。これが私のコードです:

    int x = 0; 

    public GameWindow() 
    {
        InitializeComponent();
        Blocks();
    }

    private void BlockThree()
    {

    }

    private void BlockTwo()
    {
        x = 2;
        BlockData();
    }

    private void BlockOne()
    {
        x = 1;
        BlockData();
    }

    private async void Blocks()
    {
        await Task.Delay(5000);
        BlockOne();
        await Task.Delay(5000);
        BlockTwo();
        await Task.Delay(5000);
        BlockThree();
    }

    private async void BlockData()
    {
        Random rand = new Random();

        int num = rand.Next(1, 2);

        if (num == 1)
        {
            if (x == 1)
            {
                pictureBox1.Image = Image.FromFile("C:/Program Files (x86)/SandBoxEngine/grass_side.png");
            }
            else
            {
                if (x == 2)
                {
                    pictureBox2.Image = Image.FromFile("C:/Program Files (x86)/SandBoxEngine/grass_side.png");
                }
            }
        }
        else
        {
            if (num == 2)
            {
                if (x == 1)
                {
                    pictureBox1.Image = Image.FromFile("C:/Program Files (x86)/SandBoxEngine/dirt.png");
                }
                else
                {
                    if (x == 2)
                    {
                        pictureBox2.Image = Image.FromFile("C:/Program Files (x86)/SandBoxEngine/dirt.png");
                    }
                }
            }
        }   
    }
}
4

1 に答える 1

3

ランダムをグローバルとして指定する必要があります。

    private Random rand = new Random();

次に、rand.Next を使用します。

また

    rand.Next(1,2);

常に 1 を返します。1 または 2 を取得するには、これを使用します。

    rand.Next(1,3);
于 2013-11-09T19:48:12.730 に答える