1

ボールは右中途半端に跳ね返った。ただ、右端で弾ませたかった。正しく行う方法を教えてください。私が持っているコードは以下の通りです。

public partial class StartGame : Form
{
    int x; //The x axis from the upper left corner
    int y; //The y axis from the upper left corner 
    int spdX; //The change of x
    int spdY; //The change of y

    public StartGame()
    {
        InitializeComponent();
    }

    private void StartGame_Load(object sender, EventArgs e)
    {
        //Loads the ball on the screen at bottom of the window
        spdX = 1; //The speed of the ball of y
        spdY = 1; //The speed of the ball of x
        x = this.ClientSize.Width / 5; //The x axis the ball is loaded at
        y = this.ClientSize.Height - 10; //The y axis the ball is loaded at
    }

    private void StartGame_Paint_1(object sender, PaintEventArgs e)
    {
        //This is the inner paint color of the circle that is 10 by 10
        e.Graphics.FillEllipse(Brushes.Blue, x, y, 10, 10);
        //This is the outline paint color of the circle that is 10 by 10
        e.Graphics.DrawEllipse(Pens.Blue, x, y, 10, 10); 
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        y = y + spdY;
        x = x + spdX;

        if (y < 0)
        {
            spdY = -spdY; //if y is less than 0 then we change direction
        }
        else if (x < -5)
        {
            spdX = -spdX;
        }
        else if (y + 10 > this.ClientSize.Height)
        {
            spdY = -spdY; //if y + 10, the radius of the circle is greater than the form width then we change direction
        }
        else if (x + 10 > this.ClientSize.Height)
        {
            spdX = -spdX;
        }

        this.Invalidate(); 
    }
4

2 に答える 2