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接受输入值,再通过一个方法判断自己出的牌是否合法,是:删牌,排序 否:提示,并且重新输入

二、效果截图:

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

时间: 2024-11-25 10:38:24

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

Java控制台版推箱子

1 import java.util.Scanner; 2 public class b { 3 4 public static void main(String[] args) { 5 Scanner input = new Scanner(System.in); 6 int[][] map = new int[15][15]; //地图 7 int rx = 1; 8 int ry = 2;//人的坐标 9 int xx = 13; 10 int xy = 12;//箱子的坐标 11 int

C++实现简单的扫雷游戏(控制台版)

C++新手的代码,请各位多包涵. 用C++写的一个简单的控制台版扫雷游戏.玩家通过输入方块的坐标来翻开方块. 只是一个雏形,能够让玩家执行翻开方块的操作并且判断输赢,还未添加标记方块.游戏菜单.记录游戏时间.重新开一局等等的功能. 玩家输入坐标的方式来翻开方块只适用于小型的“雷区”,若“雷区”大了,用坐标会变得很不方便. 代码片段扫雷V1.1 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

gogotester java jar 版 可用于linux mac windows 版本

http://files.cnblogs.com/tmpt/target.zip 转载请注明出处.添加了代码混淆.不过有兴趣可以关注我将要发出的git版本.地址稍后发出. 这个软件,在googleCode上有公开的project下载,但是只有exe版本的 : https://code.google.com/p/gogo-tester 无奈mac,还要下虚拟机,crossover,各种,都不好用.还是写个通用版本的吧. google code上有源码分享,虽然不懂.NET,但是还是能了解个大概的.

Java 控制台执行带自定义包定义的类,出现“Exception in thread "main" java.lang.NoClassDefFoundError: ConnectSQLServer (wrong name: sine/ConnectSQLServer)”

1.先说明一下代码实现:自定义package sine, 源代码保存路径为:E:\JSP\HibernateDemo\HibernateDemoProject\src\sine\ConnectSQLServer.java 1 package sine; 2 import java.sql.*; 3 4 public class ConnectSQLServer { 5 6 public static void main(String args[]){ 7 String url="jdbc:sql

如何用Java控制台玩2048

昨天晚上咸的,想自己做个2048试试,折腾到半夜算是有点成果,分享下,由于搞的太晚也没来得及加注释,最后也没有优化重构,就简单看下思路吧 先看个拼图的小游戏消化下 import java.io.IOException; /** * 控制台玩拼图游戏 * @author c * 码农扣扣群:2177712 */ public class Puzzle { static final int X = 3; static final int Y = 3; static int tar[][] = new

java控制台说明

java 控制台 java 控制台 c: 清除控制台窗口 f: 终结在结束队列上的对象 g: 垃圾收集 h: 显示此帮助消息 l: 转储类加载器列表 m: 打印内存使用情况 o: 触发日志记录 q: 隐藏控制台 r: 重新加载策略配置 s: 转储系统和部署属性 t: 转储线程列表 v: 转储线程堆栈 x: 清除类加载器高速缓存 0-5: 设置跟踪级别为<n>

java控制台输入Scanner、InputStreamReader、Console说明

java控制台输入 (2009-12-08 11:13:28) 转载▼ 标签: 杂谈 分类: corejava 0 引言从控制台中读取数据是一个比较常用的功能,在 JDK 5.0 以前的版本中的实现是比较复杂的,需要手工处理系统的输入流.有意思的是,从 JDK 5.0 版本开始,能从控制台中输入数据的方法每增加一个版本号,就有一种新增的方法,这也增加了选择的种类,可以依据不同的要求来进行选择.下面来看一下,各个版本中如何从控制台中读取数据以及各自的优缺点. 1 JDK 1.4 及以下版本读取的方

java之实例斗地主(集合)

public class CollectionTest { /**  * 玩斗地主的三个步骤:  * A 买牌  * B 洗牌  * C 发牌  * D 看底牌  */ public static void main(String[] args) { String[] color={"黑桃","红桃","梅花","方块"};  String[] numbers={"A","2",&quo

Java Swing版单机版三国杀

原文:Java Swing版单机版三国杀 源代码下载地址:http://www.zuidaima.com/share/1584513538509824.htm 版权声明:本文为博主原创文章,未经博主允许不得转载.