为什么我不能将 16 乘以 2?

问题描述 投票:0回答:1

我正在尝试使用 WinForms 用 C# 编写 2048 游戏,并且我刚刚完成了合并数字的代码设置。 2可以合并为4,4可以合并为8,8可以合并为16,32可以合并为64。但是16不能合并为32???除了图像和名称之外,所有文件都是相同的。 All of the files in their folder.

此代码检查两个相同的数字是否试图占据相同的空间,并且应该将它们合并到一个单元格中,这适用于除 16 到 32 之外的所有单元格。它只是获取图像的标签,将其乘以 2,然后将其设置为新标签和文件路径。

else if ((imageList[a, b].Tag == imageList[a + aChange, b + bChange].Tag) && imageList[a, b].Tag.ToString() != "0")
{
    imageList[a + aChange, b + bChange].Tag = (int.Parse(imageList[a, b].Tag.ToString() ?? string. Empty) * 2).To String();
    imageList[a + aChange, b + bChange].Image = Image.FromFile(imageList[a + aChange, b + bChange].Tag.ToString() + ".jpg");

    imageList[a, b].Image = null;
    imageList[a, b].Tag = "0";

    move = true;
}

要查看将数字值保存为字符串的标签,我使用了:

MessageBox.Show(imageList[a + aChange, b + bChange].Tag.ToString());

合并两个数字时,它会显示新数字的标签,包括 16,通过手动添加 32,我可以看到它们正确地具有 64 的标签。我复制了每个文件以确保它们“这不是问题,而且仍然无法正常工作。

c# .net winforms tags
1个回答
0
投票

看来您的 2048 游戏走在正确的轨道上。您所面临的 16 无法合并为 32 的问题很有趣。您可以检查以下几件事:

  1. 标签值:确保所有图像的标签设置正确。每个图像的标签应与其在游戏中代表的值相对应(2、4、8、16、32 等)。

  2. 图像路径:检查图像路径是否正确。每个合并数字的图像应该存在,并且其文件名应该与标签值匹配。

  3. 数据类型:使用不同数据类型时要小心。标签是一个字符串,因此请确保在执行算术运算之前将其正确解析为整数。

  4. 调试:使用调试语句跟踪代码不同阶段的变量值。这可以帮助您确定问题可能发生在哪里。

如果一切看起来都正确并且问题仍然存在,那么查看更广泛的代码上下文可能会有所帮助。可能是该特定代码块之外的某些内容导致了问题。

记住,调试是一个排除的过程。通过检查每一点,您应该能够确定问题所在。我希望这有帮助!如果您还有其他问题,请随时询问。 😊

© www.soinside.com 2019 - 2024. All rights reserved.