`
gtgt1988
  • 浏览: 114285 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

java 斗地主发牌

 
阅读更多

/**
* 
* @Title: Controller.java
* @Package cn.com.starit.servlet
* @Description: TODO(用一句话描述该文件做什么)
* @author gt
* @date 2012-7-8 下午08:57:39
* @copyright STARIT   
*/
package cn.com.starit.servlet;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 发牌主程序
 *
 */
public class Controller {

	/**
	 * @Title: main
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @param args    
	 * @return void 
	 * @throws
	 */
	public static void main(String[] args) {
		   Player p1=new Player(1,"huang");
           Player p2=new Player(2,"zhou");
           Player p3=new Player(3,"li");
          
           Player []players={p1,p2,p3};
          
           List<Card> cards=new ArrayList<Card>();
           //除了大王和小王分别加入到Card中 牌的数目为13*4
           for(int rank=Card.THREE;rank<=Card.DEUCE;rank++){
                 
                  cards.add(new Card(rank,Card.DIAMOND));
                  cards.add(new Card(rank,Card.HEART));
                  cards.add(new Card(rank,Card.CLUB));
                  cards.add(new Card(rank,Card.SPADE));
                 
           }
            //加入大小王  牌的数目为2
           cards.add(new Card(Card.BLACK,Card.JOKER));
           cards.add(new Card(Card.COLOR,Card.JOKER));
          
           //统计牌数一共是54=13*4+2
           System.out.println(cards.size());
         
           //就是随机打乱原来的顺序,和洗牌一样
           Collections.shuffle(cards);
           
        
          //给玩家发牌
           for(int i=0;i<players.length;i++){
                  for (int j = 0; j < 17; j++) {
                	     //cards.remove(0)  一张一张的获取牌数   每次获取17张牌
                         players[i].getList().add(cards.remove(0));
                  }
           }
          
          //玩家获得牌
           for (int i = 0; i < players.length; i++) {
                  System.out.println(players[i].getName()+players[i].getList());
           }
          
           System.out.println("剩余牌数");
           for(int i=0;i<cards.size();i++){
                  System.out.print(cards.get(i)+"  ");
           }

	}

}


/**
* 
* @Title: Player.java
* @Package cn.com.starit.servlet
* @Description: TODO(用一句话描述该文件做什么)
* @author gt
* @date 2012-7-8 下午08:56:41
* @copyright STARIT   
*/
package cn.com.starit.servlet;

import java.util.ArrayList;
import java.util.List;

/**
 *  玩家
 *
 */
public class Player {
	 private   int  id;
     private   String  name;
     //用来存储玩家的Card
     private  List<Card> list=new ArrayList<Card>();
     public  void  add(Card  card){
          list.add(card);
     }
     public Player() {
     }
     public Player(int id, String name) {
         this.id = id;
         this.name = name;
     }
     public int getId() {
         return id;
     }
     public void setId(int id) {
         this.id = id;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public List<Card> getList() {
         return list;
     }
     public void setList(List<Card> list) {
         this.list = list;
     }
    
    

}
/**
* 
* @Title: Card.java
* @Package cn.com.starit.servlet
* @Description: TODO(用一句话描述该文件做什么)
* @author gt
* @date 2012-7-8 下午08:56:11
* @copyright STARIT   
*/
package cn.com.starit.servlet;

/**
 * 扑克牌类
 *
 */
public class Card {
	 // 点数
    public static final int THREE = 0;
    public static final int FOUR = 1;
    public static final int FIVE = 2;
    public static final int SIX = 3;
    public static final int SEVEN = 4;
    public static final int EIGHT = 5;
    public static final int NINE = 6;
    public static final int TEEN = 7;
    public static final int JACK = 8;
    public static final int QUEEN = 9;
    public static final int KING = 10;
    public static final int ACE = 11;
    public static final int DEUCE = 12;
 
    public static final int BLACK = 13;
    public static final int COLOR = 14;
 
    // 花色
    // 方块
    public static final int DIAMOND = 0;
    // 红桃
    public static final int HEART = 1;
    // 梅花
    public static final int CLUB = 2;
    // 黑桃
    public static final int SPADE = 3;
    // 王
    public static final int JOKER = 4;
    // 花色
    public  static String[] suit_names = { "方块", "红桃", "梅花", "黑桃", "王" };
    public  static String[] rank_names = { "3", "4", "5", "6", "7", "8", "9",
            "10", "J", "Q", "K", "A", "2", "小", "大" };
    // 点数
    private int rank;
    // 花色
    private int suit;
 
    public Card() {
 
    }
 
    public Card(int rank, int suit) {
        setRank(rank);
        setSuit(suit);
    }
 
    public int getRank() {
        return rank;
    }
 
    public void setRank(int rank) {
        if (Card.THREE > rank || rank > Card.COLOR)
            throw new RuntimeException("超了");
        this.rank = rank;
    }
 
    public int getSuit() {
        return suit;
    }
 
    public void setSuit(int suit) {
        if (Card.DIAMOND > suit || suit > Card.JOKER)
            throw new RuntimeException("超了");
        this.suit = suit;
    }
 
    @Override
    public String toString() {
    	if(rank_names[rank]=="小"){
    		return rank_names[rank]+suit_names[suit];
    	}
    	else if(rank_names[rank]=="大"){
    		return rank_names[rank]+suit_names[suit];
    		
    	}
       return  suit_names[suit] + rank_names[rank];
    }

}
 
 
 
分享到:
评论

相关推荐

    java斗地主发牌小程序

    【标题】:“java斗地主发牌小程序” 这个程序的核心是使用Java编程语言实现一个简单的斗地主发牌逻辑。斗地主是一款流行的扑克牌游戏,通常需要一副54张的扑克牌,包括52张普通牌(四种花色,每种13张,从3到A)和...

    java斗地主发牌程序

    java 斗地主发牌程序代码,包括测试打印程序,属于游戏类开发部分代码。

    Java斗地主发牌

    java运用hashmap进行发牌,若有乱码请修改文件的编码格式为UTF-8

    Java斗地主发牌课程设计.doc

    【Java斗地主发牌课程设计】是一个典型的Java编程项目,旨在帮助学生理解面向对象编程、数据结构和算法的应用。这个课程设计的核心是实现斗地主游戏中的发牌功能,通过编写Player类和Landlords类来模拟游戏流程。 ...

    斗地主发牌程序java程序

    斗地主发牌程序,希望大家 多多下载吧!好东西要分享

    ddz.zip_java 斗地主发牌与排序

    在本文中,我们将深入探讨如何使用Java编程语言实现斗地主游戏中的发牌与手牌排序功能。斗地主是一款广受欢迎的扑克牌游戏,它需要严谨的逻辑和策略来确保游戏的公平性和流畅性。对于初学者而言,理解并实现这些功能...

    斗地主洗牌发牌java小程序

    一个实现斗地主洗牌发牌的java小程序,主要用了hashmap,Arraylist等java常用类,适合初学者学习

    斗地主 java源码 界面 发牌程序

    本篇将深入探讨这个Java源码中的核心概念,包括游戏界面设计与发牌算法。 首先,我们要了解Java在图形用户界面(GUI)开发中常用的工具包——Java Swing或JavaFX。在这个项目中,很可能使用了Swing来创建斗地主的...

    java模拟斗地主洗牌发牌-可拓展

    1)、将一副牌封装进入Map集合中,键为0-53的Integer数据,值为字符串 2)、洗牌:将Map集合的...3)、发牌:发给三个人,就是三个List加一个底牌的List 4)、看牌:将三人的List和底牌List的值进行排序(从大到小)

    斗地主出牌算法(java版)

    同时,还需要`Game`类来管理整个游戏流程,包括发牌、判断输赢、处理出牌逻辑等。 3. **牌型定义**:斗地主中的牌型包括单张、对子、三张、三带一、三带二、顺子、飞机、炸弹等。每种牌型需要在代码中进行精确的...

    斗地主洗牌发牌算法

    在本文中,我们将深入探讨如何实现斗地主游戏中的洗牌和发牌算法。这是一个非常适合初学者学习编程逻辑和算法的实例,特别是对于Java编程语言的学习者。斗地主是一种广受欢迎的扑克游戏,通常由三名玩家进行,每名...

    j2me斗地主发牌源码

    《深入解析J2ME斗地主发牌源码》 在移动通信技术发展的早期阶段,J2ME(Java 2 Micro Edition)是广泛应用于手机游戏开发的平台之一。本篇文章将详细探讨“j2me斗地主发牌源码”的核心机制,帮助读者理解其背后的...

    斗地主发牌

    在Java编程语言中,"斗地主发牌"是一个典型的示例,用于教授和实践基本的面向对象编程概念,如构造函数、对象数组以及for-each循环。斗地主是一种广受欢迎的扑克游戏,通常涉及三名玩家和一副54张牌的牌组。在这个...

    java模拟斗地主的洗牌发牌.rar

    在Java编程语言中,模拟斗地主游戏的洗牌、发牌和看牌过程是一项有趣的实践,这有助于加深对集合框架的理解。在这个项目中,主要使用了三种集合类:HashMap、ArrayList和TreeSet,它们各自有其独特的特性和用途。 ...

    斗地主自动发牌

    使用JAVAScript实现模仿斗地主发牌程序,使用公司同事的昵称。在Java中使用随机授权函数。Java. Util. Random (),通过循环比对来删除重复的随机值。冗余性太大,我很抱歉。 Use JAVAScript to achieve imitation ...

    一个扑克牌游戏斗地主发牌程序

    根据给定的信息,本文将详细解析一个用于模拟斗地主发牌过程的Java程序,并从中提炼出相关的IT知识点。 ### 标题:“一个扑克牌游戏斗地主发牌程序” 该标题表明这是一个针对斗地主游戏发牌逻辑的程序设计案例。...

    史上最全斗地主发牌代码实现.rar

    以下是对"史上最全斗地主发牌代码实现"的详细解读: 首先,我们来探讨斗地主发牌的逻辑。在Java编程中,可以创建一个`Card`类来表示扑克牌,它通常包含两个属性:牌面(Face)和花色(Suit)。牌面可能的值有数字2...

    java模拟实现斗地主发牌小程序

    在Java编程中,模拟实现斗地主发牌小程序是一个有趣且实用的练习,它涉及到数据结构、随机化以及逻辑控制等多个方面。以下是对这个程序的详细解析: 首先,我们需要了解斗地主游戏的基本规则。一副完整的扑克牌共有...

Global site tag (gtag.js) - Google Analytics