So here is my program. I think I have everything I need but I am really bad at looping and need to ask you guys for some help. It is a monopoly board with just one player needing to go around the board (40 squares, one time) .
package monopoly;
import java.util.*;
public class Monopoly1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
BoardSquare[] square = new BoardSquare[40]; // array of 40 monopoly squares
Player thePlayer = new Player(); //new object thePlayer from Player class
thePlayer.getLocation(); //call method getLocation which should be instantiated from player class to zero
int i;
loadArray(square);
Dice diceOne = new Dice(); //new dice object
Dice diceTwo = new Dice(); //new dice object
int rollOne; //variable to hold rollOne
int rollTwo; //variable to hold rollTwo
int rollTotal; //variable to hold rollTotal
do {
rollOne = diceOne.roll();
rollTwo = diceTwo.roll();
rollTotal = rollOne + rollTwo;
BoardSquare newPosition = square[thePlayer.getLocation() + rollTotal];
} while (thePlayer.getBalance() > 0);
// test the code by printing the data for each square
System.out.println("Data from the array of Monopoly board squares. Each line has:\n");
System.out.println("name of the square, type, rent, price, color\n");
for (i = 0; i < 40; i++)
System.out.println(square[i].toString());
}
//***********************************************************************
// method to load the BoardSquare array from a data file
public static void loadArray(BoardSquare[] square) throws Exception
{
int i; // a loop counter
// declare temporary variables to hold BoardSquare properties read from a file
String inName;
String inType;
int inPrice;
int inRent;
String inColor;
// Create a File class object linked to the name of the file to be read
java.io.File squareFile = new java.io.File("squares.txt");
// Create a Scanner named infile to read the input stream from the file
Scanner infile = new Scanner(squareFile);
/* This loop reads data into the square array.
* Each item of data is a separate line in the file.
* There are 40 sets of data for the 40 squares.
*/
for (i = 0; i < 40; i++) {
// read data from the file into temporary variables
// read Strings directly; parse integers
inName = infile.nextLine();
inType = infile.nextLine();
inPrice = Integer.parseInt(infile.nextLine());
inRent = Integer.parseInt(infile.nextLine());;
inColor = infile.nextLine();
// intialze each square with the BoardSquare constructor
square[i] = new BoardSquare(inName, inType, inPrice, inRent, inColor);
} // end for
infile.close();
} // endLoadArray
//***********************************************************************
} // end class Monopoly
class BoardSquare {
private String name; // the name of the square
private String type; // property, railroad, utility, plain, tax, or toJail
private int price; // cost to buy the square; zero means not for sale
private int rent; // rent paid by a player who lands on the square
private String color; // many are null; this is not the Java Color class
// constructors
public BoardSquare() {
name = "";
type = "";
price = 0;
rent = 0;
color = "";
} // end Square()
public BoardSquare(String name, String type, int price, int rent, String color) {
this.name = name;
this.type = type;
this.price = price;
this.rent = rent;
this.color = color;
} // end Square((String name, String type, int price, int rent, String color)
// accesors for each property
public String getName() {
return name;
} //end getName()
public String getType() {
return type;
} //end getType()
public int getPrice() {
return price;
} //end getPrice()
public int getRent() {
return rent;
} //end getRent()
public String getColor() {
return color;
} //end getColor()
// a method to return the BoardSquare's data as a String
public String toString() {
String info;
info = (name + ", " + type + ", " + price + ", " + rent + ", " + color);
return info;
} //end toString()
} // end class BoardSquare
//***************************************************************************
class Player {
private String name;
private String token;
private int location;
private int balance;
private String player;
public Player()
{
name = "";
token = "";
location = 0;
balance = 1500;
} // end Square()
public Player(String name, String token, int location, int balance) {
this.name = name;
this.token = token;
this.location = location;
this.balance = balance;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the token
*/
public String getToken() {
return token;
}
/**
* @param token the token to set
*/
public void setToken(String token) {
this.token = token;
}
/**
* @return the location
*/
public int getLocation() {
return location;
}
/**
* @param location the location to set
*/
public void setLocation(int location) {
this.location = location;
}
/**
* @return the balance
*/
public int getBalance() {
return balance;
}
/**
* @param balance the balance to set
*/
public void setBalance(int balance) {
this.balance = balance;
}
/**
* @return the player
*/
public String getPlayer() {
return player;
}
/**
* @param player the player to set
*/
public void setPlayer(String player) {
this.player = player;
}
void setLocation() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
} //end class player
class Dice {
public static int roll() {
int total;
total = 1 + (int)(Math.random() * 6);
return total;
}
}
What I need the loop to do: Roll the two dice, add those two numbers together and move the player to that location (starting from 0). When a player arrives on a square a message should be displayed with
Then the program should say 'press enter to continue' and continues when the player presses enter. The loop should stop once the player has gone around the board one time (so when the dice rolled eventually equal to 40 or more).
I'd start with a while loop, something like:
int die_total = 0;
int die1_value = 0;
int die2_value = 0;
while(die_total <=40) {
//determine random values for die 1 and 2
//add them together and move your player
//do your 1-6
//put your wait for user input here with an Object.wait()
//add the die 1 and 2 values to your die_total
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.