我目前陷入了我的任务的一部分,我似乎无法弄明白。它涉及我使用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,则将其放在右侧。我的问题是,有没有更好的方法来做其余的事情?而不是为此写一堆线,有没有办法在少数几个?
答案 0 :(得分:0)
您的参数需要行,然后是列
private static void MapSquareNumToScreenRowAndColumn(int squareNumber,
out int rowNumber, out int columnNumber) {
但你倒退了:
MapSquareNumToScreenRowAndColumn(i, out coloumn, out row);
答案 1 :(得分:0)
我可以给你一个打击,但我不能告诉你一切因为我在同一个班级。哈哈。
基本上:
坐标(x,y)与(columnNumber,rowNumber)相同,注意不要混淆这些。其中columnNumber = x和rowNumber = y。
现在要弄清楚我们所处的x和y,我们只是做简单的数学运算。
Table size: (6,7) (6 wide by 7 high),
我们可以根据索引来计算x和y是什么。
所以让我们从x开始:
要解决x是什么,我们需要做的就是在任何给定时间找出它的数量。简单地说:
x = index % table.width
现在我们解决了y 这要求我们从最大值到最小值。这样:
y = table.height - (index/table.width)
另外我们将int除以这样的情况下小数点落在我们想要的结尾。 我们除以宽度,因为我们想知道它到达当前位置的列数。
现在要获得反转效果,我们基本上希望每个奇数列发生这种情况 所以我们需要做的就是:
if (y % 2 != 0) { //if it is an odd number
x = table.width - x;
}
创造反效果;
另外,请记住KEY POINT,table.width和table.height = keys,所以如果table.width = 6则键为5,因为数组从0开始...
希望有所帮助。