public void update(Observable o, Object arg) { repaint(); if (arg == null) return; if (arg.equals("winner")) { JOptionPane.showMessageDialog(null, "Le " + ((Joueur) o).nom() + " remporte la partie"); JOptionPane.showMessageDialog(null, "Fin de la partie"); } else if (arg.equals("argent")) pc.refresh(); else if (arg.equals("suivant")) JOptionPane.showMessageDialog(null, "Au tour du joueur suivant"); else if (arg.equals("elimine")) JOptionPane.showMessageDialog(null, "Le " + ((Joueur) o).nom() + " est éliminé de la partie"); else { if (arg instanceof TirerDes) { TirerDes e = (TirerDes) arg; JOptionPane.showMessageDialog(null, "Vous avez fait : " + e.tir1() + "."); if (e.tirDouble() != 0) JOptionPane.showMessageDialog( null, "Double ! Vous allez aussi avancer de : " + e.tirDouble() + " cases."); } else if (arg instanceof TirerCarte) JOptionPane.showMessageDialog( null, "Vous tirez : \"" + ((TirerCarte) arg).carte().nom() + "\""); else if (arg instanceof Emprisonner) JOptionPane.showMessageDialog(null, "Allez en prison !"); else if (arg instanceof PayerImpot && !((PayerImpot) arg).destinataire().equals(m.courant())) JOptionPane.showMessageDialog(null, ((PayerImpot) arg).nom()); else if (arg instanceof Depenser) JOptionPane.showMessageDialog(null, "Vous dépensez : " + ((Depenser) arg).somme() + "F"); else if (arg instanceof Recette) JOptionPane.showMessageDialog(null, "Vous gagnez : " + ((Recette) arg).somme() + "F"); else if (arg instanceof Achat && ((Achat) arg).peutPayer()) JOptionPane.showMessageDialog(null, "Vous dépensez : " + ((Achat) arg).somme() + "F"); else if (arg instanceof Achat && !((Achat) arg).peutPayer()) JOptionPane.showMessageDialog(null, "Vous ne possédez pas assez d'argent"); else if (!(arg instanceof DeplacementRelatif || arg instanceof Deplacement || arg instanceof Choix || arg instanceof Depenser || arg instanceof Carte || arg instanceof PayerImpot)) JOptionPane.showMessageDialog(null, arg.toString()); } }
/** Crée les cases une à une */ public void addComponents(Container p) { Case curr = m.getDepart(); String groupe; p.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); int lc = largeur / 8; int hc = hauteur / 8; c.gridy = 10; c.gridx = 10; CaseGraphique caseG = new CaseGraphique(lc, hc, curr, 0, m); caseG.setPreferredSize(new Dimension(lc, hc)); caseG.setLast(); p.add(caseG, c); curr = curr.suivante(); cases.add(caseG.clone()); lc = largeur / 12; for (int i = 9; i > 0; i--) { c.gridx = i; caseG = new CaseGraphique(lc, hc, curr, 0, m); caseG.setPreferredSize(new Dimension(lc, hc)); p.add(caseG, c); curr = curr.suivante(); cases.add(caseG.clone()); } lc = largeur / 8; c.gridy = 10; c.gridx = 0; caseG = new CaseGraphique(lc, hc, curr, 90, m); caseG.setPreferredSize(new Dimension(lc, hc)); caseG.setLast(); p.add(caseG, c); curr = curr.suivante(); cases.add(caseG.clone()); lc = largeur / 12; for (int i = 9; i > 0; i--) { c.gridy = i; caseG = new CaseGraphique(lc, hc, curr, 90, m); caseG.setPreferredSize(new Dimension(hc, lc)); p.add(caseG, c); curr = curr.suivante(); cases.add(caseG.clone()); } lc = largeur / 8; c.gridy = 0; c.gridx = 0; caseG = new CaseGraphique(lc, hc, curr, 180, m); caseG.setPreferredSize(new Dimension(lc, hc)); caseG.setLast(); p.add(caseG, c); curr = curr.suivante(); cases.add(caseG.clone()); lc = largeur / 12; for (int i = 1; i < 10; i++) { c.gridx = i; caseG = new CaseGraphique(lc, hc, curr, 180, m); caseG.setPreferredSize(new Dimension(lc, hc)); p.add(caseG, c); curr = curr.suivante(); cases.add(caseG.clone()); } lc = largeur / 8; c.gridy = 0; c.gridx = 10; caseG = new CaseGraphique(lc, hc, curr, -90, m); caseG.setPreferredSize(new Dimension(lc, hc)); caseG.setLast(); p.add(caseG, c); curr = curr.suivante(); cases.add(caseG.clone()); lc = largeur / 12; for (int i = 1; i < 10; i++) { c.gridy = i; caseG = new CaseGraphique(lc, hc, curr, -90, m); caseG.setPreferredSize(new Dimension(hc, lc)); p.add(caseG, c); curr = curr.suivante(); cases.add(caseG.clone()); } pc = new PanneauCentral(m); pc.setPreferredSize(new Dimension(largeur * 8 / 12, hauteur * 8 / 12)); c.gridy = 1; c.gridx = 1; c.fill = GridBagConstraints.BOTH; c.gridwidth = 9; c.gridheight = 9; p.add(pc, c); }