import java.util.Random;
import java.util.Scanner;
import java.util.regex.Pattern;
public class DartGame
{
private int dartsNumber;
private Player player;
private static int playerScore;
private static int dartScore;
public DartGame()
{
}
public DartGame(int dartsNumber, Player player, int playerScore, int dartScore) {
this.dartsNumber = dartsNumber;
this.player = player;
this.playerScore = playerScore;
this.dartScore = dartScore;
}
public int getDartsNumber() {
return dartsNumber;
}
public void setDartsNumber(int dartsNumber) {
this.dartsNumber = dartsNumber;
}
public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
public int getPlayerScore() {
return playerScore;
}
public void setPlayerScore(int playerScore) {
this.playerScore = playerScore;
}
public int getDartScore() {
return dartScore;
}
public void setDartScore(int dartScore) {
this.dartScore = dartScore;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
DartGame game1 = new DartGame();
Player player = new Player();
game1.displayWelcomeMessage();
String name = game1.inputUserName();
System.out.println("your name is "+name);
//put the name into the class of player
player.setName(name);
int dartNum = game1.inputDartsNumber();
System.out.println("your input number of dart = "+dartNum);
//
game1.setDartsNumber(dartNum);
while (true){
System.out.println("Do you want to start the game? please enter Yes to Start or No to quit the game");
String isStart = scanner.nextLine();
//The equalsIgnoreCase() method is used to compare the string with the specified object, regardless of case.
if(isStart.equalsIgnoreCase("Yes") )
{
System.out.println("Welcome to the Darts Game!");
//initialize field
game1.setPlayerScore(0);
game1.setDartScore(0);
boolean isContinue = game1.playGame();
if(isContinue==false)
{
System.out.println("Bye bye");
break;
}
else if(isContinue ==true)
{
continue;
}
}
else if(isStart.equalsIgnoreCase("No"))
{
System.out.println("Bye bye");
break;
}
else
{
System.out.println("Invalid input, please enter agian");
}
}
}
public void displayWelcomeMessage()
{
System.out.println("Welcome to the Game!");
}
public String inputUserName(){
DartGame game2 = new DartGame();
Scanner scanner = new Scanner(System.in);
while(true)
{
System.out.print("Please enter your name: ");
String yourName = scanner.nextLine();
if(game2.isSmall(yourName) && yourName.length()<=8)
{
System.out.println("input correctly");
return yourName;
}
else
{
System.out.println("Please enter no more than eight lowercase letters,please enter agian");
}
}
}
public int inputDartsNumber(){
DartGame game3 = new DartGame();
Scanner scanner = new Scanner(System.in);
while (true){
System.out.println("Please enter the number of darts you need,the number of darts must between 1 and 5.\nplease enter here:");
String darts =scanner.nextLine();
//的撒旦撒旦
if(game3.isDigits(darts))
{
int dartNumber = Integer.parseInt(darts);
if(0<dartNumber && dartNumber<=5)
{
return dartNumber;
}
else
{
System.out.println("Invalid input,You can only have 1 to 5 darts");
}
}
else
{
System.out.println("Invalid input,You can only have 1 to 5 darts");
}
}
}
public boolean isSmall(String name){
Pattern pattern = Pattern.compile("[a-z]*");
return pattern.matcher(name).matches();
}
public boolean isDigits(String darts){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(darts).matches();
}
public void playDartGame() {
}
public void calculateScore(int score,String identity) {
DartGame game4 = new DartGame();
if(identity.equalsIgnoreCase("player"))
{
int totalPlayerScore = game4.getPlayerScore()+score;
game4.setPlayerScore(totalPlayerScore);
}
else if(identity.equalsIgnoreCase("vader"))
{
int totalVaderScore = game4.getDartScore()+score;
game4.setDartScore(totalVaderScore);
}
}
public void displayResultOfDartThrow(int dartNumber, int score) {
System.out.println("Dart " + dartNumber + " - Score: " + score);
}
public void displayGameResult() {
System.out.println("the Result of the Game = ");
}
public boolean playGame()
{
Scanner scanner = new Scanner(System.in);
Random random = new Random();
DartGame game5 = new DartGame();
int dartsThrown = 1;
while (true && dartsThrown<6) {
// human player's turn
System.out.println("Your turn to throw. Type 'quit' to abandon the game.");
String input = scanner.nextLine();
if (input.equalsIgnoreCase("quit"))
{
System.out.println("You abandoned the game.");
return false;
}
double playerBoard = random.nextDouble();
if (playerBoard < Math.PI / 4) {
// dart lands on the board
dartsThrown++;
double playerThrow = random.nextDouble();
if (playerThrow < 0.04) {
// dart lands in black area
System.out.println("You got 5 points!");
game5.calculateScore(5,"player");
System.out.println("your current total score = " + game5.getPlayerScore());
} else if (playerThrow < 0.16) {
// dart lands in yellow area
System.out.println("You got 2 points!");
game5.calculateScore(2,"player");
System.out.println("your current total score = " + game5.getPlayerScore());
} else {
// dart lands in blue area
System.out.println("You got 1 point!");
game5.calculateScore(1,"player");
System.out.println("your current total score = " + game5.getPlayerScore());
}
} else {
// dart misses the board
dartsThrown++;
System.out.println("You missed the board. Zero points scored.");
System.out.println("your current total score = " + game5.getPlayerScore());
}
// Dart Vader's turn
if (random.nextDouble() < 0.05) {
// Dart Vader abandons the game
System.out.println("Dart Vader abandoned the game.");
break;
}
double VaderBoard = random.nextDouble();
if (VaderBoard < Math.PI / 4) {
// dart lands on the board
double VaderThrow= random.nextDouble();
if (VaderThrow < 0.04) {
// dart lands in black area
System.out.println("Dart Vader got 5 points.");
game5.calculateScore(5,"vader");
System.out.println("Dart Vader's current total score = " + game5.getDartScore());
} else if (VaderThrow < 0.16) {
// dart lands in yellow area
System.out.println("Dart Vader got 2 points.");
game5.calculateScore(2,"vader");
System.out.println("Dart Vader's current total score = " + game5.getDartScore());
} else {
// dart lands in blue area
System.out.println("Dart Vader got 1 point.");
game5.calculateScore(1,"vader");
System.out.println("Dart Vader's current total score = " + game5.getDartScore());
}
} else {
// dart misses the board
System.out.println("Dart Vader missed the board. Zero points scored.");
System.out.println("Dart Vader's current total score = " + game5.getDartScore());
}
}
System.out.println("Game over!");
System.out.println("Your score: " + game5.getPlayerScore());
System.out.println("Dart Vader's score: " + game5.getDartScore());
return true;
}
}
请问,为什么我字段必须要加static静态字段啊,我后面 new对象使用 get ,set应该不用加静态字段啊。谢谢!!