2014-02-05 70 views
0

好吧我已經使用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(); 
     } 
    } 
} 

回答

0

不添加一個值Y座標:

newB = Target.Location.Y; 

更新這兩個座標將修改兩個軸的位置。因此,將targetspeed同時添加到XY會將您的Target對象沿兩個方向移動相同的數量。物體然後對角移動。您只需更新X座標。

+1

謝謝你的解釋,而不是僅僅回答+1。我會放棄並接受你的答案。 – Beep