《贪食蛇》(也叫贪吃蛇)是1976年推出的一款街机游戏游戏。
《贪食蛇》中玩家控制一条不断移动的蛇,在屏幕上吃掉出现的食物。每吃掉一个食物,蛇的身体就会变长。游戏的目标是尽可能长时间地生存下去,同时避免蛇头撞到自己的身体或屏幕边缘。游戏最初是像素风格,后来发展出了3D版本和多人对战模式。玩家需要灵活操作,利用策略在有限的空间内避免碰撞,挑战高分。
基于此,笔者也弄了一个贪吃蛇小游戏,蛮有趣的,分享给大家。
function snake
set(gca,'XTick',[],'YTick',[],'XColor','none','YColor','none',...
'XLim',[.5,40.5],'YLim',[.5,40.5],'DataAspectRatio',[1,1,1],'Color','k','NextPlot','add')
head=[5,5];body=[5,5;4,5;3,5;2,5];direction=[1,0];food=[10,10];
plotHdl=scatter(gca,[food(1);body(:,1)],[food(2);body(:,2)],120,'w','filled');
set(gcf,'WindowButtonMotionFcn',@snakefcn);
start(timer('ExecutionMode','FixedRate','Period',1/8,'TimerFcn',@snakegame))
function snakefcn(~,~)
xy=get(gca,'CurrentPoint');
direction=[xy(1)-body(1,1),xy(3)-body(1,2)];
direction=direction./norm(direction);
end
function snakegame(~,~)
head=body(1,:)+direction;
head(head>40)=head(head>40)-40;
head(head<1)=head(head<1)+40;
body=[head;body];
if norm(food-head)<1,food=randi(40,[1,2]);else,body(end,:)=[];end
set(plotHdl,'XData',[food(1);body(:,1)],'YData',[food(2);body(:,2)]);
end
end
直接复制到matlab打开,就可以使用。如果觉得有帮助的话,不妨给笔者点一个大大的关注!!!
不过存在一个bug,多次运行,或出现多个食物,多条蛇,影响后续玩耍,不知道,哪个小伙伴能进行改良呢???