欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Matlab復(fù)刻羊了個(gè)羊小游戲

 更新時(shí)間:2022年09月16日 08:50:10   作者:slandarer  
最近羊了個(gè)羊游戲可謂是異?;鸨?,身邊幾乎都在玩,他其實(shí)就是一個(gè)簡(jiǎn)單的卡通背景消除闖關(guān)游戲,本文將用Matlab復(fù)刻這一游戲,感興趣的可以了解一下

今天就是國(guó)賽的第一天

直接開擺

打國(guó)賽不如玩羊了個(gè)羊

玩羊了個(gè)羊不如玩MATLAB版

寫作不易留個(gè)贊叭(比賽之余放松一下也行,反正MATLAB版我設(shè)置的是可以無限刷新。。。早晚能贏)

效果

完整代碼

看效果就知道肯定用來相關(guān)素材包,因此只有代碼無法運(yùn)行,需要m文件所在文件夾存在羊了個(gè)羊素材包material.mat,素材包放在文末:

function sheeeppp
% @author : slandarer
% gzh  : slandarer隨筆

clc;clear

material=load('material.mat');
typeNum=length(material.card);
cardNum=typeNum*3*7;
% 獲取隨機(jī)數(shù)表
numList=repmat(1:typeNum,[3*7,1]);
[~,index]=sort(rand(1,cardNum));
numList=numList(:);numList=numList(index);
cardNumList=1:cardNum;
% 卡槽和卡池列表
storeList=[];
cardList=[];
cardMat=zeros(cardNum,7);
cardMat(:,1)=1:cardNum;


% =========================================================================
% figure及axes創(chuàng)建及修飾
fig=figure('units','pixels','position',[500 50 1.5*1080/3 1.5*1500/3],...
    'Numbertitle','off','menubar','none','resize','on','name','羊了個(gè)羊');
ax=axes('Parent',fig,'Position',[0,0,1,1],'XLim',[0,1080],'YLim',[0,1500],...
    'XColor','none','YColor','none','XTick',[],'YTick',[],'Color',[195,254,138]./255);
hold on
% image(ax,[0,1080],[0,1500],flipud(material.bkg));
image(ax,[0,1080],[0,295],flipud(material.store));
% 創(chuàng)建卡牌
n=1;
for k=1:5
for i=1:3
    for j=1:3
        tn=numList(n);
        image(ax,[-130,130]./2+540+(j-2).*130+rand(1).*5,[-145,145]./2+1000-(i-2).*145+rand(1).*5,...
            flipud(material.card(tn).C.*.8),'AlphaData',flipud(material.card(tn).A),...
            'UserData',[n,tn],'ButtonDownFcn',@clickImg)
        cardMat(n,2)=n+9;
        if k==5
            cardMat(n,3)=n+9+3;
        end
        n=n+1;
    end
end
end
for k=1:3
for i=1:4
    for j=1:3
        tn=numList(n);
        image(ax,[-130,130]./2+540+(j-2).*130+rand(1).*5,[-145,145]./2+1000-(i-2).*145+145/2+rand(1).*5,...
            flipud(material.card(tn).C.*.8),'AlphaData',flipud(material.card(tn).A),...
            'UserData',[n,tn],'ButtonDownFcn',@clickImg)
        if k==3
            cardMat(n,2)=n+12+i-1;
            cardMat(n,3)=n+12+1+i-1;
        else
            cardMat(n,2)=n+12;
        end
        n=n+1;
    end
end
end
for k=1:3
for i=1:4
    for j=1:4
        tn=numList(n);
        image(ax,[-130,130]./2+540+(j-2.5).*130+rand(1).*5,[-145,145]./2+1000-(i-2).*145+145/2+rand(1).*5,...
            flipud(material.card(tn).C.*.8),'AlphaData',flipud(material.card(tn).A),...
            'UserData',[n,tn],'ButtonDownFcn',@clickImg)
        if k==3
            cardMat(n,2)=n+16+i-1;
            cardMat(n,3)=n+16+1+i-1;
        else
            cardMat(n,2)=n+16;
        end
        n=n+1;
    end
end
end
for k=1:4
for i=1:4
    for j=1:5
        tn=numList(n);
        if k==4
            image(ax,[-130,130]./2+540+(j-3).*130+rand(1).*5,[-145,145]./2+1000-(i-2).*145+145/2+rand(1).*5,...
            flipud(material.card(tn).C),'AlphaData',flipud(material.card(tn).A),...
            'UserData',[n,tn],'ButtonDownFcn',@clickImg)
        else
            cardMat(n,2)=n+16;
            image(ax,[-130,130]./2+540+(j-3).*130+rand(1).*5,[-145,145]./2+1000-(i-2).*145+145/2+rand(1).*5,...
            flipud(material.card(tn).C.*.8),'AlphaData',flipud(material.card(tn).A),...
            'UserData',[n,tn],'ButtonDownFcn',@clickImg)
            cardMat(n,2)=n+20;
        end
        n=n+1;
    end
end
end
for n=210:225
    tn=numList(n);       
    if n==225
        image(ax,[-130,130]./2+540-400+(n-210)*15,[-145,145]./2+600,...
        flipud(material.card(tn).C),'AlphaData',flipud(material.card(tn).A),...
        'UserData',[n,tn],'ButtonDownFcn',@clickImg)
    else
        image(ax,[-130,130]./2+540-400+(n-210)*15,[-145,145]./2+600,...
        flipud(material.card(tn).C.*.8),'AlphaData',flipud(material.card(tn).A),...
        'UserData',[n,tn],'ButtonDownFcn',@clickImg)
        cardMat(n,2)=n+1;
    end
end
for n=226:241
    tn=numList(n);       
    if n==241
        image(ax,[-130,130]./2+540-400+(n-226)*15,[-145,145]./2+400,...
        flipud(material.card(tn).C),'AlphaData',flipud(material.card(tn).A),...
        'UserData',[n,tn],'ButtonDownFcn',@clickImg)
    else
        image(ax,[-130,130]./2+540-400+(n-226)*15,[-145,145]./2+400,...
        flipud(material.card(tn).C.*.8),'AlphaData',flipud(material.card(tn).A),...
        'UserData',[n,tn],'ButtonDownFcn',@clickImg)
        cardMat(n,2)=n+1;
    end
end
for n=242:257
    tn=numList(n);       
    if n==257
        image(ax,[-130,130]./2+540+400-(n-242)*15,[-145,145]./2+600,...
        flipud(material.card(tn).C),'AlphaData',flipud(material.card(tn).A),...
        'UserData',[n,tn],'ButtonDownFcn',@clickImg)
    else
        image(ax,[-130,130]./2+540+400-(n-242)*15,[-145,145]./2+600,...
        flipud(material.card(tn).C.*.8),'AlphaData',flipud(material.card(tn).A),...
        'UserData',[n,tn],'ButtonDownFcn',@clickImg)
        cardMat(n,2)=n+1;
    end
end
disp(material.author);
disp(material.gzh);
for n=258:273
    tn=numList(n);       
    if n==273
        image(ax,[-130,130]./2+540+400-(n-258)*15,[-145,145]./2+400,...
        flipud(material.card(tn).C),'AlphaData',flipud(material.card(tn).A),...
        'UserData',[n,tn],'ButtonDownFcn',@clickImg)
    else
        image(ax,[-130,130]./2+540+400-(n-258)*15,[-145,145]./2+400,...
        flipud(material.card(tn).C.*.8),'AlphaData',flipud(material.card(tn).A),...
        'UserData',[n,tn],'ButtonDownFcn',@clickImg)
        cardMat(n,2)=n+1;
    end
end
% =========================================================================
% 點(diǎn)擊卡片的回調(diào)
    function clickImg(obj,~)
        objNum=obj.UserData;
        if ~any(cardMat(objNum(1),2:end))
            cardNumList(cardNumList==objNum(1))=[];
            % 取消陰影
            [rows,cols]=find(cardMat(:,2:end)==objNum(1));
            for d=1:length(rows)
                cardMat(rows(d),cols(d)+1)=0;
                if ~any(cardMat(rows(d),2:end))
                    picObj=findobj('UserData',[rows(d),numList(rows(d))]);
                    picObj.CData=flipud(material.card(numList(rows(d))).C);
                end
            end
            % 更新卡槽
            obj.ButtonDownFcn=[];
            cardList=[cardList,objNum(1)];
            storeList=[storeList,objNum(2)];

            [storeList,tindex]=sort(storeList);
            cardList=cardList(tindex);
            % 消除卡牌
            d2=diff(diff(storeList).*(1:(length(storeList)-1)).^4);
            if ~isempty(d2)
                if any(d2==0)
                    zpos=find(d2==0,1);
                    for tk=zpos:(zpos+2)
                        picObj=findobj('UserData',[cardList(tk),storeList(tk)]);
                        delete(picObj)
                    end
                    storeList(zpos:(zpos+2))=[];
                    cardList(zpos:(zpos+2))=[];
                end
            end
            % 圖像重繪
            for tk=1:length(cardList)
                picObj=findobj('UserData',[cardList(tk),storeList(tk)]);
                picObj.XData=[-130,130]./2+135+(tk-1).*135;
                picObj.YData=[-145,145]./2+154;
            end   

            if length(cardList)==7
                buttonName1=questdlg('游戲失敗','游戲失敗','關(guān)閉游戲','重新開始','關(guān)閉游戲');
                if isempty(buttonName1),buttonName1='end';end
                if strcmp(buttonName1,'關(guān)閉游戲');clf;clc;clear;close all
                elseif strcmp(buttonName1,'重新開始');delete(fig);sheeeppp();
                end
            end
        end
    end
% =========================================================================
image(ax,[-93,93]./1.5+100,[-81,81]./1.5+1410,flipud(material.re(1).C),...
    'AlphaData',flipud(material.re(1).A),'ButtonDownFcn',@restart)
image(ax,[-93,93]./1.5+100+160,[-81,81]./1.5+1410,flipud(material.re(2).C),...
    'AlphaData',flipud(material.re(2).A),'ButtonDownFcn',@refresh)
    function restart(~,~)
        delete(fig);sheeeppp();
    end
    function refresh(~,~)
        tnumList=numList(cardNumList);
        [~,tindex]=sort(rand([1,length(tnumList)]));
        tnumList=tnumList(tindex);

        for tk=1:length(tnumList)
            picObj=findobj('UserData',[cardNumList(tk),numList(cardNumList(tk))]);
            picObj.UserData=[cardNumList(tk),tnumList(tk)];
            picObj.CData=flipud(material.card(tnumList(tk)).C);
        end
        numList(cardNumList)=tnumList;
    end
% @author : slandarer
% gzh  : slandarer隨筆
end

全部文件獲取:

鏈接:https://pan.baidu.com/s/1NRBkmrTWPu8dM-IZplPOZQ

提取碼:zqpf

以上就是利用Matlab復(fù)刻羊了個(gè)羊小游戲的詳細(xì)內(nèi)容,更多關(guān)于Matlab羊了個(gè)羊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言刷題之倒置字符串的解題全過程

    C語言刷題之倒置字符串的解題全過程

    這篇文章主要給大家介紹了關(guān)于C語言刷題之倒置字符串的解題全過程,這是一道我們經(jīng)常刷到的實(shí)戰(zhàn)題目,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • C語言sqrt函數(shù)的實(shí)例用法講解

    C語言sqrt函數(shù)的實(shí)例用法講解

    在本篇文章里小編給大家整理的是關(guān)于C語言sqrt函數(shù)的實(shí)例內(nèi)容以及用法詳解,需要的朋友們可以參考下。
    2020-02-02
  • 深入理解c++常成員函數(shù)和常對(duì)象

    深入理解c++常成員函數(shù)和常對(duì)象

    下面小編就為大家?guī)硪黄钊肜斫鈉++常成員函數(shù)和常對(duì)象。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過來看看吧
    2016-05-05
  • 實(shí)例代碼講解c++ 繼承特性

    實(shí)例代碼講解c++ 繼承特性

    這篇文章主要介紹了c++ 繼承特性的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C++中pair的用法總結(jié)

    C++中pair的用法總結(jié)

    pair是C++STL(標(biāo)準(zhǔn)模板庫)中的一個(gè)現(xiàn)有容器,它將2個(gè)數(shù)據(jù)整合成一組數(shù)據(jù),當(dāng)我們類似需求的時(shí)候就可以使用到pair,pair的本質(zhì)其實(shí)就是個(gè)結(jié)構(gòu)體,本文將詳細(xì)的給大家介紹pair用法,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • C++11新增的包裝器詳解

    C++11新增的包裝器詳解

    由于函數(shù)調(diào)用可以使用函數(shù)名、函數(shù)指針、函數(shù)對(duì)象或有名稱的lambda表達(dá)式,可調(diào)用類型太豐富導(dǎo)致模板的效率極低。包裝器用于解決效率低的問題
    2022-08-08
  • opencv實(shí)現(xiàn)三幀差法解析

    opencv實(shí)現(xiàn)三幀差法解析

    這篇文章主要介紹了opencv實(shí)現(xiàn)三幀差法的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++實(shí)現(xiàn)消消樂游戲

    C++實(shí)現(xiàn)消消樂游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)消消樂游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • dev?c++的使用和調(diào)試方式

    dev?c++的使用和調(diào)試方式

    這篇文章主要介紹了dev?c++?的使用和調(diào)試方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • OpenSSL使用AES實(shí)現(xiàn)文件加解密功能

    OpenSSL使用AES實(shí)現(xiàn)文件加解密功能

    AES是一種對(duì)稱加密算法,它是目前廣泛使用的加密算法之一,意味著加密和解密使用相同的密鑰,這就要求密鑰的安全性非常重要,因?yàn)槿魏螕碛忻荑€的人都能進(jìn)行加密和解密操作,本文給大家介紹了OpenSSL如何使用AES實(shí)現(xiàn)文件加解密功能,需要的朋友可以參考下
    2023-11-11

最新評(píng)論