c# – 检测WPF Canvas上两个矩形之间的碰撞
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 检测WPF Canvas上两个矩形之间的碰撞,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1770字,纯文字阅读大概需要3分钟。
内容图文
我对编程非常陌生,我从C#开始.我现在正试图制作我的第一场比赛,我决定使用蛇.到目前为止,我一直在努力研究这个问题,但我看到的所有答案都与那些使用不同方法移动蛇的人有关.
我的程序使用两个双打(左和上)来存储蛇在画布上的位置.我的程序还使用两个双打作为游戏中的“食物”,称为randomFoodSpawnLeft和randomFoodSpawnTop.
我的问题是这个.如何通过左侧和顶部值检测两个矩形对象之间的碰撞?我很困惑.
snakeWindow是Window,snakeHead是代表蛇的矩形,左边是蛇的左边值,顶部是蛇的顶值.
void timer_Tick(object sender, EventArgs e)
{
double left = Canvas.GetLeft(snakeHead);
double top = Canvas.GetTop(snakeHead);
if (keyUp)
{
top -= 3;
}
else if (keyDown)
{
top += 3;
}
else if (keyLeft)
{
left -= 3;
}
else if (keyRight)
{
left += 3;
}
// These statements see if you have hit the border of the window, default is 1024x765
if (left < 0)
{
left = 0;
gameOver = true;
}
if (top < 0)
{
top = 0;
gameOver = true;
}
if (left > snakeWindow.Width)
{
left = 0;
gameOver = true;
}
if (top > snakeWindow.Height)
{
top = 0;
gameOver = true;
}
// Statements that detect hit collision between the snakeHead and food
//
if (foodEaten == true)
{
spawnFood();
textBlockCurrentScore.Text += 1;
}
// If gameOver were to be true, then the game would have to end. In order to accomplish this I display to the user that the game is over
// and the snakeHead is disabled, and should restart.
if (gameOver == true)
{
keyRight = false;
keyLeft = false;
keyUp = false;
keyDown = false;
top = 0;
left = 0;
textBlockGameOver.Text = "GAME OVER!";
snakeCanvas.Background = Brushes.Blue;
}
Canvas.SetLeft(snakeHead, left);
Canvas.SetTop(snakeHead, top);
}
解决方法:
您可以使用System.Windows.Rect.IntersectsWith.尝试这样:
Rect rect1 = new Rect(left1, top1, widht1, height1);
Rect rect2 = new Rect(left2, top2, widht2, height2);
bool intersects = rect1.IntersectsWith(rect2);
当然,你必须检查蛇头的所有部位.
内容总结
以上是互联网集市为您收集整理的c# – 检测WPF Canvas上两个矩形之间的碰撞全部内容,希望文章能够帮你解决c# – 检测WPF Canvas上两个矩形之间的碰撞所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。