返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >利用Matlab制作三子棋游戏的示例代码
  • 708
分享到

利用Matlab制作三子棋游戏的示例代码

2024-04-02 19:04:59 708人浏览 薄情痞子
摘要

效果: 注: 由于用uifigure和uiaxes写的会比较慢,改成常规的axes和figure会快很多。 完整代码: function OX_chess fig=ui

效果:

注: 由于用uifigure和uiaxes写的会比较慢,改成常规的axes和figure会快很多。

完整代码:

function OX_chess
fig=uifigure('units','pixels',...
        'position',[350 100 500 500],...
        'Numbertitle','off',...
        'name','OX_chess',...
        'Color',[1 1 1],...
        'resize','off',...
         'menubar','none');

ax=uiaxes('Units','pixels',...
        'parent',fig,...  
        'Color',[0.9106 0.9773 1],...
        'Position',[-22 -20 540 540],...
        'XLim',[0-20 400+20],...
        'YLim',[0-20 400+20],...
        'XColor',[0.8706 0.9373 0.9686],...
        'YColor',[0.8706 0.9373 0.9686]);
ax.Toolbar.Visible='off';
hold(ax,'on')
drawCheckerboard()
%==========================================================================
set(fig,'WindowButtonDownFcn',@buttondown)
    function buttondown(~,~)
        xy=get(ax,'CurrentPoint');
        xp=xy(1,2);yp=xy(1,1);
        Pos=[xp,yp];
        Pos=round((Pos-50)./150)+1;
        if map(Pos(2),Pos(1))==0
            switch turn
                case 1,drawO(Pos(2),Pos(1)),turn=-1;map(Pos(2),Pos(1))=1;
                case -1,drawX(Pos(2),Pos(1)),turn=1;map(Pos(2),Pos(1))=-1;
            end
        end   
        judge();
    end
    function judge(~,~)
        judge1=sum(map,1);
        judge2=sum(map,2);
        judge3=sum(map(eye(3)==1));
        judge4=sum(map([3,5,7]));
        winner=[];
        switch 1
            case any(judge1==3)||any(judge2==3)||judge3==3||judge4==3,winner='甜甜圈';
            case any(judge1==-3)||any(judge2==-3)||judge3==-3||judge4==-3,winner='手指饼干';
        end
        if ~isempty(winner)
            buttonName1=uiconfirm(fig,[winner,'获得胜利'],[winner,'获得胜利'],'Options',{'关闭','重新开始'},'Icon','success');
                if isempty(buttonName1),buttonName1='end';end
                if strcmp(buttonName1,'重新开始'),restart();
                elseif strcmp(buttonName1,'关闭');delete(fig);
                end
        end  
    end

    function restart(~,~)
        turn=1;
        map=zeros(3,3);
        delete(findobj(ax,'type','patch'))
        delete(findobj(ax,'type','line'))
        delete(findobj(ax,'type','scatter'))
        drawCheckerboard()
    end
turn=1;
map=zeros(3,3);

    


%==========================================================================
    function drawX(i,j)
        x=50+150*(i-1);
        y=50+150*(j-1);
        Xb=[-55:1:+55,+55:-1:-55];
        Xs=[-50:1:+50,+50:-1:-50];
        Yb=[(-15).*ones(1,length(Xb)/2),(+15).*ones(1,length(Xb)/2)];
        Ys=[(-12).*ones(1,length(Xs)/2),(+12).*ones(1,length(Xs)/2)];
        Xsin=-48:0.1:48;
        Ysin=sin(Xsin./2).*5;
        Xp=-47:15:45;
        Yp=0.*ones(size(Xp));
        
        theta=pi/6;
        fill(ax,x+Xb.*cos(theta)-Yb.*sin(theta),y+Yb.*cos(theta)+Xb.*sin(theta),[1.0000    0.9216    0.6588]);
        fill(ax,x+Xs.*cos(theta)-Ys.*sin(theta),y+Ys.*cos(theta)+Xs.*sin(theta),[0.6627    0.6431    0.2745],'EdgeColor','none');
        plot(ax,x+Xsin.*cos(theta)-Ysin.*sin(theta),y+Ysin.*cos(theta)+Xsin.*sin(theta),'LineWidth',2,'Color',[0.9451    0.9843    0.8471])
        scatter(ax,x+Xp.*cos(theta)-Yp.*sin(theta),y+Yp.*cos(theta)+Xp.*sin(theta),10,'filled','CData',[0.9216    0.4000    0.3725])
        
        theta=3*pi/6;
        fill(ax,x+Xb.*cos(theta)-Yb.*sin(theta),y+Yb.*cos(theta)+Xb.*sin(theta),[1.0000    0.9216    0.6588]);
        fill(ax,x+Xs.*cos(theta)-Ys.*sin(theta),y+Ys.*cos(theta)+Xs.*sin(theta),[0.6627    0.6431    0.2745],'EdgeColor','none');
        plot(ax,x+Xsin.*cos(theta)-Ysin.*sin(theta),y+Ysin.*cos(theta)+Xsin.*sin(theta),'LineWidth',2,'Color',[0.9451    0.9843    0.8471])
        scatter(ax,x+Xp.*cos(theta)-Yp.*sin(theta),y+Yp.*cos(theta)+Xp.*sin(theta),10,'filled','CData',[0.9216    0.4000    0.3725])
    end


    function drawO(i,j)
        x=50+150*(i-1);
        y=50+150*(j-1);
        R=55;
        t=0:0.01:2*pi;
        XR=x+cos(t).*R;
        YR=y+sin(t).*R;
        Xr=x+cos(t).*R.*0.4;
        Yr=y+sin(t).*R.*0.4;
        fill(ax,[XR,Xr],[YR,Yr],[0.90 0.73 0.45],'EdgeColor',[0.67 0.42 0.15],'LineWidth',1)
        
        [t,rL,RL]=createRandomLine_O(R);
        T=[t,t(end:-1:1)];
        Rr=[RL,rL];
        X=x+cos(T).*Rr;
        Y=y+sin(T).*Rr;
        fill(ax,X,Y,[0.33 0.18 0.12],'EdgeColor','none')
        
        candiColor=[    0.9765    0.8353    0.4902
            0.9647    0.9647    0.8314
            0.1490    0.4235    0.6980
            0.2431    0.4510    0.3490
            0.9490    0.9647    0.9686
            0.7647    0.1059    0.1569
            0.2784    0.1843    0.5216
            0.8824    0.6471    0.7490];
        for i=1:35
            t1=rand(1)*2*pi;
            t2=rand(1)*2*pi;
            r1=(R*0.6-5).*rand(1)+R*0.4;
            x1=x+cos(t1)*r1;
            y1=y+sin(t1)*r1;
            x2=x1+cos(t2)*7;
            y2=y1+sin(t2)*7;
            plot(ax,[x1,x2],[y1,y2],'Color',candiColor(randi(size(candiColor,1)),:),'LineWidth',2);      
        end
    end

    function [t,r,R]=createRandomLine_O(RR)
        t=0:0.2:2*pi;
        R=(RR-3)+5.*rand(size(t));
        R=interp1(t,R,0:0.01:2*pi,'spline');

        r=(RR*0.4+7)-6.*rand(size(t));
        r=interp1(t,r,0:0.01:2*pi,'spline');
        
        t=0:0.01:2*pi;
    end



    function drawCheckerboard
        [Xq,Yq]=createRandomLine_CB(440,10,5,26);
        fill(ax,Xq-20,Yq+112,[0.96 0.80 0.52],'EdgeColor',[0.45 0.11 0.05].*0.8,'LineWidth',1)
        [Xq,Yq]=createRandomLine_CB(440,10,5,26);
        fill(ax,Xq-20,Yq+262,[0.96 0.80 0.52],'EdgeColor',[0.45 0.11 0.05].*0.8,'LineWidth',1)
        [Xq,Yq]=createRandomLine_CB(440,10,5,26);
        fill(ax,Yq+112,Xq-20,[0.96 0.80 0.52],'EdgeColor',[0.45 0.11 0.05].*0.8,'LineWidth',1)
        [Xq,Yq]=createRandomLine_CB(440,10,5,26);
        fill(ax,Yq+262,Xq-20,[0.96 0.80 0.52],'EdgeColor',[0.45 0.11 0.05].*0.8,'LineWidth',1)
        
        [Xq,Yq]=createRandomLine_CB(440,10,2,10);
        fill(ax,Xq-20,Yq+120,[0.97 0.91 0.65],'EdgeColor',[0.5,0.3 0.3],'LineWidth',1)
        [Xq,Yq]=createRandomLine_CB(440,10,2,10);
        fill(ax,Xq-20,Yq+270,[0.97 0.91 0.65],'EdgeColor',[0.5,0.3 0.3],'LineWidth',1)
        [Xq,Yq]=createRandomLine_CB(440,10,5,10);
        fill(ax,Yq+120,Xq-20,[0.97 0.91 0.65],'EdgeColor',[0.5,0.3 0.3],'LineWidth',1)
        [Xq,Yq]=createRandomLine_CB(440,10,5,10);
        fill(ax,Yq+270,Xq-20,[0.97 0.91 0.65],'EdgeColor',[0.5,0.3 0.3],'LineWidth',1)  
    end
    function [Xq,Yq]=createRandomLine_CB(Lim,N,randMax,h)
        X1=linspace(0,Lim,N);
        X2=X1(end:-1:1);
        Y1=-randMax.*rand(size(X1));
        Y2=randMax.*rand(size(X2));
        
        Xq1=0:0.1:Lim;
        Yq1=interp1(X1,Y1,Xq1,'spline');
        
        Xq2=Lim:-0.1:0;
        Yq2=interp1(X2,Y2,Xq2,'spline')+h;
        
        Xq=[Xq1,Xq2]; 
        Yq=[Yq1,Yq2]; 
        
        
    end
end

到此这篇关于利用Matlab制作三子棋游戏的示例代码的文章就介绍到这了,更多相关Matlab三子棋游戏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用Matlab制作三子棋游戏的示例代码

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

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

猜你喜欢
  • 利用Matlab制作三子棋游戏的示例代码
    效果: 注: 由于用uifigure和uiaxes写的会比较慢,改成常规的axes和figure会快很多。 完整代码: function OX_chess fig=ui...
    99+
    2024-04-02
  • C语言实现三子棋游戏的示例代码
    目录1. 前言2. 准备工作3. 使用二维数组存储下棋的数据4. 初始化棋盘为全空格5. 打印棋盘6. 玩家下棋7. 电脑下棋8. 判断输赢9. 效果展示10. 完整代码game.h...
    99+
    2022-11-13
    C语言三子棋游戏 C语言三子棋 C语言 游戏
  • C语言实现三子棋小游戏的示例代码
    目录一、三子棋1.演示效果2.完整代码二、代码解析1.初始化棋盘2.打印棋盘3.玩家下棋4.电脑下棋5.判断输赢6.游戏主体函数7.菜单函数8.头文件及主函数一、三子棋 三子棋小游戏...
    99+
    2022-11-13
    C语言三子棋游戏 C语言三子棋 C语言 游戏
  • 基于C语言实现三子棋游戏的示例代码
    1.创建文件  test.c (游戏的测试逻辑)game.c(游戏的实现逻辑)gane.h(游戏实现函数的声明) game.c 和game.h属于游戏实现 test.c属于...
    99+
    2024-04-02
  • Java+Swing实现五子棋游戏的示例代码
    目录一、系统介绍1.开发环境2.技术选型3.系统功能二、系统展示三、部分代码AI.javaChess.javaGobang.javaGobangListener.java一、系统介绍...
    99+
    2024-04-02
  • Java实现AI五子棋游戏的示例代码
    目录前言实现过程抽象实现AI接口评估函数前言 本文只是介绍五子棋AI的实现,最终的成品只是一个 AI 接口,并不包括 GUI,且不依赖 GUI。 五子棋 AI 的实现并不难,只需要解...
    99+
    2024-04-02
  • Java实现简单的五子棋游戏示例代码
    目录项目结构核心代码ArrComparator.java类ChessMap.java类ChessPanel.java类效果图展示项目结构 这个是在网上找的资源,出处记不得了,记录一下...
    99+
    2024-04-02
  • C语言版三子棋游戏实现代码
    本文实例为大家分享了C语言版三子棋游戏的具体代码,供大家参考,具体内容如下 实现一个三子棋小游戏 下面是实现步骤: 总共有需要三个文件 第一,test.c 我们要在这个文件里面实现游...
    99+
    2024-04-02
  • Java实现单机版五子棋游戏的示例代码
    目录前言主要需求主要设计功能截图代码实现总结前言 五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏,是世界智力运动会竞技项目之一,通常双方分别使用黑白两色的棋子,...
    99+
    2024-04-02
  • 利用C语言实现三子棋(井字棋)小游戏
    本文实例为大家分享了C语言实现三子棋(井字棋)小游戏的具体代码,供大家参考,具体内容如下 推荐阅读顺序(不建议跳过) 先看实现之后的界面 —— 然后看分析程序要实现的步骤 —— 之后...
    99+
    2024-04-02
  • Java实现三子棋小游戏的代码怎么写
    本篇内容主要讲解“Java实现三子棋小游戏的代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java实现三子棋小游戏的代码怎么写”吧!游戏操作如图示:原理:主要借助3x3的二维数组实现:...
    99+
    2023-06-30
  • C语言代码实现简易三子棋游戏
    本文实例为大家分享了C语言代码实现简易三子棋游戏的具体代码,供大家参考,具体内容如下 1. 三子棋游戏规则 是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井...
    99+
    2024-04-02
  • C语言代码实现简单三子棋游戏
    三子棋是我们小时候经常玩的游戏,今天就分享一下如何用c语言简单实现三子棋吧 编译软件VS2019 c语言实现三子棋运用到了二维数组的知识,在编写三子棋程序时用到了多文件编译(不是必须...
    99+
    2024-04-02
  • C语言三子棋游戏实现代码解析
    本文实例为大家分享了C语言三子棋游戏的具体代码,供大家参考,具体内容如下 编程环境:Visual Studio 2019 (一)创建文件  为了逻辑清晰的编程,我们先创建一...
    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
  • 利用C语言实现简单三子棋游戏
    本文实例为大家分享了C语言实现简单三子棋游戏的具体代码,供大家参考,具体内容如下 创建文件 只要弄清了二维数组的相关知识,我们就可以去实现简单的三子棋。对于初学者可谓是成就感满满~~...
    99+
    2024-04-02
  • 利用C语言编写一个三子棋游戏
    这篇文章给大家介绍利用C语言编写一个三子棋游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体内容如下说明:该游戏的实现需要用到三个文件1、test.c:放置主函数(main())和菜单函数(menu())和游戏函数...
    99+
    2023-06-06
  • C语言实现三子棋游戏含完整代码
    目录一、text.c源文件部分1、main函数部分2、game函数部分二、game.h头文件部分三、game.c源文件部分运行 三子棋是大家小时候和同桌在纸上都玩过的简单小游戏,这个...
    99+
    2024-04-02
  • C++实现三子棋游戏详细介绍(附代码)
    目录游戏描述:游戏思维导图:(从头开始)头文件也写在前面:先把游戏与主函数写在前面:游戏函数:主函数:1.构建游戏菜单2.构建棋盘3.玩家和电脑下棋3.1玩家先下3.2电脑下棋4.判...
    99+
    2024-04-02
  • C语言实现三子棋小游戏的代码怎么写
    本篇内容介绍了“C语言实现三子棋小游戏的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基本思路:1.创建一个游戏选择面板.2.创建...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作