一、核心思路:

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

二、效果截图:

源代码在我的github上:https://github.com/Summer-Smile/LearnJava

JAVA控制台版斗地主的更多相关文章

  1. Java控制台版推箱子

    import java.util.Scanner; public class b { public static void main(String[] args) { Scanner input = ...

  2. 基于TCP协议的聊天室控制台版

    我之前写过一篇博客,主要是基于TCP协议实现的聊天室swing版,在此再写一个基于TCP协议实现的聊天室控制台版,便于学习和比较. package 聊天室console版.utils; import ...

  3. c++实现通讯录管理系统(控制台版)

    c++实现通讯录管理系统(控制台版) 此项目适合c++初学者,针对c++基础知识,涉及到变量.结构体定义使用.数组定义使用.指针定义使用等. 运行之后的结果如下: 代码: #include <i ...

  4. java控制台输入

    一.java控制台输入 java控制台输入有如下几个方法 1.JDK 1.4 及以下版本读取的方法 JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即使用System.in获得系统的 ...

  5. 【教程】模拟登陆百度之Java代码版

    [背景] 之前已经写了教程,分析模拟登陆百度的逻辑: [教程]手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程 然后又去用不同的语言: Python的: [教程]模 ...

  6. JAVA控制台输入输出方法总结

    java的控制台输入输出有很多方法,此文分别对其进行介绍. 1.控制台的输入 关于控制台的输入主要介绍三种方法,第一种方法使用BufferedReader获得控制台输入的数据,此方法是传统的输入方法, ...

  7. Spring Security4实例(Java config版)——ajax登录,自定义验证

    本文源码请看这里 相关文章: Spring Security4实例(Java config 版) -- Remember-Me 首先添加起步依赖(如果不是springboot项目,自行切换为Sprin ...

  8. Spring Security4实例(Java config 版) —— Remember-Me

    本文源码请看这里 相关文章: Spring Security4实例(Java config版)--ajax登录,自定义验证 Spring Security提供了两种remember-me的实现,一种是 ...

  9. c/c++ 贪吃蛇控制台版

    贪吃蛇控制台版(操作系统win7 64位:编译环境gcc, vs2017通过,其它环境未测试 不保证一定通过) 运行效果: #include <iomanip> #include < ...

随机推荐

  1. php多进程编程详解

    php多进程编程 前言 php单进程存在的问题: 多核处理器未充分利用,而单处理器通常需要等待其他操作完成之后才能再继续工作. 任何现代操作系统都可在幕后执行多任务,这意味着在很短时间内,计算机可以调 ...

  2. Linux shell-tail

    使用tail --help查看命令用于备忘 tail [  -f ] [  -c Number |  -n Number |  -m Number |  -b Number |  -k Number ...

  3. 开始学习yii2第一天

    今天在朋友圈看到一条转发,内容是根据招聘网站的要求,列举了需要一个php工程师具体需要哪些技能 框架要求是yii2 出现的最多 已经出来工作了快半个月了,感觉工资还是少的可怜,而且我也好想去张江, 所 ...

  4. jQuery插件之validation插件

    前面的话 最常使用javascript的场合就是表单的验证,而jQuery作为一个优秀的javascript库,也提供了一个优秀的表单验证插件——Validation.Validation是历史最悠久 ...

  5. NGUI 解决UILable 在空行起始位置加‘\n’

    NGUI 解决UILable 默认在顶满第一行时,在起始位置如键入空格无效,其原因就是会加入换行符,使字符串,整体换行了 解决办法加入bool变量控制 1在 UILable代码中添加 [HideInI ...

  6. SSM项目整合基本步骤

    SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作  ...

  7. 在Activiti中如何使用自定义的组织架构

    1.概述 我们知道,activiti是一个不错的流程引擎,它有自身的人员组织架构,但仅限于用户.用户组的管理,流程产生的任务(UserTask),就涉及到任务的所属人(Owner),任务的执行人(as ...

  8. 【Ubuntu】您没有查看“sf_VirtualDisk”的内容所需的权限。

    原文链接:http://www.crifan.com/can_not_access_share_folder_in_ubuntu_virtualbox/ [问题] 之前已经搞定可以自动共享文件夹了: ...

  9. MongoDB基础教程系列--第七篇 MongoDB 聚合管道

    在讲解聚合管道(Aggregation Pipeline)之前,我们先介绍一下 MongoDB 的聚合功能,聚合操作主要用于对数据的批量处理,往往将记录按条件分组以后,然后再进行一系列操作,例如,求最 ...

  10. ARM中断处理过程

    以s3c2440  ARM9核为例: 一:s3c2440 ARM处理器特性: 1.S3C2440支持个中断源,含子中断源: 2.ARM9采用五级流水线方式: 3.支持外部中断和内部中断: 二.s3c2 ...