2017-06-09 97 views
-1

こんにちは私はヘビゲームを作ろうとしていますが、シェイプを使用する代わりに、頭のイメージと他のイメージを体の残りの部分に使用します。 私はWPFを初めて使用していて、見つかったすべてのチュートリアルは図形のみを使用していました。 私がこの時点でできることをしたいのは、矢印キーを使用してイメージを移動して、最終的にボード上の他のイメージとの衝突を検出した後です。 これは私のメインウィンドウのxamlコードです。それは、私が上に説明したように移動したい単純な画像(DogeIcon)と障害である別の画像(cat)で構成されています。あなたが必要なものWPF移動矢印キー

<Window x:Class="DogeSNake.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:DogeSNake" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Image Name="DogeIcon" HorizontalAlignment="Left" Height="64" Margin="33,27,0,0" VerticalAlignment="Top" Width="64" Source="media/doge.png" MouseEnter="RectangleMouseEnter" /> 
    <Image Name="CatIcon" HorizontalAlignment="Left" Height="40" Margin="445,247,0,0" VerticalAlignment="Top" Width="40" Source="media/cat.png" /> 
</Grid> 

答えて

0

グリッドが、キャンバスではありません...

コードbahindで
<Window x:Class="DogeSNake.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:local="clr-namespace:DogeSNake" 
mc:Ignorable="d" 
Title="MainWindow" Height="350" Width="525" FocusManager.FocusedElement="{Binding ElementName=MyCanvas}"> 
    <Canvas Name="MyCanvas" KeyDown="Canvas_KeyDown" Focusable="True" > 
      <Image Name="DogeIcon" Canvas.Left="10" Canvas.Top="10" HorizontalAlignment="Left" Height="64" Margin="0" VerticalAlignment="Top" Width="64" Source="media/doge.png" MouseEnter="RectangleMouseEnter"/> 
      <Image Name="CatIcon" Canvas.Left="200" Canvas.Top="200" HorizontalAlignment="Left" Height="40" Margin="0" VerticalAlignment="Top" Width="40" Source="media/cat.png"/> 
    </Canvas> 
</Window> 

...

private void Canvas_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Down) 
     { 
      Canvas.SetTop(DogeIcon, Canvas.GetTop(DogeIcon) + 10); 
     } 
     else if (e.Key == Key.Up) 
     { 
      Canvas.SetTop(DogeIcon, Canvas.GetTop(DogeIcon) - 10); 
     } 
     else if (e.Key == Key.Left) 
     { 
      Canvas.SetLeft(DogeIcon, Canvas.GetLeft(DogeIcon) - 10); 
     } 
     else if (e.Key == Key.Right) 
     { 
      Canvas.SetLeft(DogeIcon, Canvas.GetLeft(DogeIcon) + 10); 
     } 
    } 
+0

それがなるべきであると考えます「スネークゲーム」では、グリッド上で操作し、キー入力時に列と行のインデックスを変更することもできます。重要な点は、適切な数の列と行を定義し、イメージに余白を設定しないことです。 – Clemens

関連する問題