我的编程空间,编程开发者的网络收藏夹
学习永远不晚

利用Matlab复刻羊了个羊小游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

利用Matlab复刻羊了个羊小游戏

今天就是国赛的第一天

直接开摆

打国赛不如玩羊了个羊

玩羊了个羊不如玩MATLAB版

写作不易留个赞叭(比赛之余放松一下也行,反正MATLAB版我设置的是可以无限刷新。。。早晚能赢)

效果

完整代码

看效果就知道肯定用来相关素材包,因此只有代码无法运行,需要m文件所在文件夹存在羊了个羊素材包material.mat,素材包放在文末:

function sheeeppp
% @author : slandarer
% gzh  : slandarer随笔

clc;clear

material=load('material.mat');
typeNum=length(material.card);
cardNum=typeNum*3*7;
% 获取随机数表
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创建及修饰
fig=figure('units','pixels','position',[500 50 1.5*1080/3 1.5*1500/3],...
    'Numbertitle','off','menubar','none','resize','on','name','羊了个羊');
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));
% 创建卡牌
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
% =========================================================================
% 点击卡片的回调
    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('游戏失败','游戏失败','关闭游戏','重新开始','关闭游戏');
                if isempty(buttonName1),buttonName1='end';end
                if strcmp(buttonName1,'关闭游戏');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复刻羊了个羊小游戏的详细内容,更多关于Matlab羊了个羊的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

利用Matlab复刻羊了个羊小游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录