0

Visual Studio で c# pac-man ゲームに取り組んでいます。

メインのスプライト クラスと、User というサブクラスがあります。ユーザーは、計算したとおりに x 位置と y 位置を設定する必要があります。

私のタイマーは何をしますか:

 pictureBox1.Focus();
 paper.Clear(Color.Transparent);
 user.moveUser(keyValue);//Code1 shown below
 sprite.DrawSprites(paper);//Code shown below
 pictureBox1.Image = bmp;

これらのメソッドの背後にあるコード:

コード 1:

public void moveUser(int mKeyValue)
    {

        switch (previousImage)
        {
            case false:

                switch (mKeyValue)
                {
                    case 39:
                        sprite.Image = imageArray[0];//left
                        sprite.XPos += stepsAmount;

                        break;
                    case 37:
                        sprite.Image = imageArray[1];//right
                        sprite.XPos -= stepsAmount;

                        break;
                    case 38:
                        sprite.Image = imageArray[2];//up
                        sprite.YPos -= stepsAmount;

                        break;
                    case 40:
                        sprite.Image = imageArray[3];//down
                        sprite.YPos += stepsAmount;

                        break;
                }
                previousImage = true;
                break;
            case true:
                switch (mKeyValue)
                {
                    case 39:
                        sprite.Image = imageArray[4];
                        break;
                    case 37:
                        sprite.Image = imageArray[5];
                        break;
                    case 38:
                        sprite.Image = imageArray[6];
                        break;
                    case 40:
                        sprite.Image = imageArray[7];
                        break;
                }
                previousImage = false;
                break;

        }
    }

コード 2:

        protected int xPos = 0, yPos = 0, size = 28;

    public Image Image
    {
        get { return image; }
        set { image = value; }
    }


    public int YPos
    {
        get { return yPos; }
        set { yPos = value; }
    }

    public int XPos
    {
        get { return xPos; }
        set { xPos = value; }
    }


 public void DrawSprites(Graphics drawArea)
    {
        drawArea.DrawImage(Image, xPos, yPos, size, size);
    }

デバッグし、コンソールが moveUser メソッドを実行すると、設定されたプロパティ Xpos、YPos、および Image が変更されます。しかし、drawSprites メソッドが実行されると、これらの変数は 0 または元の割り当てられた値に戻ります。小さな黄色い友達を移動できるように、それらを永続的に変更する必要があります。

注: すべてのコードが貼り付けられているわけではなく、必要なものだけが貼り付けられています。さらにコードが必要な場合は、お問い合わせください。

注 2: ユーザーは Sprite のサブクラスです

御時間ありがとうございます

4

1 に答える 1

2

魔法のように 0 に戻るわけではありません。

同じオブジェクトをずっと保持するのではなく、新しいオブジェクトを作成している可能性が最も高いです。したがって、問題は投稿したコードではなく、オブジェクトを使用/作成/変更する場所にあります。

于 2013-03-08T22:16:37.090 に答える