所以这是我的计划。我想我拥有我需要的一切,但我在循环方面非常糟糕,需要向你们寻求帮助。这是一个垄断委员会,只有一名球员需要围棋(40个方格,一次)。
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;
}
}
我需要循环做什么:滚动两个骰子,将这两个数字加在一起并将玩家移动到该位置(从0开始)。当玩家到达广场时,应显示一条消息
然后程序应该说“按回车键继续”并在玩家按下回车键时继续。一旦玩家一次绕过棋盘,循环应该停止(所以当骰子最终滚动到40或更多时)。
答案 0 :(得分:0)
我开始使用while循环,例如:
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
}