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

怎么用Matlab制作一款3D版2048小游戏

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

怎么用Matlab制作一款3D版2048小游戏

这篇文章主要介绍了怎么用Matlab制作一款3D版2048小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Matlab制作一款3D版2048小游戏文章都会有所收获,下面我们一起来看看吧。

效果:

怎么用Matlab制作一款3D版2048小游戏

怎么用Matlab制作一款3D版2048小游戏

怎么用Matlab制作一款3D版2048小游戏

完整代码:

function game20483Dglobal squaremapglobal colorlistglobal fontsizelistglobal baseX baseY baseZglobal barHdl textHdlglobal txtBest txtScoreglobal bestfig=figure('units','pixels');fig.Position=[560 50 575,400];fig.Color=[0.9804 0.9725 0.9373];fig.NumberTitle='off';fig.Name='2048Game3D';fig.MenuBar='none';fig.Resize='off';fig.KeyPressFcn=@key;%ax=axes(fig);hold(ax,'on');ax.Position=[0.1 0 1 1];ax.ZLim=[0,17];ax.XLim=[0,4]+0.5;ax.YLim=[0,4]+0.5;ax.View=[60   30];fill([0 4 4 0]+0.5,[0 0 4 4]+0.5,[0.7333 0.6784 0.6275],'EdgeColor','none');ax.Color=[0.8039 0.7569 0.7059].*1.02;ax.XTick=[];ax.YTick=[];ax.ZTick=[];ax.Box='on';ax.LineWidth=3;ax.XColor=[0.7333 0.6784 0.6275];ax.YColor=[0.7333 0.6784 0.6275];ax.ZColor=[0.7333 0.6784 0.6275];% for i=1:4%     for j=1:4%         fill((i-1)+0.5+[.1 .8 .8 .1],(j-1)+0.5+[.1 .1 .8 .8],...%             [0.8039 0.7569 0.7059],'EdgeColor','none');%         %     end% end% ==========================================================================% 方块颜色表colorlist=[ 0.8039    0.7569    0.7059    0.9333    0.8941    0.8549    0.9373    0.8784    0.8039    0.9608    0.6863    0.4824    0.9529    0.5922    0.4078    0.9529    0.4902    0.3725    0.9686    0.3686    0.2431    0.9255    0.8118    0.4510    0.9373    0.7882    0.3922    0.9333    0.7804    0.3216    0.9216    0.7686    0.2627    0.9255    0.7608    0.1804    0.9412    0.4078    0.4157    0.9216    0.3137    0.3451    0.9451    0.2549    0.2627    0.4392    0.7020    0.8157    0.3765    0.6353    0.8745    0.0902    0.5098    0.7843];% 数字大小表fontsizelist=[18 24 24 24 24 24 24 24 24 24 22 22 22 22 20 20 20 16].*0.8;% 立方体数据baseX=[0 1 1 0 0 0;1 1 0 0 1 1;1 1 0 0 1 1;0 1 1 0 0 0].*0.7-0.35;baseY=[0 0 1 0 0 0;0 1 1 1 0 0;0 1 1 1 1 1;0 0 1 0 1 1].*0.7-0.35;baseZ=[0 0 0 0 0 1;0 0 0 0 0 1;1 1 1 1 0 1;1 1 1 1 0 1];text(-0.6,0.75,17,'2048-3D GAME','HorizontalAlignment','left','Color',...    [0.4667 0.4314 0.3961],'FontSize',15,'FontWeight','bold')text(-0.8,0.75,-7,' BEST  ','HorizontalAlignment','left','Color',...    [0.9333 0.8941 0.8549],'FontSize',14,'FontWeight','bold','BackgroundColor',[0.7333 0.6784 0.6275])text(-0.8,0.75,-10,'SCORE','HorizontalAlignment','left','Color',...    [0.9333 0.8941 0.8549],'FontSize',14,'FontWeight','bold','BackgroundColor',[0.7333 0.6784 0.6275])txtBest=text(0.4,0.9,-4.7,'0','HorizontalAlignment','left','Color',...    [0.4667 0.4314 0.3961],'FontSize',14,'FontWeight','bold');txtScore=text(0.4,0.9,-7.7,'0','HorizontalAlignment','left','Color',...    [0.4667 0.4314 0.3961],'FontSize',14,'FontWeight','bold');% ==========================================================================%按键函数,通过moveevent调整矩阵    function key(~,event)        temp_map=squaremap;        switch event.Key            case 'uparrow'                temp_map=moveevent(temp_map');                temp_map=temp_map';            case 'downarrow'                temp_map=temp_map';                temp_map=moveevent(temp_map(:,4:-1:1));                temp_map=temp_map(:,4:-1:1);                temp_map=temp_map';            case 'rightarrow'                temp_map=moveevent(temp_map(:,4:-1:1));                temp_map=temp_map(:,4:-1:1);            case 'leftarrow'                temp_map=moveevent(temp_map);        end        score=sum(sum(squaremap));        best=max([best,score]);        save best.mat best -append                %若新矩阵与原矩阵不同,则重新绘制方块        if any(any(squaremap~=temp_map))            squaremap=temp_map;            createNewNum()            drawBlock()        end    end    %主函数    function temp_matrix=moveevent(temp_matrix)        for ii = 1: 4            temp_array=temp_matrix(ii,:);            temp_array(temp_array==0)=[];            for jj = 1: (length(temp_array)-1)                if temp_array(jj)==temp_array(jj+1)                    temp_array(jj)=temp_array(jj)+temp_array(jj+1);                    temp_array(jj+1)=0;                end            end            temp_array(temp_array==0)=[];            temp_array((length(temp_array)+1):4)=0;            temp_matrix(ii,:)=temp_array;        end    end% =========================================================================for i=1:4    for j=1:4        barHdl{i,j}=fill3(baseX+i,baseY+j,baseZ,'y','EdgeColor',[0.7333 0.6784 0.6275].*0.3);        textHdl{i,j}=text(i,j,1.5,'0','Color',[0.7333 0.6784 0.6275].*0.4,...            'FontWeight','bold','HorizontalAlignment','center');    endendinit()    function init()        %若没有游戏记录则最高分为0        if ~exist('best.mat')            best=0;            save best.mat best;        end        data=load('best.mat');        best=data.best;        txtBest.String=num2str(best);                squaremap=zeros(4,4);        createNewNum()        createNewNum()        drawBlock()    end    function drawBlock(~,~)        score=sum(sum(squaremap));        txtScore.String=num2str(score);        hmap=log(squaremap)/log(2);        hmap(isinf(hmap))=0;        for ii=1:4            for jj=1:4                tNum=squaremap(ii,jj);                tH=hmap(ii,jj);                for kk=1:6                    tZ=barHdl{ii,jj}(kk).ZData;tZ(tZ>0)=tH+0.01;                    barHdl{ii,jj}(kk).ZData=tZ;                    barHdl{ii,jj}(kk).FaceColor=colorlist(tH+1,:);                    if tNum~=0                        barHdl{ii,jj}(kk).EdgeColor=[0.7333 0.6784 0.6275].*0.3;                    else                        barHdl{ii,jj}(kk).EdgeColor=[0.7333 0.6784 0.6275];                    end                end                if tNum~=0                    textHdl{ii,jj}.Position(3)=tH+1;                    textHdl{ii,jj}.FontSize=fontsizelist(tH+1);                    textHdl{ii,jj}.String=num2str(tNum);                        else                    textHdl{ii,jj}.String='';                   end            end        end        judge()    end% 在矩阵空白处创建新的数字2或4    function createNewNum(~,~)        zerospos=find(squaremap==0);        temp_pos=zerospos(randi(length(zerospos)));        temp_num=randi(2)*2;        squaremap(temp_pos)=temp_num;    end% 判断游戏结束函数    function judge(~,~)        temp_judge_zeros=sum(sum(squaremap==0));        temp_judge_row=any(any(squaremap(1:3,:)==squaremap(2:4,:)));        temp_judge_col=any(any(squaremap(:,1:3)==squaremap(:,2:4)));        if temp_judge_row+temp_judge_col+temp_judge_zeros==0            gameOver()        end    end% gameOver    function gameOver(~,~)        answer = questdlg('GAME OVER, what would you like to do', ...            '2048-3D-GAME', ...            'restart','quit','restart');        % Handle response        switch answer            case 'restart'                init()            case 'quit'                close all                clear        end    endend

关于“怎么用Matlab制作一款3D版2048小游戏”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么用Matlab制作一款3D版2048小游戏”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

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

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

怎么用Matlab制作一款3D版2048小游戏

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

下载Word文档

猜你喜欢

怎么用Matlab制作一款3D版2048小游戏

这篇文章主要介绍了怎么用Matlab制作一款3D版2048小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Matlab制作一款3D版2048小游戏文章都会有所收获,下面我们一起来看看吧。效果:完整代码
2023-06-29

怎么用Python+Pygame制作简易版2048小游戏

这篇文章主要介绍了怎么用Python+Pygame制作简易版2048小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python+Pygame制作简易版2048小游戏文章都会有所收获,下面我们一起来看
2023-06-29

怎么使用Matlab制作一款真正的拼图小游戏

这篇文章主要介绍怎么使用Matlab制作一款真正的拼图小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果:简单原理介绍:1构造0,1矩阵作为每片拼图的透明度,可以构造出不规则形状的拼图(image函数有alph
2023-06-15

如何用Matlab制作一款简单的龙舟小游戏

今天小编给大家分享一下如何用Matlab制作一款简单的龙舟小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果图:步骤1
2023-06-29

怎么用Matlab制作黄金矿工小游戏

本文小编为大家详细介绍“怎么用Matlab制作黄金矿工小游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Matlab制作黄金矿工小游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果步骤图片准备本文所
2023-06-29

怎么用python制作3d游戏

要使用Python制作3D游戏,可以使用以下步骤:1. 选择适合的游戏引擎:Python有许多适用于游戏开发的引擎,如Pygame、Panda3D、Unity3D等。根据自己的需求选择合适的引擎。2. 学习游戏引擎:深入了解所选择的游戏引擎
2023-09-01

怎么在python中使用tkinter制作一个2048游戏

怎么在python中使用tkinter制作一个2048游戏?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建main.py代码:from tkinter import *fro
2023-06-14

怎么用python制作小游戏

这篇文章主要介绍“怎么用python制作小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用python制作小游戏”文章能帮助大家解决问题。开发工具Python版本:3.6.4相关模块:pyg
2023-06-27

怎么用Matlab编写简易版连连看小游戏

这篇文章主要介绍“怎么用Matlab编写简易版连连看小游戏”,在日常操作中,相信很多人在怎么用Matlab编写简易版连连看小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Matlab编写简易版连连看
2023-06-29

怎么用PyQt5制作一个猜数字小游戏

今天小编给大家分享一下怎么用PyQt5制作一个猜数字小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。开始之前,直接来看一
2023-06-29

使用CocosCreator怎么制作一个微信小游戏

使用CocosCreator怎么制作一个微信小游戏?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、在微信公众平台下载微信开发者工具 地址: https://m
2023-06-14

怎么用Python制作24点小游戏

这篇文章主要介绍“怎么用Python制作24点小游戏”,在日常操作中,相信很多人在怎么用Python制作24点小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python制作24点小游戏”的疑惑有所
2023-06-29

怎么用python制作迷宫小游戏

这篇文章主要讲解了“怎么用python制作迷宫小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用python制作迷宫小游戏”吧!开发工具Python版本: 3.6.4相关模块:pyg
2023-06-20

怎么用Python制作打地鼠小游戏

本篇内容主要讲解“怎么用Python制作打地鼠小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python制作打地鼠小游戏”吧!简介打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反
2023-06-29

编程热搜

  • 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动态编译

目录