用java实现扑克牌的洗牌和排序功能:创建抽象类Card 其中有一个方法showhand()用来输出牌的信息。
新建Card的子类 squard、heart 、diamond、club 其中要有数组包含牌号;然后建立一个game类main在其中,建立char数组包含13张牌,然后生成52张牌 ;然后编写一个washcard() 然后根据花色和数字排序
具体实现如下:
/*
* 文件名:CardColor.java
* 版权:Copyright All Rights Reserved.
* 描述: CardColor.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game.card;
/**
* 牌的花色,枚举型
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public enum CardColor
{
SPADE("spade", 4), HEART("heart", 3), DIAMOND("diamond", 2), CLUB("club", 1);
private String colorname;
private int priority;
private CardColor(String name, int a)
{
this.colorname = name;
this.priority = a;
}
public String getColorname()
{
return colorname;
}
public int getPriority()
{
return priority;
}
}
/*
* 文件名:Card.java
* 版权:Copyright All Rights Reserved.
* 描述: Card.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game.card;
/**
* 牌,抽象类
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public abstract class Card
{
public CardColor cardColor;
public int cardNumber;
private static String[] no;
public CardColor getCardColor()
{
return cardColor;
}
public int getCardNumber()
{
return cardNumber;
}
public void setCardNumber(int cardNumber)
{
this.cardNumber = cardNumber;
}
public void showhand()
{
System.out.println("The Card is:" + cardColor.getColorname()
+ no[cardNumber - 1]);
}
static
{
no = new String[13];
no[0] = "A";
no[1] = "2";
no[2] = "3";
no[3] = "4";
no[4] = "5";
no[5] = "6";
no[6] = "7";
no[7] = "8";
no[8] = "9";
no[9] = "10";
no[10] = "J";
no[11] = "Q";
no[12] = "K";
}
}
/*
* 文件名:Squard.java
* 版权:Copyright All Rights Reserved.
* 描述: Squard.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game.card;
/**
* 黑桃
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public class Spade extends Card
{
public Spade(int number)
{
if (number > 0 && number < 14)
{
this.cardColor = CardColor.SPADE;
this.cardNumber = number;
}
}
}
/*
* 文件名:Heart.java
* 版权:Copyright All Rights Reserved.
* 描述: Heart.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game.card;
/**
* 红心
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public class Heart extends Card
{
public Heart(int number)
{
if (number > 0 && number < 14)
{
this.cardNumber = number;
this.cardColor = CardColor.HEART;
}
}
}
/*
* 文件名:Diamond.java
* 版权:Copyright All Rights Reserved.
* 描述: Diamond.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game.card;
/**
* 方片
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public class Diamond extends Card
{
public Diamond(int number)
{
if (number > 0 && number < 14)
{
this.cardNumber = number;
this.cardColor = CardColor.DIAMOND;
}
}
}
/*
* 文件名:Club.java
* 版权:Copyright All Rights Reserved.
* 描述: Club.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game.card;
/**
* 梅花牌
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public class Club extends Card
{
public Club(int number)
{
if (number > 0 && number < 14)
{
this.cardNumber = number;
this.cardColor = CardColor.CLUB;
}
}
}
/*
* 文件名:CardComparator.java
* 版权:Copyright All Rights Reserved.
* 描述: CardComparator.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game.compare;
import java.util.Comparator;
import com.wx.game.card.Card;
/**
* 比较器
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public class CardComparator implements Comparator<Object>
{
@Override
public int compare(Object o1, Object o2)
{
Card cardA = (Card) o1;
Card cardB = (Card) o2;
if (cardA.getCardColor().getPriority() > cardB.getCardColor()
.getPriority())
{
return 1;
}
else if (cardA.getCardColor().getPriority() == cardB.getCardColor()
.getPriority())
{
if (cardA.getCardNumber() < cardB.getCardNumber())
{
return -1;
}
return 1;
}
else
{
return -1;
}
}
}
/*
* 文件名:InitCards.java
* 版权:Copyright All Rights Reserved.
* 描述: InitCards.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game;
import com.wx.game.card.Card;
import com.wx.game.card.Club;
import com.wx.game.card.Diamond;
import com.wx.game.card.Heart;
import com.wx.game.card.Spade;
/**
* 初始化牌的线程
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public class InitCards implements Runnable
{
private int number;
private Game game;
public InitCards(int no, Game g)
{
this.number = no;
this.game = g;
}
@Override
public void run()
{
Card squard = new Spade(number);
Card heart = new Heart(number);
Card diamond = new Diamond(number);
Card club = new Club(number);
synchronized (game)
{
game.getCards()[game.getIndex()] = squard;
game.getCards()[game.getIndex()] = heart;
game.getCards()[game.getIndex()] = diamond;
game.getCards()[game.getIndex()] = club;
}
}
}
/*
* 文件名:Game.java
* 版权:Copyright All Rights Reserved.
* 描述: Game.java
* 修改人:WX
* 修改时间:2013-3-26
* 修改内容:新增
*/
package com.wx.game;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import com.wx.game.card.Card;
import com.wx.game.compare.CardComparator;
/**
* 游戏入口
*
* <pre>
* </pre>
*
* @author WX
* @version 1.0
* @since 1.0
*/
public class Game
{
private Card[] cards = new Card[52];
private int fullIndx = 0;
public Card[] getCards()
{
return cards;
}
public int getIndex()
{
return fullIndx++ % 52;
}
/**
* 程序入口
*
* @param args
*/
public static void main(String[] args)
{
Game game = new Game();
System.out.println("======wash card=======");
game.washcard(game);
game.sortcard(game);
System.out.println("======after sort=======");
game.washcard(game);
}
/**
* 洗牌
*
* @param game
*/
public void washcard(Game game)
{
InitCards[] init = new InitCards[13];
for (int i = 0; i < 13; i++)
{
init[i] = new InitCards(i + 1, game);
}
for (int i = 0; i < 13; i++)
{
new Thread(init[i]).start();
}
try
{
Thread.sleep(3000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
for (Card c : game.getCards())
{
c.showhand();
}
}
/**
* 排序
*
* @param game
*/
public void sortcard(Game game)
{
List<Card> templist = Arrays.asList(game.getCards());
Collections.sort(templist, new CardComparator());
templist.toArray(game.getCards());
}
}
分享到:
相关推荐
这个项目“jQuery+CSS3扑克洗牌和扑克牌翻转动画特效”提供了一种创新的方法来增强网站的交互性和趣味性。以下是对这个项目的详细解读: 首先,我们要了解jQuery。jQuery是一个流行的JavaScript库,它简化了HTML...
在Java编程中,创建、洗牌、分组和排序扑克牌是一种常见的算法实践,它可以用于理解和掌握数据结构、集合操作以及随机数生成等基础知识。在这个场景中,我们通常会使用集合框架来实现扑克牌的逻辑,例如ArrayList...
程序还包含了将数字转换成扑克牌花色和数字的逻辑。这个转换过程包括两个方面: - **花色转换**:通过`(poker[i]-1)/13`计算出牌的花色。由于一副标准扑克牌分为四种花色,每种花色有13张牌,因此可以通过除以13的...
在 Java 程序中,`Card` 类主要用于表示扑克牌,并且包含了洗牌 (`washCard`) 和发牌 (`sendCard`) 的功能。 #### 1.1 **属性** - `int[] poker`: 存储所有扑克牌的数组,长度为 104,包含了两副扑克牌。 - `Random...
* 功能:扑克牌的核心类 包括创建角色、创建牌、显示牌、洗牌、比较牌、排序牌等 * 属性:List cards 整幅扑克牌的集合 、 People[] peoples 角色 * 方法: public PockerCard() //无参构造函数: 创建牌的集合、...
这涉及到数据结构和算法的知识,例如使用数组或列表存储牌组,使用排序算法进行洗牌模拟。 4. **编程语言与框架**:开发扑克牌游戏可以使用多种编程语言,如Python、Java、C#、JavaScript等。不同的游戏引擎如Unity...
- **洗牌算法**:在`random()`函数中,使用了随机数生成器`rand()`结合循环和条件判断实现了洗牌逻辑,确保每次运行程序时牌的顺序都是随机的。 - **排序算法**:在`zhengli()`函数中,通过嵌套循环实现了简单的冒泡...
在本项目中,"扑克牌源代码"是一个基于Windows窗体程序实现的程序,主要功能是进行扑克牌的发牌和排序。这个程序对于学习面向对象编程、算法设计以及图形用户界面(GUI)的开发非常有帮助。接下来,我们将详细讨论...
在这个效果中,我们将模拟真实的扑克牌洗牌过程,通过编程的方式,使一组扑克牌图像在页面上随机排序,呈现出类似洗牌的效果。这种效果主要依赖于jQuery库的强大功能,尤其是其提供的动画和事件处理机制。 jQuery库...
除了基本的洗牌和发牌,可能还需要实现其他功能,如查看剩余牌的数量、比较两张牌的大小、排序牌组等。这些都需要利用到数据结构和算法的知识。 六、测试与优化 完成以上功能后,需要进行大量的测试以确保程序的...
在本项目中,"基于jQuery实现的类似扑克牌洗牌样式切换的图片特效.zip" 提供了一个使用jQuery库创建的动态图片切换效果,类似于扑克牌的洗牌动作。这种效果可以为网页增添互动性和视觉吸引力,常用于各种游戏或者...
例如,题目可能会要求选手编写程序来模拟一副扑克牌的洗牌过程,或者是要求在某些规则下对扑克牌进行排序和抽取。这些任务需要选手有扎实的编程基础和对算法的深刻理解。 题解通常会从以下几个方面着手: 1. 问题...
在本文中,我们将深入探讨如何使用Java编程语言来实现一个扑克牌程序,这涉及到扑克牌的构造、基本算法以及比较、搜索和排序等关键操作。首先,我们需要理解扑克牌的基本结构和规则,以便在代码中有效地模拟它们。 ...
在具体实现时,我们可能会创建一个`Card`类表示扑克牌,包含花色和点数属性,并重写`Comparable`接口或提供`Comparator`来确定扑克牌的排序规则。然后,创建一个`TreeSet<Card>`实例来存储和管理所有的牌。当需要...
在C++中设计扑克牌洗牌发牌游戏需要对面向对象编程有一定的了解,以及对类和对象的操作熟练掌握。以下将详细介绍与C++扑克牌洗牌发牌游戏设计相关的知识点。 **1. 类的定义和使用** 首先,我们需要定义扑克牌...
2. **教学工具**:在教授概率论、统计学或算法等相关课程时,可视化扑克牌的示例有助于解释概念,如洗牌算法、组合和概率计算等。 3. **数据可视化**:在数据分析项目中,可以利用这些图片作为元素来展示数据,比如...
这样可以方便地进行排序、比较和操作,例如洗牌、发牌等。在Python中,可能会有如下定义: ```python class Card: def __init__(self, value, suit): self.value = value self.suit = suit # 创建示例扑克牌 ...
例如,在讲解排序算法如快速排序或归并排序时,用扑克牌图标模拟处理过程,既直观又生动。同样,它们也能用于模拟概率模型,如蒙特卡洛模拟,帮助理解随机事件的概率分布。 在设计移动应用或网站时,扑克牌图标可以...
在IT领域,编程挑战是常见的学习和练习方式,其中“C语言扑克牌问题”是一个典型的问题,它涉及到了C语言的基础知识以及算法设计。在这个问题中,通常要求编写程序来模拟扑克牌游戏,如洗牌、发牌等操作。下面我们将...