MATLAB 看图猜成语 小游戏

一,设置GUI界面

1.游戏的开始界面

1). 选择图形用户界面
在这里插入图片描述
2). 选择第一个选项
在这里插入图片描述
3).设计如此页面
在这里插入图片描述
4). 将文件保存文.fig格式,会自动生成相应的函数文件
在这里插入图片描述

2.游戏页面

1).设计如下界面
在这里插入图片描述

二,界面的动态效果

1.开始游戏
axes(handles.axes1);
img=imread('sjj/background.jpg');
image(img);
set(handles.pushbutton1,'String','start game');
set(handles.text1,'String','guess the idiom');

1). 效果如下
在这里插入图片描述
2). 点击开始游戏按钮,切换页面

close('old');   %关掉原有的页面
run('game');    %打开一个新的页面
2.游戏中的效果

1). 初始页面(第一题)
在这里插入图片描述
ensure按钮,提交本题答案,答对加一分,答错不得分,然后自动切换下一题。
next按钮,跳过本题,但不可再回头重做此题。
score按钮,计算分数,无论题目是否全部做完,直接结算分数,然后退出。

2). 回答正确,弹出提示框,分数加一
在这里插入图片描述
3). 回答错误,弹出提示框,切换下一题
在这里插入图片描述
4). 结束时,结算分数
在这里插入图片描述

三,游戏的主程序

主程序调用开始页面的函数文件,而开始页面控制游戏开始的页面。
主页面即run(‘old’); 一句。

四,源代码

1. 主程序
run('old');
2.开始页面
function varargout = old(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @old_OpeningFcn, ...
                   'gui_OutputFcn',  @old_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end



function old_OpeningFcn(hObject, eventdata, handles, varargin)

axes(handles.axes1);
img=imread('sjj/background.jpg');
image(img);
set(handles.pushbutton1,'String','start game');
set(handles.text1,'String','guess the idiom');


handles.output = hObject;

guidata(hObject, handles);



function varargout = old_OutputFcn(hObject, eventdata, handles) 

varargout{1} = handles.output;


function pushbutton1_Callback(hObject, eventdata, handles)

close('old');
run('game');



3.游戏页面
function varargout = game(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @game_OpeningFcn, ...
                   'gui_OutputFcn',  @game_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end


function game_OpeningFcn(hObject, eventdata, handles, varargin)

global count;
count=0;
global i;
i=0;
axes(handles.axes1);
pic=imread(['sjj/',int2str(i),'.jpg']);
image(pic);
global elem;
elem=['0','drmj','1','rymf','2','zstb','3','pfqs','4','sbml','5','kkpx','6','hlyh'];

handles.output = hObject;


guidata(hObject, handles);


function varargout = game_OutputFcn(hObject, eventdata, handles) 

varargout{1} = handles.output;



function edit1_Callback(hObject, eventdata, handles)

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


function pushbutton2_Callback(hObject, eventdata, handles)
    global count;
    helpdlg(['report:',int2str(count)]);
    pause(1.5);
    close('game');

    
function pushbutton1_Callback(hObject, eventdata, handles)
global i;
    global count;
    global elem;
    index=[];
    for a=1:35
        if elem(a)==int2str(i)
            for j=a+1:a+4
                index=[index,elem(j)];
            end
        end
    end
    answer=get(handles.edit1,'String');
    if answer==index
        helpdlg('CORRECT!!!');
        pause(1);
        count=count+1;
        if i<6&&i>=0
            i=i+1;
            axes(handles.axes1);
            pic=imread(['sjj/',int2str(i),'.jpg']);
            image(pic);
            set(handles.edit1,'String','');
        end
        if i==6
            helpdlg('the last');
            if(get(handles.edit1,'String')~='')
                helpdlg(['report:',int2str(count)]);
                pause(1.5);
                close('game');
            end
        end
        
    end
    if answer~=index
        error=errordlg('WRONG!!!');
        pause(1);
        close(error);
        i=i+1;
        axes(handles.axes1);
        pic=imread(['sjj/',int2str(i),'.jpg']);
        image(pic);
        set(handles.edit1,'String','');
    end

    
function pushbutton3_Callback(hObject, eventdata, handles)
global i;
    if i<6
        i=i+1;
        axes(handles.axes1);
        pic=imread(['sjj/',int2str(i),'.jpg']);
        image(pic);
        set(handles.edit1,'String','');
    end
    if i==6
        helpdlg('the last');
    end


  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB是一个强大的计算工具,但它也可以用来制作简单的小游戏。下面以制作“数字”游戏为例,介绍如何用MATLAB制作小游戏。 1. 首先,定义一个1到100的随机整数作为答案。 ``` answer = randi([1 100]); ``` 2. 接下来,编写一个循环,让用户输入测的数字,并与答案进行比较。如果测的数字比答案大,就提示用户“大了”,如果比答案小,就提示用户“小了”,如果中了,就退出循环。 ``` guess = 0; while guess ~= answer guess = input('请输入一个数字(1-100):'); if guess > answer disp('大了'); elseif guess < answer disp('小了'); else disp('恭喜你,对了!'); end end ``` 3. 最后,让用户选择是否继续玩游戏。如果选择继续,就重新生成答案;如果选择退出,就结束程序。 ``` choice = input('是否继续玩游戏?(1表示继续,0表示退出):'); while choice ~= 0 answer = randi([1 100]); guess = 0; while guess ~= answer guess = input('请输入一个数字(1-100):'); if guess > answer disp('大了'); elseif guess < answer disp('小了'); else disp('恭喜你,对了!'); end end choice = input('是否继续玩游戏?(1表示继续,0表示退出):'); end disp('游戏结束!'); ``` 这样,一个简单的“数字”小游戏就完成了。当然,这只是一个简单的例子,你可以自己发挥想象力,用MATLAB制作更加复杂、有趣的小游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值