public void run() { while (!socket.isClosed()) { TickPacket tp = null; try { tp = (TickPacket) (inputStream.readObject()); List<Player> players = Arrays.asList(tp.getPlayers()); List<Pickup> pickups = Arrays.asList(tp.getPickups()); bc.initForGame(players, pickups); bc.repaint(); ScoreBoardModel nsbm = new ScoreBoardModel(players); ScoreBoardUpdate sbu = new ScoreBoardUpdate(scoreBoard, nsbm); SwingUtilities.invokeLater(sbu); } catch (Exception ex) { ex.printStackTrace(); } } }
private void newGame() { NewGameDialog ngd = new NewGameDialog(); goc = new GameOfCluedo(); goc.startGame(ngd.getPlayers("New Game")); can_board.setBoard(goc.getBoard()); showButtons(); enableButtons(); btn_guess.setEnabled(false); ImageIcon img = new ImageIcon(myPicture[goc.getCurrentPlayer().getCharacter().ordinal()]); picLabel.setIcon(img); txt_name.setText(goc.getCurrentPlayer().getName()); // JOptionPane.showMessageDialog(this, goc.getCurrentPlayer().getName() + "'s Turn"); repaint(); }
public void runGame(String host, int port) { try { socket = new Socket(host, port); outputStream = new ObjectOutputStream(socket.getOutputStream()); inputStream = new ObjectInputStream(socket.getInputStream()); } catch (IOException ex) { ex.printStackTrace(); System.exit(1); } waitingThread = new Thread(this); waitingThread.start(); bc.addKeyListener(this); }
private void accusePressed() { GuessDialog ac = new GuessDialog(); if (goc.accuse(ac.getGuess("Accuse"))) { System.out.println("You win"); goc.setWinner(goc.getCurrentPlayer()); // Correct set winner and end game endTurn(); } else { System.out.println("You lost"); String playerName = goc.getCurrentPlayer().getName(); goc.playerLost(goc.getCurrentPlayer()); // Wrong remove player from play endTurn(); if (goc != null && !goc.checkGameOver()) { can_board.setBoard(goc.getBoard()); JOptionPane.showMessageDialog(this, playerName + " has been eliminated"); } } }
private void movePressed() { if (!moveSelected && goc.canMove()) { goc.die.roll(); lbl_dice.setIcon(goc.die.getDiceIcon()); if (goc.highlightValidMoves()) { btn_guess.setEnabled(false); btn_accuse.setEnabled(false); moveSelected = true; can_board.setBoard(goc.getBoard()); } else { btn_move.setEnabled(false); JOptionPane.showMessageDialog(this, " There are no valid moves"); if (!goc.getPlayerPos().isRoom()) { endTurn(); } } } }
private void endTurn() { if (goc.checkGameOver()) { showGameOver(); return; } goc.endTurn(); can_board.setBoard(goc.getBoard()); ImageIcon img = new ImageIcon(myPicture[goc.getCurrentPlayer().getCharacter().ordinal()]); picLabel.setIcon(img); txt_name.setText(goc.getCurrentPlayer().getName()); // if new player not in room disable guess if (!goc.getPlayerPos().isRoom()) { btn_guess.setEnabled(false); } else { btn_guess.setEnabled(true); } btn_move.setEnabled(true); // JOptionPane.showMessageDialog(this, goc.getCurrentPlayer().getName() + "'s Turn"); }
public boolean showGameOver() { int popup = 0; if (goc.getWinner() == null) { popup = JOptionPane.showConfirmDialog( null, "Game Over!\nAll players eliminated.\n\nDo you want to play again?", "Game Over", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); } else { popup = JOptionPane.showConfirmDialog( null, "Game Over!\n" + goc.getWinner().getName() + " has guessed the envelope.\n\nDo you want to play again?", goc.getWinner().getName() + " Won", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); } if (popup == JOptionPane.YES_OPTION) { newGame(); return true; } else { goc = null; can_board.setBoard(null); picLabel.setIcon(new ImageIcon(myPicture[myPicture.length - 1])); txt_name.setText("Dr. Black"); disableButtons(); hideButtons(); repaint(); } return false; }
public CluedoFrame() { /** Board Settings */ super("Cluedo"); CluedoFrame frm_this = this; ActionListener btnListener = new BtnListener(); setLayout(new BorderLayout()); // use border layour // Set cursor /*BufferedImage cursorImage = null; try{ cursorImage = ImageIO.read(new File("src/Images/cursor.png")); }catch(IOException e){System.out.println("Error loading cursor image: cursor.png");} setCursor(Toolkit.getDefaultToolkit().createCustomCursor(cursorImage, new Point(0,0), "Cursor"));*/ /** MenuBar */ // Declare menu items JMenuBar mbar_mainMenu; JMenu menu_file, menu_game; JMenuItem mitem_newGame, mitem_exitGame; // Create the menu bar. mbar_mainMenu = new JMenuBar(); add(mbar_mainMenu, BorderLayout.NORTH); // Add menus to the menu bar menu_file = new JMenu("File"); menu_game = new JMenu("Game"); mbar_mainMenu.add(menu_file); mbar_mainMenu.add(menu_game); // Add buttons to menu_file mitem_newGame = new JMenuItem("New Game"); mitem_exitGame = new JMenuItem("Exit"); menu_file.add(mitem_newGame); menu_file.add(mitem_exitGame); // Action listeners mitem_newGame.setActionCommand("NEW GAME"); mitem_newGame.addActionListener(btnListener); mitem_exitGame.setActionCommand("EXIT GAME"); mitem_exitGame.addActionListener(btnListener); /** Canvas */ can_board = new BoardCanvas(); add(can_board, BorderLayout.CENTER); // add canvas can_board.addMouseListener(new BoardMouseListener()); /** Side Panel */ JPanel pnl_character, pnl_option, pnl_side, pnl_dice; Dimension btnSize = new Dimension(170, 32); pnl_side = new JPanel() { private static final long serialVersionUID = 1L; @Override protected void paintComponent(Graphics g) { super.paintComponent(g); drawBackground(g, getWidth(), getHeight()); } }; add(pnl_side, BorderLayout.EAST); /* * Grid Constraint */ GridBagConstraints lay_gridConst = new GridBagConstraints(); lay_gridConst.fill = GridBagConstraints.BOTH; lay_gridConst.gridx = 0; lay_gridConst.gridy = 0; lay_gridConst.insets = new Insets(5, 5, 5, 5); lay_gridConst.ipadx = 5; lay_gridConst.ipady = 5; /* * Character Panel */ pnl_character = new JPanel(); pnl_character.setLayout(new GridBagLayout()); pnl_character.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED)); pnl_character.setBackground(new Color(0, 0, 0, 50)); btn_viewCards = new JButton("View Cards"); btn_viewCards.setPreferredSize(btnSize); btn_viewCards.setActionCommand("CARDS"); // Player's Character /** Player's Character Image */ try { myPicture = new BufferedImage[] { ImageIO.read(new File("src/Images/Scarlett.jpg")), ImageIO.read(new File("src/Images/Mustard.jpg")), ImageIO.read(new File("src/Images/White.jpg")), ImageIO.read(new File("src/Images/Green.jpg")), ImageIO.read(new File("src/Images/Peacock.jpg")), ImageIO.read(new File("src/Images/Plum.jpg")), ImageIO.read(new File("src/Images/Blank.jpg")) }; ImageIcon img = new ImageIcon(myPicture[myPicture.length - 1]); picLabel = new JLabel(img); pnl_character.add(picLabel, lay_gridConst); } catch (IOException e) { e.printStackTrace(); } lay_gridConst.gridy = 1; txt_name = new JTextField("Dr. Black"); txt_name.setEditable(false); pnl_character.add(txt_name, lay_gridConst); lay_gridConst.gridy = 2; pnl_character.add(btn_viewCards, lay_gridConst); /* * Option panel */ pnl_option = new JPanel(); pnl_option.setLayout(new GridBagLayout()); pnl_option.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED)); pnl_option.setBackground(new Color(0, 0, 0, 50)); // Buttons btn_viewCards.addActionListener(btnListener); btn_viewCards.setMnemonic(KeyEvent.VK_V); btn_move = new JButton("Move"); btn_move.setPreferredSize(btnSize); btn_move.setActionCommand("MOVE"); btn_move.addActionListener(btnListener); btn_move.setMnemonic(KeyEvent.VK_M); btn_guess = new JButton("Guess"); btn_guess.setPreferredSize(btnSize); btn_guess.setActionCommand("GUESS"); btn_guess.addActionListener(btnListener); btn_guess.setMnemonic(KeyEvent.VK_G); btn_accuse = new JButton("Accuse"); btn_accuse.setPreferredSize(btnSize); btn_accuse.setActionCommand("ACCUSE"); btn_accuse.addActionListener(btnListener); btn_accuse.setMnemonic(KeyEvent.VK_A); // Initilise btns as disabled btn_viewCards.setEnabled(false); btn_move.setVisible(false); btn_guess.setVisible(false); btn_accuse.setVisible(false); // lay_gridConst.gridy = 0; pnl_option.add(btn_move, lay_gridConst); lay_gridConst.gridy = 1; pnl_option.add(btn_guess, lay_gridConst); lay_gridConst.gridy = 2; pnl_option.add(btn_accuse, lay_gridConst); lay_gridConst.gridy = 3; lay_gridConst.weighty = 1.0; pnl_option.add(new JLabel(), lay_gridConst); /* * Dice panel */ pnl_dice = new JPanel(); pnl_dice.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED)); pnl_dice.setBackground(new Color(255, 255, 255, 255)); lbl_dice = new JLabel(); lbl_dice.setIcon(new ImageIcon("src/Images/1.png")); pnl_dice.add(lbl_dice); // Add stuff to main panel pnl_side.setLayout(new GridBagLayout()); lay_gridConst.weightx = 0.5; lay_gridConst.weighty = 0.0; lay_gridConst.insets = new Insets(15, 15, 15, 15); lay_gridConst.gridy = 0; pnl_side.add(pnl_character, lay_gridConst); lay_gridConst.gridy = 1; lay_gridConst.weighty = 1; pnl_side.add(pnl_option, lay_gridConst); lay_gridConst.weightx = 0; lay_gridConst.weighty = 0; lay_gridConst.gridy = 2; pnl_side.add(pnl_dice, lay_gridConst); // Background try { backTexture = ImageIO.read(new File("src/Images/MenuTexture.jpg")); } catch (IOException e) { } pack(); setResizable(true); setVisible(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); // XXX setMinimumSize(new Dimension(800, 600)); }
public void dispose() { timeTicker.cancel(); autoPlayTimer.cancel(); game.removeListener(gameListener); gameCanvas.dispose(); }