Create a basic car racing game (no graphics necessary). Using the UML diagram be
ID: 3781436 • Letter: C
Question
Create a basic car racing game (no graphics necessary). Using the UML diagram below, create a bet class, a player class (two players), and a car class (four cars). Create a demo class for the three classes. For input, each player should be able to select a vehicle and place a wager (capped at $100). The game should be able to run until one player has $0 remaining or until the user wants to quit. For example, (both players initialized with $100 in bet money) if in round one player 1 wagers $20 and player 2 wagers $30, and player 1 loses the round, player 1 will have $100 - $20(player 1's lost wager)= $80 and player 2 will have $100 + $20(player 1's lost wager). Rounds will repeat until the game should theoretically end when one player has $200 or until the user quits the program. The game should display (output) who won (player one or player two)
Variables
Player1
Player2
Player1 Bet
Player2 Bet
Cars quarterMileTime
vehicleOne 14.7s
vehicleTwo 13.7s
vehicleThree 14.0s
vehicleFour 13.9s
UML DIAGRAM:
Racing Game
Bet
----------
player1 : Player
player2 : Player
wager : int
----------
+Bet( player1, player 2 : Player, wager : int )
+Race() : String
Player
----------
-name : String
-cash : int
-vehicle : Car
-----------
+getName() : String
+getCash() : int
+addCash( int cash ) : int
+setVehicle( Car car ) : void
+getVehicle() : Car
Car
-----
-make : string
-model : string
----
+getQuarterMileTime() : double
- make this random < 10 seconds
+getMake() : String
+getModel() : String
+toString() : String
GUI screen
-Player 1 select a car ( radio button? )
-total cash ( starts at 100 )
-Player 2 select a car ( radio button? )
-total cash ( starts at 100 )
-Text box for wager
-button for Place Bet
-button for Race
display race result
-If player 1 wins, cash goes up, player 2 cash goes down
Game ends when one player has <= 0 cash
Explanation / Answer
Compile all the classes (using javac) and run Game.class:
1. Game.java
2. Player.java
3. Bet.java
4. Car.java
package org.learning.chegg.racingproblem;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Game {
public static void main(String[] args) throws IOException {
Car vehicle1 = new Car("BMW", "Z8");
Car vehicle2 = new Car("Audi", "720d");
Car vehicle3 = new Car("Koenigsegg", "CCX");
Car vehicle4 = new Car("Pagani", "Zonda-R");
Player player1 = null;
Player player2 = null;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Player 1 enter name: ");
player1 = new Player(bufferedReader.readLine());
System.out.println("Player 2 enter name: ");
player2 = new Player(bufferedReader.readLine());
System.out.println("Player 1 select a car: ");
System.out.println("1. "+vehicle1);
System.out.println("2. "+vehicle2);
System.out.println("3. "+vehicle3);
System.out.println("4. "+vehicle4);
int choice = Integer.parseInt(bufferedReader.readLine());
switch (choice) {
case 1:
player1.setVehicle(vehicle1);
break;
case 2:
player1.setVehicle(vehicle2);
break;
case 3:
player1.setVehicle(vehicle3);
break;
case 4:
player1.setVehicle(vehicle4);
break;
default:
break;
}
System.out.println("Player 2 select a car: ");
System.out.println("1. "+vehicle1);
System.out.println("2. "+vehicle2);
System.out.println("3. "+vehicle3);
System.out.println("4. "+vehicle4);
choice = Integer.parseInt(bufferedReader.readLine());
switch (choice) {
case 1:
player2.setVehicle(vehicle1);
break;
case 2:
player2.setVehicle(vehicle2);
break;
case 3:
player2.setVehicle(vehicle3);
break;
case 4:
player2.setVehicle(vehicle4);
break;
default:
break;
}
player1.addCash(100);
player2.addCash(100);
System.out.println("Enter Wager: ");
Bet bet = new Bet(player1, player2, Integer.parseInt(bufferedReader.readLine()));
int count = 0;
while(!(player1.getCash() <= 0 || player2.getCash() <=0)){
count++;
String result = bet.race();
Player winner = (Integer.parseInt(result) == 1)?player1: player2;
System.out.println("Round"+count+" "+winner.getName()+" wins");
}
if(player1.getCash() <= 0 ){
System.out.println(player2.getName()+"(Player 2) wins");
}else{
System.out.println(player1.getName()+"(Player 1) wins");
}
}
}
package org.learning.chegg.racingproblem;
public class Bet {
Player player1;
Player player2;
int wager;
public Bet(Player player1, Player player2, int wager) {
this.player1 = player1;
this.player2 = player2;
this.wager = wager;
}
public String race(){
String result = "";
if(player1.getVehicle().getQuarterMileTime() < player2.getVehicle().getQuarterMileTime()){
result = "1";
player1.addCash((wager));
player2.addCash((0-wager));
}else{
result = "2";
player1.addCash((0-wager));
player2.addCash((wager));
}
return result;
}
}
package org.learning.chegg.racingproblem;
public class Player {
String name;
int cash;
Car vehicle;
public Player(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getCash() {
return cash;
}
public void addCash(int cash) {
this.cash += cash;
}
public Car getVehicle() {
return vehicle;
}
public void setVehicle(Car vehicle) {
this.vehicle = vehicle;
}
}
package org.learning.chegg.racingproblem;
public class Car {
String make;
String model;
public Car(String make, String model) {
super();
this.make = make;
this.model = model;
}
public String getMake() {
return make;
}
public String getModel() {
return model;
}
@Override
public String toString() {
return "[Car make: "+this.make+", model: "+this.model+"]";
}
public double getQuarterMileTime(){
double quartMileTime = 0;
while (true){
quartMileTime = Math.random() * 10;
if(quartMileTime < 10 && quartMileTime>3){
break;
}
}
quartMileTime = Math.round(quartMileTime*100);
return quartMileTime/100;
}
}