小游戏攻击事件。。

qwe9910614 2010-12-21 08:41:06
如何让任务实现攻击事件。。例如发出攻击,然后与目标碰触后攻击和目标物同时消失。。。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
pictureBox5.Image = pictureBox1.Image;
if ((pictureBox5.Top + pictureBox5.Height) <= 0)
pictureBox5.Top = this.Height;
else
pictureBox5.Top -= 10;
break;
case Keys.Down:
pictureBox5.Image = pictureBox2.Image;
if (pictureBox5.Top >= this.Height)
pictureBox5.Top = 0 - pictureBox5.Height;
else
pictureBox5.Top += 10;
break;
case Keys.Left:
pictureBox5.Image = pictureBox3.Image;
if (pictureBox5.Width + pictureBox5.Left <= 0)
pictureBox5.Left = this.Width;
else
pictureBox5.Left -= 10;
break;
case Keys.Right:
pictureBox5.Image = pictureBox4.Image;
if (pictureBox5.Left >= this.Width)
pictureBox5.Left = 0 - pictureBox5.Width;
else
pictureBox5.Left += 10;
break;

}
}
我目前只实现了人物的上下左右行动状态。。。求高手!!!!
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwe9910614 2010-12-21
  • 打赏
  • 举报
回复
还是有点问题



错误 1 无法修改“System.Windows.Forms.Control.Bounds”的返回值,因为它不是变量 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 97 13 WindowsFormsApplication1
  • 打赏
  • 举报
回复
晕一个

我举的例是直接在Form上画Rectangle矩形

其实PictureBox有个属性Bounds,是Rectangle类型的,而IntersectsWith方法是Rectangle结构的


比如PictureBox1代表目标,PictureBox2代表子弹,可以这样判断相撞:
if(PictureBox1.Bounds.IntersectsWith(PictureBox2.Bounds))
{
.........
}
qwe9910614 2010-12-21
  • 打赏
  • 举报
回复
多谢大侠解救,!!但。。。“System.Windows.Forms.PictureBox”不包含“IntersectsWith”的定义,并且找不到可接受类型为“System.Windows.Forms.PictureBox”的第一个参数的扩展方法“IntersectsWith”(是否缺少 using 指令或程序集引用?) C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 75 32 WindowsFormsApplication1
qwe9910614 2010-12-21
  • 打赏
  • 举报
回复
多谢三楼的回答,但调试时说“找不到类型或命名空间名称'PaintEvent'(是否缺少using指令或程序集的引用?)”
还有我有点不明白"isFired"是什么啊?
望解答,感激零涕!!!
qwe9910614 2010-12-21
  • 打赏
  • 举报
回复
能具体点么?我写了点代码
private void Form1_Load(object sender, EventArgs e)
{
locx = pictureBox1.Location.X;
locy = pictureBox1.Location.Y;
pictureBox5.Image = pictureBox1.Image;
pictureBox1.Visible = false;
pictureBox2.Visible = false;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
if (pictureBox1.Left == pictureBox2.Left)
pictureBox2.Visible = false;
}
原理是想当攻击坐标与目标坐标相等即相撞时同时消失,但实现不了。两者都没消失。求助啊。。。
zgke 2010-12-21
  • 打赏
  • 举报
回复
判断可以使用.


pictureBox5.Region.IsVisible(new Point(X,Y))

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧