一、核心思路:

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. HTML5学习笔记<五>: HTML表单和PHP环境搭建

    HTML表单 1. 表单用于不同类型的用户输入 2. 常用的表单标签: 标签 说明 <form> 表单 <input> 输入域 <textarea> 文本域 < ...

  2. 使用git克隆指定分支的代码

    今天想学习一下开源中国Android客户端的app源码,源码的Git地址:http://git.oschina.net/oschina/android-app,如下图所示: 由于Master主分支上没 ...

  3. 2015.07.12hadoop伪分布安装

    hadoop伪分布安装   Hadoop2的伪分布安装步骤[使用root用户用户登陆]other进去超级用户拥有最高的权限 1.1(桥接模式)设置静态IP ,,修改配置文件,虚拟机IP192.168. ...

  4. Sublime 常用快捷键

    Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...

  5. CSS.03 -- 浏览器行高、字体;盒子模型--边框、内边距、外边距

    如果此时你也在自学中,请使用 FireWorks CS6 进行切图测距等,百度一下吧~ Fireworks的基本使用 新建文件   ctrl+n 打开文件  ctrl+o 调出和隐藏标尺 ctrl+r ...

  6. 在ExpressJS中设置二级域名跨域共享Cookie

    问题:我使用expressjs和mongostore来管理session.下面是expressjs中的设置. app.configure(function(){ app.use(express.ses ...

  7. python安装图文教程---超详细。。。不过是转的,但有改动

    如果你已安装好python,想安装第三方模块,方法详见如下地址: python安装第三方模块教程----marsggbo 1.想要安装Python,首先当然是去Python的官方网站(www.pyth ...

  8. 如何将多条update语句合并为一条

    需求: 如何将多条update语句合并为一条update语句:如,update table1 set col='2012' where id='2014001'      update table1  ...

  9. iOS 中的单例设计模式

    单例设计模式:在它的核心结构中只包含一个被称为单例类的特殊类.例如文件管理中的NSUserDefault,应用程序中的UIApplication,整个应用程序就这一个单例类,负责应用程序的一些操作,单 ...

  10. Vue.use自定义自己的全局组件

    通常我们在vue里面使用别人开发的组件,第一步就是install,第二步在main.js里面引入,第三步Vue.use这个组件.今天我简单的也来use一个自己的组件. 这里我用的webpack-sim ...