
请高手帮我解决一个java的程序!!
如题,相关代码如下(只是思路):---------------------------------------------------------------------...
如题,相关代码如下(只是思路):
-----------------------------------------------------------------------------------------
Card AS = new Card("Ace","Space",14,True);
Card AD = new Card("Ace","Diamond",14,True);
Card AC = new Card("Ace","Clubs",14,True);
Card AH = new Card("Ace","Hearts",14,True);
Card KS = new Card("King","Space",13,True);
Card KD = new Card("King","Diamond",13,True);
Card KC = new Card("King","Clubs",13,True);
Card KH = new Card("King","Hearts",13,True);
以此类推
-----------------------------------------------------------------------------------------
public class Card
{
String suit, face;
int value;
boolean TF;
public Card(String x, String y, int z, boolean a)
{
suit = x;
face = y;
value = z;
TF = a;
}
public String toString()
{
return face + " of " + suit;
}
-----------------------------------------------------------------------------------------
也就是说,在main里面,用户输入想要发到的牌的张数,然后程序(不论是另一个object还是在main里,复杂一点长一点都行,但尽量用简单初级的语法,因为本人还没有学习很多,刚入门)会发给用户想要的牌,输出的牌被判断为true后就不会再输出。(本程序不包含大小王,共52张牌)
万分感谢!
可以私信我代码!!谢谢! 展开
-----------------------------------------------------------------------------------------
Card AS = new Card("Ace","Space",14,True);
Card AD = new Card("Ace","Diamond",14,True);
Card AC = new Card("Ace","Clubs",14,True);
Card AH = new Card("Ace","Hearts",14,True);
Card KS = new Card("King","Space",13,True);
Card KD = new Card("King","Diamond",13,True);
Card KC = new Card("King","Clubs",13,True);
Card KH = new Card("King","Hearts",13,True);
以此类推
-----------------------------------------------------------------------------------------
public class Card
{
String suit, face;
int value;
boolean TF;
public Card(String x, String y, int z, boolean a)
{
suit = x;
face = y;
value = z;
TF = a;
}
public String toString()
{
return face + " of " + suit;
}
-----------------------------------------------------------------------------------------
也就是说,在main里面,用户输入想要发到的牌的张数,然后程序(不论是另一个object还是在main里,复杂一点长一点都行,但尽量用简单初级的语法,因为本人还没有学习很多,刚入门)会发给用户想要的牌,输出的牌被判断为true后就不会再输出。(本程序不包含大小王,共52张牌)
万分感谢!
可以私信我代码!!谢谢! 展开
3个回答
展开全部
自己写的你看看吧,有些类似。看不懂可以找我,qq495386023
public class MainFunction {
private ArrayList<MyCard> cards = new ArrayList<MyCard>();
private int[] cardNumArr = new int[52];
private int[] mycards = new int[5];
private int[] p1cards = new int[5];
public static void main(String[] args) {
MainFunction mainfunc = new MainFunction();
mainfunc.makeCards();
mainfunc.cardNumArr = mainfunc.shuffleCards(mainfunc.cardNumArr);
mainfunc.catchCards();
mainfunc.showAllCardsOfHand();
//mainfunc.printNums();
}
/**
* 洗牌
* @param cardNums
* @return
*/
private int[] shuffleCards(int[] cardNums){
int size = cardNums.length;
int[] returnNums = new int[size];
//System.out.println(cardNums[0]+"=========================");
Random rand = new Random();
for(int i=size-1;i>0;i--){
int nextInt = rand.nextInt(i);
returnNums[size-1-i] = cardNums[nextInt];
cardNums[nextInt] = cardNums[i];
cardNums[i] = returnNums[size-1-i];
//System.out.println("suijishu:"+nextInt+"||zhi:"+returnNums[size-1-i]);
}
returnNums[size-1] = cardNums[0];
return returnNums;
}
/**
* 抓牌
*/
private void catchCards(){
for(int i=0;i<5;i++){
mycards[i] = cardNumArr[2*i];
p1cards[i] = cardNumArr[2*i+1];
}
}
private void showAllCardsOfHand(){
System.out.print("你手中的牌是:||");
for(int i=0;i<5;i++){
MyCard myCard = cards.get(mycards[i]-1);
System.out.print(myCard.toString()+"||");
}
System.out.println();
System.out.print("对家手中的牌是:||");
for(int i=0;i<5;i++){
MyCard myCard = cards.get(p1cards[i]-1);
System.out.print(myCard.toString()+"||");
}
}
/**
* 显示牌的顺序
*/
private void printNums(){
for(int i=0;i<cardNumArr.length;i++){
System.out.print(cardNumArr[i]+",");
}
}
/**
* 制作卡片
*/
private void makeCards(){
for(int i=1;i<=13;i++){
for(int j=1;j<=4;j++){
//System.out.println((i-1)*4+j);
MyCard card = new MyCard((i-1)*4+j, j, i);
cardNumArr[(i-1)*4+j-1] = (i-1)*4+j;
cards.add(card);
}
// MyCard card1 = new MyCard((i-1)*4+1, 1, i);
// MyCard card2 = new MyCard((i-1)*4+2, 2, i);
// MyCard card3 = new MyCard((i-1)*4+3, 3, i);
// MyCard card4 = new MyCard((i-1)*4+4, 4, i);
// cards.add(card1);
// cards.add(card2);
// cards.add(card3);
// cards.add(card4);
}
}
}
public class MainFunction {
private ArrayList<MyCard> cards = new ArrayList<MyCard>();
private int[] cardNumArr = new int[52];
private int[] mycards = new int[5];
private int[] p1cards = new int[5];
public static void main(String[] args) {
MainFunction mainfunc = new MainFunction();
mainfunc.makeCards();
mainfunc.cardNumArr = mainfunc.shuffleCards(mainfunc.cardNumArr);
mainfunc.catchCards();
mainfunc.showAllCardsOfHand();
//mainfunc.printNums();
}
/**
* 洗牌
* @param cardNums
* @return
*/
private int[] shuffleCards(int[] cardNums){
int size = cardNums.length;
int[] returnNums = new int[size];
//System.out.println(cardNums[0]+"=========================");
Random rand = new Random();
for(int i=size-1;i>0;i--){
int nextInt = rand.nextInt(i);
returnNums[size-1-i] = cardNums[nextInt];
cardNums[nextInt] = cardNums[i];
cardNums[i] = returnNums[size-1-i];
//System.out.println("suijishu:"+nextInt+"||zhi:"+returnNums[size-1-i]);
}
returnNums[size-1] = cardNums[0];
return returnNums;
}
/**
* 抓牌
*/
private void catchCards(){
for(int i=0;i<5;i++){
mycards[i] = cardNumArr[2*i];
p1cards[i] = cardNumArr[2*i+1];
}
}
private void showAllCardsOfHand(){
System.out.print("你手中的牌是:||");
for(int i=0;i<5;i++){
MyCard myCard = cards.get(mycards[i]-1);
System.out.print(myCard.toString()+"||");
}
System.out.println();
System.out.print("对家手中的牌是:||");
for(int i=0;i<5;i++){
MyCard myCard = cards.get(p1cards[i]-1);
System.out.print(myCard.toString()+"||");
}
}
/**
* 显示牌的顺序
*/
private void printNums(){
for(int i=0;i<cardNumArr.length;i++){
System.out.print(cardNumArr[i]+",");
}
}
/**
* 制作卡片
*/
private void makeCards(){
for(int i=1;i<=13;i++){
for(int j=1;j<=4;j++){
//System.out.println((i-1)*4+j);
MyCard card = new MyCard((i-1)*4+j, j, i);
cardNumArr[(i-1)*4+j-1] = (i-1)*4+j;
cards.add(card);
}
// MyCard card1 = new MyCard((i-1)*4+1, 1, i);
// MyCard card2 = new MyCard((i-1)*4+2, 2, i);
// MyCard card3 = new MyCard((i-1)*4+3, 3, i);
// MyCard card4 = new MyCard((i-1)*4+4, 4, i);
// cards.add(card1);
// cards.add(card2);
// cards.add(card3);
// cards.add(card4);
}
}
}
展开全部
最近正在做这个,我给你的有创意性的方法.而且很简单就能实现.
我这里有完整代码,是建立在完整的牌队列上的.你的意图是想随意设定一手牌.
先只提供个思路给你,大概如下:
用最简单的办法指定,如果超出指定范围也不会出错.
1. 如要获得一手牌,书写方式为字串: "WwAKQJ098765432" 最终拿到的牌就是大小王2和整顺
每个牌用一个字符表示,直观也方便设定.再如: AAAKKK2222222 里面2设定的很多,但没有这么多怎么办,只是方便最后设定的人使用时绝对安全.
2.使用上面的字串就可以获得想要的一手牌,关键是使用的方法,方法不得当,会引起后期很麻烦的处理.尝试过多种方法,最后觉得标记法比较方便.大概就是这样.
比如你的牌有52张,应该是一个队列,在这个队列中,标记出想要的牌,每次抓牌时从大队列中去找这些被标记的牌,直到里面完全没有被标记的牌的时候,回归正常抓牌.
这个过程对新手来说有些复杂,但愿你能明白.
我这里有完整代码,是建立在完整的牌队列上的.你的意图是想随意设定一手牌.
先只提供个思路给你,大概如下:
用最简单的办法指定,如果超出指定范围也不会出错.
1. 如要获得一手牌,书写方式为字串: "WwAKQJ098765432" 最终拿到的牌就是大小王2和整顺
每个牌用一个字符表示,直观也方便设定.再如: AAAKKK2222222 里面2设定的很多,但没有这么多怎么办,只是方便最后设定的人使用时绝对安全.
2.使用上面的字串就可以获得想要的一手牌,关键是使用的方法,方法不得当,会引起后期很麻烦的处理.尝试过多种方法,最后觉得标记法比较方便.大概就是这样.
比如你的牌有52张,应该是一个队列,在这个队列中,标记出想要的牌,每次抓牌时从大队列中去找这些被标记的牌,直到里面完全没有被标记的牌的时候,回归正常抓牌.
这个过程对新手来说有些复杂,但愿你能明白.
追问
能否贴出来?谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要创建这么多对象岂不很吃力
追问
因为目前我就学了这么多,老师给的例子就是臭长臭长的。。
但是我就需要这样的,如果出现了稍微复杂一点的语句(网上找的对我来说都太复杂了。。),就有抄袭嫌疑了。。
麻烦你了,可以私信我答案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询