2013 Token Pass
<< 2013 DownloadInfo | APQuestionsTrailIndex | 2013 GridWorldUtilities >>
Click here to see the questions from 2013
TokenPassTester.java
// Updated March 2, 2023 Chris Thiel, OFMCap import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.Frame; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class TokenPassTester extends Frame implements ActionListener { private Button exBtn, distBtn, newBtn; private TextField num; private Label message; private TokenPass tp; private Panel cp; public TokenPassTester() { super("Token Pass Tester"); setSize(800,600); exBtn = new Button("Example"); distBtn = new Button("Distribute"); newBtn = new Button("New Game"); exBtn.addActionListener(this); distBtn.addActionListener(this); newBtn.addActionListener(this); num = new TextField("4"); setLayout(new BorderLayout()); Panel n=new Panel(); n.setLayout(new GridLayout(0,5)); n.add(exBtn); n.add(distBtn); n.add(num); n.add(new Label(" Players")); n.add(newBtn); add(BorderLayout.NORTH, n); message = new Label("hi"); add(BorderLayout.SOUTH, message); this.addWindowListener(new WindowListener() { public void windowClosing(WindowEvent e) {System.exit(0);} public void windowClosed(WindowEvent e) {} public void windowOpened(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} }); } @Override public void actionPerformed(ActionEvent e) { Object btn = e.getSource(); if (btn==exBtn){ message.setText("Example Button pressed"); tp= new TokenPass(4); int[] b={3,2,6,10}; tp.setTokens(b); tp.setActive(2); repaint(); } if (btn==distBtn){ message.setText("Distribute Button pressed"); tp.distributeCurrentPlayerTokens(); int next = (1 + tp.getCurrentPlayer()) % tp.getBoard().length; tp.setActive(next); repaint(); } if (btn==newBtn){ message.setText("New Game Button pressed"); int p=Integer.parseInt(num.getText()); tp = new TokenPass(p); repaint(); } } public void paint(Graphics g) { if (tp==null) return; g.setColor(Color.WHITE); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(Color.BLUE); int n = tp.getBoard().length; for (int i=0; i<n; i++){ g.drawString ("Player "+i, i*100+50, 160); g.drawString(tp.getBoard()[i]+" tokens", i*100+50, 200); if(i==tp.getCurrentPlayer()) g.drawString("current", i*100+50, 145); } } public static void main(String[] args) { TokenPassTester app= new TokenPassTester(); app.setVisible(true); } }
TokenPass.java
public class TokenPass { private int[] board; private int currentPlayer; /** Creates the board array to be of size playerCount and fills it with * random integer values from 1 to 10, inclusive. Initializes currentPlayer to a * random integer value in the range between 0 and playerCount-1, inclusive. * @param playerCount the number of players */ public TokenPass(int playerCount) { /* to be implemented in part (a) */ } /** Distributes the tokens from the current player's position one at a time to each player in * the game. Distribution begins with the next position and continues until all the tokens * have been distributed. If there are still tokens to distribute when the player at the * highest position is reached, the next token will be distributed to the player at position 0. * Precondition: the current player has at least one token. * Postcondition: the current player has not changed. */ public void distributeCurrentPlayerTokens() { /* to be implemented in part (b) */ } public void setTokens(int[] tArr) { this.board =tArr; } public void setActive(int i) { this.currentPlayer = i; } public int[] getBoard() { return board; } public int getCurrentPlayer() { return currentPlayer; } }