Проблема с суммой при получении новой карты - Блэкджек - PullRequest
0 голосов
/ 21 октября 2018

У меня проблема с моим кодом для простой игры, похожей на BlackJack в Swing.Пользователь может взять две карты, и программа может правильно рассчитать две карты, но когда пользователь хочет нажать кнопку (я использую JButton), чтобы получить новую карту, она не идет по плану.

Примечание: это очень простая версия.Нет карт выше 10.

Например: первые карты = 2 + 5 = 7 Пользователь нажимает «Новая карта», чтобы получить новую.Новая карта 4 -> то есть 7 + 4 = 11 ==== даже не близка к тому, чтобы ее ударили, однако программа иногда сообщает пользователю, что она сломана.

Где в моем коде ошибка?Где я могу улучшить и исправить это?

	/*
	 *Write a program that draws a card of value 1 to 10. 
	 *Determine the sum of the cards so far. 
	 *Keep drawing cards while the sum is less than 16. Output the total sum. 
	 *If the sum is greater than 21 output “Bust”. 
	 */
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 ("Welcome to BlackJack   ");
	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");
    JLabel kortText = new JLabel("");
	static JLabel blackJackSumma = new JLabel ("");
	static JLabel displayNewCard = new JLabel("");
	JLabel stödlinjenText = new JLabel ("18+. Stödlinjen: 020-819 100");
	
	static Random randomCard = new Random(); 
	
	
	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(stödlinjenText);
		contentArea.add(cardButton);
		contentArea.add(kortText);
		
		contentArea.add(displayNewCard);
		contentArea.add(blackJackSumma);
        contentArea.add(newCard);
		setContentPane(contentArea);
		
	}	
	
	public static int cardDraw () {
		 int card = randomCard.nextInt(10) + 1;
		 return card;
	}

     public static ArrayList<Integer> drawTwoCards(){
	       ArrayList<Integer> cards = new ArrayList<Integer>();
	       for(int i = 0; i < 2; i++)
	    {
	        cards.add(cardDraw());
	    }
	       return cards;
	  }
     

   public static int cardsSumma(ArrayList<Integer> cards){
	   int total = 0;
	   for(int card :cards){ 
	      total = total + card;
	    }
	   return total;
	  }
    
    public static void spelaKort(ArrayList<Integer> cards){
    	
    	int newCard = cardDraw(); //call for method
	    cards.add(newCard); 
	    displayNewCard.setText("Your card: " + newCard);
	    blackJackSumma.setText("Total: "+ cardsSumma(cards));
	
	if (cardsSumma(cards)== 21){
		blackJackSumma.setText("You win");
		return; 
		}
	else if (cardsSumma(cards)> 21){
		blackJackSumma.setText("BUSTED!");
		return;
	}
	else{                             
		blackJackSumma.setText("Total: " + cardsSumma(cards));
		System.out.print(cardsSumma(cards));
		spelaKort(cards);
		}
    }
 
    
	public void actionPerformed (ActionEvent event){ 

	    if (event.getSource()== cardButton){
	     ArrayList<Integer> cards = drawTwoCards();
		 kortText.setText("Card: " + cards.get(0) +" and " + cards.get(1)+ "   Total: " + cardsSumma(cards));
		 if (cardsSumma(cards)< 21){
               spelRegler.setText("Press 'New Card' to continue");
              }
		 
    }
		if (event.getSource()==newCard){
			ArrayList<Integer> cards = drawTwoCards();
			spelaKort(cards); 
		}
		}
	    
	}


public class Worksheet37a {
	public static void main(String[] args) {
		
		CardGame Win = new CardGame();
		
	}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...