Skip to content

Instantly share code, notes, and snippets.

@Michael0x2a
Created July 23, 2015 04:50
Show Gist options
  • Save Michael0x2a/46d807f9145bc15576af to your computer and use it in GitHub Desktop.
Save Michael0x2a/46d807f9145bc15576af to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Feedback: Game13.java</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/0.0.1/prism.min.css" rel="stylesheet" />
<style type="text/css">
* {
box-sizing: border-box;
}
body {
padding:1em;
font-family: Arial, sans-serif;
font-size: 16px;
}
.wrapper {
display: block;
min-width: 40em;
max-width: 60em;
margin: 0 auto;
}
h1 {
margin-bottom: 0.25em;
}
h1 + p {
margin-bottom: 2em;
margin-left: 0;
color: #888;
}
.line {
display: block;
width: 100%;
overflow: auto;
}
.codeline:hover .lineno {
color: #111;
}
.codeline {
overflow: hidden;
}
.lineno {
font-family: Consolas,Monaco,"Andale Mono",monospace;
padding: 0.25em; 0.5em;
width: 2.7em;
float: left;
color: #888;
background-color: #f5f2f0;
border-left: 4px solid #111;
border-right: 1px solid #e0e0e0;
text-align: right;
transition: color 0.25s ease;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.lineno > span {
font-size: 0.8em;
}
.line:hover .lineno > span {
font-weight: bold;
}
pre {
position: relative;
font-family: Consolas,Monaco,"Andale Mono",monospace;
background-color: #f5f2f0;
color: #000;
text-shadow: 0px 1px #fff;
padding: 0.25em 1em;
direction: ltr;
white-space: pre;
word-spacing: normal;
word-break: normal;
-moz-tab-size: 4;
-moz-hyphens: none;
}
.codeline > pre {
margin-left: 2.7em;
margin-top: 0;
margin-bottom: 0;
}
pre[class*="language-"] {
margin: 0;
padding: 0.25em 1em;
}
pre[class*="language-"] > code[data-language] {
overflow: hidden;
}
.button {
position: relative;
width: 2.7em;
padding: 0.2em 0.2em;
padding-left: 0.4em;
cursor: pointer;
z-index: 5;
margin-top: 0.1em;
font-weight: 700;
color: #888;
transition: color 0.25s ease;
}
.button:hover {
color: #111;
}
.button span {
font-size: 0.7em;
}
.commentary {
position: relative;
padding-left: 3.2em;
overflow: hidden;
}
.hidden {
}
.annotated .commentary {
padding-bottom: 1em;
margin-top: -1.5em;
}
.commentary pre {
display: block;
}
.commentary pre:last-child {
margin-bottom: 1em;
}
code:before {
display: none !important;
}
p {
padding: 0em;
margin: 0.5em;
}
</style>
</head>
<body>
<div class="wrapper">
<h1>Feedback: Game13.java</h1>
<p>(Generated on Wednesday, July 2015 at 9:47:25 PM, Pacific Daylight Time)</p>
<div class="feedback"> <div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>1</span></div>
<pre><code class="language-java">/*</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>2</span></div>
<pre><code class="language-java"> * To change this license header, choose License Headers in Project Properties.</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>3</span></div>
<pre><code class="language-java"> * To change this template file, choose Tools | Templates</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>4</span></div>
<pre><code class="language-java"> * and open the template in the editor.</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>5</span></div>
<pre><code class="language-java"> */</code></pre>
</div>
<div class="commentary"><p>Be sure to remove all auto-generated comments, and replace them with your own.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>6</span></div>
<pre><code class="language-java">package game13;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>7</span></div>
<pre><code class="language-java">import java.util.Scanner;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>8</span></div>
<pre><code class="language-java">import java.security.SecureRandom;</code></pre>
</div>
<div class="commentary"><p>Regular random would suffice -- you don't need a fully cryptographically-secure random number generator for a game.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>9</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>10</span></div>
<pre><code class="language-java">/**</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>11</span></div>
<pre><code class="language-java"> * [email protected]</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>12</span></div>
<pre><code class="language-java"> * @author Dimitrije</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>13</span></div>
<pre><code class="language-java"> */</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>14</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>15</span></div>
<pre><code class="language-java">public class Game13 {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>16</span></div>
<pre><code class="language-java"> private static final SecureRandom randomNumbers = new SecureRandom();</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>17</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>18</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>19</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"><p>You have quite a bit of whitespace here -- one blank line would be sufficient. Likewise, you should have one blank line in between each method.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>20</span></div>
<pre><code class="language-java"> public static void main(String[] args)</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>21</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>22</span></div>
<pre><code class="language-java"> Player player1 = new Player();</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>23</span></div>
<pre><code class="language-java"> Player player2 = new Player();</code></pre>
</div>
<div class="commentary"><p>A problem with your <code>Player</code> class is that it's possible for each player to be set to a non-determinate state. When you first create the Player class, you always need to remember to set at minimum the name -- your <code>Player</code> class won't be useful otherwise. Because you always need the name, you might as well add it to your constructor:</p>
<pre><code class="language-java">Player player1 = new Player(setPlayerName());
Player player2 = new Player(&quot;The House&quot;);</code></pre></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>24</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>25</span></div>
<pre><code class="language-java"> player1.name = setPlayerName();</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>26</span></div>
<pre><code class="language-java"> player2.name = "The House";</code></pre>
</div>
<div class="commentary"><p>However, if you're not going to create the contructor, you should at minimum make use of your setter method rather then directly modifying the field:</p>
<pre><code class="language-java">player1.setName(setPlayerName());
player2.setName(&quot;The House&quot;);</code></pre></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>27</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>28</span></div>
<pre><code class="language-java"> System.out.println("Dice are being rolled: ");</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>29</span></div>
<pre><code class="language-java"> System.out.println("");</code></pre>
</div>
<div class="commentary"><p>You can omit the empty string -- <code>println</code> will do the same thing with or without it.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>30</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>31</span></div>
<pre><code class="language-java"> //two dice are rolled and added together for each player</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>32</span></div>
<pre><code class="language-java"> player1.setTotal(rollDice(player1.name));</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>33</span></div>
<pre><code class="language-java"> player2.setTotal(rollDice(player2.name));</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>34</span></div>
<pre><code class="language-java"> System.out.println();</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>35</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>36</span></div>
<pre><code class="language-java"> //if the player hits, total gets added and is checked to see if it went over 13</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>37</span></div>
<pre><code class="language-java"> while (playerHitOrStay(player1.name))</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>38</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>39</span></div>
<pre><code class="language-java"> player1.setTotal(rollDie(player1.name,player1.getTotal(),player2.name,player2.getTotal()));</code></pre>
</div>
<div class="commentary"><p>Rather then passing in the names and totals for all players, pass in just the players directly:</p>
<pre><code class="language-java">rollDie(player1, player2);</code></pre>
<p>Same thing with <code>rollDice</code> and <code>playerHitOrStay</code>.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>40</span></div>
<pre><code class="language-java"> //if the player goes over 13 it will bust and player can no longer hit</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>41</span></div>
<pre><code class="language-java"> if (checkForBust(player1.getTotal()))</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>42</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>43</span></div>
<pre><code class="language-java"> player1.bust = true;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>44</span></div>
<pre><code class="language-java"> break;</code></pre>
</div>
<div class="commentary"><p>Rather then constantly checking whether or not the player has gone bust, and having to constantly modify your <code>bust</code> field, I would add a <code>isBust()</code> method to your player class that just directly checks the total. That means you could rewrite your entire loop to look like the following:</p>
<pre><code class="language-java">while (playerHitOrStay(player1) &amp;&amp; !player.isBust()) {
player1.setTotal(rollDie(player1, player2));
}</code></pre>
<p>(Alternatively, write an <code>isNotBust()</code> method).</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>45</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>46</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"><p>You have some extra whitespace here. You should only place blank lines in between logically distinct sections of code -- for example, line 48.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>47</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>48</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>49</span></div>
<pre><code class="language-java"> //if player has decided to stay the computer will try and beat his score if it already hasn't</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>50</span></div>
<pre><code class="language-java"> if (!player1.bust)</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>51</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>52</span></div>
<pre><code class="language-java"> computerPlay(player1.getTotal(), player2.getTotal());</code></pre>
</div>
<div class="commentary"><p>You can delete this line entirely -- all it does it return a boolean, which you never store or use. As a consequence, this line is not actually doing anything.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>53</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>54</span></div>
<pre><code class="language-java"> while (computerPlay(player1.getTotal(), player2.getTotal()))</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>55</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>56</span></div>
<pre><code class="language-java"> player2.setTotal(rollDie(player2.name,player2.getTotal(),player1.name, player1.getTotal()));</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>57</span></div>
<pre><code class="language-java"> if (checkForBust(player2.getTotal()))</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>58</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>59</span></div>
<pre><code class="language-java"> player2.bust = true;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>60</span></div>
<pre><code class="language-java"> break;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>61</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>62</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"><p>Same thing as before -- you can rewrite this to:</p>
<pre><code class="language-java">while (computerPlay(player1, player2) &amp;&amp; !player2.isBust()) {
player2.setTotal(rollDie(player2, player1));
}</code></pre>
<p>Also, watch your indentation!</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>63</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>64</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>65</span></div>
<pre><code class="language-java"> checkForWinner(player1.bust, player1.name, player1.getTotal(),player2.bust,player2.name,player2.getTotal());</code></pre>
</div>
<div class="commentary"><p>Same thing -- pass in only <code>player1</code> and <code>player2</code>. And get rid of the extra whitespace here (and add a blank line after the method finishes on line 68).</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>66</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>67</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>68</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>69</span></div>
<pre><code class="language-java"> private static int rollDice(String name) //two dice are rolled and added together</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>70</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>71</span></div>
<pre><code class="language-java"> int die1 = 1 + randomNumbers.nextInt(6);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>72</span></div>
<pre><code class="language-java"> int die2 = 1 + randomNumbers.nextInt(6);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>73</span></div>
<pre><code class="language-java"> int sum = die1 + die2;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>74</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>75</span></div>
<pre><code class="language-java"> System.out.printf("%s rolled %d + %d = %d%n",</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>76</span></div>
<pre><code class="language-java"> name, die1, die2, sum);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>77</span></div>
<pre><code class="language-java"> return sum;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>78</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>79</span></div>
<pre><code class="language-java"> private static int rollDie(String name, int playerTotal, String player2Name, int player2Total) //one dice is rolled and added to the total</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>80</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>81</span></div>
<pre><code class="language-java"> int die1 = 1 + randomNumbers.nextInt(6);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>82</span></div>
<pre><code class="language-java"> int sum = die1 + playerTotal;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>83</span></div>
<pre><code class="language-java"> System.out.println("");</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>84</span></div>
<pre><code class="language-java"> System.out.printf("%s new roll is: |%d| %n%n%s total: %d%n"</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>85</span></div>
<pre><code class="language-java"> + "%s total: %d%n",</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>86</span></div>
<pre><code class="language-java"> name,die1,name, sum, player2Name, player2Total);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>87</span></div>
<pre><code class="language-java"> System.out.println("-------");</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>88</span></div>
<pre><code class="language-java"> return sum;</code></pre>
</div>
<div class="commentary"><p>Rather then constantly having to recompute and set the total for each player, consider adding a <code>addToSum(int)</code> method to your player class so that the player is responsible for its own math.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>89</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>90</span></div>
<pre><code class="language-java"> private static boolean playerHitOrStay(String name) //Checks to see if the player wants to hit else stay</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>91</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>92</span></div>
<pre><code class="language-java"> boolean hit;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>93</span></div>
<pre><code class="language-java"> Scanner userInput = new Scanner(System.in);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>94</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>95</span></div>
<pre><code class="language-java"> System.out.printf("%s would you like to hit?%n", name);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>96</span></div>
<pre><code class="language-java"> String userAnswer = userInput.nextLine();</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>97</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>98</span></div>
<pre><code class="language-java"> hit = userAnswer.equalsIgnoreCase("YES");</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>99</span></div>
<pre><code class="language-java"> return hit;</code></pre>
</div>
<div class="commentary"><p>Declare variables the moment you need them to limit their scope -- don't declare them at the top of your methods. So, basically do this:</p>
<pre><code class="language-java">boolean hit = userAnswer.equalsIgnoreCase(&quot;yes&quot;);
return hit;</code></pre>
<p>Or even better, do this:</p>
<pre><code class="language-java">return userAnswer.equalsIgnoreCase(&quot;yes&quot;);</code></pre></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>100</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>101</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>102</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>103</span></div>
<pre><code class="language-java"> private static boolean checkForBust(int total) //checks wether the total is over 13</code></pre>
</div>
<div class="commentary"><p>As previously noted, this should probably be a method inside your <code>Player</code> class. This method could also be simplified to a single line:</p>
<pre><code class="language-java">return total &gt; 13;</code></pre></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>104</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>105</span></div>
<pre><code class="language-java"> boolean bust;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>106</span></div>
<pre><code class="language-java"> bust = total &gt; 13;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>107</span></div>
<pre><code class="language-java"> return bust;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>108</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>109</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>110</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>111</span></div>
<pre><code class="language-java"> private static boolean computerPlay(int getOpponentTotal, int getTotal) //if the computer is below the player the computer will hit</code></pre>
</div>
<div class="commentary"><p>Same thing here:</p>
<pre><code class="language-java">private static boolean computerPlay(Player opponent, Player self) {
return ((opponent.getTotal() &gt; self.getTotal()) || self.getTotal() == 7);
}</code></pre></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>112</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>113</span></div>
<pre><code class="language-java"> boolean hit;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>114</span></div>
<pre><code class="language-java"> hit = ((getOpponentTotal &gt; getTotal) || getTotal == 7);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>115</span></div>
<pre><code class="language-java"> return hit;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>116</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>117</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>118</span></div>
<pre><code class="language-java"> private static String checkForWinner(boolean player1Bust, String player1Name, int player1Total,</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>119</span></div>
<pre><code class="language-java"> boolean player2Bust, String player2Name, int player2Total)</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>120</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>121</span></div>
<pre><code class="language-java"> if (player1Bust)</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>122</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>123</span></div>
<pre><code class="language-java"> System.out.printf("%s busted with a total of: %d%n",player1Name,player1Total);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>124</span></div>
<pre><code class="language-java"> System.out.printf("** %s has won the round with a total of: %d **%n", player2Name, player2Total);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>125</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>126</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>127</span></div>
<pre><code class="language-java"> if (player2Bust)</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>128</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>129</span></div>
<pre><code class="language-java"> System.out.printf("%s busted with a total of: %d%n",player2Name,player2Total);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>130</span></div>
<pre><code class="language-java"> System.out.printf("** %s has won the round with a total of: %d **%n", player1Name, player1Total);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>131</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"><p>Note that the contents of both of your above if-statements are nearly identical -- you should refactor that out.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>132</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>133</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>134</span></div>
<pre><code class="language-java"> if (!(player1Bust) &amp;&amp; (player1Total &gt; player2Total))</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>135</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>136</span></div>
<pre><code class="language-java"> System.out.printf("** %s wins the round with a total of: %d **%n",</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>137</span></div>
<pre><code class="language-java"> player1Name, player1Total);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>138</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>139</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>140</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>141</span></div>
<pre><code class="language-java"> else if (!(player2Bust) &amp;&amp; (player2Total &gt; player1Total))</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>142</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>143</span></div>
<pre><code class="language-java"> System.out.printf("** %s wins the round with a total of: %d **%n",</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>144</span></div>
<pre><code class="language-java"> player2Name, player2Total);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>145</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>146</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>147</span></div>
<pre><code class="language-java"> else if (!(player1Bust) &amp;&amp; (!(player2Bust)) &amp;&amp; (player1Total == player2Total) )</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>148</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>149</span></div>
<pre><code class="language-java"> System.out.printf("** %s &amp; %s have tied! **%nBoth totaling: %d%n",</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>150</span></div>
<pre><code class="language-java"> player1Name, player2Name, player1Total);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>151</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"><p>I would take a look at simplifying the logic of your if statements here -- there's a lot of redundancy, and you can probably restructure your statements so that you don't constantly need to check whether or not a given player has gone bust.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>152</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>153</span></div>
<pre><code class="language-java"> return "";</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>154</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>155</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>156</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>157</span></div>
<pre><code class="language-java"> private static String setPlayerName()</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>158</span></div>
<pre><code class="language-java"> {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>159</span></div>
<pre><code class="language-java"> Scanner userInput = new Scanner(System.in);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>160</span></div>
<pre><code class="language-java"> System.out.println("Please select a name for yourself");</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>161</span></div>
<pre><code class="language-java"> String playerName = userInput.nextLine();</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>162</span></div>
<pre><code class="language-java"> return playerName;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>163</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>164</span></div>
<pre><code class="language-java"> }</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>165</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>166</span></div>
<pre><code class="language-java">// private static String setComputerName()</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>167</span></div>
<pre><code class="language-java">// {</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>168</span></div>
<pre><code class="language-java">// Scanner userInput = new Scanner(System.in);</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>169</span></div>
<pre><code class="language-java">// System.out.println("Please select a name for the Computer");</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>170</span></div>
<pre><code class="language-java">// String playerName = userInput.nextLine();</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>171</span></div>
<pre><code class="language-java">// return playerName;</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line annotated">
<div class="codeline">
<div class="lineno"><span>172</span></div>
<pre><code class="language-java">// }</code></pre>
</div>
<div class="commentary"><p>Be sure to delete all temporary/commented out code. That's what version control's for.</p></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>173</span></div>
<pre><code class="language-java">}</code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>174</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>175</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>176</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div>
<div class="line not-annotated">
<div class="codeline">
<div class="lineno"><span>177</span></div>
<pre><code class="language-java"> </code></pre>
</div>
<div class="commentary"></div>
</div></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.2/velocity.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/0.0.1/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
(function() {
function createButtonElement() {
var div = document.createElement('div');
var span = document.createElement('span');
span.textContent = 'Hide';
div.appendChild(span);
div.setAttribute('class', 'button');
return div;
}
function createButton(element) {
var button = createButtonElement();
button.addEventListener('click', function() {
$(element).toggle(250);
if (button.textContent == "Hide") {
button.innerHTML = "<span>Show</span>";
//element.classList.add("hidden");
} else {
button.innerHTML = "<span>Hide</span>";
//element.classList.remove("hidden");
}
});
return button;
}
function insertToggle(element) {
element.parentNode.insertBefore(createButton(element), element);
}
var annotations = document.querySelectorAll(".annotated .commentary");
for (var i = 0; i < annotations.length; i++) {
insertToggle(annotations[i]);
}
})();
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment