Due Sunday, 7 March, midnight,
late date for turning it in without penalty: Sunday 14 March, midnight
Your software architect has decided that it is time to finish up the feeding phase of an Evolution game. The key is a method that takes care of one step in the feeding phase; this method is repeated until the watering hole is out of food or none of the players wants more food.
The dealer starts the feeding process with the complete list of players. As long
as the watering hole contains food tokens and a player may feed a species or
take food for a fat tissue card, the dealer keeps transferring food from the
watering hole to the player—
false, Note the difference to the official rules. meaning the player forgoes any additional chance to take food from the watering hole for a carnivore attack or a fat-tissue fill-up during this turn’s feeding cycle. Of course, if the player owns species that "scavenge", these species still receive food if a carnivore eats.
Natural is the index of a single species of the currently feeding player that is vegetarian and gets the next token of food;
[Natural, Nat+] combines an index to a given species and desired number of food tokens—
meaning the indexed species of the currently feeding player comes with a fat-tissue trait and wishes to store the specified number of food tokens on that trait;
Nat+ is a Nat greater than 0.
[Natural, Natural, Natural] is a triple of indexes: the first one pointing to a carnivore of the current player, the second one points to a player, and the third one into the species sequence of the designated player. The first species attacks the second species for one food token.
A player index ranges between 0 and the length of the given player sequence (inclusive). The last one refers to the currently feeding player.
decides whether it can transfer a token of food (or several) from the watering hole to the current player automatically or whether it is necessary to query the next player;
transfers food, by interpreting the answer from a player if necessary;
remove the player from the sequence or rotate the sequence of players, as needed.
Moved to FAQ on Evolution.
Delivery Create a sub-directory called dealer and place all necessary files/modules for the data representation and the necessary methods into this sub-directory.
Task 2 Develop a test harness for feed1. The harness accepts a single JSON array from STDIN and writes a single JSON array to STDOUT. Both arrays represent (dealer) configurations: the input represents the state of the dealer before feed1 is called, and the output represents the state after the call, with the player list in the exact same order as the given one.
Constraints The list of players contains at least three and at most eight items. The player specifications may not contain extinct species. The list of cards in a configuration together with the cards in possession of the players must make up a subset of the complete set of Evolution cards.
Interpretation The list of players describes all players participating in this game. It also specifies the order in which they take turns feeding their species.
The natural number is the number of food tokens at the watering hole.
The list of cards is the remaining deck of cards; the cards are handed out in this order.A plain Player has no cards. None of a player’s species may have a population of 0. Every species has at most three traits.
The JSON array must match one of the game cards allowed according to the specifications of Evolution.
Why does the test harness demand that the result configuration must contain all the players in the same order while task 1 suggests a rotation?
As explained in class, there is no connection between the representation of tests for the harness and the internal data representation. In this case, you are getting a free hint concerning the representation of the dealer.
Where does the integration test supply the answer when the dealer has to ask the player what to feed next?
The test integrates the silly player strategy from 7 —
Changing an API.
Which player is to be fed next in the given configuration?
The dealer will provide food to the species boards of the first player, if possible. This does not have any implications for the API specified in 7 —
Changing an API.
./xstep < some-json-input > some-json-output
Shell scripts A script must start with #!/bin/sh or #!/bin/bash or #!/usr/bin/python17.3 etc. Don’t assume we supply whatever it takes to get it started.
As for 7 —
Task 3 Write up a wish list of methods to complete the player. A wish list entry consists of a method signature, a purpose statement, and a method header.
Delivery Create the document as a plain text file and name it rest.txt. Place it in this week’s folder.