今天就是国赛的第一天
直接开摆
打国赛不如玩羊了个羊
玩羊了个羊不如玩MATLAB版

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

效果

完整代码

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

function sheeeppp
% @author : slandarer
% gzh  : slandarer随笔clc;clearmaterial=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:3for j=1:3tn=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==5cardMat(n,3)=n+9+3;endn=n+1;end
end
end
for k=1:3
for i=1:4for j=1:3tn=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==3cardMat(n,2)=n+12+i-1;cardMat(n,3)=n+12+1+i-1;elsecardMat(n,2)=n+12;endn=n+1;end
end
end
for k=1:3
for i=1:4for j=1:4tn=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==3cardMat(n,2)=n+16+i-1;cardMat(n,3)=n+16+1+i-1;elsecardMat(n,2)=n+16;endn=n+1;end
end
end
for k=1:4
for i=1:4for j=1:5tn=numList(n);if k==4image(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)elsecardMat(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;endn=n+1;end
end
end
for n=210:225tn=numList(n);       if n==225image(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)elseimage(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:241tn=numList(n);       if n==241image(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)elseimage(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:257tn=numList(n);       if n==257image(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)elseimage(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:273tn=numList(n);       if n==273image(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)elseimage(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);endend% 更新卡槽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)endstoreList(zpos:(zpos+2))=[];cardList(zpos:(zpos+2))=[];endend% 图像重绘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)==7buttonName1=questdlg('游戏失败','游戏失败','关闭游戏','重新开始','关闭游戏');if isempty(buttonName1),buttonName1='end';endif strcmp(buttonName1,'关闭游戏');clf;clc;clear;close allelseif strcmp(buttonName1,'重新开始');delete(fig);sheeeppp();endendendend
% =========================================================================
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();endfunction 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);endnumList(cardNumList)=tnumList;end
% @author : slandarer
% gzh  : slandarer随笔
end

全部文件获取:
链接:https://pan.baidu.com/s/1NRBkmrTWPu8dM-IZplPOZQ?pwd=slan
提取码:slan

MATLAB | 使用MATLAB制作羊了个羊小游戏相关推荐

  1. JAVA课程设计——“小羊吃蓝莓”小游戏

    JAVA课程设计--"小羊吃蓝莓"小游戏 1. 团队课程设计博客链接 http://www.cnblogs.com/HXY071/p/7061216.html 2. 个人负责模块或 ...

  2. Python制作简单的终端交互小游戏

    Python制作简单的终端交互小游戏 因为最近的集训课程中,老师让我们把python,java,nodejs都需要掌握,本人最常使用的是java,python许久没有用过,就想写一段逻辑来帮助自己复习 ...

  3. 制作一个简单的switch小游戏

    好的,那么,我们可以这样来制作一个简单的 switch 小游戏: 首先,我们需要先引入所需的库,如 stdio.h 和 stdlib.h. 接着,我们可以使用 printf 和 scanf 函数来输出 ...

  4. 基于Python制作的消消乐小游戏

    导语 哈喽,好久不见.消失人口上线更新一波每月必出的 python 制作小游戏系列文章.本期我们将制作一个消消乐小游戏,让我们愉快地开始吧 开发工具 Python 版本:3.6.4 相关模块: pyg ...

  5. java编辑2048小游戏_Java 制作命令行版 2048小游戏

    Java 命令行版 2048小游戏(2020年8月14日) 制作背景 大二即将开学,从头开始学习了一个多月的java,对二维数组的操作稍微熟悉了一些.于是想做一个简单的2048来试一试. 众所周知,2 ...

  6. 女神节你也能自己动手制作一个漂亮的微信小游戏

    嗨!大家好,我是小蚂蚁. 这是我之前制作的一个非常漂亮的微信小游戏,你可以给予它进行改编,然后自己制作一个小游戏送给你想送的人. 我发现这篇文章每年至少可以发四次,情人节一次,女神节一次,520一次, ...

  7. Python3制作类八音符的小游戏

    导语 T_T突然发现N久以前我还做过一个系列??? 利用Python制作小游戏??? 好吧,既然做了,就有头有尾吧~~~ 本期我们将制作一个类似八音符的小游戏. 让我们愉快地开始吧~~~ 相关文件 百 ...

  8. MATLAB使用AppDesigner制作测试界面的入门小案例

    matlab的AppDesigner基本使用 前几天搞了一个matlab的小的界面设计,使用到了其自带的工具AppDesigner,最近再使用有好些都忘记了,把一些基本的使用方式记录在案,如果有一些基 ...

  9. 教你用matlab制作一款黄金矿工小游戏

    效果 步骤 0 图片准备 本文所使用图片在这: 网盘链接:https://pan.baidu.com/s/1CWL1R-rbTMFEy_G_P2JfgQ 提取码:kl17 1 背景构建 functio ...

  10. HTML+CSS+JS制作【飞机大战】小游戏(键盘版和鼠标版)

    文章目录 一.效果演示 设计思路 二.鼠标版飞机大战代码展示 1.HTML结构代码 2.CSS样式代码 3.JavaScript代码 js.js文件 plane.js文件 三.键盘版飞机大战代码展示 ...

最新文章

  1. 算法优化:最大m个子段和,问题规模从1个子段和扩展到m个,动态规划
  2. 【Android】Android中Intent的用法总结
  3. Javascript:原型模式类继承
  4. 漫画:Java如何实现热更新?
  5. 详解 Java NIO
  6. JAVA基础系列:反射
  7. OpenCV图像处理(9)——边缘提取方法对比
  8. axis2与cxf区别
  9. 将DynamipsGUI和VMware虚拟机进行桥接
  10. c语言sqlite3删除最后一行,sqlite学习笔记11:C语言中使用sqlite之删除记录
  11. DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》证书考试历年真题及其解析之2019年/2020年
  12. Google 因果推断的CausalImpact 贝叶斯结构时间序列模型(二十二)
  13. 朱光潜给青年的十二封信 之 谈升学和选课
  14. java 协方差矩阵_协方差矩阵概念(易理解)
  15. 泪目了!原河南常务副省长的艰辛求学路竟然这么感人
  16. 【Swift 60秒】33 - Exiting multiple loops
  17. MS SQL基本语法及实例操作
  18. Git入门【学费git一篇还不够?】
  19. dede 后台 一直显示验证码不正确的原因
  20. c语言输出法雷序列,法雷(法里)序列 - osc_h0wb1wlt的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. 诸神荣耀服务器维护,第二次诸神之战逆水寒的结束:后PDD时代普通玩家的荣耀...
  2. uniapp开发相亲平台
  3. Colab 导入 d2l 包的方法
  4. 获取异常信息里再出异常就找不到日志了,我TM人傻了
  5. 学习3dmax一直没进步?找到这几个突破口
  6. AppConfig增加IsEnumToInt配置
  7. 爱奇艺与上海电影学院成立“智能制作联合实验室”
  8. 你可能不知道系列--JavaScript严格模式与非严格模式的区别
  9. 原来投影仪还能这么用?1分钟就让你学会在投影仪上看4K超清烟花大会
  10. JavaScript的算数运算符与比较运算符,一文说清!