MATLAB制作贪吃蛇小游戏(可选择游戏难度)

编程入门 行业动态 更新时间:2024-10-27 02:30:43

MATLAB制作贪吃蛇<a href=https://www.elefans.com/category/jswz/34/1769974.html style=小游戏(可选择游戏难度)"/>

MATLAB制作贪吃蛇小游戏(可选择游戏难度)

这两天感觉自己无所事事,事情多但是学不下去,于是就想自己写一下贪吃蛇的小游戏来放松一下自己,自己根据网上的教程学了一下用MATLAB制作贪吃蛇小游戏,并进行了小小的改进,可以实现游戏难度的选择。

同时跟大家分享一个MATLAB学习的好网站,上面有很多有趣的案例供大家学习,讲解很详细,有兴趣的同学可以去学习一下:

/

下面就是我自己做的贪吃蛇游戏的GIF图,效果感觉还比较满意:

 下面给大家讲解一下贪吃蛇游戏制作过程的总体思路:

一:游戏界面的制作

首先自然是游戏界面的制作了,界面的制作很简单,大家可以根据自己的喜好设置自己的游戏界面,这里我自己做的时候是使用命令行绘制游戏界面的,下面是我的代码:

function snake
%设置背景
global H  handles1
fullsizescreen = get(0,'ScreenSize');
H = figure('name','贪吃蛇_ZD',...'position',[fullsizescreen(3)/4,fullsizescreen(4)/4,fullsizescreen(3)/2-200,fullsizescreen(4)/2])
axis equal
axis([0.5 20.5 0.5 20.5])
set(gca,'xtick',[],'ytick',[],'position',[0.23 0.0925 0.775 0.815]);
box on
set(gca,'linewidth',5);
set(gca,'color','g');
uicontrol(H,'style','text',...'position',[50 410 180 70],...'string','贪吃蛇小游戏',...'FontSize',20);
uicontrol(H,'style','pushbutton',...'position',[80 350 120 70],...'backgroundcolor',[0.5 0.5 0.5],...'string','开始',...'FontSize',20,'callback',@startfcn);
uicontrol(H,'style','pushbutton',...'position',[80 250 120 70],...'backgroundcolor',[0.5 0.5 0.5],...'string','暂停',...'FontSize',20,'callback',@stopfcn);
uicontrol(H,'style','pushbutton',...'position',[80 150 120 70],...'backgroundcolor',[0.5 0.5 0.5],...'string','重启',...'FontSize',20,'callback',@restartfcn);
handles1 = uicontrol(H,'style','popupmenu',...'position',[70 50 150 70],...'string',{'游戏等级','等级一','等级二','等级三'},...'FontSize',20)

二:让贪吃蛇动起来

游戏界面制作好了之后就是让贪吃蛇动起来,动起来其实就是不断刷新游戏界面,而刷新游戏界面就要用到时钟,通过时钟刷新界面而让不同帧数的贪吃蛇产生位移。

这个是时钟启动函数,点击启动按钮时,这个函数运行,开启时钟。

function startfcn(~,~)
global snake_head snake_dir snake_body snake_length food plotfood plotsnake handles1 timer_snake
snake_head = [randi([5 15],1,1),randi([5 15],1,1)];
snake_dir = [randi([0 1],1,1),randi([0 1],1,1)];
snake_body = [snake_head(1),snake_head(2);snake_head(1)-1,snake_head(2);snake_head(1)-2,snake_head(2)];
snake_length = 3;
food = randi([2 19],2,1);
%绘制蛇
hold on
plotsnake = scatter(gca,snake_body(1:end,1),snake_body(1:end,2),250,'ys','filled')
hold on
plotfood = scatter(gca,food(1,:),food(2,:),150,'bs','filled')
set(gcf,'KeyPressFcn',@key);
val = get(handles1,'Value');
switch val case 1periodTime = 0.3;case 2periodTime = 0.3;case 3 periodTime = 0.2;case 4periodTime = 0.1;
end
timer_snake = timer('Period',periodTime,...%定时器的使用,GUI上实时刷新时使用的就是timer定时器'ExecutionMode','fixedRate',...'Timerfcn',@snakeGame);
start(timer_snake)

 这个是时钟刷新界面函数,从而产生贪吃蛇移动,吃食物等操作。

function snakeGame(~,~)
global snake_head snake_dir snake_body snake_length food plotfood plotsnake timer_snake
snake_head = snake_head + snake_dir;
snake_body = [snake_head;snake_body];
while length(snake_body) > snake_lengthsnake_body(end,:) = [];
endif intersect(snake_body(2:end,:),snake_head,'rows')Buttondown1 = questdlg('游戏结束,继续or退出???','Game Over','重新开始','退出游戏','退出游戏');if Buttondown1 == '重新开始'close all;clear all;snake()elseclosedelete(timer_snake)end
endif isequal(snake_head(1),food(1)) && isequal(snake_head(2),food(2))snake_length = snake_length+1;food = randi([1 19],2,1);while any(ismember(snake_body,food))food = randi([0 20],2,1);end
endif (snake_head(1,1)>20||(snake_head(1,1)<1||snake_head(1,2)>20)||snake_head(1,2)<1)Buttondown1 = questdlg('游戏结束,继续or退出???','Game Over','重新开始','退出游戏','退出游戏');if Buttondown1 == '重新开始'close all;clear all;snake();elseclose;delete(timer_snake)end
endset(plotfood,'XData',food(1),'YData',food(2));
set(plotsnake,'XData',snake_body(:,1),'YData',snake_body(:,2));%不断刷新界面
end

三:键盘操作贪吃蛇

贪吃蛇动起来之后就是要操作贪吃蛇运动了,这里我们使用键盘操作函数,键盘操作很简单,下面就是实现键盘操控贪吃蛇的函数:

function key(~,event)
global snake_dir timer_snake
switch event.Keycase 'uparrow'snake_dir1 = [0,1];case 'downarrow'snake_dir1 = [0,-1];case 'leftarrow'snake_dir1 = [-1,0];case 'rightarrow'snake_dir1 = [1,0];case 'space'stop(timer_snake);snake_dir1 = snake_dir;Buttondown3 = questdlg('游戏暂停','Stop','重新开始','退出游戏','继续游戏','继续游戏');if Buttondown3 == '重新开始'clf snake()elseif Buttondown3 == '退出游戏'closeelsestart(timer_snake)endotherwisesnake_dir = nan;
end
if any(snake_dir+snake_dir1)snake_dir = snake_dir1;%不可逆向,即只有snake_dir+snake_dir1~=0时才执行变换方向的操作
end

这样,我们就基本实现了贪吃蛇的运动,剩下函数就是实现游戏的暂停,重启操作了:

贪吃蛇暂停函数:

function stopfcn(~,~)
global timer_snake
stop(timer_snake);

贪吃蛇重启函数: 

function restartfcn(~,~)
global timer_snake
start(timer_snake)

这样就完成了整个贪吃蛇的游戏,虽然只是一个小小的游戏,但是实现出来还是很有成就感的,希望大家自己也能完成自己的贪吃蛇游戏~

更多推荐

MATLAB制作贪吃蛇小游戏(可选择游戏难度)

本文发布于:2024-02-04 08:50:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1673178.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小游戏   可选择   难度   贪吃蛇   游戏

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!