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,希望这会对某人有所帮助。
样本包含以下特征:
- 字词从左到右、从右到左、从上到下、从下到上或对角线排列的信箱。此外,页面底部列出了隐藏的单词。
- 单击字母时将背景颜色更改为橙色。如果我们点击上述任何机制中的字母,它会继续将背景颜色更改为橙色。
- 找到单词后,背景颜色会变为绿色。如果我们改变图案,我会去掉背景颜色。
- 更改颜色并为找到的单词添加刻度线。
- 找到所有单词后,添加了重新启动选项。
参考文献:
https://github.com/neetfreek/word-search-generator/blob/master/WordSearch/WordSearch.cs
我正在尝试在我的 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,希望这会对某人有所帮助。
样本包含以下特征:
- 字词从左到右、从右到左、从上到下、从下到上或对角线排列的信箱。此外,页面底部列出了隐藏的单词。
- 单击字母时将背景颜色更改为橙色。如果我们点击上述任何机制中的字母,它会继续将背景颜色更改为橙色。
- 找到单词后,背景颜色会变为绿色。如果我们改变图案,我会去掉背景颜色。
- 更改颜色并为找到的单词添加刻度线。
- 找到所有单词后,添加了重新启动选项。
参考文献:
https://github.com/neetfreek/word-search-generator/blob/master/WordSearch/WordSearch.cs