2017-04-26 18 views
-1

嗨,我試圖讓一個大學項目驢kong,我們必須使用c#和visual studio。我用我的物品的圖片框,所以馬里奧是一個圖片框,平臺也是如此。我試圖做一個重力的功能,但我可以知道馬里奧的位置。它不斷給出一個錯誤,我尋求幫助,但沒有任何幫助我。試圖使一個重力和跳轉功能和平臺使用圖片盒

bool right; 
    bool left; 
    int m_x, m_y, m_w, m_h; 
    int gravity = 5; 
    int speed = 5; 


    private void timer1_Tick(object sender, EventArgs e) 
    { 

     m_x = mario.Location.X; 
     m_y = mario.Location.Y; 
     m_w = mario.Size.Width; 
     m_h = mario.Size.Height; 

     Gravity(); 

     if (right == true){ mario.Left += speed; } 
     if (left == true) { mario.Left -= speed; } 
    } 

    public void Gravity() 
    { 
     m_y += gravity; 
     mario.Location.Y = m_y;  
    } 

我得到的錯誤:

Error 1 Cannot modify the return value of 'System.Windows.Forms.Control.Location' because it is not a variable C:\Users\Albert\documents\visual studio 2013\Projects\DonkeyKongPB\DonkeyKongPB\Form1.cs 56 13 DonkeyKongPB

+0

你看了[文件](HTTPS ://msdn.microsoft.com/en-us/library/system.windows.forms.control.location(v = vs.110)的.aspx)?這是一個屬性,獲取或設置一個'Point' – UnholySheep

+0

您可以改爲'mario.Top = m_y'。因爲'Location'返回一個結構,你需要做'Location = new Point(mario.Location.X,m_y);'。 –

+0

謝謝你們兩個人的工作鰓,林不知道如何點工程我閱讀文檔,我沒有得到它(任何設置點如何工作的例子將是非常感謝 – ATaylor

回答

1

你可以做mario.Top = m_y而不是獲得同樣的效果,因爲你只修改y


或者,如果你堅持做自己的方式:

因爲Location回報Point結構你需要做的:

Location = new Point(mario.Location.X, m_y); 
+0

只是爲了記錄,你不能只修改Y值的原因是Point是一個結構體而不是一個類,結構體在初始化時需要設置所有的屬性,並且這些值之後不能改變。 –