Простая гоночная игра Java
Я новичок в Java, я учусь около месяца. Один из проектов в классе - написать программу, в которой вы ставите на "скачки" и "скачки". Вот код:
import java.util.Scanner;
import java.util.Random;
public class horsies {
public static void main (String[] args)
{
Scanner input = new Scanner(System.in);
int money = 1000; //Set original $ to 1000
int r; //Declare variable for random number of horse to proceed
int races = 0; //Set total races to 0
int garfwins = 0; //Set Garfield's score to 0
int shaunwins = 0; //Set Shaun's score to 0
int chestwins = 0; //Set Chester's score to 0
int garf; //Declare Garfield's progress variable
int shaun; //Declare Shaun's progress variable
int chest; //Declare Chester's progress variable
String response; //Declare variable to get input on continuing game
String horse; //Declare variable to get input on horse
String track = "------------";
String trackgarf;
String trackshaun;
String trackchest;
int bet = 0;
do {
garf = 0;
shaun = 0;
chest = 0;
System.out.print ("You have $"+money+"\n");
System.out.print ("Hi, which horse would you like to bet on?\n");
System.out.print ("a. Garfield ("+garfwins+"/"+races+")\n");
System.out.print ("b. Shaun ("+shaunwins+"/"+races+")\n");
System.out.print ("c. Chester ("+chestwins+"/"+races+")\n");
horse = input.next();
System.out.print ("How much do you want to bet?\n");
bet = input.nextInt();
if (bet <= 0) {
System.out.print ("Invalid bet.\n");
}
else {
while (garf<12 && shaun<12 && chest<12){
r = (int) (Math.random()*3+1);
if (r == 1) {
garf++;
} else if (r == 2) {
shaun++;
} else if (r == 3) {
chest++;
}
System.out.print ("\n\n\n\n\n\n\n\n\n\n\n\n");
trackgarf = track.substring(0, garf)+"1"; //Get Garf's progress on track
trackshaun = track.substring(0, shaun)+"1"; //Get Shaun's progress on track
trackchest = track.substring(0, chest)+"1"; //Get Chester's progress on track
System.out.print (trackgarf+"\n");
System.out.print (trackshaun+"\n");
System.out.print (trackchest+"\n");
System.out.print ("GAR:"+garf+"\nSHA:"+shaun+"\nCHE:"+chest+"\n");
try {
Thread.sleep(1000L);
}
catch (Exception j) {}
}
}
if (garf == 12 && horse == "a") {
System.out.print ("You earned $"+(2*bet));
money = money + (2 * bet);
System.out.print ("Total balance: $"+money);
} else if (shaun == 12 && horse == "b") {
System.out.print ("You earned $"+(2*bet));
money = money + (2 * bet);
System.out.print ("Total balance: $"+money);
} else if (chest == 12 && horse == "c") {
System.out.print ("You earned $"+(2*bet));
money = money + (2 * bet);
System.out.print ("Total balance: $"+money);
}
System.out.print ("Play again?\n");
response = input.next();
} while (money >= 0 && (response.equals("Yes")||response.equals("yes")));
input.close();
}
}
Программа, кажется, работает хорошо, за исключением того факта, что денежная стоимость, кажется, остается на уровне 1000. Любой совет будет оценен. Спасибо!
4 ответа
У вас проблема в том, что все ваши условия возвращают false, а у вас нет других предложений.
Причина, по которой они ложны, заключается в том, что вы выполняете недопустимое сравнение по типу String.
так вместо того, чтобы
horse == "a"
, у тебя должно быть "a".equals(horse)
,
Или вы можете переключиться на примитивный тип char
затем horse == 'a'
будет правильно.
В Java оператор ==
сравните ссылку для типа объекта и значение для примитива.
Таким образом, при использовании всех типов объектов, которые вы используете, вы должны учитывать, что вместо метода равно ==
Вам нужно использовать функцию equals() вместо оператора ==.
Например
if (garf == 12 && horse == "a") {
должно быть
if (garf == 12 && horse.equals("a")) {
И вы ничего не вычитаете из денежной переменной. Вы должны сделать это, когда вы делаете ставку
Когда ваша лошадь проигрывает, ваш код вносит изменения в деньги, поэтому баланс остается 1000
else {
System.out.print ("You lost $"+(bet)+" bucks in this race\n");
money = money - (bet);
} System.out.print ("Play again?\n Balance :"+money);
Добавьте оператор else в ваш цикл