我目前停留在我的任務的一部分,我似乎無法弄清楚。它涉及到我建立一個遊戲板,使用tablelayoutpanel作爲遊戲板。按照特定的順序在tablelayoutpanel單元中放置對象
到目前爲止,我已經顯示在黑板上的瓦片「廣場」,但地磚(細胞)是不是爲了像這樣:
我需要開始片顯示在左下角,和精是在右上方,在中間的細胞,以便爲這樣:
其中涉及這部分的方法是這些:
/////此方法設置使用遊戲板和陣列「廣場」的,(仍在進展中的工作,但主要是做)
private void SetupGameBoard() {
for (int i = 0; i <= 41; i++) {
SquareControl squareCreate = new SquareControl(Board.Squares[i], null);
int coloumn = 0;
int row = 0;
MapSquareNumToScreenRowAndColumn(i, out coloumn, out row);
boardTableLayoutPanel.Controls.Add(squareCreate, coloumn, row);
}
}// SetupGameBaord
而這一點,
private static void MapSquareNumToScreenRowAndColumn(int squareNumber, out int rowNumber, out int columnNumber) {
// ######################## Add more code to this method and replace the next two lines by something more sensible. ###############################
rowNumber = 0; // Use 0 to make the compiler happy for now.
columnNumber = 0; // Use 0 to make the compiler happy for now.
}//end MapSquareNumToScreenRowAndColumn
到目前爲止,我所掌握的是在MapSquareToScreenRowandcColumn中,我計算出的方塊需要發生的位置。
真的會喜歡一些提示/建議/幫助/任何事情。
如果你們需要更多信息,請告訴我。
謝謝!
編輯:
所以我想通了幾分怎麼辦,只是想知道一個更好的方式來做到這一點。在MapSqauretoScreenRowandColumn我把這個小if語句只是爲了測試:
if (squareNumber >= 0 && squareNumber <= 5) {
rowNumber = 6;
}
所以如果sqaurenumber大於0且小於5,其放在右排。我的問題是,有沒有更好的方法來做到這一點?而不是爲此寫一連串的線,有幾種方法可以做到這一點?
感謝您的回覆,但是我放置它們的順序真的很重要嗎?我認爲這將有更多的與MapSquareNumtoScreen(等..)的實際計算 – user3496101 2014-10-17 03:43:48
另外,請查看我在OP編輯,謝謝! – user3496101 2014-10-17 03:54:19
@ user3496101我在代碼中看不到如何計算列和行值。但我的回答是處理你正在混合你的列和行的事實。我認爲只有兩個循環會更容易:'fox y = 0到rows,然後是x = 0到columns'。 – LarsTech 2014-10-17 13:12:47