2

私はこのコードを作成しようとしています。これにより、Obj の開始をクリック"FORM1"すると、このメソッドが呼び出されて使用および有効化されtimer1ます。

開始ボタンをクリックすると、犬の絵が右側に移動し始め、到達X= 620するとメッセージボックスが表示されます" win"

ただし、メッセージ ボックスは表示され続け、dogpic がゴール ラインに到達した後も停止しません。

class dog
{
    public int startpost;
    public int TrackLenght = 620;
    public PictureBox dogpic = null;
    public int Location = 0;
    public Random random=new Random();

    public void ResetStart()
    { 
        dogpic.Location = new System.Drawing.Point(40, startpost);
    }

    public bool testrun()
    {
        Point p = dogpic.Location;

        if (p.X < TrackLenght)
        {
            int distance = random.Next(5);

            p.X = p.X + distance;
            dogpic.Location = p;
            Location = dogpic.Location.X;
            return false;
        }
        else
        {
            MessageBox.Show(dogpic.Name + " win");

            return true;
        }
    }
}
4

4 に答える 4

1

勝利後に pX をリセットしてみてください。

あなたのコードを見てはいけませんが、次のようなことをすべきだと思います:

public bool testrun()
    {

        Point p = dogpic.Location;

        if (p.X < TrackLenght)
        {
            int distance = random.Next(5);

            p.X = p.X + distance;
            dogpic.Location = p;
            Location = dogpic.Location.X;
           return false;
        }
        else
        {

            MessageBox.Show(dogpic.Name + " win");
            ResetStart()
            return true;
        }}}
于 2013-08-19T07:31:22.067 に答える
1

ボタンをクリックすると、タイマーを有効にして作業を行う ResetStart() 関数を呼び出す必要があり、エンドポイントに到達するとタイマーを無効にする必要があります。

class dog
{
    public int startpost;
    public int TrackLenght = 620;
    public PictureBox dogpic = null;
    public int Location = 0;
    public Random random=new Random();

    public void ResetStart()
    { 
        dogpic.Location = new System.Drawing.Point(40, startpost);
        timer.Enabled=true;
    }

    public bool testrun()
    {
        Point p = dogpic.Location;

        if (p.X < TrackLenght)
        {
            int distance = random.Next(5);

            p.X = p.X + distance;
            dogpic.Location = p;
            Location = dogpic.Location.X;
            return false;
        }
        else
        {
            MessageBox.Show(dogpic.Name + " win");
            timer.Enabled=false;    
            return true;
        }
    }
}

それがうまくいくことを願っています。

于 2013-08-19T07:54:18.060 に答える