Visual studio community 2017で簡単なゲームを作っています。
FormのなかにPanelを置いて、その中のcharacterと付けたPicture Boxを上下左右に動かしている状況です。
C#
1 public partial class gamefield1 : Form 2 { 3 public gamefield1() 4 { 5 InitializeComponent(); 6 } 7 8 private void characterfront_KeyDown(object sender, KeyEventArgs e) 9 { 10 if (e.KeyCode == Keys.Up) 11 { 12 characterfront.Top -= 42; 13 } 14 else if (e.KeyCode == Keys.Left) 15 { 16 characterfront.Left -= 42; 17 } 18 19 else if (e.KeyCode == Keys.Right) 20 { 21 characterfront.Left += 42; 22 } 23 24 else if (e.KeyCode == Keys.Down) 25 { 26 characterfront.Top += 42; 27 }
このままでは、Panelからcharacterがはみ出して見えなくなってしまうので、それを防ぐために
C#
1 if (characterfront.Top < gamepanel1.Top) 2 { 3 characterfront.Top -= characterfront.Top; 4 }
を書き入れましたが他の、左右と下が上手くいきません。
試しに
C#
1 if (characterfront.Left < gamepanel1.Left) 2 { 3 characterfront.Left -= characterfront.Left; 4 }
等もやってみましたがやはり上手くいきません。
原因と解決方法等分かる方、回答よろしくお願いします。
PictureBoxを、どのように置きましたか?デザイン時に置いたのか、コードで作ったのか。コードで作ったなら、どのコントロールに置きましたか。
デザイン時にパネルに置いた、コードで作ってPanel.Controlsに追加したならPictureBoxの左端は0です。
Leftを変化させるときにSystem.Disgnostics.Debug で書くか、FormのTextにLeftプロパティを表示してみましょう。
回答1件
あなたの回答
tips
プレビュー