Так что я работаю над программой Блэк Джек, и я немного застрял.Я предупреждаю всех, что я действительно новичок в программировании, также я в середине проекта .... так что есть некоторые слабые стороны и неиспользуемые переменные, и некоторая ненужная логика (для тестирования), но вот что мне нужно помочьс.
1) Я использую Math.random, чтобы действовать как колода карт, и поначалу она работала нормально ... но после второго попадания становится ясно, что значение предыдущей картызаменяется текущим значением карты.если вы нарисовали 3,5,9 ... массив будет читать 9,9,9 вместо 3,5,9.
2) Eclipse указал, что переменные user_total (в методе user_hand),и dealer_total (в методе dealer_hand) не могут быть возвращены основному, поскольку они «не могут быть преобразованы в переменную».Я не понимаю, почему, насколько я могу судить, они обычные целые числа.
извините, если он странно отформатирован, stackoverflow жаловался на что-то ... вот мой код:
public class blackJack
{
final static int DEALER_STAND_THRSH = 17;
final static int MAX_CARD_VALUE = 10;
static Random randomNumbers = new Random();
public static void main(String[] args)throws IOException
{
BufferedReader in;
in = new BufferedReader (new InputStreamReader (System.in));
int number_of_hits=0;
boolean still_playing=true;
while (still_playing)
{
//tracks number of hits----------------------------------
number_of_hits ++;
System.out.println("this is draw : " + number_of_hits);
System.out.println(" ");
// gets users
int user_total=user_hand(number_of_hits);
//get dealers card----------------------------------------
int dealer_total=dealer_hand(number_of_hits);
//ask user if they'd like to hit or stand
System.out.println("\nwould you like to hit or stand?\nenter:H to hit\nenter:S to stand");
char hit_or_stand=in.readLine().charAt(0);
char hit_or_stand_case = Character.toLowerCase(hit_or_stand);
if (hit_or_stand_case=='s')
{
//compare cards
who_wins(user_total,dealer_total );
}
// continue game prompt --------------------------------
System.out.println("are you still playing? enter 1 for yes. 2 for no.");
int still_playing_response = Integer.parseInt(in.readLine());
if(still_playing_response==1)
{
still_playing=true;
}
else
{
still_playing=true;
System.out.println("goodbye");
}
}//while end
}//main end
public static int generate_a_card()
{
Scanner input = new Scanner(System.in);
int card=randomNumbers.nextInt(MAX_CARD_VALUE) +1 ;
return card;
}
public static int user_hand(int number_of_hits)
{
int user_card=generate_a_card();
System.out.println( "you drew: " + user_card );
int user_current_hand [] = new int [number_of_hits];
for (int i=0; i<user_current_hand.length; i++)
{
user_current_hand [i]= user_card;
System.out.println( user_card + " has been stored in index " + i + " of user_current_hand array");
int user_total=0;
for(int j=0; j<user_current_hand.length; j++)
{
user_total+= user_current_hand[i];
if (user_total>21)
{
System.out.println("you have exeeded 21, you lose!");
}//if end
}//nested for loop
}//first for loop
return user_total;
}//end user_hand method
public static int dealer_hand(int number_of_hits )
{
System.out.println("-----------------------------------------\n");
System.out.println("now for the dealers draw");
System.out.println(" ");
int dealer_card=generate_a_card();
System.out.println( "the dealer drew: " + dealer_card);
int dealer_current_hand [] = new int [number_of_hits];
for (int i=0; i<dealer_current_hand.length; i++)
{
dealer_current_hand [i]= dealer_card;
System.out.println( dealer_card + " has been stored in index " + i + " dealer_current_hand array");
int dealer_total=0;
for(int j=0; j<dealer_current_hand.length; j++)
{
dealer_total+= dealer_current_hand[i];
if (dealer_total>21)
{
System.out.println("the dealer has exeeded 21, you win!");
}//if end
}//nested for loop
}//first for loop
return dealer_total;
}//end main
public static void who_wins(int user_total, int dealer_total )
{
if(user_total > dealer_total)
{
System.out.println("congradulations, you won!\nYour score: " + user_total + "\ncomputer's score: " + dealer_total);
}
else if(user_total < dealer_total)
{
System.out.println("Sorry, you lost.\nYour score: " + user_total + "\ncomputer's score: " + dealer_total);
}
else
{
System.out.println("this round was a tie!\nYour score: " + user_total + "\ncomputer's score: " + dealer_total);
}
}
}