我正在尝试在 vb 中重新创建游戏 2048,并且我正在努力弄清楚如何让数组中的值一起滑动。
在我完成全部任务之前,我正在尝试在一个单维数组中执行此操作
例如,如果我有一个数组
[0,2,0,4]
我需要弄清楚如何逐步遍历每个数字,检查其后面是否有 0,以便数组变为
[2,4,0,0]
但我正在努力弄清楚如何检查数组中数字后面的所有值
我现在只是在尝试向左滑动功能,这样我就可以慢慢来,有没有人知道我怎么能做到这一点?
您可以使用 LINQ 执行此操作:
Dim a = {0, 2, 0, 4}
a = a.Where(Function(x) x <> 0).Concat(a.Where(Function(x) x = 0)).ToArray()
Console.WriteLine(String.Join(",", a)) ' outputs 2,4,0,0
第一个Where
获取所有非零元素。将Concat
结果与(所有零元素)连接起来,从而保持数据的长度,.ToArray()
并将结果转换回数组。
For Each
仅循环数组的旧经典。
Dim previousRow As Integer() = { 0, 2, 0, 4 }
Dim newRow As Integer() = { 0, 0, 0, 0 }
Dim newRowIndex As Integer = 0
For Each previousValue In previousRow
If previousValue = 0 Then Continue For
newRow(newRowIndex) = previousValue
newRowIndex += 1
Next
将返回{ 2, 4, 0, 0 }
伪代码:
dim arr1, arr2,
foreach [value in array]
if ( value is not 0 )
then add to arr1
else add to arr2
concat arr1, arr2