2017-10-04 1 views
1

Ich habe einen Code geschrieben, der eine Bildbox bewegt, wenn ich auf eine Schaltfläche klicke. Zum Beispiel verwendet die rechte Taste diesen Code:Wie ändert man die Operation in einem Unterprogramm in C#?

private void btnRight_Click(object sender, EventArgs e) 
    { 
    //move right 
    if (stopThePlayer == true) 
    { 
     return; 
    } 
    else 
    { 
     x = x + speed; 
     RightBoundary(); 
     MovingSubprograms(); 
    } 
} 

Mach dir keine Sorgen über die Unterprogramme. Alles was ich wissen will ist, dass es einen Weg gibt, dass ich nur x = x + speed; Teile ändern kann. Zum Beispiel, in der linken Taste möchte ich es x = x - speed machen. Im Grunde werde ich nur ein Unterprogramm erstellen und nur diesen Code ändern. Ist das möglich? Vielen Dank.

+0

location-Eigenschaft ist ein Punkt, der im Grunde eine Koordinate ist. Also erstelle einen neuen Punkt vom aktuellen Ort addiere und subtrahiere x gemäß der Funktionalität und setze die location Eigenschaft auf diesen Punkt einfach – Ramankingdom

+0

Du wirst kein "Unterprogramm" erstellen. Sie werden einen anderen Event-Handler erstellen, der das btnLeft_Click-Ereignis behandelt und das tut, was Sie sagen (den gleichen Code, außer mit 'x = x-speed'). Aber wiederholen Sie den Code nicht, sondern fügen Sie ihn in eine separate Funktion ein. .. Und natürlich, das bringt dich zur @JohnKoerner Antwort – AgapwIesu

Antwort

1

Ihre beste Wette ist, eine Funktion zu erstellen, die einen Parameter dessen, was akzeptiert die Sie ändern möchten:

private void MovePlayer(int offset) 
{ 
    //move right 
    if (stopThePlayer == true) 
    { 
     return; 
    } 
    else 
    { 
     x = x + offset; 
     RightBoundary(); 
     MovingSubprograms(); 
    } 
} 

private void btnRight_Click(object sender, EventArgs e) 
{ 
    MovePlayer(speed); 
} 

private void btnLeft_Click(object sender, EventArgs e) 
{ 
    MovePlayer(speed*-1); 
} 
+1

Das macht Sinn .... Danke! – Qedized

Verwandte Themen