Я делаю простую игру, игру в кирпич / блокбрейкер.У меня есть рисование блоков на экране, где они мне нужны правильно.Тем не менее, я хочу найти способ использовать пользовательский делегат и пользовательское событие для обнаружения столкновения между одним прямоугольником (шаром) и другим прямоугольником (блоком) с помощью метода Rectangle.IntersectsWith ().Я хочу, чтобы затронутый блок сообщил об этом событии, поэтому я могу заставить его исчезнуть.
Для генерации своих блоков я использую набор кода WPF XAML, который создает элемент ItemsControl в Canvas (игровой доске), который содержитПрямоугольник.В своем коде я связываю ItemsControl ItemsSource со списком универсального типа Block класса.Этот класс Block очень прост, он просто содержит логическое значение.Если блок имеет значение true, связанный блок заставит триггер ItemsControl включить прямоугольник.
Мяч - это элемент Rectangle в WPF, определенный в Canvas.Итак, я могу предоставить любой код, необходимый здесь, но для начала я опубликовал то, что, по моему мнению, было уместно, чтобы донести идею до начала ...
Любые советы, предложения или идеи для достижения этой цели?
C #: MainWindow.xaml.cs
private void BindBlocks()
{
Blocks = new List<Block>();
for (var c = 0; c < 8; c++)
{
for (var r = 0; r < 4; r++)
{
Blocks.Add(new Block(true));
}
}
ItemsControl_BlockBinding.ItemsSource = Blocks;
}
WPF: MainWindow.xaml
<!--BLOCKS-->
<ItemsControl x:Name="ItemsControl_BlockBinding" Canvas.Top="16" Canvas.Left="17">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid x:Name="Grid_BlockField" Height="370" Width="730" Columns="8" ClipToBounds="True">
<UniformGrid.Effect>
<DropShadowEffect Direction="270" Opacity="0.8" ShadowDepth="1" BlurRadius="8"/>
</UniformGrid.Effect>
</UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle x:Name="Rectangle_Block" IsEnabled="{Binding (local:Block.BlockState)}" Fill="AliceBlue" Height="auto" Width="auto" Margin="3,3,3,3"/>
<DataTemplate.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Visibility" Value="Visible" TargetName="Rectangle_Block"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Hidden" TargetName="Rectangle_Block"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>