辅导案例-CSCI 1110-Assignment 2
1 Assignment 2: Ochos Locos CSCI 1110 (Winter 2020) OVERVIEW Due Date NEW DUE DATE: Sunday, February 9th, 2020 @ 11 PM NOTE: All work is to be handed in using Mimir, our online code learning environment. You will learn how to access this tool in labs. Key concepts Fundamental programming concepts (in JAVA this time!): • Fundamental data types • Decisions • Loops • 2D arrays Background In this assignment, you will be creating something that is a bit like the game of Uno and a bit like the game of Crazy Eights, though not exactly like either of the two! We will call it Ochos Locos. The game of Ochos Locos involves a custom deck of cards. The cards come in four colours: Red (R), Yellow (Y), Green (G) and Blue (B). Each coloured card also has a number, between 1 and 8, on it. 2 PROBLEM 1: Match-making [50points] For the first portion of this problem, you will implement a simple version of our game Ochos Locos. For this simplified version, there will be three players. The rules of the game are as follows: Basic Rules of the game Ochos Locos Setup: § The game starts with a shuffled deck of 32 cards (given to you). § Each player is dealt 5 cards and one card is upturned in the discard pile. § The remaining cards from the deck are placed in a draw pile Play: § On a player’s turn, they must play a card (if one exists) that matches either the colour or number of the card played just before: o If the player has more cards in their hand of the matching number than they do of the matching colour: § They will choose to play a card of matching number. (e.g. 4) § They will play the card of that number that they have which comes first in rainbow order: red-yellow-green-blue. (i.e. R4-Y4-G4-B4) o If the player equal or more cards in their hand of the matching colour than they do of the matching number: § They will choose to play a card of matching colour. § They will play the card of that colour that they have which comes first counting order: 1-2-3-4-5-6-7-8. § If a player does not have a card that they are able to play, they pick up a new card from the top of the draw pile (if one exists, pass if not). 3 Example 1 (more cards of matching number): Suppose the upturned card in the discard pile is a Green-3 (G3) and that the player’s hand has the following cards in it: R3 R7 Y3 Y7 G8 B3 B7 B8 The player will look at their hand and count the number of red cards (2 red cards: R3 & R7) and the number of 3s (three: R3, Y3 & B3). § Since they have more threes than red cards, they will choose to play a three card, but which colour? o They have a red, yellow and blue 3, so they choose to play the red because it comes first in rainbow order (red-yellow-green-blue), choosing first red then yellow, then green and lastly blue. The player will choose to play the card R3. Example 2 (equal or more cards of matching colour): Suppose this time the upturned card in the discard pile is a Blue-8 (B8) and that the player’s hand is the same as before with the following cards in it: R3 R7 Y3 Y7 G8 B7 B8 The player will look at their hand and count the number of blue cards (3 blue cards: B7 & B8) and the number of 8s (two eights: G8 & B8). § Since they have at least as many blue cards as eights, they will choose to play a blue card, but which number? o They have a blue 7 and a blue 8. Since 7 comes before 8 in counting order, they will choose to play the 7. The player will choose to play the card B7. Example 3 (no match in hand): Suppose this time the upturned card in the discard pile is a Yellow-4 (Y4) and that the player’s hand has the following cards in it: R1 R2 G3 G5 B6 B7 B8 The player has no cards that match they Yellow-4 in either colour or number (i.e. they have no cards they are either yellow or the number 4). They must DRAW a card from the draw pile. 4 Input § Hand of player one (initially 5 cards) § Hand of player two (initially 5 cards) § Hand of player three (initially 5 cards) § First card in the discard pile on which to you play on (1 card) § Remaining cards in the draw pile (top to bottom, all remaining cards) Processing 1. Output the starting card on the discard pile. 2. Starting with player one, decide which card they will play (or pick up from the draw pile) and output their choice (or DRAW if they have no match and must try to pick up a card from the draw pile). 3. Repeat this for each player until a player has no more cards in their hand. This player becomes the winner of the game. Output format 0: {First/starting card on the discard pile} 1: {Card played by player 1*} 2: {Card played by player 2*} 3: {Card played by player 3*} 1: {Card played by player 1*} 2: {Card played by player 2*} 3: {Card played by player 3*} : : : {N}: {Last card played by player N} (WINNER) Where N = 1,2, or 3, the player first able to play all of their cards and empty their hand * If no card is able to be played by a player, output DRAW on their turn and pick up a card from the draw pile (if one exists). 5 Sample input Sample output New hand after play Y3 Y7 Y8 B1 B7 R8 Y1 G4 G8 B8 R3 R4 R7 Y6 B5 B3 R2 G5 B6 Y5 G3 G2 … Y4 R1 G1 Y2 G6 … B4 R5 G7 R6 B2 0: B3 1: B1 2: B8 3: B5 1: B7 2: DRAW 3: R7 1: Y7 2: Y1 3: Y6 1: Y3 2: DRAW 3: R3 1: DRAW 2: R2 3: R4 (WINNER) -- 1: Y3 Y7 Y8 B1 B7 2: R8 Y1 G4 G8 B8 3: R3 R4 R7 Y6 B5 1: Y3 Y7 Y8 B7 2: R2 R8 Y1 G4 G8 3: R3 R4 R7 Y6 1: Y3 Y7 Y8 2: R2 R8 Y1 G4 G8 3: R3 R4 Y6 1: Y3 Y8 2: R2 R8 G4 G5 G8 3: R3 R4 1: Y8 2: R2 R8 G4 G5 G8 3: R4 R1 R4 G2 G8 B2 R2 R8 Y7 Y8 B3 R3 R6 Y3 G4 G5 B6 Y2 B7 Y1 G6 Y5 G7 … R5 R7 G1 Y4 B5 G3 … B1 B8 B4 Y6 0: B6 1: B2 2: B3 3: R3 1: R1 2: R2 3: R6 1: R4 2: R8 3: DRAW 1: G8 2: Y8 3: Y2 1: G2 (WINNER) -- 1: R1 R4 G2 G8 B2 2: R2 R8 Y7 Y8 B3 3: R3 R6 Y3 G4 G5 1: R1 R4 G2 G8 2: R2 R8 Y7 Y8 3: R6 Y3 G4 G5 1: R4 G2 G8 2: R8 Y7 Y8 3: Y2 Y3 G4 G5 1: G2 G8 2: Y7 Y8 3: Y2 Y3 G4 G5 1: G2 Note: In the “New hand after play” column, cards are shown (for fun!) in their colour. An underlined card (e.g. B7) was just added to the player’s hand and a card with a strikethrough (e.g R2) was just played from the player’s hand. I have made bold (e.g Y2) any draw pile cards that were used. 6 PROBLEM 2: Take Two [20 points] Now that you’ve become proficient at playing the game, we will start adding in extra rules. For this one, if a player plays any “two” card (R2, Y2, G2 or B2), the next player’s turn is skipped and they must take two cards. You will apply the Rule of Two below: Rule of Two If the card last laid in the discard pile was numbered 2, the next player must choose between the following options: § If they have another “two” card (R2, Y2, G2 or B2) in their hand, they will choose to play the one. o If they have more than one colour, they will pick in rainbow order: red- yellow-green-blue. § If they do not have a “two” card, on their turn they are skipped and must draw two cards from the top of the draw pile. Input Same as in Problem 1. Processing Same as in Problem 1 with the following exception: § If a player lay’s down a card numbered 2, the next player must apply the Rule of Two as described above. Output format Same as in Problem 1 with the following exception: § If a player lay’s down a card numbered 2 and the following player is unable to play another “two” card, output: {N}: TAKE TWO Where N = 1,2, or 3, the skipped player that had to draw two cards. HINT: Start from Problem 1 and modify… 7 Sample input Sample output New hand after play R1 R4 Y6 G8 B2 R2 R8 Y7 Y8 B3 R3 R6 Y3 G4 G5 B6 Y2 B7 Y1 G6 Y5 G7 … R5 R7 G1 Y4 B5 … G3 B1 B8 B4 G2 0: B6 1: B2 2: R2 3: TAKE TWO 1: R1 2: R8 3: R3 1: R4 2: DRAW 3: R6 1: Y6 2: Y1 3: Y2 1: TAKE TWO 2: Y7 3: Y3 1: Y5 2: Y8 3: DRAW 1: G8 2: DRAW 3: G4 1: G6 (WINNER) -- 1: R1 R4 Y6 G8 B2 2: R2 R8 Y7 Y8 B3 3: R3 R6 Y2 Y3 G4 G5 B7 1: R1 R4 Y6 G8 2: R8 Y7 Y8 B3 3: R3 R6 Y2 Y3 G4 G5 B7 1: R4 Y6 G8 2: Y1 Y7 Y8 B3 3: R6 Y2 Y3 G4 G5 B7 1: Y6 G8 2: Y1 Y7 Y8 B3 3: Y2 Y3 G4 G5 B7 1: Y5 G6 G8 2: Y7 Y8 B3 3: Y3 G4 G5 B7 1: Y5 G6 G8 2: Y8 B3 3: G4 G5 G7 B7 1: G6 G8 2: R5 B3 3: G4 G5 G7 B7 1: G6 8 PROBLEM 3: Going Wild! [10 points] Now that we have that sorted, we will really go “wild” and add in the crazy eights rule. If the last player plays any Loco Card, an “eight” card (R8, Y8, G8 or B8), they can choose the colour to be played next. The player that follows must then either play another Loco Card (R8, Y8, G8 or B8) of any colour, or a card of the new colour chosen. The Loco Rule If a player is allowed to play one of their Loco Cards (R8, Y8, G8 or B8), they will. § If they have more than one Loco Card, they will choose to play the eight card that comes earlier in rainbow order (red-yellow-green- blue). When a Loco Card is played, they get to choose a colour to follow (i.e. it behaves as if they 8 was painted in the colour chosen). § The chosen colour will always be the first colour in rainbow order that will remain in their hand (if any) on their next turn (if no cards remain, they win). Input Same as in Problem 2. Processing Same as in Problem 2 with the addition of Loco Rule: § If a player has an “eight” card (R8, Y8, G8 or B8) in their hand, the Loco Rule (above) is applied. Output format Same as in Problem 2 with the following exception: § If a player lay’s down a card numbered 8, output the chosen colour as follows: {N}: {colour of Loco Card}8 – {Colour chosen: R,Y,G, or B} HINT: Start from Problem 2 and modify… 9 Sample input Sample output New hand after play R1 R4 Y6 G8 B2 R2 R3 R6 Y4 G5 R5 R8 Y7 Y8 G2 B6 Y3 B7 Y1 G6 Y5 G7 … B3 R7 G1 G4 B5 … G3 B1 B8 B4 Y2 0: B6 1: B2 2: R2 3: G2 1: TAKE TWO 2: G5 3: R5 1: R1 2: R3 3: R8 LOCO Y 1: G8 LOCO R 2: R6 3: DRAW 1: R4 2: Y4 (WINNER) -- 1: R1 R4 Y6 G8 B2 2: R2 R3 R6 Y4 G5 3: R5 R8 Y7 Y8 G2 1: R1 R4 Y3 Y6 G8 B7 2: R3 R6 Y4 G5 3: R5 R8 Y7 Y8 1: R1 R4 Y3 Y6 G8 B7 2: R3 R6 Y4 3: R8 Y7 Y8 1: R4 Y3 Y6 G8 B7 2: R6 Y4 3: Y1 Y7 Y8 1: R4 Y3 Y6 B7 2: Y4 10 PROBLEM 4: The More the Merrier [10 points] This game is just TOO much fun to keep it to ourselves! Let’s let a few other people play. Input § Integer N representing the number of players. § Remaining lines are the same as in Problem 3 with the exception that you should expect N lines of player hands Processing Same as in Problem 3 with the exception that you must consider play of N (as read in from input) players. Output format Same as in Problem 3. HINT: Start from Problem 3 and modify… 11 Sample input Sample output New hand after play 4 R2 Y8 G6 G7 G8 R7 Y3 Y6 B2 B4 R6 R8 Y1 B1 B5 R1 R3 R5 Y7 B6 B7 G1 G3 Y2 G2 B8 Y4 … R4 G8 B3 G5 Y5 (Note that if ALL of the draw cards have been used. At some point, DRAW and a TAKE TWO act more like skipped turn. Output remains the same.) 0: B7 1: G7 2: R7 3: R8 LOCO R 4: R1 1: R2 2: B2 3: TAKE TWO 4: B6 1: G6 2: Y6 3: Y1 4: Y7 1: Y8 LOCO G 2: DRAW 3: G1 4: DRAW 1: G4 (WINNER) -- 1: R2 Y8 G4 G6 G7 2: R7 Y3 Y6 B2 B4 3: R6 R8 Y1 B1 B5 4: R1 R3 R5 Y7 B6 1: R2 Y8 G6 G8 2: Y3 Y6 B2 B4 3: R6 Y1 G1 G3 B1 B5 4: R3 R5 Y7 B6 1: Y8 G4 G6 2: Y3 Y6 B4 3: R6 Y1 G1 G3 B1 B5 4: R3 R5 Y7 1: Y8 G4 2: Y2 Y3 B4 3: R6 G1 G3 B1 B5 4: R3 R5 G2 1: G4 12 GRADING Each problem on the assignment will be graded based on three criteria: Functionality “Does it work according to specifications?" This is determined in an automated fashion by running your program on a number of inputs and ensuring that the outputs match the expected outputs. The score is determined based on the number of tests that your program passes. Quality of Solution “Is it a good solution?" This considers whether the solution is correct, efficient, covers boundary conditions, does not have any obvious bugs, etc. This is determined by visual inspection of the code. Initially full marks are given to each solution and marks are deducted based on faults found in the solution. Code Clarity “Is it well written?" This considers whether the solution is properly formatted, well- documented, and follows coding style guidelines. A single code clarity score is assigned for all solutions. If your program does not compile, it is considered non-functional and of extremely poor quality, meaning you will receive 0 for the solution. Marking Scheme Problem Partial Points Points Problem 1: Match-making § Functionality § Quality of solution 40 10 50 Problem 2: Take Two § Functionality § Quality of solution 15 5 20 Problem 3: Going Wild! § Functionality § Quality of solution 5 5 10 Problem 4: The More the Merrier § Functionality § Quality of solution 5 5 10 Code Clarity 10 10 TOTAL 100 100 13 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 8 8 8 8