zoukankan      html  css  js  c++  java
  • 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                    转载需授权!

    二、效果截图:

  • 相关阅读:
    开源数据访问组件Smark.Data 1.8
    .NET应用加载容器KGlue
    TCP&UDP压力测试工具
    使用Beetle.Express简单构建高吞吐的TCP&UDP应用
    通过分析内存来优化.NET程序
    winsock I/O模型
    C++各大有名库的介绍
    深入研究 STL Deque 容器An InDepth Study of the STL Deque Container (By Nitron)
    C C++编程子资料库(小程序)
    VSS服务器安装配置(比较完整的一篇VSS服务器配置的文章)
  • 原文地址:https://www.cnblogs.com/summertime-wu/p/6664074.html
Copyright © 2011-2022 走看看