public bool ChangeDiretion(Direction diretion)
{
PMatris =Point.Empty;
switch (diretion)
{ //根据方向设置矩阵点
case Direction.Left:
PMatris.X = -1;
break;
case Direction.Up:
PMatris.Y = -1;
break;
case Direction.Right:
PMatris.X = 1;
break;
case Direction.Down:
PMatris.Y = 1;
break;
}
return MovePoints();
private bool MovePoints()
{
HeadPoint =AllPoints[0];
EndPoint = AllPoints[NowLength];
HeadPoint.X += PMatris.X;//移一格
HeadPoint.Y += PMatris.Y;
if (HeadPoint==AllPoints[1])//防止后退,所以只要判断头和第二个是否相碰
{
HeadPoint.X -= 2*PMatris.X;
HeadPoint.Y -= 2*PMatris.Y;
}
我想知道为什么HeadPoint.x-=2*PMatris.x;HeadPoint.y-=2*PMatris.y就可以防止后退了
关于贪吃蛇里面的一段代码
答案:2 悬赏:20 手机版
解决时间 2021-12-29 23:41
- 提问者网友:玫瑰园
- 2021-12-29 05:16
最佳答案
- 五星知识达人网友:几近狂妄
- 2021-12-29 06:24
// 假设原来的方向是上,然后玩家按了向下的方向。
// 你下面的一二行的代码用 +,就是表示向下方向移动一格。
// 第三行代码进行判断是否头碰到“脖子”,如果碰到了就说明是“后退”,即是向“下”运动。
// 如果向下的话这是不允许的,程序将保持蛇向原来的前进方向即这里假设的“上”方运行,所以要回退一格,并按前进方向前进一格,所以就要减去两倍的移动单位
//
// 这里为了具体化方向,假设了向上运动的时候按了向下移动,其它方向也是一样的道理。
//
HeadPoint.X += PMatris.X; //移一格
HeadPoint.Y += PMatris.Y;
if (HeadPoint==AllPoints[1])//防止后退,所以只要判断头和第二个是否相碰
{
HeadPoint.X -= 2*PMatris.X;
HeadPoint.Y -= 2*PMatris.Y;
}
// 你下面的一二行的代码用 +,就是表示向下方向移动一格。
// 第三行代码进行判断是否头碰到“脖子”,如果碰到了就说明是“后退”,即是向“下”运动。
// 如果向下的话这是不允许的,程序将保持蛇向原来的前进方向即这里假设的“上”方运行,所以要回退一格,并按前进方向前进一格,所以就要减去两倍的移动单位
//
// 这里为了具体化方向,假设了向上运动的时候按了向下移动,其它方向也是一样的道理。
//
HeadPoint.X += PMatris.X; //移一格
HeadPoint.Y += PMatris.Y;
if (HeadPoint==AllPoints[1])//防止后退,所以只要判断头和第二个是否相碰
{
HeadPoint.X -= 2*PMatris.X;
HeadPoint.Y -= 2*PMatris.Y;
}
全部回答
- 1楼网友:第四晚心情
- 2021-12-29 07:05
如果的你的程序没有管理员权限是没法设置系统的时间的。
这个问题,比较好的解决方法是用系统的时钟同步服务来解决
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯