Answer:
Game.java file
import java.util.Scanner;
public class Game {
/**
* t_pos and h_pos are the current positions of the Tortoise and Hare
*/
static int t_pos,h_pos;
static Tortoise tortoise;
static Hare hare;
public static void main(String[] args) {
play(); /*starting the game*/
}
public static void play(){
/**
* the method will starts the play, loop until the game is over, displays the winner
* and prompts the user if they want to play again
*/
/**
* defining Tortoise and Hare objects
*/
tortoise=new Tortoise();
hare=new Hare();
t_pos=1;
h_pos=1;
System.out.println("The race is about to start");
tortoise.printTrack();
hare.printTrack();
while(t_pos != 50 && h_pos !=50){
System.out.println("\n\n\n"); /*printing blank lines*/
t_pos=tortoise.move(); /*moving and getting the current position of tortoise*/
h_pos=hare.move();/*moving and getting the current position of hare*/
tortoise.printTrack(); /*displaying the tracks*/
hare.printTrack();
try { /*comment this part to skip the 1s break between each round; for testing*/
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("\nRace Over");
if(t_pos==50 && h_pos==50){
System.out.println("Its a tie");
}
else if(t_pos==50){
System.out.println("Tortoise wins");
}else if(h_pos==50){
System.out.println("Hare wins");
}
System.out.println("Do you want to play again? (y/n)");
Scanner scanner=new Scanner(System.in);
String ch=scanner.next();
if(ch.equalsIgnoreCase("y")){
play();
}else if(ch.equalsIgnoreCase("n")){
System.out.println("Thanks for playing, Goodbye");
}else{
System.out.println("Invalid choice, quitting..");
}
}
}
//Tortoise.java
public class Tortoise {
/**
* the current position of the tortoise
*/
int position;
/**
* track array
*/
char[] track;
/**
* speed of tortoise
*/
int speed=1;
public Tortoise() {
position=0;
track=new char[50];
for(int i=0;i<track.length;i++){
/**
* filling the track
*/
track[i]='-';
}
}
public int move(){
if(position<track.length){
position=position+speed;
}
return position+1;
}
public void printTrack(){
/**
* the current position of tortoise will be displayed by 'T' everything else will be '-'
*/
System.out.println();
for(int i=0;i<track.length;i++){
if(i==position){
System.out.print('T');
}else{
System.out.print(track[i]);
}
}
}
}
//Hare.java
import java.util.Random;
public class Hare {
int position;
int speed=10;
char[] track;
/**
* Random object to generate a random number
*/
Random random;
/**
* resting percent denotes how much time Hare will be resting
*/
int resting_percent=90;
public Hare() {
position=0;
track=new char[50];
for(int i=0;i<track.length;i++){
track[i]='-';
}
random=new Random();
}
public int move(){
int n=random.nextInt(100-1)+1; /*generating a random number between 1 and 100*/
if(n<=resting_percent){
/**
* at rest; will not move, returns the current position.
*/
return position;
}else{
/**
* not resting..
*/
if(position<track.length){
if(position+speed>=track.length){
position=track.length-1;
}else{
position=position+speed;
}
}
return position+1;
}
}
public void printTrack(){
System.out.println();
for(int i=0;i<track.length;i++){
if(i==position){
System.out.print('H');
}else{
System.out.print(track[i]);
}
}
}
}
/*Output (partial and random)*/
The race is about to start
T-------------------------------------------------
H-------------------------------------------------
-T------------------------------------------------
H-------------------------------------------------
--T-----------------------------------------------
H-------------------------------------------------
---T----------------------------------------------
----------H---------------------------------------
.
.
.
.
-----------------------------------------------T--
-------------------------------------------------H
Race Over
Hare wins
Do you want to play again? (y/n)
y
The race is about to start
T-------------------------------------------------
H-------------------------------------------------
-T------------------------------------------------
H-------------------------------------------------
.
.
.
.
-----------------------------------------------T--
--------------------H-----------------------------
------------------------------------------------T-
--------------------H-----------------------------
-------------------------------------------------T
--------------------H-----------------------------
Race Over
Tortoise wins
Do you want to play again? (y/n)
n
Explanation: