import javax.swing.JFrame;import java.awt.*;import java.util.Scanner;public class AWeekIsALongTime extends JFrame{ private static final int WIDTH = 700; private static final int HEIGHT = 500; private JLabel intro; private DeputyPremier politician; // Declares a new DeputyPremier object called politician private boolean tracing; // Declares a boolean called tracing to aid debugging private Scanner sc; // Declares a new scanner object called 'sc' private int userChoice; // Declares an int that will hold the value of what the user enters in the getChoices method private int numGames; // Declares an int to hold the number of games the user has played private int numWon; // Declares an int to hold the number of games the user has won private int numLost; // Declares an int to hold the number of games the user has lost private int numDrawn; // Declares an int to hold the number of games the user has drawn /** constructor instantiates the politician and scanner objects, sets tracing to false. instantiates all of the integers that hold the number of times the user has won/lost/drawn/played the game to zero */ public AWeekIsALongTime() { layoutTest obJ = new layoutTest(); politician = new DeputyPremier(); sc = new Scanner(System.in); tracing = false; numGames = 0; numWon = 0; numLost = 0; numDrawn = 0; intro = new JLabel(explain()); add(intro); } public void layoutTest() { setTitle("Deputy Premier!"); setSize(WIDTH, HEIGHT); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } /** play calls the setUp method from DeputyPremier, details the game about to be played using the explain method and then engages the startLoop method to begin the game */ public void play() { politician.setUp(0); explain(); startLoop(); } /** explain a block of text that details the storyline of the game and the instructions/options the player has */ public void explain() { System.out.println("\t\t\tA Week is a Long Time in Politics\n\t\t\t=================================\n\n Taswegia is a fictitious state of a country called Straya. " +"In this state, the government is led by a Premier and a Deputy Premier. The Deputy Premier (i.e. you) has been asked to appoint a new magistrate and a " + "person has been recommended and you have drafted a memorandum to appoint him. Strangely, you have also written and sent a second memorandum with someone else's name on" + " it. What will the Deputy Premier do?\n\nYour task is to pretend to be the Deputy Premier and to make choices based around the pressure that is put on you and the" + " options available. In order to succeed, you must stay in your job for seven days. \n\nYou will be under pressure from many areas: the press, the leader of the state " + "service, journalists, and other political parties. There may even be a whistle-blower within your own ranks!\nAt the beginning of each day (if you're still in the job) you have" + " a number of choices. You can:\n\n\t1. make no comment\n\t2. deny in Parliament that this memorandum ever existed\n\t3. shred the document or\n\t4. resign\nYou win " + " the game if you survive seven days as Deputy Premier. You lose if you are fired. The game is a draw if you choose to resign.\n\nGood luck. Next!\n"); add(intro); } /** startLoop @return an int accepts the users input as to whether they want to start the game */ public int startLoop() { String loop; // Holds the user's input to test if beginGame needs to be called System.out.print("Would you like to play (y)es or (n)o? "); loop = sc.next(); if(loop.equalsIgnoreCase("y")) // If the user inputs the character 'y', the beginGame method is called { numGames++; // Increments the number of games the player has played by one beginGame(); } else // If any other character than 'y' is entered, program reports on the user's details, then terminates. { System.out.println("\nYou played " + numGames + " times;"); System.out.println("\nYou won and survived " + numWon + " times;"); System.out.println("You lost and were fired " + numLost + " times;"); System.out.println("You drew by resignation " + numDrawn + " times;"); System.out.println("\nThank you for playing. Now get a real job."); System.exit(0); } return numGames; } /**beginGame @return an int uses a loop to execute different methods throughout this class in a sequential order seven times. has a winning screen if user is able to complete all seven days */ public int beginGame() { for(int i=1; i<=7;i++) // Completes the loop seven times to simulate the seven days { startDay(); memorandumCheck(); getChoices(); getConseq(); } System.out.println("Phew, made it through a week!"); System.out.println("===================================================================\n\n\t\t\tGAME OVER\n" + "\nCongratulations Deputy Premier. Would you like to try a second week...\n"); numWon++; // Increments the number of games the player has won by one politician.newGame(); // Resets the politican object startLoop(); // Restarts the game return numWon; } /** startDay welcomes the user to the start of every day. calls the currentDay, getShredderVolume and getEvents methods from DeputyPremier to display the days information/events */ public void startDay() { System.out.println("===================================================================\n\n" + "Welcome Mr Connz.\nIt is Day #" + politician.getCurrentDay() + "\nSo far this week:\n" + politician.getEvents()); System.out.println("Your shredder is currently " + politician.getShredderVolume() + "% full"); instinctCheck(); } /** memorandumCheck calls the hasDocument method from DeputyPremier to check if the memorandum is in the players possession */ public void memorandumCheck() { if (politician.hasDocument()) { System.out.println("The original document is still in your possession."); } } /** getChoices @return an int displays a list of actions the user may engage in, records the user input */ public int getChoices() { System.out.println("\nWhat would you like to do:\n\t1. make no comment\n\t2. deny in Parliament that this memorandum ever existed" + "\n\t3. shred the document or\n\t4. resign"); userChoice = sc.nextInt(); if(userChoice == 1) { System.out.println("You attempt to tough it out."); } if(userChoice == 2) { System.out.println("Well, you've bluffed them so far. Or have you?"); } if(userChoice == 3) { if (politician.hasDocument() && politician.getShredderVolume() != 100) { System.out.println("Document successfully shredded."); } else { System.out.println("Sorry but you can't destroy what you do not have!"); } } if(userChoice == 4) { System.out.println("===================================================================\n\n\t\tGAME OVER\n" + "Oh well, I suppose you only let yourself down really...\n"); numDrawn++; // Increments the number of games the player has drawn by one politician.newGame(); startLoop(); } return numDrawn; } /** getConseq @return an int calls the getConsequences method from DeputyPremier, if the severity is < 4, the player continues the game if severity is >= 4, player is sacked */ public int getConseq() { int severity = politician.getConsequences(userChoice); if (severity < 4) { System.out.println("Well you've apparently survived another day, but as you leave you hear that ..."); System.out.println(politician.getRumour()); } else { System.out.println("That's it for you. The Premier has sacked you.\n ===================================================================\n\n" + "\t\tGAME OVER\n\nEnjoy the back-bench. Would someone ask Mr Baatlit to step in please...\n"); numLost++; // Increments the number of games the player has lost by one politician.newGame(); startLoop(); } return numLost; } /** instinctCheck calls the getInstinct method from DeputyPremier and if > 6, displays message */ public void instinctCheck() { if(politician.getInstinct() >= 6) { System.out.println("Your political instinct tells you that you might be in trouble..."); } } /** trace @param String - the message use to display tracing messages shown if the variable tracing is true */ public void trace(String message) { if(tracing) { System.out.println("AWeekIsALongTime: " + message); } }}