please send edited code of RCBugjava RCBUGjava import javaut
please send edited code of RCBug.java
RCBUG.java
import java.util.Random;
public class RCBug {
private EZImage bugPicture; // Member variable to store bug picture
private int x, y, startx, starty; // Member variables to store x, y, startx, starty
private int destx, desty; // Member variables to store destination values
private long starttime; // Member variable to store the start time
private long duration; // Member variable to store the duration
private boolean interpolation; // Member variable that is set to true if it is in the interpolation state
//1) add the private static final variables here
// Constructor for RCBug takes 3 parameters
public RCBug(String filename,int posx, int posy){
// Set the current position of the bug
x=posx;y=posy;
// Create the image of the bug
bugPicture = EZ.addImage(filename, posx, posy);
// Move it to the starting position. This is actually redundant.
bugPicture.translateTo(x,y);
// Set interpolation mode to false initially
interpolation = false;
}
// Set the destination by giving it 3 variables
// Dur means duration and is measured in seconds
public void setDestination(int posx, int posy, long dur){
// Set destination position and duration
// Convert seconds to miliseconds
destx = posx; desty = posy; duration = dur*1000;
// Get the startting time (i.e. time according to your computer)
starttime = System.currentTimeMillis();
// Set the starting position of your bug
startx=x; starty=y;
// Set interolation mode to true
interpolation = true;
}
// If you?re in interpolation state then return true, else false.
public boolean moving() {
return interpolation;
}
// This moves the bug based on the current time and elapsed time according to the interpolation equation
public void go(){
// If interpolation mode is true then do interpolation
if (interpolation == true) {
// Normalize the time (i.e. make it a number from 0 to 1)
float normTime = (float) (System.currentTimeMillis() - starttime)/ (float) duration;
// Calculate the interpolated position of the bug
x = (int) (startx + ((float) (destx - startx) * normTime));
y = (int) (starty + ((float) (desty - starty) * normTime));
// If the difference between current time and start time has exceeded the duration
// then the animation/interpolation is over.
if ((System.currentTimeMillis() - starttime) >= duration) {
// Set interpolation to false
interpolation = false;
// Move the bug all the way to the destination
x = destx; y = desty;
}
//2)add a random amount to the x and y coordinates
// Don?t forget to move the image itself.
bugPicture.translateTo(x,y);
}
}
}
RCBugMain.java
import java.awt.Color;
import java.io.InputStreamReader;
import java.util.Scanner;
public class RCBugMain {
public static void main(String[] args) {
// Setup EZ graphics system.
EZ.initialize(512, 512);
// Set background color to dark green
EZ.setBackgroundColor(new Color(0, 100, 0));
// Make an InputStreamReader object which reads from the keyboard.
// Make a Scanner object that uses the InputStreamReader
Scanner scanner = new Scanner(new InputStreamReader(System.in));
// Set exit variable to false.
boolean exit = false;
// Create an RCBug object and give it the image and starting position
RCBug aBug = new RCBug(\"bug.png\", 256,256);
// My do loop
do {
// Print the words: \"Enter a command:\"
System.out.print(\"Enter a command: \");
// Retrieve the first TOKEN the user types in
String command = scanner.next();
// Declare variables x,y,dur for later use.
int x, y;
int dur;
// Switch statement uses value in command to deside what to do.
switch(command) {
// If the command is \"move\"
case \"move\":
// Read first integer and store that in x.
x = scanner.nextInt();
// Read second integer and store that in y.
y = scanner.nextInt();
// Read third integer and store that in dur (duration).
dur = scanner.nextInt();
// Using my bug object call the member function setDestination and give
// it the parameter values x, y, and dur
aBug.setDestination(x, y, dur);
// Break out of switch statement.
break;
// If the command is quit
case \"quit\":
// Set the exit variable to true
exit = true;
// Break out of the switch statement.
break;
default:
// If I enter a wrong command print the following message:
System.out.println(\"Commands you can invoke are:\");
System.out.println(\"move x y duration\");
System.out.println(\"quit\");
}
// While the bug should be moving...
while(aBug.moving()){
// Call the go member function of the bug to make it move.
aBug.go();
// Refresh the screen
EZ.refreshScreen();
}
// If exist is NOT true then keep looping.
} while(exit != true);
//Otherwise print BYE!
System.out.println(\"Bye!\");
// Close the Scanner since I am done using it.
scanner.close();
}
}
Solution
I have updated the code in the appropriate places and formatted them in bold. Also explanation of what happens when spread = 2, 25, 300 is at the very end
Here is the updated code for RCBug.java
package GUI;
import java.util.Random;
public class RCBug {
private EZImage bugPicture; // Member variable to store bug picture
private int x, y, startx, starty; // Member variables to store x, y, startx, starty
private int destx, desty; // Member variables to store destination values
private long starttime; // Member variable to store the start time
private long duration; // Member variable to store the duration
private boolean interpolation; // Member variable that is set to true if it is in the interpolation state
private static final Random rand = new Random(); // Member variable that is to generate a randome number
private static final int spread = 2; // spread varaible to mark the speed in which the bug moves
//1) add the private static final variables here
// Constructor for RCBug takes 3 parameters
public RCBug(String filename,int posx, int posy){
// Set the current position of the bug
x=posx;y=posy;
// Create the image of the bug
bugPicture = EZ.addImage(filename, posx, posy);
// Move it to the starting position. This is actually redundant.
bugPicture.translateTo(x,y);
// Set interpolation mode to false initially
interpolation = false;
}
// Set the destination by giving it 3 variables
// Dur means duration and is measured in seconds
public void setDestination(int posx, int posy, long dur){
// Set destination position and duration
// Convert seconds to miliseconds
destx = posx; desty = posy; duration = dur*1000;
// Get the startting time (i.e. time according to your computer)
starttime = System.currentTimeMillis();
// Set the starting position of your bug
startx=x; starty=y;
// Set interolation mode to true
interpolation = true;
}
// If you\'re in interpolation state then return true, else false.
public boolean moving() {
return interpolation;
}
// This moves the bug based on the current time and elapsed time according to the interpolation equation
public void go(){
// If interpolation mode is true then do interpolation
if (interpolation == true) {
// Normalize the time (i.e. make it a number from 0 to 1)
float normTime = (float) (System.currentTimeMillis() - starttime)/ (float) duration;
// Calculate the interpolated position of the bug
x = (int) (startx + ((float) (destx - startx) * normTime));
y = (int) (starty + ((float) (desty - starty) * normTime));
// If the difference between current time and start time has exceeded the duration
// then the animation/interpolation is over.
if ((System.currentTimeMillis() - starttime) >= duration) {
// Set interpolation to false
interpolation = false;
// Move the bug all the way to the destination
x = destx; y = desty;
}
//2)add a random amount to the x and y coordinates
x+=rand.nextInt(spread)-spread/2;
y+=rand.nextInt(spread)-spread/2;
// Don\'t forget to move the image itself.
bugPicture.translateTo(x,y);
}
}
}
This is the updated code for RCBugMain.java
package GUI;
import java.awt.Color;
import java.io.InputStreamReader;
import java.util.Scanner;
public class RCBugMain {
public static void main(String[] args) {
// Setup EZ graphics system.
EZ.initialize(512, 512);
// Set background color to dark green
EZ.setBackgroundColor(new Color(0, 100, 0));
// Make an InputStreamReader object which reads from the keyboard.
// Make a Scanner object that uses the InputStreamReader
Scanner scanner = new Scanner(new InputStreamReader(System.in));
// Set exit variable to false.
boolean exit = false;
// Create an RCBug object and give it the image and starting position
RCBug aBug = new RCBug(\"D:\\\\Users\\\\kastuk\\\\Desktop\\\\Chegg\\\\bug.png\", 256,256);
// My do loop
do {
// Print the words: \"Enter a command:\"
System.out.print(\"Enter a command: \");
// Retrieve the first TOKEN the user types in
String command = scanner.next();
// Declare variables x,y,dur for later use.
int x, y;
int dur;
// Switch statement uses value in command to deside what to do.
if(command.equals(\"move\"))
{
x = scanner.nextInt();
// Read second integer and store that in y.
y = scanner.nextInt();
// Read third integer and store that in dur (duration).
dur = scanner.nextInt();
// Using my bug object call the member function setDestination and give
// it the parameter values x, y, and dur
aBug.setDestination(x, y, dur);
}
else if(command.equals(\"quit\"))
{
exit = true;
}
else
{
System.out.println(\"Commands you can invoke are:\");
System.out.println(\"move x y duration\");
System.out.println(\"quit\");
}
/* switch(command) {
// If the command is \"move\"
case \"move\":
// Read first integer and store that in x.
x = scanner.nextInt();
// Read second integer and store that in y.
y = scanner.nextInt();
// Read third integer and store that in dur (duration).
dur = scanner.nextInt();
// Using my bug object call the member function setDestination and give
// it the parameter values x, y, and dur
aBug.setDestination(x, y, dur);
// Break out of switch statement.
break;
// If the command is quit
case \"quit\":
// Set the exit variable to true
exit = true;
// Break out of the switch statement.
break;
default:
// If I enter a wrong command print the following message:
System.out.println(\"Commands you can invoke are:\");
System.out.println(\"move x y duration\");
System.out.println(\"quit\");
}*/
// While the bug should be moving...
while(aBug.moving()){
// Call the go member function of the bug to make it move.
aBug.go();
// Refresh the screen
EZ.refreshScreen();
}
// If exist is NOT true then keep looping.
} while(exit != true);
//Otherwise print BYE!
System.out.println(\"Bye!\");
// Close the Scanner since I am done using it.
scanner.close();
}
}
Observation on O/P:
The spread variable is responsible for the speed in which the bug moves from one position to another.
When spread =2, the bug moves at a very slow pace.
when spread = 25, it moves at a moderate pace.
when spread = 300, it moves at a very faster pace with a distorting image.







