电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1316|回复: 1
收起左侧

求求大神帮帮我怎么判断蛇死亡!

[复制链接]

571

主题

910

帖子

4781

积分

四级会员

Rank: 4

积分
4781
发表于 2022-11-9 19:47:15 | 显示全部楼层 |阅读模式
snaketop=[5,5;4.5,5];%蛇头为两个据点,因为每次增添都是增添两个点
body=[5,5;4.5,5;4,5;3.5,5];
%蛇身初始数据
food=[9,9];     %食物初始位置
direction=[0,0];%蛇开始移动的方向
long=4;         %蛇的长度
%绘制蛇身体和食物
plotsnake=scatter(gca,body(:,1),body(:,2),100,'y','filled');
plotfood=scatter(gca,food(1),food(2),100,'y','filled');
%body(:,1),body(:,2)分别表示这个x轴为5,4.5,4,3.5,、、y轴都为5由连续的点构成蛇的身体。
%body =
%5.0000    5.0000
%4.5000    5.0000
%4.0000    5.0000
%3.5000    5.0000
%主函数
    function snakegame(~,~)
        snaketop=[body(1,:)+direction;body(1,:)+1/2*direction];
%获取新蛇头坐标,新增是每次都向蛇头增添两个点,为了保持足够密集所以第二个点的距离稍微小一点1/2*direction
        snaketop(snaketop>len)=snaketop(snaketop>len)-len;
        snaketop(snaketop<1)=snaketop(snaketop<1)+len;
%蛇在穿过边界的时候,蛇的坐标超出画框范围的点会移到画框对面。
        body=[snaketop;body];%为身体增添新的蛇头
        body(long+1:end,:)=[];%删除身体超过长度的部分,因为是往蛇头添加点而不是往身体加,
                              %所以穿墙之后要把多余的长度删掉                        



if(snaketop(1,1)-food(1))^2+(snaketop(1,2)-food(2))^2<1;
            %蛇头的坐标(x,y)减去食物的坐标小于1或为零时相当于吃到了食物,
            %^2的意思是让算术非负,因为左边轴在第一象限为非负,若非负时蛇就会无限吃到食物实现无限增长
            long = long + 2;
            food = randi(len, [1, 2]);
end

      set(plotfood,'XData',food(1),'YData',food(2))
        set(plotsnake,'XData',body(:,1),'YData',body(:,2))
end


这是我写的程序 我发现吃到食物什么都正常 就是判断不了蛇碰到身体会死亡,,求求大神帮助我!
回复

使用道具 举报

579

主题

911

帖子

5007

积分

四级会员

Rank: 4

积分
5007
发表于 2022-11-9 19:47:21 | 显示全部楼层
能有人来帮帮我吗
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表