Xamarin Forms:如何生成单词搜索拼图矩阵?

Xamarin Forms: How to generate a word search puzzle matrix?

我正在尝试在我的 xamarin 表单应用程序上实现一个单词搜索游戏。当我打电话给我的服务时,只有言语。有了这些话,我怎样才能生成一个字母矩阵?

我需要一个 10x10 的字母矩阵,如下图所示:

单词隐藏在这个矩阵中,如下图所示(Stephen、Nicholas、Ambrose、Juan Diego、Xavier、Sylvester I):

单词可以按任何格式放置:从右到左、从左到右、从上到下、从下到上或交叉。

这个功能有什么工具吗?我需要 select 屏幕截图 2 中的字母才能玩这个游戏。

您可以使用 网格

例如

    public Page2()
    {
        InitializeComponent();

        // I used static source , you could get it from service
        var strList = new string[] { "A", "B", "C" , "D" ,"E" ,"F" ,"G" ,"H" ,"I",..... };


        CreateGame(strList , 10);
    }



    void CreateGame(string[] list , int count)
    {
        var grid = new Grid();
        grid.BackgroundColor = Color.Red;
        grid.HorizontalOptions = LayoutOptions.FillAndExpand;
        grid.SetBinding(Button.HeightRequestProperty, new Binding("Width", source: grid));



        for (int i = 0; i < count; i++)
        {
            for(int j = 0; j < count; j ++)
            {
                grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) });



                var Rowbutton = new Button { Text = list[i* count + j ] };
                Rowbutton.HorizontalOptions = LayoutOptions.FillAndExpand;
                Rowbutton.VerticalOptions = LayoutOptions.FillAndExpand;
                Rowbutton.SetBinding(Button.HeightRequestProperty,new Binding("Width",source:Rowbutton));
                grid.Children.Add(Rowbutton, j, i);
            }
            grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
        }



        Content = new StackLayout { Children = { grid },HorizontalOptions= LayoutOptions.FillAndExpand,VerticalOptions = LayoutOptions.FillAndExpand };
    }
}

您可以将 CollectionView 与 ItemsLayout 和 Span 一起使用。检查 MSDocs

对于字母的选择,可以使用 SelectionMode as Multiple。

Xaml代码:

       <CollectionView
            SelectionMode="Multiple"
            ItemsSource="{Binding LettersCollection}">
            <CollectionView.ItemsLayout>
                <GridItemsLayout Orientation="Horizontal"
                    Span="10" />
            </CollectionView.ItemsLayout>
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <Label Text="{Binding}"/>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>

希望这对您的要求有所帮助。

使用按钮的点击功能实现了单词搜索游戏。使用点击功能时,我们需要检查模式是否正确。我已经上传了一个示例项目 here,希望这会对某人有所帮助。

样本包含以下特征:

  1. 字词从左到右、从右到左、从上到下、从下到上或对角线排列的信箱。此外,页面底部列出了隐藏的单词。
  2. 单击字母时将背景颜色更改为橙​​色。如果我们点击上述任何机制中的字母,它会继续将背景颜色更改为橙​​色。
  3. 找到单词后,背景颜色会变为绿色。如果我们改变图案,我会去掉背景颜色。
  4. 更改颜色并为找到的单词添加刻度线。
  5. 找到所有单词后,添加了重新启动选项。

参考文献:

https://github.com/neetfreek/word-search-generator/blob/master/WordSearch/WordSearch.cs