七巧板拼图应用程序
本文关键字:应用程序 拼图 七巧板 | 更新日期: 2023-09-27 18:06:29
我正在尝试使用c#创建一个WPF应用程序,在Pixelsense上运行,这是七巧板拼图的基本版本。我可以画出我的7个形状,并在屏幕上平移和旋转它们。
有没有人能给我一些建议,关于我应该如何去保存模式(具有特定位置和方向的形状),以便当用户下次创建模式时,应用程序可以将其与保存的模式相匹配,并告诉用户它是否正确。
这是一个模式匹配和识别问题,我正试图解决。
(将解决方案定义为具有shapeType、position和orientation属性的对象集合。让解包含位置为0,0和方向为0的一个形状。现在循环遍历用户实际放置的所有形状,以找到shapeType与解决方案在0,0,0处的形状匹配的形状。计算其他形状相对于的位置和方向。将这些值与解决方案的其余部分进行比较。你需要试验允许多大的公差,因为这个东西是不精确的——为了让游戏有趣,宁可有高的公差。如果需要,您可以继续进行一些性能优化,只重新评估移动的部分。
希望你使用的是带有标签的实物价格,而不是纯粹的虚拟游戏。当我还在Surface团队的时候,我就一直想做这个,但从来没有实现过。您将遇到的一个挑战是定义标签的位置/方向如何与实际形状相关。如果你要把标签贴在多个七重奏组上,你几乎肯定不会每次都得到完全相同的效果,所以你可能需要在你的应用中添加一个"校准"模式(让用户将每个标签贴在特定的位置,然后按下按钮,这样你就可以记录标签相对于这些位置的位置)。TagVisualizer WPF控件应该对构建UI有很大帮助——一定要考虑使用它(当我们设计该API时,这个场景是我们首先考虑的)。该控件的默认行为(如果您告诉它要查找的标签的ID,但不告诉它如何可视化它)是一个"十字准星",它可以帮助您找到调整偏移值。
祝你好运!如果你不介意录制一段YouTube视频,并在这里发表评论链接,我真的很感激
您可以使用自定义类的ObservableCollection或List。这个类可以由不同的值组成,比如位置、方向等属性。当绘制新模式或模式改变其位置时,您可以更新存储在集合中的特定对象。当你有了模式的所有细节(位置和方向)时,你可以迭代for循环并检查添加新模式时的位置。