当前位置: 代码迷 >> Java相关 >> 出道题
  详细解决方案

出道题

热度:335   发布时间:2007-03-03 16:09:34.0
出道题
要求很简单,

1.随机生成一逼补克牌,每张牌要包含花色和点数,

2.然后二个人从52张牌中一次各抽走1张,对比二张牌,谁的大谁获胜,要提示出获胜一方的牌和玩家的名字,

3.每抽取一次,要从52张牌中减去二张牌,至少没有牌了则不能再抽取牌并提示语句"无牌可抽"

-----------------------------------------------------------------------------------------------

就这些,有兴趣的做下玩玩..难点可能就在于"A","J","Q","K"比较大小的那里....

[此贴子已经被作者于2007-3-3 19:57:44编辑过]


----------------解决方案--------------------------------------------------------
没有兴趣,不过不知道为什么你说 A、J、Q、K比较大小会难

----------------解决方案--------------------------------------------------------
呵呵,路过 ~
----------------解决方案--------------------------------------------------------
以下是引用神vLinux飘飘在2007-3-3 18:18:24的发言:
没有兴趣,不过不知道为什么你说 A、J、Q、K比较大小会难

迷惑人用的


----------------解决方案--------------------------------------------------------
每抽一次为什么不是减去两张牌呢 ??
----------------解决方案--------------------------------------------------------
呵呵,看看
----------------解决方案--------------------------------------------------------
以下是引用maoguoqing在2007-3-3 19:14:44的发言:
每抽一次为什么不是减去两张牌呢 ??

就是抽一次减2张..我没写清楚...


----------------解决方案--------------------------------------------------------
是楼主自己想的么?
那就自己去实现吧

----------------解决方案--------------------------------------------------------

我写完了,想看看有没有更好的写法,我觉得自己写的有点多..


----------------解决方案--------------------------------------------------------

import java.util.Arrays;
import java.util.Collections;
import java.util.Random;

public class CardTest
{
public static void main(String[] args)
{
Cards c = new Cards();
c.shuffle();//洗牌
Player p1 = new Player("张三");
Player p2 = new Player("李四");

for(int i=0;i<10;i++)
{
p1.getOneCard(c);
p2.getOneCard(c);
p1.compare(p2);
c.getCount(); //显示还几张牌
}
}
}

//扑克类
class Cards
{
String [] type = new String[]{"黑桃","红桃","梅花","方片"};
String[] card = new String[52];
int[] overCard = new int[52]; //保存抽出的牌索引
int count = 52; //还剩多少张牌没抽
public Cards()
{
init();
}

void init()
{
int n=0;
for(int i=0;i<type.length;i++)
{
for(int j=1;j<=13;j++)
{
card[n] = type[i] + j;
n++;
}
}
}


void display()
{
for(int k=0;k<card.length;k++)
{
System.out.println(card[k]);
}
}

void shuffle()
{
Collections.shuffle(Arrays.asList(card));
}


public String getCard()
{
if(count <=0 )
{
System.out.println("已经没有牌了");
}
int random = 0;
while(true)
{
random = new Random().nextInt(52);
if(!Arrays.asList(overCard).contains(random))
{
overCard[52-count] = random;
break;
}
}
count--;
return card[random];
}


public void getCount()
{
System.out.println("还剩:" + count + "张牌!");
}
}

//玩家类
class Player
{
String name;
String card; Player(String name)
{
this.name = name;
}

public void getOneCard(Cards c)
{
this.card = c.getCard();
}


public void compare(Player p)
{
String pCard = p.getCard().replace("11", "J").replace("12", "Q")
.replace("13", "K").replace("1", "A");
String myCard = this.getCard().replace("11", "J").replace("12", "Q")
.replace("13", "K").replace("1", "A");

System.out.println(p.getName()+"抓的是:" + pCard);
System.out.println(this.getName()+"抓的是:" + myCard);

int play1 = Integer.parseInt(p.getCard().replaceAll("\\W", ""));
int my = Integer.parseInt(this.getCard().replaceAll("\\W", ""));

if(play1>my)System.out.println(p.getName()+"赢了!");
if(my>play1)System.out.println(this.getName()+"赢了!");
if(play1==my)System.out.println("平手!");
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCard() {
return card;
}

public void setCard(String card) {
this.card = card;
}
}


----------------解决方案--------------------------------------------------------
  相关解决方案