Matlab實現(xiàn)貪吃蛇小游戲的示例代碼
由于老師說如果拿MATLAB制作出游戲或者有趣的動畫的話。。
平時成績可以拿滿分
于是。。開始嘗試制作各種matlab小游戲
最初通過Alex的貪吃蛇學(xué)到了一些東西,然后制作了一個類似的俄羅斯方塊在課堂上展示的(都是動的方塊嗯噠)。
后來自己也嘗試寫著玩了一些其他版本的貪吃蛇,并做出了一些改進。
補動圖:


沒錯這就有點類似貪吃蛇大作戰(zhàn)里的蛇啦
然后做出的改進包括:
在關(guān)閉窗口時不報錯的設(shè)置,因為用了timer這個函數(shù),在關(guān)閉圖像時他會報錯,我們就可以加入一個回調(diào)函數(shù):
set(gcf,'tag','co','CloseRequestFcn',@clo);
function clo(~,~)
stop(game)
delete(findobj('tag','co'));
clf
close
end
意思是每次有關(guān)閉請求時就調(diào)用clo這個函數(shù)
然后為了防止他提示你用遞歸的方式調(diào)用close,
再加上delete(findobj(‘tag’,‘co’));刪除之前的設(shè)定。
完整代碼
function snake
%axis set..............................................................
axis equal
len=40;
axis(0.5+[0,len,0,len])
set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')
set(gca,'color','k')
hold on
%snake and food begining set...........................................
snaketop=[5,5;4.5,5];
body=[5,5;4.5,5;4,5;3.5,5;3,5;2.5,5];
food=[10,10];
direction=[1,0];
long=6;
plotsnake=scatter(gca,body(:,1),body(:,2),120,'w','filled');
plotfood=scatter(gca,food(1),food(2),120,'w','filled');
%timer set.............................................................
set(gcf,'WindowButtonMotionFcn',@snakefcn)
fps = 8;
game = timer('ExecutionMode', 'FixedRate', 'Period',1/fps, 'TimerFcn', @snakegame);
start(game)
%..................................................................................
set(gcf,'tag','co','CloseRequestFcn',@clo);
function clo(~,~)
stop(game)
delete(findobj('tag','co'));
clf
close
end
function snakegame(~,~)
snaketop=[body(1,:)+direction;body(1,:)+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
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
function snakefcn(~,~)
xy=get(gca,'CurrentPoint');
x=xy(1,1);y=xy(1,2);
dir=[x-body(1,1),y-body(1,2)];
dis=sqrt((x-body(1,1))^2+(y-body(1,2))^2);
direction=dir/dis;
end
end
以上就是Matlab實現(xiàn)貪吃蛇小游戲的示例代碼的詳細內(nèi)容,更多關(guān)于Matlab貪吃蛇游戲的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
VS報錯C6011的問題:取消對NULL指針的引用(解決方法)
這篇文章主要介紹了VS報錯C6011的問題:取消對NULL指針的引用(解決方法),C6011:取消對NULL指針的引用,發(fā)現(xiàn)是沒有進行空指針的判斷,解決方案跟隨小編一起看看吧2024-01-01
C++面試八股文之std::string實現(xiàn)方法
這篇文章主要介紹了C++面試八股文:std::string是如何實現(xiàn)的,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
c語言的cps實現(xiàn)求fibonacci數(shù)列示例
這篇文章主要介紹了c語言的cps實現(xiàn)求fibonacci數(shù)列示例,需要的朋友可以參考下2014-03-03
visual studio code 配置C++開發(fā)環(huán)境的教程詳解 (windows 開發(fā)環(huán)境)
這篇文章主要介紹了 windows 開發(fā)環(huán)境下visual studio code 配置C++開發(fā)環(huán)境的圖文教程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03

