package control;
import view.User;
import view.GameObserver;
import model.Model;
//import model.Fink;
import model.AngryFink;
import model.PeacefullFink;
import model.AbstractFink;
import java.util.Random;
public class Controller {
/**
* Start the system, this is the main routine
*/
public void start()
{
user = new User( System.in, System.out );
user.send( welcome );
boolean isActive = true;
while( isActive )
{
int answer = user.getInt( gameMenu );
if( answer == gameMenuChoise.PLAY.ordinal() )
{
playGame();
} else
if( answer == gameMenuChoise.EXIT.ordinal() )
{
isActive = false;
} else
user.send( tryAgain );
}
}
/**
* Execute a game of eveolution.
*/
public void playGame() {
int maxAge = 0;
while( maxAge <= 0 )
{
maxAge = user.getInt( ageMenu );
}
// The style of fink 1 is choosen
int style1 = 0;
while(( style1 != 1) && (style1 != 2)){style1 = user.getInt( playStyle1 );}
// The style of fink 2 is choosen
int style2 = 0;
while(( style2 != 1) && (style2 != 2)){style2 = user.getInt( playStyle2 );}
Random random = new Random();
// Default finks
AngryFink fink1 = new AngryFink (user.get (playMenu1), maxAge, random );
PeacefullFink fink2 = new PeacefullFink (user.get (playMenu2), maxAge, random );
//If choises are different than defaults- they are changed
//if (style1 == 2){fink1 = new PeacefullFink (fink1.name(), maxAge, random );}
//if (style2 == 1){fink2 = new AngryFink (fink2.name(), maxAge, random );}
Model game = new Model( fink1, fink2 );
GameObserver reporter = new GameObserver (user);
game.play( reporter );
reporter.reportWinner(game);
}
private enum gameMenuChoise { PLAY, EXIT };
private final static String welcome =
"Welcome to the game of Evolution.";
private final static String tryAgain =
"Input unknown, try again\n";
private static final String gameMenu =
"Choices for actions to perform: \n" +
"Run game..............." + gameMenuChoise.PLAY.ordinal() + "\n" +
"Exit..................." + gameMenuChoise.EXIT.ordinal() + "\n" +
"Enter choice: ";
private static final String playMenu1 =
"Enter name of Fink 1\n";
private static final String playMenu2 =
"Enter name of Fink 2\n";
private static final String ageMenu =
"Enter max age for finks\n";
// Options that allows the user to choose playing style of both finks
private static final String playStyle1 =
"Choose playing style of Fink 1\n(1)Angry\n(2)Peacefull\n";
private static final String playStyle2 =
"Choose playing style of Fink 2\n(1)Angry\n(2)Peacefull\n";
private User user;
}