JAVA控制台版斗地主
Published on 2017-04-03 23:51 in 暂未分类 with 夏日浅笑、

JAVA控制台版斗地主

    一、核心思路:

    1.首先分析流程

    A>B>C>A>B>C>A>B>C

    等于  while(true){

                     A>B>C

                  }

     然后完善细节

          发牌();

       while(true){

                     A出牌();

          if(A出完了){

          break; 
          }

          B出牌();

          if(B出完了){

          break;

          }

          C出牌();

          if(C出完了){

          break;

          }

                  }

     

    2.外层架构好了,进入发牌这层   //我是喜欢按层来架构,层与层直接尽量低耦合,进入了一层就只要思考当前这一层,不用考虑上一层或下一层。这里强烈安利Xmind,基础功能免费

    首先,声明一个字符串数组,里面包含54张牌,通过随机0·53的数,得到ABC的牌,当然要判断是否是重复的随机数。

    还有,得留3张底牌!

     

    3.退出发牌这层,进入到打牌这层

    》1. 出牌分为三种:

    第一种我打的牌没人要,从小开始打, //我称为人机优先出牌方法

    第二种前面的要不起,传入前面的前面的出牌和自己的牌,通过比较puke字符串的下标大小,来返回出什么牌,要不起就返回“不要”  //我称为人机后续出牌方法

    第三种接着前面打,方法和前面一样,不过传入的是前面的出牌而不是前面的前面  //我称为人机后续出牌方法

    》2. 出完牌需要把牌从手里的牌去掉:很明显是一个传参方法,传入出的牌,和出牌人手里所有的牌,用遍历找到,并且变为空(删除)

    》3. 去掉之后进行牌排序以便下次出牌:传入手里的牌,遍历出在puke字符串里的下标,下标越大牌就越大,然后用Array.sort()方法排序,再通过下标找到对应的牌

     

    4.接下来就是把自己的出牌写一下

    用scanner接受输入值,再通过一个方法判断自己出的牌是否合法,是:删牌,排序 否:提示,并且重新输入

     

    //原文地址:http://www.cnblogs.com/summertime-wu                    转载需授权!

     

    二、效果截图:

     

    posted @   夏日浅笑、  阅读(1192)  评论(2编辑  收藏  举报
    编辑推荐:
    · 开发者必知的日志记录最佳实践
    · SQL Server 2025 AI相关能力初探
    · Linux系列:如何用 C#调用 C方法造成内存泄露
    · AI与.NET技术实操系列(二):开始使用ML.NET
    · 记一次.NET内存居高不下排查解决与启示
    阅读排行:
    · 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
    · Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
    · 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
    · 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
    · 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
    点击右上角即可分享
    微信分享提示