/* * Yahtzee.java * * Created on April 21, 2008, 3:40 PM */ package yahtzeejouke; /** * * @author Mats Willemsen */ public class Yahtzee extends javax.swing.JFrame { int nummers[] = new int[5]; int restnummers[] = new int[5]; boolean filled[] = new boolean[13]; int gerold = 0; boolean haveToChoose = false; boolean picked = false; int welkeknop = 1; /** Creates new form Yahtzee */ public Yahtzee() { initComponents(); dobbel1.setEnabled(false); dobbel2.setEnabled(false); dobbel3.setEnabled(false); dobbel4.setEnabled(false); dobbel5.setEnabled(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); tabelBoven = new javax.swing.JTable(); jScrollPane2 = new javax.swing.JScrollPane(); tabelOnder = new javax.swing.JTable(); jScrollPane3 = new javax.swing.JScrollPane(); waardeKeuze = new javax.swing.JList(); dobbel1 = new javax.swing.JButton(); dobbel2 = new javax.swing.JButton(); dobbel3 = new javax.swing.JButton(); dobbel4 = new javax.swing.JButton(); dobbel5 = new javax.swing.JButton(); btnRol = new javax.swing.JButton(); btnWaarde = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); tabelBoven.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {"Enen", null}, {"Tweeen", null}, {"Drieen", null}, {"Vieren", null}, {"Vijven", null}, {"Zessen", null}, {"Subtotaal", null}, {"Extra bonus", null}, {"Totaal", null} }, new String [] { "Bovenste helft", "Speler 1" } ) { boolean[] canEdit = new boolean [] { false, true }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); tabelBoven.setColumnSelectionAllowed(true); tabelBoven.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tabelBovenMouseClicked(evt); } }); jScrollPane1.setViewportView(tabelBoven); tabelOnder.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {"Three of a kind", null}, {"Carre", null}, {"Full House", null}, {"Kleine straat", null}, {"Grote straat", null}, {"Yahtzee", null}, {"Chance", null}, {"Totaal onderste", null}, {"Totaal bovenste", null}, {"Totaal spel", null} }, new String [] { "Onderste helft", "Speler 1" } )); jScrollPane2.setViewportView(tabelOnder); waardeKeuze.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Enen", "Tweeen", "Drieen", "Vieren", "Vijven", "Zessen", "Three of a kind", "Carre", "Full House", "Kleine Straat", "Grote Straat", "Yahtzee", "Chance" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); jScrollPane3.setViewportView(waardeKeuze); dobbel1.setText("1"); dobbel1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { dobbel1ActionPerformed(evt); } }); dobbel2.setText("2"); dobbel2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { dobbel2ActionPerformed(evt); } }); dobbel3.setText("3"); dobbel3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { dobbel3ActionPerformed(evt); } }); dobbel4.setText("4"); dobbel4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { dobbel4ActionPerformed(evt); } }); dobbel5.setText("5"); dobbel5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { dobbel5ActionPerformed(evt); } }); btnRol.setText("Rol!"); btnRol.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnRolActionPerformed(evt); } }); btnWaarde.setText("Vul waarde in!"); btnWaarde.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnWaardeActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jScrollPane3) .addComponent(btnWaarde, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(btnRol, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(dobbel1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dobbel2, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dobbel3, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dobbel4, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dobbel5, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(40, 40, 40)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(22, 22, 22) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(dobbel1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(dobbel2, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(dobbel5, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(dobbel4, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(dobbel3, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnRol, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 240, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnWaarde))) .addContainerGap(106, Short.MAX_VALUE)) ); pack(); }// public void handleRol(){ if(picked == true && haveToChoose == false) { picked = false; } if(haveToChoose == false) { if(gerold == 0) { dobbel1.setEnabled(true); dobbel2.setEnabled(true); dobbel3.setEnabled(true); dobbel4.setEnabled(true); dobbel5.setEnabled(true); } if(gerold == 3) { javax.swing.JOptionPane.showMessageDialog(null, "Je moet eerst een waarde kiezen"); haveToChoose = true; return; } boolean[] getSelected = getSelected(); for(int i =0 ; i < 5; i++) { if(getSelected[i] != false) // nummers[i] = (int)(6*Math.random() + 1); nummers[0] = 1; nummers[1] = 1; nummers[2] = 1; nummers[3] = 2; nummers[4] = 2; } for(int i = 0; i < getSelected.length; i++) { switch(i) { case 0: if(getSelected[i] != false) dobbel1.setText(Integer.toString(nummers[i])); break; case 1: if(getSelected[i] != false) dobbel2.setText(Integer.toString(nummers[i])); break; case 2: if(getSelected[i] != false) dobbel3.setText(Integer.toString(nummers[i])); break; case 3: if(getSelected[i] != false) dobbel4.setText(Integer.toString(nummers[i])); break; case 4: if(getSelected[i] != false) dobbel5.setText(Integer.toString(nummers[i])); break; } } gerold++; } } public void handleGetal(int nummer) { if(filled[nummer-1] == true) { javax.swing.JOptionPane.showMessageDialog(null, "Dit vak is al in bezet"); return; } int som = 0; for(int i = 0; i < nummers.length; i++) { if(nummers[i] == nummer) { som += nummer; } } tabelBoven.setValueAt(som, nummer - 1, 1); filled[nummer - 1] = true; picked = true; haveToChoose = false; gerold = 0; resetKnoppen(); } public void resetKnoppen() { resetKnop(dobbel1); resetKnop(dobbel2); resetKnop(dobbel3); resetKnop(dobbel4); resetKnop(dobbel5); welkeknop = 1; } public void resetKnop(javax.swing.JButton button) { button.setText(String.format("%d", welkeknop)); button.setEnabled(false); welkeknop++; } public void toak() { System.arraycopy(nummers, 0, restnummers, 0, nummers.length); if(filled[6] == true) { javax.swing.JOptionPane.showMessageDialog(null,"Three of a kind is al gekozen"); return; } java.util.Arrays.sort(restnummers); for(int i = 1; i < 7; i++) { int found = searchArray(restnummers,i); if(found >= 0) { restnummers[found] = -5; found = searchArray(restnummers,i); if(found >= 0) { restnummers[found] = -5; found = searchArray(restnummers,i); if(found >= 0) { int sum = 0; for(int j = 0; j < nummers.length; j ++) { sum += nummers[j]; } tabelOnder.setValueAt(sum, 0, 1); filled[6] = true; } } } } if(filled[6] == false) tabelOnder.setValueAt(0, 0, 1); filled[6] = true; picked = true; haveToChoose = false; } public void fullhouse() { System.arraycopy(nummers, 0, restnummers, 0, nummers.length); if(filled[8] == true) { javax.swing.JOptionPane.showMessageDialog(null,"Full House is al gekozen"); return; } java.util.Arrays.sort(restnummers); for(int i = 1; i < 7; i++) { int found = searchArray(restnummers,i); if(found >= 0) { restnummers[found] = -5; found = searchArray(restnummers,i); if(found >= 0) { restnummers[found] = -5; found = searchArray(restnummers,i); if(found >= 0){ for(int j = 0; j < 7; j++) { if(j == i) continue; found = searchArray(restnummers,j); if(found >= 0) { restnummers[found] = -5; found = searchArray(restnummers,j); if(found >= 0) { tabelOnder.setValueAt(25,2,1); filled[8] = true; } } } } } } } if(filled[8] == false) tabelOnder.setValueAt(0,2,1); filled[8] = true; picked = true; haveToChoose = false; } public void carre() { System.arraycopy(nummers, 0, restnummers, 0, nummers.length); if(filled[7] == true) { javax.swing.JOptionPane.showMessageDialog(null,"Carre is al gekozen"); return; } java.util.Arrays.sort(restnummers); for(int i = 1; i < 7; i++) { int found = searchArray(restnummers,i); if(found >= 0) { restnummers[found] = -5; found = searchArray(restnummers,i); if(found >= 0) { restnummers[found] = -5; found = searchArray(restnummers,i); if(found >= 0) { restnummers[found] = -5; found = searchArray(restnummers,i); if(found >= 0) { int sum = 0; for(int j = 0; j < nummers.length; j ++) { sum += nummers[j]; } tabelOnder.setValueAt(sum, 1, 1); filled[7] = true; } } } } } if(filled[7] == false) tabelOnder.setValueAt(0, 1, 1); filled[7] = true; picked = true; haveToChoose = false; } public int searchArray(int[] haystack, int needle) { for(int i = 0; i < haystack.length; i++) { if(haystack[i] == needle) { return i; } } return -5; } public void handleKeuze() { if(!picked) { switch(waardeKeuze.getSelectedIndex()) { case 0: handleGetal(1); break; case 1: handleGetal(2); break; case 2: handleGetal(3); break; case 3: handleGetal(4); break; case 4: handleGetal(5); break; case 5: handleGetal(6); break; case 6: toak(); break; case 7: carre(); break; case 8: fullhouse(); /* case 9: kstraat(); case 10: gstraat(); case 11: yahtzee(); case 12: chance(); */ } } else { javax.swing.JOptionPane.showMessageDialog(null, "Je moet eerst weer dobbelen!"); } } // btnRol.setEnabled(false); public void dobbel(java.awt.event.ActionEvent evt) { ((javax.swing.JButton)evt.getSource()).setEnabled(false); } public boolean[] getSelected() { boolean[] selected = new boolean[5]; selected[0] = dobbel1.isEnabled(); selected[1] = dobbel2.isEnabled(); selected[2] = dobbel3.isEnabled(); selected[3] = dobbel4.isEnabled(); selected[4] = dobbel5.isEnabled(); return selected; } private void tabelBovenMouseClicked(java.awt.event.MouseEvent evt) { } private void btnRolActionPerformed(java.awt.event.ActionEvent evt) { handleRol(); } private void dobbel1ActionPerformed(java.awt.event.ActionEvent evt) { dobbel(evt); } private void dobbel2ActionPerformed(java.awt.event.ActionEvent evt) { dobbel(evt); } private void dobbel3ActionPerformed(java.awt.event.ActionEvent evt) { dobbel(evt); } private void dobbel4ActionPerformed(java.awt.event.ActionEvent evt) { dobbel(evt); } private void dobbel5ActionPerformed(java.awt.event.ActionEvent evt) { dobbel(evt); } private void btnWaardeActionPerformed(java.awt.event.ActionEvent evt) { handleKeuze(); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Yahtzee().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton btnRol; private javax.swing.JButton btnWaarde; private javax.swing.JButton dobbel1; private javax.swing.JButton dobbel2; private javax.swing.JButton dobbel3; private javax.swing.JButton dobbel4; private javax.swing.JButton dobbel5; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTable tabelBoven; private javax.swing.JTable tabelOnder; private javax.swing.JList waardeKeuze; // End of variables declaration }