Matlab實(shí)現(xiàn)貪吃蛇小游戲的示例代碼
由于老師說(shuō)如果拿MATLAB制作出游戲或者有趣的動(dòng)畫的話。。
平時(shí)成績(jī)可以拿滿分
于是。。開(kāi)始嘗試制作各種matlab小游戲
最初通過(guò)Alex的貪吃蛇學(xué)到了一些東西,然后制作了一個(gè)類似的俄羅斯方塊在課堂上展示的(都是動(dòng)的方塊嗯噠)。
后來(lái)自己也嘗試寫著玩了一些其他版本的貪吃蛇,并做出了一些改進(jìn)。
補(bǔ)動(dòng)圖:
沒(méi)錯(cuò)這就有點(diǎn)類似貪吃蛇大作戰(zhàn)里的蛇啦
然后做出的改進(jìn)包括:
在關(guān)閉窗口時(shí)不報(bào)錯(cuò)的設(shè)置,因?yàn)橛昧藅imer這個(gè)函數(shù),在關(guān)閉圖像時(shí)他會(huì)報(bào)錯(cuò),我們就可以加入一個(gè)回調(diào)函數(shù):
set(gcf,'tag','co','CloseRequestFcn',@clo); function clo(~,~) stop(game) delete(findobj('tag','co')); clf close end
意思是每次有關(guān)閉請(qǐng)求時(shí)就調(diào)用clo這個(gè)函數(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實(shí)現(xiàn)貪吃蛇小游戲的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Matlab貪吃蛇游戲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)冒泡排序算法的示例詳解
這篇文章主要介紹了C語(yǔ)言如何實(shí)現(xiàn)冒泡排序算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04深入c語(yǔ)言continue和break的區(qū)別詳解
本篇文章是對(duì)c語(yǔ)言中continue和break的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05VS報(bào)錯(cuò)C6011的問(wèn)題:取消對(duì)NULL指針的引用(解決方法)
這篇文章主要介紹了VS報(bào)錯(cuò)C6011的問(wèn)題:取消對(duì)NULL指針的引用(解決方法),C6011:取消對(duì)NULL指針的引用,發(fā)現(xiàn)是沒(méi)有進(jìn)行空指針的判斷,解決方案跟隨小編一起看看吧2024-01-01C++面試八股文之std::string實(shí)現(xiàn)方法
這篇文章主要介紹了C++面試八股文:std::string是如何實(shí)現(xiàn)的,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06c語(yǔ)言的cps實(shí)現(xiàn)求fibonacci數(shù)列示例
這篇文章主要介紹了c語(yǔ)言的cps實(shí)現(xiàn)求fibonacci數(shù)列示例,需要的朋友可以參考下2014-03-03visual studio code 配置C++開(kāi)發(fā)環(huán)境的教程詳解 (windows 開(kāi)發(fā)環(huán)境)
這篇文章主要介紹了 windows 開(kāi)發(fā)環(huán)境下visual studio code 配置C++開(kāi)發(fā)環(huán)境的圖文教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03