librejack

Blackjack clone written in java
git clone https://github.com/michaelneuper/librejack.git
README | Files | Log | Refs | LICENSE

commit 70bc23d69d140855498ac05ec97d984194851b9d
parent 64b5f4389dc4bf2da415b617b2a7cba2e1d4debd
Author: Michael Neuper <73108749+michaelneuper@users.noreply.github.com>
Date:   Mon, 17 Oct 2022 14:51:03 +0200

fix bugs

Diffstat:
Msrc/view/GUI.form | 64++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
Msrc/view/GUI.java | 84+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 134 insertions(+), 14 deletions(-)

diff --git a/src/view/GUI.form b/src/view/GUI.form @@ -4,6 +4,9 @@ <Properties> <Property name="defaultCloseOperation" type="int" value="3"/> <Property name="title" type="java.lang.String" value="librejack"/> + <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> + <Color blue="0" green="66" red="0" type="rgb"/> + </Property> </Properties> <SyntheticProperties> <SyntheticProperty name="formSizePolicy" type="int" value="1"/> @@ -48,6 +51,9 @@ </Container> <Component class="javax.swing.JLabel" name="jLabelBalance"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="14" style="1"/> + </Property> <Property name="text" type="java.lang.String" editor="org.netbeans.modules.form.RADConnectionPropertyEditor"> <Connection code="&quot;Balance: &quot; + game.getBalance()" type="code"/> </Property> @@ -60,16 +66,25 @@ </Component> <Component class="javax.swing.JButton" name="jButtonDouble"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="18" style="1"/> + </Property> <Property name="text" type="java.lang.String" value="DOUBLE DOWN"/> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButtonDoubleActionPerformed"/> + </Events> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="960" y="510" width="190" height="110"/> + <AbsoluteConstraints x="960" y="510" width="190" height="120"/> </Constraint> </Constraints> </Component> <Component class="javax.swing.JButton" name="jButtonStand"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="18" style="1"/> + </Property> <Property name="text" type="java.lang.String" value="STAND"/> </Properties> <Events> @@ -83,8 +98,14 @@ </Component> <Component class="javax.swing.JButton" name="jButtonHit"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="18" style="1"/> + </Property> <Property name="text" type="java.lang.String" value="HIT"/> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButtonHitActionPerformed"/> + </Events> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> <AbsoluteConstraints x="960" y="180" width="190" height="110"/> @@ -93,6 +114,9 @@ </Component> <Component class="javax.swing.JButton" name="jButtonDeal"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="48" style="1"/> + </Property> <Property name="text" type="java.lang.String" value="DEAL"/> </Properties> <Events> @@ -106,6 +130,9 @@ </Component> <Component class="javax.swing.JButton" name="jButtonBetAmount"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="14" style="1"/> + </Property> <Property name="text" type="java.lang.String" value="Change Bet Amount"/> </Properties> <Events> @@ -119,6 +146,9 @@ </Component> <Component class="javax.swing.JLabel" name="jLabelCurrentBet"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="14" style="1"/> + </Property> <Property name="text" type="java.lang.String" editor="org.netbeans.modules.form.RADConnectionPropertyEditor"> <Connection code="&quot;Current Bet: &quot; + game.getBet()" type="code"/> </Property> @@ -131,20 +161,23 @@ </Component> <Component class="javax.swing.JLabel" name="jLabelResult"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="48" style="1"/> + </Property> <Property name="text" type="java.lang.String" editor="org.netbeans.modules.form.RADConnectionPropertyEditor"> <Connection code="game.checkWhoWins()" type="code"/> </Property> </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="120" y="30" width="460" height="110"/> + <AbsoluteConstraints x="120" y="30" width="1120" height="130"/> </Constraint> </Constraints> </Component> <Component class="javax.swing.JLabel" name="jLabelDisplayDealerHand"> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="50" y="290" width="450" height="160"/> + <AbsoluteConstraints x="70" y="290" width="440" height="160"/> </Constraint> </Constraints> </Component> @@ -156,27 +189,46 @@ </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="570" y="290" width="400" height="150"/> + <AbsoluteConstraints x="530" y="290" width="400" height="150"/> </Constraint> </Constraints> </Component> <Component class="javax.swing.JLabel" name="jLabelDealerHand"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="36" style="1"/> + </Property> <Property name="text" type="java.lang.String" value="Dealer&apos;s Hand:"/> </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="120" y="250" width="110" height="30"/> + <AbsoluteConstraints x="70" y="250" width="300" height="30"/> </Constraint> </Constraints> </Component> <Component class="javax.swing.JLabel" name="jLabelPlayerHand"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Dialog" size="36" style="1"/> + </Property> <Property name="text" type="java.lang.String" value="Your Hand:"/> </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="590" y="250" width="90" height="30"/> + <AbsoluteConstraints x="540" y="250" width="240" height="30"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JButton" name="jButtonExit"> + <Properties> + <Property name="text" type="java.lang.String" value="EXIT"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButtonExitActionPerformed"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> + <AbsoluteConstraints x="1132" y="713" width="120" height="50"/> </Constraint> </Constraints> </Component> diff --git a/src/view/GUI.java b/src/view/GUI.java @@ -40,9 +40,11 @@ public class GUI extends javax.swing.JFrame { jLabelDisplayPlayerHand = new javax.swing.JLabel(); jLabelDealerHand = new javax.swing.JLabel(); jLabelPlayerHand = new javax.swing.JLabel(); + jButtonExit = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("librejack"); + setForeground(new java.awt.Color(0, 102, 0)); getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); @@ -58,12 +60,20 @@ public class GUI extends javax.swing.JFrame { getContentPane().add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(710, 110, -1, -1)); + jLabelBalance.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N jLabelBalance.setText("Balance: " + game.getBalance()); getContentPane().add(jLabelBalance, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 470, 220, 40)); + jButtonDouble.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N jButtonDouble.setText("DOUBLE DOWN"); - getContentPane().add(jButtonDouble, new org.netbeans.lib.awtextra.AbsoluteConstraints(960, 510, 190, 110)); + jButtonDouble.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonDoubleActionPerformed(evt); + } + }); + getContentPane().add(jButtonDouble, new org.netbeans.lib.awtextra.AbsoluteConstraints(960, 510, 190, 120)); + jButtonStand.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N jButtonStand.setText("STAND"); jButtonStand.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -72,9 +82,16 @@ public class GUI extends javax.swing.JFrame { }); getContentPane().add(jButtonStand, new org.netbeans.lib.awtextra.AbsoluteConstraints(960, 340, 190, 110)); + jButtonHit.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N jButtonHit.setText("HIT"); + jButtonHit.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonHitActionPerformed(evt); + } + }); getContentPane().add(jButtonHit, new org.netbeans.lib.awtextra.AbsoluteConstraints(960, 180, 190, 110)); + jButtonDeal.setFont(new java.awt.Font("Dialog", 1, 48)); // NOI18N jButtonDeal.setText("DEAL"); jButtonDeal.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -83,6 +100,7 @@ public class GUI extends javax.swing.JFrame { }); getContentPane().add(jButtonDeal, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 570, 460, 120)); + jButtonBetAmount.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N jButtonBetAmount.setText("Change Bet Amount"); jButtonBetAmount.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -91,29 +109,43 @@ public class GUI extends javax.swing.JFrame { }); getContentPane().add(jButtonBetAmount, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 580, 220, 60)); + jLabelCurrentBet.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N jLabelCurrentBet.setText("Current Bet: " + game.getBet()); getContentPane().add(jLabelCurrentBet, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 520, 200, 50)); + jLabelResult.setFont(new java.awt.Font("Dialog", 1, 48)); // NOI18N jLabelResult.setText(game.checkWhoWins()); - getContentPane().add(jLabelResult, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 30, 460, 110)); - getContentPane().add(jLabelDisplayDealerHand, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 290, 450, 160)); + getContentPane().add(jLabelResult, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 30, 1120, 130)); + getContentPane().add(jLabelDisplayDealerHand, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 290, 440, 160)); jLabelDisplayPlayerHand.setText(game.displayPlayerHand()); - getContentPane().add(jLabelDisplayPlayerHand, new org.netbeans.lib.awtextra.AbsoluteConstraints(570, 290, 400, 150)); + getContentPane().add(jLabelDisplayPlayerHand, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 290, 400, 150)); + jLabelDealerHand.setFont(new java.awt.Font("Dialog", 1, 36)); // NOI18N jLabelDealerHand.setText("Dealer's Hand:"); - getContentPane().add(jLabelDealerHand, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 250, 110, 30)); + getContentPane().add(jLabelDealerHand, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 250, 300, 30)); + jLabelPlayerHand.setFont(new java.awt.Font("Dialog", 1, 36)); // NOI18N jLabelPlayerHand.setText("Your Hand:"); - getContentPane().add(jLabelPlayerHand, new org.netbeans.lib.awtextra.AbsoluteConstraints(590, 250, 90, 30)); + getContentPane().add(jLabelPlayerHand, new org.netbeans.lib.awtextra.AbsoluteConstraints(540, 250, 240, 30)); + + jButtonExit.setText("EXIT"); + jButtonExit.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonExitActionPerformed(evt); + } + }); + getContentPane().add(jButtonExit, new org.netbeans.lib.awtextra.AbsoluteConstraints(1132, 713, 120, 50)); pack(); }// </editor-fold>//GEN-END:initComponents private void jButtonDealActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDealActionPerformed + jLabelResult.setText(""); // clear the last result + jLabelBalance.setText(Double.toString(game.getBalance())); // update the balance game.startRound(); jLabelDisplayDealerHand.setText(game.displayDealerFirstCard()); - jLabelDisplayPlayerHand.setText(game.displayPlayerHand()); + printPlayerHand(); }//GEN-LAST:event_jButtonDealActionPerformed private void jButtonBetAmountActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonBetAmountActionPerformed @@ -122,9 +154,35 @@ public class GUI extends javax.swing.JFrame { }//GEN-LAST:event_jButtonBetAmountActionPerformed private void jButtonStandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonStandActionPerformed - // TODO add your handling code here: + + printDealerHand(); + jLabelResult.setText(game.checkWhoWins()); + printDealerHand(); + jLabelBalance.setText(Double.toString(game.getBalance())); // update the balance }//GEN-LAST:event_jButtonStandActionPerformed + private void jButtonDoubleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDoubleActionPerformed + game.setBet(game.getBet() * 2); // double the bet + game.hitPlayer(); + game.setBet(game.getBet() / 2); // reset bet back to original bet + printPlayerHand(); + printDealerHand(); + jLabelResult.setText(game.checkWhoWins()); + jLabelBalance.setText(Double.toString(game.getBalance())); // update the balance + }//GEN-LAST:event_jButtonDoubleActionPerformed + + private void jButtonHitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonHitActionPerformed + game.hitPlayer(); + printPlayerHand(); + printDealerHand(); + jLabelResult.setText(game.checkWhoWins()); + jLabelBalance.setText(Double.toString(game.getBalance())); // update the balance + }//GEN-LAST:event_jButtonHitActionPerformed + + private void jButtonExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonExitActionPerformed + + }//GEN-LAST:event_jButtonExitActionPerformed + /** * @param args the command line arguments */ @@ -159,11 +217,21 @@ public class GUI extends javax.swing.JFrame { } }); } + + public void printDealerHand() { + jLabelDisplayDealerHand.setText(game.displayDealerHand()); + } + + public void printPlayerHand() { + jLabelDisplayPlayerHand.setText(game.displayPlayerHand()); + + } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonBetAmount; private javax.swing.JButton jButtonDeal; private javax.swing.JButton jButtonDouble; + private javax.swing.JButton jButtonExit; private javax.swing.JButton jButtonHit; private javax.swing.JButton jButtonStand; private javax.swing.JLabel jLabelBalance;