Блэкджек Ява без массива - PullRequest
0 голосов
/ 24 октября 2018

Мне не разрешено использовать 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();
		
	}

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