利用Matlab復(fù)刻羊了個(gè)羊小游戲
今天就是國(guó)賽的第一天
直接開(kāi)擺
打國(guó)賽不如玩羊了個(gè)羊
玩羊了個(gè)羊不如玩MATLAB版
寫(xiě)作不易留個(gè)贊叭(比賽之余放松一下也行,反正MATLAB版我設(shè)置的是可以無(wú)限刷新。。。早晚能贏)
效果
完整代碼
看效果就知道肯定用來(lái)相關(guān)素材包,因此只有代碼無(wú)法運(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)閉游戲','重新開(kāi)始','關(guān)閉游戲'); if isempty(buttonName1),buttonName1='end';end if strcmp(buttonName1,'關(guān)閉游戲');clf;clc;clear;close all elseif strcmp(buttonName1,'重新開(kāi)始');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
全部文件獲?。?/p>
鏈接: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語(yǔ)言sqrt函數(shù)的實(shí)例用法講解
在本篇文章里小編給大家整理的是關(guān)于C語(yǔ)言sqrt函數(shù)的實(shí)例內(nèi)容以及用法詳解,需要的朋友們可以參考下。2020-02-02OpenSSL使用AES實(shí)現(xiàn)文件加解密功能
AES是一種對(duì)稱加密算法,它是目前廣泛使用的加密算法之一,意味著加密和解密使用相同的密鑰,這就要求密鑰的安全性非常重要,因?yàn)槿魏螕碛忻荑€的人都能進(jìn)行加密和解密操作,本文給大家介紹了OpenSSL如何使用AES實(shí)現(xiàn)文件加解密功能,需要的朋友可以參考下2023-11-11