滑动拼图任务

0 c#

我是C#的相对新手而且完全卡住了!对于学校作业,我需要制作一个滑动拼图,其中编号的瓷砖将通过使用空格来重新排列,即

[1] [2] [3]

[4] [5] [6]

[7] [8] [ ] 
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里开始.

fro*_*h42 11

无论应用程序如何使用(Winforms UI,控制台,Web或其他),您都需要关注如何构建这样的应用程序.首先考虑一下你需要做什么:

你需要

  • 管理拼图状态的引擎
    • 引擎必须能够重置拼图
    • 引擎必须能够在不进入无法解决状态的情况下加扰拼图
    • 引擎必须能够执行移动
    • 引擎必须能够检测拼图是否已解决
  • 用户界面(控制台,Web或桌面)
    • 从引擎获取状态并显示它
    • 为用户提供重新开始
    • 为用户提供移动
    • 显示谜题已解决(并祝贺用户,如果是这样).

在初级阶段,我会从引擎开始.您将需要编写一个包含数据的C#类.有关如何使用该语言的信息,请参阅C#教程,我将重点关注此处的问题:

enigne需要抓住这个难题.我们有9个字段和8个瓷砖.所以我们可能只使用长度为9的固定数组.数组中的每个条目都是一个描述图块的数字.1是tile 1,2是tile 2,依此类推到tile 8.我们使用0来描述空tile.

然后,您需要实现移动的方法.您可以随时尝试将瓷砖从上,右,下或左移动到空槽中.哪一个是空的瓷砖?我们的数组中包含0的条目.

因此,让我们向上,向下,向左,向右写四种方法来实现这些动作.让我们关注"向上",将瓷砖从上部插槽移动到空插槽中.我们可以假设我们的数组映射到拼图如下:

0 1 2
3 4 5
6 7 8

因此,如果数组包含"7 6 5 3 0 1 2 4 8",那么拼图就会显示出来

7 6 5
3 _ 1
2 4 8

up方法现在需要在数组中找到"0"并将其与上面行中的值进行交换:

如果"0"位于上一行(数组索引0,索引1或索引2),则没有上行,"up"抛出异常.它不能工作.

如果"0"在另一个索引i上,则索引"在"上方i将是索引i-3.所以我们在数组中交换索引i和索引i-3的值.

你可以类似地实现"左","右"和"下"方法.看看有关如何为您的软件编写测试用例的所谓"单元测试"软件.(Nunit,MBUnit)

最后在拼图类中构建一个方法或属性,在解决时检查数组内容是否按正确的顺序"1 2 3 4 5 6 7 8 0".

现在你有一个实现逻辑的益智类.

作为最后一步(但仍然很大的一步),您现在需要阅读有关如何构建UI的Winforms或WPF教程.但是现在你应该已经学习了很多关于C#的知识,以便找到并阅读教程并完成它.