我正在做一个项目,创造一个扑克游戏。尽管指令很清楚,但我在面向对象编程方面遇到了很多麻烦。
因此,对于这个项目,我们必须创建四个对象,卡、牌组、手和扑克手。我已经完成了卡片对象的创建,现在正在处理卡片组对象。这就是我现在遇到麻烦的地方。我试着用谷歌搜索我的问题。然而,由于我是一个编程新手,我真的不了解他们的方法。例如,我不知道如何使用ArrayList。我只知道非常基本的数组方法。
以下代码是我迄今为止为Deck对象所做的:
import java.util.*;
public class Deck {
public static final int CARDS_IN_DECK = 52;
public static final int SHUFFLE_SWAPS = 700;
int shufflex = 0;
private Card[] cards;
private int card_holder;
private int seed;
public Deck(int seed) {
this.cards = new Card[CARDS_IN_DECK];
seed = 0;
for (int i = 2; i <= 14; i++) {
for (int j = 0; j <= 3; j++) {
if (j == 0) {
cards[seed] = new Card(i, 'c'); // c = Clubs
} else if (j == 1) {
cards[seed] = new Card(i, 'd'); // d == Diamond
} else if (j == 2) {
cards[seed] = new Card(i, 's'); // s== Spade
} else if (j == 3) {
cards[seed] = new Card(i, 'h'); // h = Heart
}
seed++;
}
}
}
public void shuffle(){
Random rand = new Random ();
int randomNumber = rand.nextInt(51);
int randomNumber2 = rand.nextInt(51);
while( shufflex < SHUFFLE_SWAPS ){
HOW DO I DO THE SWAP HERE? DON'T KNOW THE SYNTAX
I KNOW I NEED TO CREATE ANOTHER ARRAY TO TEMPORARY STORE THE FIRST CARD
THEN I REPLACE THE FIRST CARD WITH THE SECOND CARD
AND THEN REPLACE THE SECOND CARD WITH THE TEMPORARY CARD
shufflex++;
}
}
public Card nextCard() {
}
public String toString() {
}
}
以下是本部分的说明:
Deck类表示一副由52张扑克牌组成的牌。我们将使用一个Card对象数组来管理牌堆中的实际牌。
下面是类和实例字段,然后是Deck类的方法。按以下顺序完成每一项。
类常数
声明并初始化以下公共静态类常量:CARDS\u IN\u DECK-一个表示牌组中的牌数的整数值。将其设置为52。SHUFFLE_SWAPS-一个整数值,表示牌组洗牌期间牌应切换位置的次数。数字越高,牌组的随机性和彻底洗牌程度就越高。将其设置为至少500。实例字段
声明以下实例字段:一个Card对象数组,用于管理套牌中的CARDS_IN_DECK张牌。数组中的每个元素都是一个Card对象。一个整数,保存从Cards数组中要处理的下一张牌的索引。顺便说明一下,这个变量将从0开始,每次发牌时增加1(参见下面的方法)。一个整数变量,用于维护为测试提供的随机种子。方法
以下是您必须完成的方法列表。
公共甲板(int种子)-这是甲板类的构造函数。您必须首先初始化您的Card对象数组,使用您的类常量“CARDS_IN_DECK”来容纳52张卡。数组初始化后,您必须一次遍历数组中的一个元素,并实际创建一个Card对象。必须创建所有卡(四个套装中的每一个都为值2-14),并且不得有任何重复。种子参数应存储在种子的实例字段中。提示:在此构造函数中使用Card. CLUBS、Card.LOWEST_VALUE等。
public void shuffle()
-此方法处理重置牌组以玩新牌。该方法必须通过使用Random类生成随机数来处理对数据集的洗牌。必须在0-51之间随机生成两个整数。然后,你必须在这两个位置交换牌。例如,如果随机数为20和11,梅花中的2个在数组的元素20中,红心中的3个在数组的元素11中,则在交换这两张牌后,元素20将保留红心中的3个,元素11将保留梅花中的2个。您必须重复这个过程,生成两个数字,并在相应位置交换卡,交换次数与类常量“SHUFFLE\u SWAPS”指示的次数相同。如果随机种子不是-1,则创建的随机对象应使用提供的随机种子。这将确保每次使用相同的随机种子运行程序时,数据组将以相同的方式洗牌。例如
Random rand=new Random(种子)
如果随机种子为-1,则创建一个没有种子的随机对象,这将在每次玩游戏时创建不同的游戏。例如
Random rand=new Random()
最后,用于从牌组中选择下一张要处理的牌的索引必须重置为0。
public Card nextCard()
-此方法基于实例字段返回牌组中的下一张牌,该实例字段知道要处理的下一张牌在数组中的位置。在归还卡片之前,请确保更新此数字,以便下次调用该方法时,将归还卡片组中的下一张卡片(将其增加1)。
public String toString()
-此方法返回Deck的String表示形式,这将在单元测试中派上用场。提示:为Card对象数组中的每个Card调用Card类的toString()方法。
我想我的方法是正确的。你能看一下吗?card对象具有参数(int value,char suit),因此对于deck,我返回(int,char)。在这种方法之后,我真的不确定如何从那里开始。谁能在这方面给我指点一下吗?
本文向大家介绍JAVA collection集合之扑克牌游戏实例,包括了JAVA collection集合之扑克牌游戏实例的使用技巧和注意事项,需要的朋友参考一下 Collection 层次结构中的根接口。Collection表示一组对象,这些对象也称为collection的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序
本文向大家介绍C++扑克牌的洗牌发牌游戏设计,包括了C++扑克牌的洗牌发牌游戏设计的使用技巧和注意事项,需要的朋友参考一下 笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏。具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌。然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等。 笔者在学习他人设计的基础上,完成了自己的程序设计。这里将源程序分享给大家。
问题内容: 我正在尝试创建一个对OOP友好的Java BlackJack游戏,以增进我的知识。 我碰壁了,我只是不知道该问题。想知道是否有人可以指出我的问题。 另外,在搜索了与此相关的主题之后,我发现人们一次又一次地说使用枚举会更有益,因为建议初学者这样做?还是我暂时应该坚持使用String数组。 谢谢。 我的代码: 编辑:目前我从println发出的输出是:[Card @ addbf1,Card
My Deck类在方法中创建一个52张牌副牌并返回一张5张牌手牌: 我的玩家类让我们提供关于玩家的信息。 问题是每个玩家都使用自己的套牌,因此有时两个或更多不同的玩家可能拥有同一张牌。我的问题是我如何设置我的程序让每个玩家使用同一套牌?多谢了。 姓名:无名氏,现金:500“黑桃之王,钻石之二,红心杰克,黑桃王牌,钻石之七”
本文向大家介绍java用扑克牌计算24点,包括了java用扑克牌计算24点的使用技巧和注意事项,需要的朋友参考一下 一副扑克牌的每张牌表示一个数(J、Q、K 分别表示 11、12、13,两个司令都表示 6)。任取4 张牌,即得到 4 个 1~13 的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4 个数顺序可以任意组合,4 个运算符任意取 3 个
题目链接 NowCoder 题目描述 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 解题思路 // java public boolean isContinuous(int[] nums) { if (nums.length < 5) return false; Arrays.sort(nums); // 统计癞子数量 i