MATLAB 簡易版 你畫我猜小遊戲

是落落呢發表於2021-01-04

一,設定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


相關文章