Мне не разрешено использовать ArrayLists, и я пытаюсь сделать игру в блэкджек на Java, но я не могу добавить новую карту в руку игрока, когда игрок нажимает на игровую кнопку «Новая карта», т.е.,Игрок хочет ударить, но я не могу понять, как добавить карту в руку.Я застрял, когда дело доходит до метода, чтобы ударить.Что я могу сделать, чтобы это работало?
Я хочу, чтобы карта была случайной, и чтобы игрок мог наносить удары несколько раз.
public static void cardDraw () {
for(int i = 0; i < cards.length; i++)
cards[i] =1 +(int)(Math.random() * 9);
cardsUsed++;
}
Полный код (примечание: некоторые части на шведском языке):
// DENNA ÄR EJ KLAR. W.I.P. att byta arraylist<integer> metod till vanlig array
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;//random number generator
import java.util.ArrayList;//Array lists
class CardGame extends JFrame implements ActionListener
{
JLabel välkommenMessage = new JLabel ("Välkommen till BlackJack à la KG ");
static JTextArea spelRegler = new JTextArea("Klicka på 'Draw Card' för att få dina två första kort.\nOm kortsumman är under 16, fortsätt dra kort.\nKommer du över 21 förlorar du. ");
JButton cardButton = new JButton ("Draw Card");
JButton newCard = new JButton ("New Card");
static JLabel kortText = new JLabel("");
static JLabel blackJackSumma = new JLabel ("");
static JLabel displayNewCard = new JLabel("");
static JTextField kommando = new JTextField("", 20);
JLabel stödlinjenText = new JLabel ("18+. Stödlinjen: 020-819 100"); //inte för att jag tror att detta spel kommer leda till något större beroende
static int[] cards = new int [52];
static int cardsUsed =0;
public CardGame (){
super("Card Game");
setSize (270,250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible (true);
Container contentArea = getContentPane();
contentArea.setBackground(Color.white);
FlowLayout flowManager = new FlowLayout();
contentArea.setLayout(flowManager);
spelRegler.setEditable(false);
cardButton.addActionListener(this);
newCard.addActionListener(this);
contentArea.add(välkommenMessage);
contentArea.add(spelRegler);
contentArea.add(cardButton);
contentArea.add(kortText);
contentArea.add(kommando);
contentArea.add(displayNewCard);
contentArea.add(blackJackSumma);
contentArea.add(newCard);
contentArea.add(stödlinjenText); //längst ned för det utseendets skull
setContentPane(contentArea);
}
public static void cardDraw () {
for(int i = 0; i < cards.length; i++)
cards[i] =1 +(int)(Math.random() * 9);
cardsUsed++;
}
public static int cardsSumma(){
int sum = cards[3] = cards[0] + cards[1] + cards[2] ;
return sum;
}
public static void spelaKort(){
int val = userCommando(); //användaren får välja att skriva 1 eller 2 beroende på vad användaren vill göra
int total = cardsSumma();
try{
if (val == 1){ //om användaren skriver 1 dvs hit i fältet. Metoden har ropats på ovan
cardDraw(); //drar ett nytt kort genom att kalla på metod
displayNewCard.setText("Du har dragit kortet: " );
blackJackSumma.setText("Summa: "+ total);
if (total == 21){ //i blackjack: vinner om man får 21
blackJackSumma.setText("Du har vunnit!");
return;
}
else if (total> 21){ //över 21 = bust
blackJackSumma.setText("BUSTED!");
return;
}
else{ //ingen condition behövs här
blackJackSumma.setText("Summa: " + total);
System.out.print(total);
}
}
if (val == 2) { //om användaren väljer att avsluta, genom att input 2
blackJackSumma.setText("Du har avslutat med summan: " + total);
return;
}
}catch (Exception e){
spelRegler.setText("That was not a valid input");
kortText.setText("That was not a valid input");
blackJackSumma.setText("That was not a valid input");
displayNewCard.setText("That was not a valid input");
}
}
public static int userCommando(){ //kommando för att användaren ska välja strategi. sluta eller hit
int val = 0;
try{
while(val != 1 && val != 2){
val = Integer.parseInt(kommando.getText());
}
} catch(Exception e){//fångar misstag om användaren e.g. skriver bokstäver
spelRegler.setText("That was not a valid input");
kortText.setText("That was not a valid input");
blackJackSumma.setText("That was not a valid input");
displayNewCard.setText("That was not a valid input");
}
return val;
}
public void actionPerformed (ActionEvent event){
if(event.getSource()==cardButton){
cards[0] = (int) (Math.random() * 10) + 1; /* PLAYER GETS TWO CARDS - dessa är de två första korten som spelaren får
*normalt sätt i blackjack = förberedelse
*/
cards[1] = (int) (Math.random() * 10) + 1;
int sum = cards[0] + cards[1];
kortText.setText("Första två kort: " + cards[0] + ", " + cards[1]);
blackJackSumma.setText("Summa: " + sum);
if (cards[3]== 21){
kortText.setText("DU vinner");
return;
}
else if (cards[3]< 21){
spelRegler.setText("Skriv 1, tryck 'New Card' för ett till kort. Skriv 2 för att sluta spela");
}
else {
spelRegler.setText("Bust");
}
}
if (event.getSource()== newCard){
spelaKort();
cardsUsed++;
System.out.print(cardsUsed);
}
}
}
public class Worksheet37a {
public static void main(String[] args) {
CardGame Win = new CardGame();
}
}