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                    转载需授权!

    二、效果截图:

  • 相关阅读:
    HDU 1261 字串数(排列组合)
    Codeforces 488C Fight the Monster
    HDU 1237 简单计算器
    POJ 2240 Arbitrage
    POJ 3660 Cow Contest
    POJ 1052 MPI Maelstrom
    POJ 3259 Wormholes
    POJ 3268 Silver Cow Party
    Codesforces 485D Maximum Value
    POJ 2253 Frogger(最短路)
  • 原文地址:https://www.cnblogs.com/summertime-wu/p/6664074.html
Copyright © 2011-2022 走看看