永发信息网

关于贪吃蛇里面的一段代码

答案:2  悬赏:20  手机版
解决时间 2021-12-29 23:41
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就可以防止后退了
最佳答案
// 假设原来的方向是上,然后玩家按了向下的方向。
// 你下面的一二行的代码用 +,就是表示向下方向移动一格。
// 第三行代码进行判断是否头碰到“脖子”,如果碰到了就说明是“后退”,即是向“下”运动。
// 如果向下的话这是不允许的,程序将保持蛇向原来的前进方向即这里假设的“上”方运行,所以要回退一格,并按前进方向前进一格,所以就要减去两倍的移动单位
//
// 这里为了具体化方向,假设了向上运动的时候按了向下移动,其它方向也是一样的道理。
//
            HeadPoint.X += PMatris.X;   //移一格
            HeadPoint.Y += PMatris.Y;
            if (HeadPoint==AllPoints[1])//防止后退,所以只要判断头和第二个是否相碰
            {
                HeadPoint.X -= 2*PMatris.X;
                HeadPoint.Y -= 2*PMatris.Y;
            }
全部回答
如果的你的程序没有管理员权限是没法设置系统的时间的。 这个问题,比较好的解决方法是用系统的时钟同步服务来解决
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
北京城有多少年历史了?
持中国护照 能签订劳动合同吗?
钨钛镜架是什么材质
海信电视怎么登陆网页
用php做采集功能网站的思路是怎样的,我会CURL
田柾国拍摄gcf的背景音是什么?
单选题下列各组城市中,由西向东分别位于西、
刘俊女孩名字
求小说资源或免费网站,是暗夜文学网的小说。
月经来了腿疼腰疼肚子疼怎么办有什么缓解的办
单选题下列国君中重视农业生产的是A.启B.汤C.
奥斯汀格里芬是什么意思
鸿楲是什么意思
010114什麼号码
如何把数据记录写入数据库的表里
推荐资讯
墨悔作者诗句什么朝代
春节晚会上,一群聋哑青年用精美绝伦的舞蹈“
心理行为疗法包括哪些内容
为什么有时候,我感觉告诉我的事情是真的发生
车的里程在哪里看
大田县环保局位置在什么地方啊,我要过去办理
Wehavetothewheatassoonaspossiblebecauseast
“我不能选择生活的条件,但我可以选择生活的
小明把4根小棒首尾连接起来,拼插出了一个长
微信加的好友在哪里能找到
Miss Gao isn’t at home. She to the statio
萍乡有什么景点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?