代写SWEN30006 Software Modelling and Design Project 2: Lucky Thirteen Semester 1, 2024帮做Java编程

SWEN30006 Software Modelling and Design

Project 2: Lucky Thirteen

- Project Specification -

School of Computing and Information Systems

Semester 1, 2024

1   Background

The JQK Computer Game Company (JQK) observes a steep increase in a popularity of card games. The company foresees abright future of digital card games and aims at exploring this opportunity. While there exist  many  card games already, the company decides to create yet  another card game called Lucky Thirteen.

A software team at JQK has started to develop a framework for this new digital card game. The code does work to some extent. However, it was implemented in a rush and was not properly designed. JQK has recruited you and your  team to revise the existing design and codebase as well as extending  the framework to also include additional logic and features to make the game even more exciting.

2   Rules for the Lucky Thirteen Games

The Lucky Thirteen (LT) game play is briefly described below. The current program developed by JQK already supports this behaviour.

•    The game is played with a standard 52-card deck with four suits, each having thirteen ranks.

Each rank is associated with a numerable value where

For summing during the game: Number cards represent as is (i.e., 2 is two). For picture cards, ‘A’ can represent either zero or one, while ‘J’, ‘Q’, ‘ K’ can be 10, 11, 12, or 13.

For scoring after the game: Number cards score according to its numerable value (i.e., 2 is

worth two points). For picture cards, ‘A’, ‘J’, ‘Q’, ‘K’ score 1, 11, 12, 13 points respectively.

(See Table 1 for a summary)

•    The goal of a player is to have the sum of the value of the cards to thirteen (see below for more details about the summation).

•    The game involves four players who play independently.

•    All cards are dealt face down. Note that the software version deals the cards face up to make it easy for developers to see what is going on. However, computer players should not be able to “see” the cards of the other players.

•    At the start of the game, all 52 cards areshuffled. Two cards are dealt from the pile and put face up (every player can see these cards). These two cards are referred to as public cards. Then, two cards are distributed to each player (players cannot see each other cards), these cards are called private cards. A total often cards are dealt from the pile at this step.

•    The  game  consists of four rounds.  Each round, each player deals one card from the  pile and discards one card of their choice. Note that a player can choose to discard any of the three private cards in their hand, and every player can see the discarded card.

•    Player 0 always starts first. The game then proceeds clockwise.

•    At the end of the fourth round, each player sums the value of the private cards (regardless of the suit) in their hand or combines with the public card(s) dealt at the beginning of the game to achieve the summation of thirteen. The summation can only be one of the following two scoring options (see also Table 2):

Option1: Two private cards in their hand.

Option2: One private card in their hand and one card from the two public cards. Note that the game automatically checks these two options.

•    There are three cases to assign scores to a  player. Note that each case considers both scoring options mentioned above.

Case1: If there is only one player who achieves the sum of exactly thirteen, that player wins the game and gain a score of 100 points. In other words, only one player receives a score. The other three players’ score remains zero.

Case2: If no player has the sum of thirteen, each player receives a score of the sum of the two private cards in their hand according to the following calculation:

.   Each suit corresponds to a multiplication factor as follows: spade (♠) x 4, heart (♥) x 3, diamond (♦) x 2, club (♣) x 1.

.   A number cardscore as is. Picture cards score as follows: A = 1, J = 11, Q = 12, K = 13.

. Example 1: A player with 8-heart and 5-club would receive a score of 8x3 + 5x1 = 29 points. Note that in this case, all players receive a score.

Case3: If more than one player achieves the sum of thirteen, those players receive a score from the cards that add up to thirteen according to the score calculation above. If the public card is used, the multiplication factor is always 2 regardless of the suit. If a player can sum the cards in different ways to thirteen, the calculation should maximize the score (see Example 3a below) .

. Example 2: The score of 7-club (in hand) together with 6-club (from public cards) is 7x1 + 6x2 = 19.

. Example  3a: A  player  has J-diamond and A-heart. The  public cards are 5-spade and 2- diamond.

•    [Option1] Two cards in hand:

Scoring: J is 11 and A is 1 -> 11x2 + 1x3 = 25

•    [Option2] One card in hand and one public card:

Summing: J as 11 -> 11 + 2 = 13

Scoring: J is 11 -> 11x2 + 2x2 = 26

•    The player earns the score of 26 since it is the highest.

Note that in this case only the player(s) whose sum is thirteen may receive scores. The score of the other players remains zero.

•    The winner and the score obtained are displayed on the screen.

The LT program currently supports two types of players: human interactive player who selects the card to play through a double-left-mouse-click, and random computer player who selects a card to discard at random. The current configuration is always one human at position 0 and three random players at the other positions.

3   Your Task

You task is to improve the design of LT game, refactor the existing codebase, and implement additional logic/features as follows:

1)    Ensure that all player types (see below) follow the rules of LT listed above.

2)   Add another option to sum the card to thirteen, namely,

Option3: Two    cards    in    their     hand    and    two     cards    from    the    two     public    cards.

Note that there is now a total of three options to sum the card to thirteen.

Example 4: The score for 2-diamond and 4-heart (in hand) together with 5-spade and 2-club (from public cards) is 2x2 + 4x3 + 5x2 + 2x2 = 30.

3)    If more than one player achieves the sum of thirteen (Case3), the score calculation must consider all three options to sum the cards to thirteen and a player will receive the maximum among those three (see also Table 2).

Example 3b: A player has J-diamond and A-heart. The public cards are A-spade and 2-diamond.

. [Option1] Two cards in hand:

•    Summing: J as 12 and A as 1 -> 12 + 1 = 13

•    Scoring: J is 11 and A is 1 -> 11x2 + 1x3 = 25

. [Option2] One card in hand and one public card:

•    Summing: J as 11  -> 11 + 2 = 13

•    Scoring: J is 11 -> 11x2 + 2x2 = 26

. [Option3] Two cards in hand and two public cards:

•    Summing: J as 11 and both A’s as 0 -> 11 + 0 + 0 + 2 = 13

•    Scoring: J is 11 and both A’s is 1 -> 11x2 + 1x3 + 1x2 + 2x2 = 31

. The player earns the score of 31 since it is the highest.

4)   Support four player types: human, random, basic, clever

a) Human player’s behaviour should not change from that supported by the current framework.

b) Random computer player’s behaviour should not change from that supported by the current framework.

c) Basic computer player discards a card with the lowest value where A (=0) < 1 < 2 < 3 < ... < 10 < J (=11) < Q (=12) < K (=13) and club (=x1) < diamond (=x2) < heart (=x3) < spade (=x4). This means that if the basic player has 6-spade and 7-diamond, the player will discard 7-diamond since 7x3 = 21 < 6x4 = 24.

d) Clever computer player must keep track of all the cards played and use this information together with the knowledge of the cards in its hand to try to maximize its score. The clever player must produce cleverer play than the basic and random players. (You will have to explain how your design supports the clever play.)

5)    Load appropriate game  parameters from the property files. You must support configuring the player types in the property file using identification of the form. “players.0=clever” for the full set of player types {human, random, basic, clever} and player positions {players.0, players.1, players.2, players.3}. All properties you add must have default provided in the code   (see setProperty() in main()).

4   Provided Package

4.1    Getting started

•    The      package      is       provided      as      an      IntelliJ      project      in      a      GitHub       repository:

https://classroom.github.com/a/CZL3V7l2

To access the base package and set up, you can follow the instructions in Workshop 0. Note that the project requires at least Java 19.

•    Build and run the project: You will see the GUI appear and can play the current version of  Lucky Thirteen using the mouse actions.

4.2    System design

•    The  classes in the  provided ‘app/src/main/java’ package primarily handle the game behaviour where the GUI operates by using theJGameGrid library. You can refer to the classes and their functions in this framework inJava Doc.

o The required changes for this project relate only to the game behaviour. You should not need to modify any code pertaining to the GUI.

o Implementation hints: The JGameGrid library has provided many useful functions that you can reuse to implement the proposed extensions. The codebase should also provide examples for implementing the extensions.

•    The system reads a properties file that specifies the player type for each of the four players, auto- play configuration (for testing purposes) and some of the cards the player will play in auto-play mode. You can edit the properties in these files for your own testing but make sure to preserve the default behaviour.

•    The ‘logResult’ string in the LuckyThirteen class is for testing your system. Please see Section 4.3 Testing Your Solution for more details. Image files of characters and items are provided in the ‘sprites’ folder (app/src/main/resources/spites). The file names of these imagefiles must not be changed.

4.3    Testing Your Solution

•    We will be testing your application programmatically, so we need to be able to build and run your program with a gradle build script. This is the same structure as the Workshop 0. You need to follow the following guideline for gradle build to work:

o You should use the gradle script. that we have set upvalid for you to run the project.

o The  entry   point   must   remain   at   Driver  and  the   Driver  file   needs  to   remain   at `src/main/java`.

o Whenever you pushto Github, Github should automatically build and run the test in your code with the testcases already provided by us in the project. You are not required to run the test in your local machine. When you are developing the app, please ensure that your code passes the testing when pushed to Github.

o Initially, your code will pass test case Original and fail test cases Extension. You need to implement the requirement and pass all testcases. Your code needs to pass the automatic tests as well as the manual tests that teaching staff will perform. on your final submission. For manual tests, we will run the app as a human player to play against random, basic and clever players.

o We have provided the sample log that the project needs to generate to pass the test case. Your log needs to follow the format but does not need to match the sample log 100%.

•    You must not change anything in the test directory as we will overwrite all your changes with our default  values   when  testing   is  executed.  You   must  also  not  change  the   build.gradle   and settings.gradle file as we will.  It  means that any other  keys or values that you add  into your properties files in the app directory will not work in testing.

•    Four  properties  files  are  provided  as  samples  for  development  (gameX.properties)  and  five properties files are provided as the key resources for testing (testX.properties).

•    The auto mode may control some  player for some card selections, and then it may stop after a few turns or a few rounds. When the auto mode stops the cardselection of a specific player, your program will need to take over and selects the cards for the player based on the player type (random, basic or clever).

•    You  need to  ensure that any modification still preserves the original behaviour, i.e., logResult generated by your extended version can pass the testing that we provide.

•    For your  understanding,  below are some  key gradle build explanations. Note that you are not expected  to  change  anything  outside  of  your  development  directory  and  documentation directory:

o `settings.gradle`: to set up the name of the project and the main development directory

o `app/src`: where the development and testing code is

o `app/src/build.gradle`:set up the dependencies, the language version and the main class

o `app/src/main/java`: where your development code is

o `app/src/main/resources`: where your properties files and images are

o `app/src/test/java`: where the testing code is

o `app/src/test/resources`: where the properties files and images are

o To load a property or text file: you need to use

`CLASS_NAME .class.getClassLoader().getResourceAsStream(propertiesFil e)`. This is already done for you, so you only need to be aware of it if you need to read any other text file.

5   Project Deliverables

5.1   Your version of the LT game

Submit your whole project (with any/all libraries used included, with all the gradle structure and gradle setting files)

•    Ensure that your code is well documented and includes your team's name and team members in all changed or new source code files.

5.2    Report

A design analysis report detailing the changes made to the project and the design analysis including identifying design alternatives and justifying your design decisions with respect to design patterns and principles (GoF and GRASP). The report must also include your strategy for Clever computer player.

5.3    Software Models

To facilitate the discussion of your design, the following software models should be provided in the report and used along with the discussion. You can use sub-diagrams or provide additional diagrams where appropriate.

•    A  domain class diagram for capturing the covering the domain concepts relating to computer players

•    A  static  design  model  (i.e.,  a  design  class  diagram)  for  documenting  your  design  relating  to computer players

•    Additional static and/or dynamic design models to support your explanation as you judge useful and appropriate.

6   Submission

All project deliverables should be included in the one project zip file with the specified structure (see Figure 2). Do not include the .git folder in your submission. Only one member in the team submits the file. See more details about submission and evaluation on the project submission page.

Note: It is your team’s responsibility to ensure that you have thoroughly tested their software before submission.






热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图