返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >利用Matlab复刻羊了个羊小游戏
  • 890
分享到

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

2024-04-02 19:04:59 890人浏览 独家记忆
摘要

目录效果完整代码今天就是国赛的第一天 直接开摆 打国赛不如玩羊了个羊 玩羊了个羊不如玩MATLAB版 写作不易留个赞叭(比赛之余放松一下也行,反正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羊了个羊的资料请关注编程网其它相关文章!

--结束END--

本文标题: 利用Matlab复刻羊了个羊小游戏

本文链接: https://lsjlt.com/news/167680.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 利用Matlab复刻羊了个羊小游戏
    目录效果完整代码今天就是国赛的第一天 直接开摆 打国赛不如玩羊了个羊 玩羊了个羊不如玩MATLAB版 写作不易留个赞叭(比赛之余放松一下也行,反正MATLAB版我设置的是可以无限刷新...
    99+
    2024-04-02
  • JS实现羊了个羊小游戏实例
    目录引言rem布局方案popbox.js使用原理html代码样式代码javascript代码导入图片素材列表startHandler函数实现randomList 工具方法clickH...
    99+
    2024-04-02
  • python版《羊了个羊》游戏开发第一天
    Python小型项目实战教学课《羊了个羊》 一、项目开发大纲(初级) 版本1.0:基本开发 课次 内容 技术 第一天 基本游戏地图数据 面向过程 第二天 鼠标点击和移动 面向对象 第三天 消除 设计模式:单例模式 ...
    99+
    2023-09-01
    python pygame 开发语言
  • 基于JavaScript实现网页版羊了个羊游戏
    最近羊了个羊火的不得了,利用周末时间实现一个网站版。步骤如下: 1,用reactjs 实现。 2,实现Gameroom类。 3,实现Card类。 4,通过父组件控制子组件通信方式,控...
    99+
    2024-04-02
  • 利用Matlab复刻扫雷小游戏
    效果图 点击帮助切换插旗功能: 游戏失败: 完整代码 function SLsXpbombs global Row; Row=10;%雷区行数 global Col; Col...
    99+
    2024-04-02
  • 效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码
    ⭐零、教程概述 效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码,有数据库和关卡。 我写的程序是指 卡牌堆叠游戏 ,效果与羊了个羊一致。本教程有两个版本 PHP 使用 PHP + H5 + CSS +...
    99+
    2023-09-06
    游戏 开源 c++ html5 php
  • 利用Jetpack Compose复刻游戏Flappy Bird
    目录1.拆解游戏2.复刻画面ⅰ.布置远近景ⅱ.摆放管道ⅲ.放置小鸟3.状态管理和架构4.路面动起来5.管道动起来6.小鸟飞起来7.碰撞和实时分值8.结束分值和重新开始9.最终效果Fl...
    99+
    2024-04-02
  • 利用Matlab复刻举牌加油小人生成器
    突然发现cla函数也可以应用到app designer控件上,因而对部分内容做出更改。 手痒,用matlab app designer复刻了一款举牌加油小人生成器,效果如下: 该...
    99+
    2024-04-02
  • 利用Matlab制作一款3D版2048小游戏
    其实逻辑和2维版本完全一样,就不进行详细解说了,直接看效果: 效果: 目前界面还不咋好看,期待大家的优化 还是键盘↑↓←→操作嗷 完整代...
    99+
    2024-04-02
  • 利用Python写了一个水果忍者小游戏
    目录前言:一、需要导入的包二、窗口界面设置三、随机生成水果位置四、绘制字体五、玩家生命的提示六、游戏开始与结束的画面七、游戏主循环最后前言: 水果忍者到家都玩过吧,但是Python写...
    99+
    2024-04-02
  • 如何利用Matlab复刻举牌加油小人生成器
    这篇文章主要为大家展示了“如何利用Matlab复刻举牌加油小人生成器”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用Matlab复刻举牌加油小人生成器”这篇文章吧。突然发现cla函数也可以...
    99+
    2023-06-29
  • 利用Matlab编写简易版连连看小游戏
    这是一款MATLAB连连看小游戏,基本实现了连连看的功能,不过目前没有写出死局判定的模块,日后可能会对其进行改进。 游戏截图 游戏组装说明 我们的变量path输入的是图像包的相...
    99+
    2024-04-02
  • 利用Matlab制作一款狗头翻牌子小游戏
    目录0游戏效果1fig界面和背景板2狗狗牌子与胜利标志2.1狗狗牌子绘制2.2游戏胜利标签2.3鼠标点击牌子回调3游戏难度按钮组3.1按钮绘制3.2难度选择回调4游戏刷新模块4.1刷...
    99+
    2024-04-02
  • 利用java编写一个弹球小游戏
    本篇文章给大家分享的是有关利用java编写一个弹球小游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。弹球游戏实现原理:  隔一定时间(小于1秒)重新绘制图像,因为Graphi...
    99+
    2023-05-31
    java ava
  • 如何利用Matlab制作一款真正的拼图小游戏
    效果: 简单原理介绍: 1构造0,1矩阵作为每片拼图的透明度,可以构造出不规则形状的拼图(image函数有alphaData属性可以设置) jigsawMask=zeros...
    99+
    2024-04-02
  • 利用java制作一个猜数字小游戏
    今天就跟大家聊聊有关利用java制作一个猜数字小游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体方法如下:package com.swift;import java.util....
    99+
    2023-05-31
    java ava
  • 利用c++写一个简单的推箱子小游戏
    效果图 相信各位都肯定完整这种推箱子的小游戏。游戏玩法很简单,那就是一个人把所有的箱子推动到对应的位置那就可以赢了。 那么我们接下来看看这个推箱子的游戏改怎么写 char ma...
    99+
    2024-04-02
  • 利用Vue.js制作一个拼图华容道小游戏
    目录游戏介绍核心思路核心代码htmlgames 类生成随机图片数量移动图片键盘事件拼图完成结语游戏介绍 先看看界面 这是一个拼图游戏,可以自选难度和自选闯关图片 游戏开始后根据...
    99+
    2024-04-02
  • 利用Java编写一个俄罗斯方块小游戏
    这期内容当中小编将会给大家带来有关利用Java编写一个俄罗斯方块小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java游戏俄罗斯方块的实现实例    &nbs...
    99+
    2023-05-31
    java ava
  • 利用Java编写个"不贪吃蛇"小游戏
    目录前言代码蛇、药丸的抽象游戏界面启动类游戏演示最后前言 我写的这个”贪吃蛇“和小时候玩的”贪吃蛇“有点不一样,以往的”贪...
    99+
    2022-11-13
    Java不贪吃蛇游戏 Java 贪吃蛇游戏 Java 贪吃蛇
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作