以不同的坐标位置和速度移动对象

时间:2014-02-05 13:37:14

标签: c# if-statement coordinates

好的我之前使用过c#,但是在asap.net中使用了数据库,并构建了表单和数据驱动的站点。我现在正试图学习在动画或游戏中使用它。

我还在尝试并试图抓住它,所以请耐心等待。

所以我有两个对象(Ball& Target)在单击按钮时在Windows应用程序中移动(我将时间设置为false并且单击开始时)。

当两个物体在每个过剩空间中通过时,背景会改变颜色。问题是我试图让Target从左到右移动而不是从一个角落移动到另一个角落。

有人可以告诉我如何使用现有代码执行此操作,谢谢。

代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int ballspeed;
        int targetspeed;
        public Form1()
        {
            InitializeComponent();
            ballspeed = 4;
            targetspeed = 2;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            int newX, newY, newA, newB;
            newX = Ball.Location.X + ballspeed;
            newY = Ball.Location.Y + ballspeed;
            newA = Target.Location.X + targetspeed;
            newB = Target.Location.Y + targetspeed;
            if (newX > this.Width - Ball.Width)
            {
                ballspeed = -ballspeed;
            }
            if (newX < 0)
            {
                ballspeed = -ballspeed;
            }
            if (Ball.Bounds.IntersectsWith(Target.Bounds))
            {
                this.BackColor = Color.Black;
            }
            else
            {
                this.BackColor = Color.White;
            }
            Ball.Location = new Point(newX, newY);

            if (newA > this.Width - Target.Width)
            {
                targetspeed = -targetspeed;
            }
            if (newA < 0)
            {
                targetspeed = -targetspeed;
            }

            Target.Location = new Point(newA, newB);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.timer1.Start();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

不要向Y坐标添加值:

newB = Target.Location.Y;

更新两个坐标将修改两个轴上的位置。因此,向targetspeedX添加Y会将您的Target对象向两个方向移动相同的金额。然后物体沿对角线移动。您只需更新X坐标。