我正在进行一场BlackJack游戏,但我对如何制作一套合适的套装感到有点困惑......我的第一个想法是有类似的东西 int [] cards = {1,2,etc etc etc}; 但后来我无法弄清楚如何用这些卡实现套装
现在我知道我的代码还没有完成,我仍然需要有手和其他许多东西,但我想先学习如何制作卡片和套装
基本上我的问题是:我怎么能用西装制作卡片组并将它们用于我的黑杰克游戏另外如果你向我解释它是如何工作的,为什么它会起作用,因为我正在努力学习java编程。
package blackjack2;
import java.util.Scanner;
import java.util.Random;
public class blackjackattemp2 {
final static String NL = System.getProperty("line.separator");
static Scanner reader = new Scanner(System.in);
static int playersValue = 0, dealersValue = 0, bet = 0, money = 0;
static boolean win;
static char hit;
public static void main(String[] args) {
System.out.println("How much money would you like to start with?: ");
money = reader.nextInt();
if(money < 0){
System.out.print("You are out of money!" + NL + "You lose!");
}
}
public static void hit(char hit){
while(hit == 'y'){
}
}
static void testWin(boolean testWin){
if(playersValue > 21 || dealersValue >= playersValue && dealersValue <= 21){
win = false;
}
if(dealersValue > 21 || playersValue <= 21 && playersValue >= dealersValue){
win = true;
}
}
static void moneyCalc(){
if(win == true){
money = money + bet;
}
if(win == false){
money = money - bet;
}
}
static void deck(){
}
}
我在考虑如何将卡添加到用户手中,我想出了这个,它在我的第一个版本的Black Jack游戏中有效,但我认为它现在不会......
System.out.println("You get a " + cards[0] + " and a " + cards[1]);
cardValue = cards[0] + cards[1];
System.out.println("Your total is " + cardValue);
如果有人告诉我如何更改旧代码以便为我正在创建的新游戏工作,我将非常感激。
答案 0 :(得分:1)
利用语言的面向对象特性。卡片中的卡片是一个自包含的实体,因此您可以通过创建一个类来保存您想要的属性(卡片的价值和套装)来复制它。
以下是Card类的示例。
public class Card {
private int value;
private String suit;
public Card(int value, String suit) {
this.value = value;
this.suit = suit;
}
public int getValue() { return this.value; }
public String getSuit() { return this.suit; }
}
你可以用这个来制作你的二十一点程序中的牌组(注意:你也可以制作一个甲板课程,这样你就可以制作具有多层甲板和其他优点的二十一点游戏)
public class Blackjack {
private Card[] deck;
public Blackjack() {
deck = new Card[52]; // Makes an array which holds 52 Card objects
deck[0] = new Card(2, "Hearts");
deck[1] = new Card(3, "Hearts");
deck[2] = new Card(4, "Hearts");
deck[3] = new Card(5, "Hearts");
// And so on
}
}
现在您可以看到这会导致您单独制作每张卡片的长列表。你可以通过让你的卡片循环来改善这一点,但我会把这个任务留给你。这应该可以帮助你开始。
现在,只要你有一副纸牌,就可以随意洗牌。有很多简单的方法可以做到这一点。在牌组洗牌之后,您可以逐个处理它们。
答案 1 :(得分:1)
您可以使用2D数组,它们与数组非常相似,但它是数组内部的数组。
对于您的情况,如果您想将卡存储在阵列中,请执行此操作
final int decks[][] = { {1,2,3 etc...} {deck2} {deck3} {deck4} };
访问内容
for (int deck = 0; deck < decks.length; deck ++) {
for (int card = 0; card < decks[deck].length; card++) {
int yourCard = decks[deck][card];
}
}
这将遍历该数组中的每一段数据
但是,如果您不熟悉创建对象,这似乎是有效的。如果是这样,上述答案将适合您,因为它每次都会通过说明卡的套装和卡号来创建卡片对象