七巧板拼图应用

时间:2015-08-05 06:06:22

标签: c# wpf pixelsense

我正在尝试使用C#创建一个WPF应用程序,在Pixelsense上运行,这是七巧板拼图的基本版本。我可以绘制我的7个形状,并在屏幕上翻转和旋转它们。

有人可以给我建议我应该如何解决保存模式(具有特定位置和方向的形状),这样当用户下次创建模式时,应用程序可以将其匹配到保存的并告诉用户它是否正确。

这是我想要解决的模式匹配和识别问题

我已经坚持了一段时间了:(

2 个答案:

答案 0 :(得分:1)

将解决方案定义为具有shapeType,position和orientation属性的对象集合。解决方案是在0,0位置和0方向包含一个形状。现在遍历用户实际放置的所有形状,找到shapeType与您的解决方案在0,0,0处的形状相匹配的形状。计算每个其他形状 relative 的位置和方向,以便用户放置此位置。将这些值与解决方案的其余部分进行比较。你需要尝试允许多少容忍度,因为这些东西不精确 - 让游戏变得有趣,错误就是容忍度高。如果需要,您可以通过一些性能优化来跟进,只重新评估移动的部分。

希望您使用带有标签的实体形状价格而不是纯粹的虚拟游戏。当我在Surface团队工作时,我一直想建立这个,但它从未发生过。您将遇到的一个挑战是定义标签的位置/方向与实际形状的关系。如果您要将标签贴在多个七巧板上,那么您几乎肯定不会每次都完全相同,因此您可能需要添加一个"校准"模式到你的应用程序(让用户将每个部分放在一个特定的位置,然后按一个按钮,这样你就可以记录标签相对于那些点的位置)。 TagVisualizer WPF控件应该对构建UI有很大帮助 - 当然要考虑使用它(当我们设计该API时,这种情况是最重要的)。该控件的默认行为(如果你告诉它要查找的标签的ID而不是如何将其可视化)是一个"十字准线"这可以帮助您找到调整偏移值。

祝你好运!如果您不想在完成后录制YouTube视频并在此处发布评论链接到该视频,我真的很感激

答案 1 :(得分:0)

您可以使用ObservableCollection或自定义类的列表。该类可以包含各种值,例如位置,方向等作为属性。 绘制新图案或图案更改其位置时,您可以更新存储在集合中的特定对象。由于您拥有模式的所有细节(位置和方向),您可以迭代for循环并在添加时检查新模式的位置。