James Wang, Kiwan Sung Fall 2017
(a) (20 pts) A brief description of the project. Here, I’m looking for a short description: probably 1 sentence, 2-3 at most.
The interface that can engage in "Dealer" and/or "Blackjack”. Uses classes and objects that relate to deck of cards (52 in each deck) and user can engage in the activity either in JavaGUI or Unix Command Line.
(b) (20 pts) a set of user stories (as a X I can Y so that Z) that describe what the current software in its current state can do.
As a user, I can choose the role either be a Blackjack player or be a Dealer.
As a Blackjack player, I can choose to Hit in order to get another card, or I could choose Stand to keep my current cards.
As a Dealer, I could set the number of hands in a game, and decide either to shuffle the cards or not.
(c) (20 pts) a brief assessment of whether the software runs or not. If it runs, briefly describe what it does,
The software runs and functions pretty well. Upon run, the system asks whether to play “Dealer” or “Blackjack”. Upon Dealer, it is an activity that the user is the dealer in passing out deck of cards within certain parameters (# of players, is shuffle allowed). When playing Blackjack, user is playing blackjack (game of 21) against the Dealer (CPU). User can either “hit or stop” to determine whether to get additional cards. If the user’s cards have sum higher than the Dealer, user wins. If the user busts (sum over 21), or have lesser sum than the Dealer, the user loses. User will decide whether to continue play or not upon end of every round.
(d) (20 pts) a set of user stories (at least 2, but you are encouraged to write up to 4 or more if you can, as many as you think is reasonable) about features that COULD be added to the software to make it more useful, fun, better, etc.
As a Blackjack player, I could choose the number of AI players that join the game to make the game more competitive.
As a user, I could choose different backgrounds when I play the game.
As a user, I could have a loading screen when the program is initializing.
As a Blackjack player, I could quit the game by clicking the quit button on the game screen.
(e) (20 pts) An assessment of the current quality of the README.md. What information could be added to make it easier for the next generation of folks maintaining this code to use the software, and/or maintain the software?
We have a little hard time understanding what “Dealer” activity does. We would like to be more specific about what is the purpose of Dealer for others. I believe that the objective for both Dealer and Blackjack is missing too so we definitely want to explain what the software does and what goal the user should go for.
(f) (20 pts) An assessment of the current state of the build.xml file. Are there targets that need descriptions? Is there old legacy JWS stuff that needs to be removed? (More on this below).
There are several targets that don't have descriptions, build, run, runGUI, clean, and javadoc. There are some old legacy JWS stuff needs to be modified which was noted by the F16 group.
(g) (20 pts) An assessment of the current “issues”. Are there enough issues that you could earn 1000 points by working on this project? Are the issues clear in terms of what the expectations are?
The current issues that listed on the github page totally worth about 1500 points. Although there are enough choices for us, but couple of them involve with API which we have little experience at. Also, there are issues that submitted by privious groups that involves with GUI, but there are no points granted. It would be much better if there is a longer list we can choose from.
(h) (20 pts) A list of additional issues that you may have added, if any. For each, a link to the issue is good enough. After winning or losing a game, the stand and hit button should be disabled in the GUI version of the game.
Although the software runs pretty smooth, we were able to spot some bugs and improvements to be made within few minutes. First of all, the processing time for this software is more than what it should be. We can definitely restructure the loop / call functions so that we can make the software run faster. There are also some bugs to be fixed in buttons and printed strings. After we can reduce the runtime and fix the Interface bugs, we hope to add some new features and graphics that will make software more appealing to the future users.
(i) (100 pts) Most important: an assessment of the actual code. Write a bit about how the code is organized. Are the purposes of the classes, and their methods clear? Is it obvious how the classes relate to one another? Is the code easy to read and understand? If you had to give someone else that was going to work on the code just “one screenful of text” to help that programmer get up to speed quickly, what information would you convey?
The program has two separate main functions, main.java and mainGUI.java. The main.java controls the command line part of the game, while mainGUI.java controls the GUI part of the game. The purposes of the classes are very clear, as well as the methods. The relationship between each class is also very obvious, usually shown in the first couple lines of code in the file.
(j) (40 pts) Related to code quality, but factored out into a separate issue because it is so important: how is the test coverage? Are there JUnit tests at all? If so, how much of the project is covered by testing? Are there opportunities to expand test coverage, and if so, how would you go about it?
Yes, this project has JUnit tests which cover the logical tests of users choose to be a Blackjack player. There could be more tests added in the future testing on the functionality of users choose to be a game dealer.