Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在轮盘赌中把球停在特定的数字上_C#_Wpf - Fatal编程技术网

C# 如何在轮盘赌中把球停在特定的数字上

C# 如何在轮盘赌中把球停在特定的数字上,c#,wpf,C#,Wpf,我正在用WPF和C#NET创建一个轮盘赌游戏。我成功地旋转了方向盘,但我被卡在了球停止的特定位置 有谁能帮我用什么样的逻辑来计算这两种方法的价值 我已经使用Expression Blend(下面的代码)创建了基本动画。如何获得球停止的位置的值 <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/x

我正在用WPF和C#NET创建一个轮盘赌游戏。我成功地旋转了方向盘,但我被卡在了球停止的特定位置

有谁能帮我用什么样的逻辑来计算这两种方法的价值

我已经使用Expression Blend(下面的代码)创建了基本动画。如何获得球停止的位置的值

 <Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="demo.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Window.Resources>
    <Storyboard x:Key="spinWheel">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="canvas">
            <EasingDoubleKeyFrame KeyTime="0" Value="-0.056"/>
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-89.871"/>
            <EasingDoubleKeyFrame KeyTime="0:0:2" Value="-179.468"/>
            <EasingDoubleKeyFrame KeyTime="0:0:3" Value="-269.405"/>
            <EasingDoubleKeyFrame KeyTime="0:0:4" Value="-360.488"/>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingPath Duration="0:0:3.96" Source="X" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="ellipse">
            <DoubleAnimationUsingPath.PathGeometry>
                <PathGeometry Figures="M39.5,115 C39.5,218.55339 -44.446609,302.5 -148,302.5 C-251.55339,302.5 -335.5,218.55339 -335.5,115 C-335.5,11.446609 -251.55339,-72.5 -148,-72.5 C-44.446609,-72.5 39.5,11.446609 39.5,115 z"/>
            </DoubleAnimationUsingPath.PathGeometry>
        </DoubleAnimationUsingPath>
        <DoubleAnimationUsingPath Duration="0:0:3.96" Source="Y" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="ellipse">
            <DoubleAnimationUsingPath.PathGeometry>
                <PathGeometry Figures="M39.5,115 C39.5,218.55339 -44.446609,302.5 -148,302.5 C-251.55339,302.5 -335.5,218.55339 -335.5,115 C-335.5,11.446609 -251.55339,-72.5 -148,-72.5 C-44.446609,-72.5 39.5,11.446609 39.5,115 z"/>
            </DoubleAnimationUsingPath.PathGeometry>
        </DoubleAnimationUsingPath>
    </Storyboard>
</Window.Resources>
<Window.Triggers>
    <EventTrigger RoutedEvent="FrameworkElement.Loaded">
        <BeginStoryboard Storyboard="{StaticResource spinWheel}"/>
    </EventTrigger>
</Window.Triggers>

<Grid x:Name="LayoutRoot">
    <Canvas x:Name="canvas" Margin="22,62,248,26" RenderTransformOrigin="0.5,0.5">
        <Canvas.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform/>
                <TranslateTransform/>
            </TransformGroup>
        </Canvas.RenderTransform>
        <Ellipse x:Name="ellipse1" Fill="#FFF4F4F5" Stroke="Black" Height="354" Width="354"/>
        <Path Data="M308,44 L308,394.5" Fill="#FFF4F4F5" Stretch="Fill" Stroke="Black" Width="1" Height="351.5" Canvas.Left="179" Canvas.Top="1"/>
        <Path Data="M144,240 L495.5,240" Fill="#FFF4F4F5" Height="1" Stretch="Fill" Stroke="Black" Canvas.Left="1" Canvas.Top="176.5" Width="352.5"/>
        <TextBlock x:Name="one" Height="88" TextWrapping="Wrap" Text="1" Width="72" FontSize="64" Canvas.Left="75" Canvas.Top="64.5"/>
        <TextBlock x:Name="two" Height="88" TextWrapping="Wrap" Text="2" Width="72" FontSize="64" Canvas.Left="219" Canvas.Top="64.5"/>
        <TextBlock x:Name="three" Height="88" TextWrapping="Wrap" Text="3" Width="72" FontSize="64" Canvas.Left="219" Canvas.Top="200.5"/>
        <TextBlock x:Name="four" Height="88" TextWrapping="Wrap" Text="4" Width="72" FontSize="64" Canvas.Left="75" Canvas.Top="200.5"/>
    </Canvas>
    <Ellipse x:Name="ellipse" Fill="#FFFF2300" HorizontalAlignment="Right" Height="24" Margin="0,112,264,0" Stroke="Black" VerticalAlignment="Top" Width="24" RenderTransformOrigin="0.5,0.5">
        <Ellipse.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform/>
                <TranslateTransform/>
            </TransformGroup>
        </Ellipse.RenderTransform>
    </Ellipse>
</Grid>


在故事板上添加事件处理程序

    <Storyboard x:Key="spinWheel" Completed="Storyboard_Completed">

向旋转变换添加名称

    <RotateTransform x:Name="wheelAngle" />


<代码>后面做一些数学运算,找出球是从代码>车轮角度,角度<代码> >代码>圆角。角度< /代码>。计算目标数,然后注意球落地的可视化。@Morothar,即使这本身不是一个答案,如果它作为答案发布(以及标记它;-),我也会+1它@莫罗塔尔:我已经考虑过了,但仍然有类似的问题,比如如何在特定的位置上阻止球location@HenkHolterman我希望我能;)+1莫洛塔尔的位置。您需要根据需要降落的数量以编程方式确定着陆位置。一个例子是36个端点代表您的数字;您的编程动画只需要足够聪明,就可以知道它将在哪里结束,逼真地设置动画,并知道它的触发/开始位置。从这一点上,您可以告诉控制器您想要降落的数字,允许动画到达起始位置,并优雅地动画到最终位置。