/************************************************************************\ * ----------------------------- * * Introduction to Programming * * ----------------------------- * * Name: Thomas Zaki * * Last Modified: 05/12/08 * * Title: QuoridorG.java * * Description: Main Game Class * * * \************************************************************************/ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class QuoridorG { public static void main (String [] beans) { JFrame frame = new JFrame(); frame.setTitle("Quoridor : By Thomas Zaki"); //frame.setSize(700, 500); frame.setSize(693, 498); frame.setFocusable(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); Scanner in = new Scanner(System.in); //used to store selection from Scanner String choice = new String(); //Booleans to test whether game is over, // if a piece was moved, // or if a wall was placed boolean isGameOver = false; boolean moved = false; boolean placed = false; //Create Players for the game and add the first two // to the array list because they are always used int numPlayers = 2; final ArrayList<Player> players = new ArrayList<Player>(); Player p1 = new Player(4, 8, Player.UP, "Player 1", "1", 1, 10, Color.RED); players.add(p1); //note that there is a slight difference in the definition of // the winning line for DOWN and RIGHT (indicated by _G). // This is caused by the graphical representation. Player p2 = new Player(4, 0, Player.DOWN_G, "Player 2", "2", 2, 10, Color.BLUE); players.add(p2); Player p3 = new Player(0, 4, Player.RIGHT_G, "Player 3", "3", 3, 5, Color.GREEN); Player p4 = new Player(8, 4, Player.LEFT, "Player 4", "4", 4, 5, Color.YELLOW); //Create an object that stores the current player // taking a turn to simplify the code for each turn Player currentPlayer = p1; Player winner = new Player(); int player = 1; JOptionPane.showMessageDialog(null, "Welcome to Quoridor!", null, 1); numPlayers = Integer.parseInt(JOptionPane.showInputDialog( null, "Enter number of players [2 or 4]", "New Game Setup", 1)); //edit players and some player stats if there are 4 players if(numPlayers == 4) { p1.setNumWalls(5); p2.setNumWalls(5); players.add(p3); players.add(p4); } //Get player names for(int i = 0; i < players.size(); i++) { players.get(i).setName(JOptionPane.showInputDialog( null, "Enter Player " + (i + 1) + "'s Name", "New Game Setup", 1)); } final BoardComponent board = new BoardComponent(players); final SidePanel side = new SidePanel(board, players); board.add(side); frame.add(board, BorderLayout.CENTER); frame.add(side, BorderLayout.EAST); class MoveListener implements KeyListener { public void keyPressed(KeyEvent e) { boolean moved = false; if(e.getKeyCode() == KeyEvent.VK_UP) moved = players.get(side.getPlayer() - 1).movePiece("UP", board); if(e.getKeyCode() == KeyEvent.VK_DOWN) moved = players.get(side.getPlayer() - 1).movePiece("DOWN", board); if(e.getKeyCode() == KeyEvent.VK_LEFT) moved = players.get(side.getPlayer() - 1).movePiece("LEFT", board); if(e.getKeyCode() == KeyEvent.VK_RIGHT) moved = players.get(side.getPlayer() - 1).movePiece("RIGHT", board); //System.out.println(moved); if(moved) { if(players.get(side.getPlayer() - 1).checkWin()) { board.repaint(); JOptionPane.showMessageDialog( null, "Congratulations, " + players.get(side.getPlayer() - 1).getName() + ", YOU WIN!", null, 1); System.exit(-1); } side.incPlayer(); if (side.getPlayer() > players.size()) side.setPlayer(1); } board.repaint(); side.refresh(); } public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) {} } KeyListener move = new MoveListener(); frame.addKeyListener(move); frame.setVisible(true); }//end main }//end Quoridor class