16,717
社区成员
发帖
与我相关
我的任务
分享For iSt_i = 0 To 3 '魔方陣を4つに分けます
Select Case iSt_i
Case 0 '左上 A
iSt_x = 0
iSt_y = 0
Case 1 '右下 B
iSt_x = sizeh
iSt_y = sizeh
Case 2 '右上 C
iSt_x = sizeh
iSt_y = 0
Case 3 '左下 D
iSt_x = 0
iSt_y = sizeh
End Select
giX = (sizeh + 1) / 2 - 1 '第一個の数字は第一行の中間にになります
giY = 0
For i As Integer = 1 To sizesq + 1
magic(giY + iSt_y, giX + iSt_x) = i + sizesq * iSt_i
If i Mod (iCount / 2) = 0 Then 'すぐ1個数がiCountの倍数な時、まっすぐな下に置きます
giY = giY + 1
ElseIf giY = 0 Then '上の境を超える時
giX = giX + 1
giY = iCount / 2 - 1
ElseIf giX = iCount / 2 - 1 Then '右側の境を超える時
giX = 0
giY = giY - 1
Else '正常な情況の下
giX = giX + 1
giY = giY - 1
End If
Next 'end of for (count)
Next 'end of for (iSt_i)
'数字を出力します
For j As Integer = 1 To sizem + 1
temp = magic((sizeh + 1) / 2 - 1, j)
magic((iCount / 2) / 2, j) = magic((sizeh + 1) / 2 + sizeh - 1, j)
magic((sizeh + 1) / 2 + sizeh - 1, j) = temp
Next
For i As Integer = 0 To sizeh - 1
If i = (sizeh + 1) / 2 - 1 Then
Exit For
End If
For j As Integer = 0 To sizem - 1
temp = magic(i, j)
magic(i, j) = magic(sizeh + i, j)
magic(sizeh + i, j) = temp
Next
Next
For i As Integer = 0 To sizeh - 1
For j As Integer = iCount - 1 To iCount - sizem + 1 Step -1
temp = magic(i, j)
magic(i, j) = magic(sizeh + i, j)
magic(sizeh + i, j) = temp
Next
Next
For i As Integer = 0 To iCount - 1 '循環出力
For j As Integer = 0 To iCount - 1
grdTxt.Item(i, j) = Convert.ToString(magic(i, j))
Next
Next
End If